public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
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)]





  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
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal