From: Stefan Hanreich <s.hanreich@proxmox.com>
To: Proxmox VE development discussion <pve-devel@lists.proxmox.com>,
Christoph Heiss <c.heiss@proxmox.com>
Subject: Re: [pve-devel] [PATCH proxmox 07/11] wireguard: implement api for PublicKey
Date: Fri, 13 Feb 2026 11:12:30 +0100 [thread overview]
Message-ID: <54f46188-52f3-4c60-9733-60edbdeeac6c@proxmox.com> (raw)
In-Reply-To: <20260116153317.1146323-8-c.heiss@proxmox.com>
we probably want to use this type in the section config as well, so
maybe move it to sdn-types instead? I could do that in my patch series
as well, when I actually need it - or we're okay with unconditionally
pulling proxmox-wireguard into ve-rs.
see below for additional comments
On 1/16/26 4:33 PM, Christoph Heiss wrote:
> .. such that it can be used in API definitions.
>
> Authored-by: Stefan Hanreich <s.hanreich@proxmox.com>
> Signed-off-by: Christoph Heiss <c.heiss@proxmox.com>
> ---
> proxmox-wireguard/Cargo.toml | 6 ++++++
> proxmox-wireguard/debian/control | 19 +++++++++++++++++++
> proxmox-wireguard/src/lib.rs | 17 +++++++++++++++++
> 3 files changed, 42 insertions(+)
>
> diff --git a/proxmox-wireguard/Cargo.toml b/proxmox-wireguard/Cargo.toml
> index 5976aa90..c01a4902 100644
> --- a/proxmox-wireguard/Cargo.toml
> +++ b/proxmox-wireguard/Cargo.toml
> @@ -13,9 +13,15 @@ rust-version.workspace = true
> ed25519-dalek = "2.1"
> serde = { workspace = true, features = [ "derive" ] }
> thiserror.workspace = true
> +proxmox-schema = { workspace = true, optional = true, features = ["api-types"] }
> proxmox-serde = { workspace = true, features = [ "ini-ser" ] }
> proxmox-network-types.workspace = true
> proxmox-sys.workspace = true
> +regex = { workspace = true, optional = true }
>
> [dev-dependencies]
> pretty_assertions.workspace = true
> +
> +[features]
> +default = []
> +api-types = ["dep:proxmox-schema", "dep:regex"]
> diff --git a/proxmox-wireguard/debian/control b/proxmox-wireguard/debian/control
> index 4adc1ac2..f613b839 100644
> --- a/proxmox-wireguard/debian/control
> +++ b/proxmox-wireguard/debian/control
> @@ -36,6 +36,8 @@ Depends:
> librust-serde-1+default-dev,
> librust-serde-1+derive-dev,
> librust-thiserror-2+default-dev
> +Suggests:
> + librust-proxmox-wireguard+api-types-dev (= ${binary:Version})
> Provides:
> librust-proxmox-wireguard+default-dev (= ${binary:Version}),
> librust-proxmox-wireguard-0-dev (= ${binary:Version}),
> @@ -46,3 +48,20 @@ Provides:
> librust-proxmox-wireguard-0.1.0+default-dev (= ${binary:Version})
> Description: WireGuard configuration support - Rust source code
> Source code for Debianized Rust crate "proxmox-wireguard"
> +
> +Package: librust-proxmox-wireguard+api-types-dev
> +Architecture: any
> +Multi-Arch: same
> +Depends:
> + ${misc:Depends},
> + librust-proxmox-wireguard-dev (= ${binary:Version}),
> + librust-proxmox-schema-5+api-types-dev (>= 5.0.1-~~),
> + librust-proxmox-schema-5+default-dev (>= 5.0.1-~~),
> + librust-regex-1+default-dev (>= 1.5-~~)
> +Provides:
> + librust-proxmox-wireguard-0+api-types-dev (= ${binary:Version}),
> + librust-proxmox-wireguard-0.1+api-types-dev (= ${binary:Version}),
> + librust-proxmox-wireguard-0.1.0+api-types-dev (= ${binary:Version})
> +Description: WireGuard configuration support - feature "api-types"
> + This metapackage enables feature "api-types" for the Rust proxmox-wireguard
> + crate, by pulling in any additional dependencies needed by that feature.
> diff --git a/proxmox-wireguard/src/lib.rs b/proxmox-wireguard/src/lib.rs
> index 840767d8..d4697560 100644
> --- a/proxmox-wireguard/src/lib.rs
> +++ b/proxmox-wireguard/src/lib.rs
> @@ -17,6 +17,10 @@ use serde::{Deserialize, Serialize};
> use std::fmt;
>
> use proxmox_network_types::{endpoint::ServiceEndpoint, ip_address::Cidr};
> +#[cfg(feature = "api-types")]
> +use proxmox_schema::{
> + api_types::ED25519_BASE64_KEY_REGEX, ApiStringFormat, ApiType, StringSchema, UpdaterType,
> +};
>
> /// Possible error when handling WireGuard configurations.
> #[derive(thiserror::Error, Debug, PartialEq, Clone)]
> @@ -42,6 +46,19 @@ pub struct PublicKey(
> #[serde(with = "proxmox_serde::byte_array_as_base64")] [u8; ed25519_dalek::PUBLIC_KEY_LENGTH],
> );
>
> +#[cfg(feature = "api-types")]
> +impl ApiType for PublicKey {
> + const API_SCHEMA: proxmox_schema::Schema =
> + StringSchema::new("ED25519 public key base64-encoded")
I think either 'base64-encoded ED25519 public key' or 'ED25519 public
key (base64-encoded)' would fit better as description.
> + .format(&ApiStringFormat::Pattern(&ED25519_BASE64_KEY_REGEX))
> + .schema();
> +}
> +
> +#[cfg(feature = "api-types")]
> +impl UpdaterType for PublicKey {
> + type Updater = Option<PublicKey>;
> +}
> +
> /// Private key of a WireGuard peer.
> #[derive(Serialize)]
> #[serde(transparent)]
next prev parent reply other threads:[~2026-02-13 10:12 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-16 15:33 [pve-devel] [PATCH proxmox{, -ve-rs} 00/11] sdn: add wireguard fabric configuration support Christoph Heiss
2026-01-16 15:33 ` [pve-devel] [PATCH proxmox 01/11] serde: implement ini serializer Christoph Heiss
2026-02-11 16:36 ` Stefan Hanreich
2026-02-11 18:40 ` Christoph Heiss
2026-02-12 10:59 ` Stefan Hanreich
2026-01-16 15:33 ` [pve-devel] [PATCH proxmox 02/11] serde: add base64 module for byte arrays Christoph Heiss
2026-01-16 15:33 ` [pve-devel] [PATCH proxmox 03/11] network-types: add ServiceEndpoint type as host/port tuple abstraction Christoph Heiss
2026-02-13 10:11 ` Stefan Hanreich
2026-01-16 15:33 ` [pve-devel] [PATCH proxmox 04/11] schema: provide integer schema for node ports Christoph Heiss
2026-01-16 15:33 ` [pve-devel] [PATCH proxmox 05/11] schema: api-types: add ed25519 base64 encoded key schema Christoph Heiss
2026-01-16 15:33 ` [pve-devel] [PATCH proxmox 06/11] wireguard: init configuration support crate Christoph Heiss
2026-02-13 10:13 ` Stefan Hanreich
2026-01-16 15:33 ` [pve-devel] [PATCH proxmox 07/11] wireguard: implement api for PublicKey Christoph Heiss
2026-02-13 10:12 ` Stefan Hanreich [this message]
2026-01-16 15:33 ` [pve-devel] [PATCH proxmox 08/11] wireguard: make per-peer preshared key optional Christoph Heiss
2026-01-16 15:33 ` [pve-devel] [PATCH proxmox-ve-rs 09/11] sdn-types: add wireguard-specific PersistentKeepalive api type Christoph Heiss
2026-01-16 15:33 ` [pve-devel] [PATCH proxmox-ve-rs 10/11] ve-config: fabric: refactor fabric config entry impl using macro Christoph Heiss
2026-01-16 15:33 ` [pve-devel] [PATCH proxmox-ve-rs 11/11] ve-config: sdn: fabrics: add wireguard section config types Christoph Heiss
2026-02-13 10:14 ` [pve-devel] [PATCH proxmox{, -ve-rs} 00/11] sdn: add wireguard fabric configuration support Stefan Hanreich
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=54f46188-52f3-4c60-9733-60edbdeeac6c@proxmox.com \
--to=s.hanreich@proxmox.com \
--cc=c.heiss@proxmox.com \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox