diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 12:41:41 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 12:41:41 +0000 |
commit | 10ee2acdd26a7f1298c6f6d6b7af9b469fe29b87 (patch) | |
tree | bdffd5d80c26cf4a7a518281a204be1ace85b4c1 /vendor/pasetors/src/serde.rs | |
parent | Releasing progress-linux version 1.70.0+dfsg1-9~progress7.99u1. (diff) | |
download | rustc-10ee2acdd26a7f1298c6f6d6b7af9b469fe29b87.tar.xz rustc-10ee2acdd26a7f1298c6f6d6b7af9b469fe29b87.zip |
Merging upstream version 1.70.0+dfsg2.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/pasetors/src/serde.rs')
-rw-r--r-- | vendor/pasetors/src/serde.rs | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/vendor/pasetors/src/serde.rs b/vendor/pasetors/src/serde.rs new file mode 100644 index 000000000..92eb5fe89 --- /dev/null +++ b/vendor/pasetors/src/serde.rs @@ -0,0 +1,133 @@ +use crate::keys::{AsymmetricPublicKey, AsymmetricSecretKey, SymmetricKey}; +#[cfg(feature = "paserk")] +use crate::paserk::{FormatAsPaserk, Id}; +use alloc::string::String; +use core::convert::TryFrom; + +#[cfg(all(feature = "paserk", feature = "serde"))] +#[cfg_attr(docsrs, doc(cfg(all(feature = "paserk", feature = "serde"))))] +impl<V> serde::Serialize for AsymmetricPublicKey<V> +where + AsymmetricPublicKey<V>: FormatAsPaserk, +{ + fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> + where + S: serde::Serializer, + { + use serde::ser::Error; + let mut paserk_string = String::new(); + self.fmt(&mut paserk_string).map_err(S::Error::custom)?; + serializer.serialize_str(&paserk_string) + } +} + +#[cfg(all(feature = "serde", feature = "std"))] +#[cfg_attr(docsrs, doc(cfg(all(feature = "serde", feature = "std"))))] +impl<'de, V> serde::Deserialize<'de> for AsymmetricPublicKey<V> +where + AsymmetricPublicKey<V>: TryFrom<&'de str>, + <AsymmetricPublicKey<V> as TryFrom<&'de str>>::Error: std::fmt::Display, +{ + fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> + where + D: serde::Deserializer<'de>, + { + let paserk_string = <&str>::deserialize(deserializer)?; + TryFrom::try_from(paserk_string).map_err(serde::de::Error::custom) + } +} + +#[cfg(all(feature = "paserk", feature = "serde"))] +#[cfg_attr(docsrs, doc(cfg(all(feature = "paserk", feature = "serde"))))] +impl<V> serde::Serialize for AsymmetricSecretKey<V> +where + AsymmetricSecretKey<V>: FormatAsPaserk, +{ + fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> + where + S: serde::Serializer, + { + use serde::ser::Error; + let mut paserk_string = String::new(); + self.fmt(&mut paserk_string).map_err(S::Error::custom)?; + serializer.serialize_str(&paserk_string) + } +} + +#[cfg(all(feature = "serde", feature = "std"))] +#[cfg_attr(docsrs, doc(cfg(all(feature = "serde", feature = "std"))))] +impl<'de, V> serde::Deserialize<'de> for AsymmetricSecretKey<V> +where + AsymmetricSecretKey<V>: TryFrom<&'de str>, + <AsymmetricSecretKey<V> as TryFrom<&'de str>>::Error: std::fmt::Display, +{ + fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> + where + D: serde::Deserializer<'de>, + { + let paserk_string = <&str>::deserialize(deserializer)?; + TryFrom::try_from(paserk_string).map_err(serde::de::Error::custom) + } +} + +#[cfg(all(feature = "paserk", feature = "serde"))] +#[cfg_attr(docsrs, doc(cfg(all(feature = "paserk", feature = "serde"))))] +impl<V> serde::Serialize for SymmetricKey<V> +where + SymmetricKey<V>: FormatAsPaserk, +{ + fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> + where + S: serde::Serializer, + { + use serde::ser::Error; + let mut paserk_string = String::new(); + self.fmt(&mut paserk_string).map_err(S::Error::custom)?; + serializer.serialize_str(&paserk_string) + } +} + +#[cfg(all(feature = "serde", feature = "std"))] +#[cfg_attr(docsrs, doc(cfg(all(feature = "serde", feature = "std"))))] +impl<'de, V> serde::Deserialize<'de> for SymmetricKey<V> +where + SymmetricKey<V>: TryFrom<&'de str>, + <SymmetricKey<V> as TryFrom<&'de str>>::Error: std::fmt::Display, +{ + fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> + where + D: serde::Deserializer<'de>, + { + let paserk_string = <&str>::deserialize(deserializer)?; + TryFrom::try_from(paserk_string).map_err(serde::de::Error::custom) + } +} + +#[cfg(all(feature = "paserk", feature = "serde"))] +#[cfg_attr(docsrs, doc(cfg(all(feature = "paserk", feature = "serde"))))] +impl serde::Serialize for Id { + fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> + where + S: serde::Serializer, + { + use serde::ser::Error; + let mut paserk_id = String::new(); + self.fmt(&mut paserk_id).map_err(S::Error::custom)?; + serializer.serialize_str(&paserk_id) + } +} + +#[cfg(all(feature = "paserk", feature = "serde", feature = "std"))] +#[cfg_attr( + docsrs, + doc(cfg(all(feature = "paserk", feature = "serde", feature = "std"))) +)] +impl<'de> serde::Deserialize<'de> for Id { + fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> + where + D: serde::Deserializer<'de>, + { + let paserk_id = <&str>::deserialize(deserializer)?; + TryFrom::try_from(paserk_id).map_err(serde::de::Error::custom) + } +} |