summaryrefslogtreecommitdiffstats
path: root/vendor/pasetors/src/serde.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 12:41:41 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 12:41:41 +0000
commit10ee2acdd26a7f1298c6f6d6b7af9b469fe29b87 (patch)
treebdffd5d80c26cf4a7a518281a204be1ace85b4c1 /vendor/pasetors/src/serde.rs
parentReleasing progress-linux version 1.70.0+dfsg1-9~progress7.99u1. (diff)
downloadrustc-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.rs133
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)
+ }
+}