diff --git a/Cargo.lock b/Cargo.lock index 79d81e216b2..ede220e4fd8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -194,16 +194,7 @@ version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" dependencies = [ - "digest 0.10.7", -] - -[[package]] -name = "block-buffer" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" -dependencies = [ - "generic-array", + "digest", ] [[package]] @@ -386,7 +377,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ "generic-array", - "rand_core 0.6.4", + "rand_core", "typenum", ] @@ -398,7 +389,7 @@ checksum = "16182b4f39a82ec8a6851155cc4c0cda3065bb1db33651726a29e1951de0f009" dependencies = [ "aead", "crypto_secretbox", - "curve25519-dalek 4.1.0", + "curve25519-dalek", "salsa20", "subtle", "zeroize", @@ -429,19 +420,6 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "curve25519-dalek" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61" -dependencies = [ - "byteorder", - "digest 0.9.0", - "rand_core 0.5.1", - "subtle", - "zeroize", -] - [[package]] name = "curve25519-dalek" version = "4.1.0" @@ -451,6 +429,7 @@ dependencies = [ "cfg-if 1.0.0", "cpufeatures", "curve25519-dalek-derive", + "digest", "fiat-crypto", "platforms", "rustc_version", @@ -521,6 +500,16 @@ dependencies = [ "zeroize", ] +[[package]] +name = "der" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c" +dependencies = [ + "const-oid", + "zeroize", +] + [[package]] name = "deranged" version = "0.3.8" @@ -568,22 +557,13 @@ version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" -[[package]] -name = "digest" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" -dependencies = [ - "generic-array", -] - [[package]] name = "digest" version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "block-buffer 0.10.4", + "block-buffer", "const-oid", "crypto-common", "subtle", @@ -619,17 +599,27 @@ dependencies = [ "signature 1.6.4", ] +[[package]] +name = "ed25519" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +dependencies = [ + "pkcs8 0.10.2", + "signature 2.1.0", +] + [[package]] name = "ed25519-dalek" -version = "1.0.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" +checksum = "7277392b266383ef8396db7fdeb1e77b6c52fed775f5df15bb24f35b72156980" dependencies = [ - "curve25519-dalek 3.2.0", - "ed25519", - "rand 0.7.3", + "curve25519-dalek", + "ed25519 2.2.3", + "rand_core", "serde", - "sha2 0.9.9", + "sha2", "zeroize", ] @@ -1440,7 +1430,7 @@ dependencies = [ "crypto_box", "crypto_secretbox", "data-encoding", - "digest 0.10.7", + "digest", "ed25519-dalek", "generic-array", "getrandom 0.1.16", @@ -1451,8 +1441,7 @@ dependencies = [ "libsodium-sys", "openssl", "pretty_assertions", - "rand 0.7.3", - "rand 0.8.5", + "rand", "rmp-serde", "rsa", "rstest", @@ -1460,7 +1449,7 @@ dependencies = [ "serde_bytes", "serde_test", "sha1", - "sha2 0.10.8", + "sha2", "sodiumoxide", "thiserror", "x25519-dalek", @@ -1560,7 +1549,7 @@ dependencies = [ "libparsec_tests_lite", "libparsec_types", "paste", - "rand 0.8.5", + "rand", "rmp-serde", "serde", "serde_json", @@ -1662,7 +1651,7 @@ dependencies = [ "libparsec_types", "paste", "percent-encoding", - "rand 0.8.5", + "rand", "regex", "regex-syntax", "rmp-serde", @@ -1672,7 +1661,7 @@ dependencies = [ "serde_bytes", "serde_test", "serde_with", - "sha2 0.10.8", + "sha2", "thiserror", "unicode-normalization", "url", @@ -1894,7 +1883,7 @@ dependencies = [ "num-integer", "num-iter", "num-traits", - "rand 0.8.5", + "rand", "smallvec", "zeroize", ] @@ -2087,7 +2076,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "346f04948ba92c43e8469c1ee6736c7563d71012b17d40745260fe106aac2166" dependencies = [ "base64ct", - "rand_core 0.6.4", + "rand_core", "subtle", ] @@ -2160,7 +2149,7 @@ checksum = "b42f0394d3123e33353ca5e1e89092e533d2cc490389f2bd6131c43c634ebc5f" dependencies = [ "once_cell", "pest", - "sha2 0.10.8", + "sha2", ] [[package]] @@ -2201,9 +2190,9 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eff33bdbdfc54cc98a2eca766ebdec3e1b8fb7387523d5c9c9a2891da856f719" dependencies = [ - "der", - "pkcs8", - "spki", + "der 0.6.1", + "pkcs8 0.9.0", + "spki 0.6.0", "zeroize", ] @@ -2213,8 +2202,18 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba" dependencies = [ - "der", - "spki", + "der 0.6.1", + "spki 0.6.0", +] + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der 0.7.8", + "spki 0.7.2", ] [[package]] @@ -2360,19 +2359,6 @@ dependencies = [ "proc-macro2", ] -[[package]] -name = "rand" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -dependencies = [ - "getrandom 0.1.16", - "libc", - "rand_chacha 0.2.2", - "rand_core 0.5.1", - "rand_hc", -] - [[package]] name = "rand" version = "0.8.5" @@ -2380,18 +2366,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_chacha" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" -dependencies = [ - "ppv-lite86", - "rand_core 0.5.1", + "rand_chacha", + "rand_core", ] [[package]] @@ -2401,16 +2377,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" -dependencies = [ - "getrandom 0.1.16", + "rand_core", ] [[package]] @@ -2422,15 +2389,6 @@ dependencies = [ "getrandom 0.2.10", ] -[[package]] -name = "rand_hc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -dependencies = [ - "rand_core 0.5.1", -] - [[package]] name = "redox_syscall" version = "0.2.16" @@ -2593,14 +2551,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55a77d189da1fee555ad95b7e50e7457d91c0e089ec68ca69ad2989413bbdab4" dependencies = [ "byteorder", - "digest 0.10.7", + "digest", "num-bigint-dig", "num-integer", "num-iter", "num-traits", "pkcs1", - "pkcs8", - "rand_core 0.6.4", + "pkcs8 0.9.0", + "rand_core", "signature 2.1.0", "subtle", "zeroize", @@ -2642,7 +2600,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88530b681abe67924d42cca181d070e3ac20e0740569441a9e35a7cedd2b34a4" dependencies = [ "quote", - "rand 0.8.5", + "rand", "rustc_version", "syn 2.0.38", ] @@ -2868,20 +2826,7 @@ checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ "cfg-if 1.0.0", "cpufeatures", - "digest 0.10.7", -] - -[[package]] -name = "sha2" -version = "0.9.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" -dependencies = [ - "block-buffer 0.9.0", - "cfg-if 1.0.0", - "cpufeatures", - "digest 0.9.0", - "opaque-debug", + "digest", ] [[package]] @@ -2892,7 +2837,7 @@ checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if 1.0.0", "cpufeatures", - "digest 0.10.7", + "digest", ] [[package]] @@ -2913,8 +2858,8 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500" dependencies = [ - "digest 0.10.7", - "rand_core 0.6.4", + "digest", + "rand_core", ] [[package]] @@ -2958,7 +2903,7 @@ version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e26be3acb6c2d9a7aac28482586a7856436af4cfe7100031d219de2d2ecb0028" dependencies = [ - "ed25519", + "ed25519 1.5.3", "libc", "libsodium-sys", "serde", @@ -2986,7 +2931,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b" dependencies = [ "base64ct", - "der", + "der 0.6.1", +] + +[[package]] +name = "spki" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" +dependencies = [ + "base64ct", + "der 0.7.8", ] [[package]] @@ -3303,7 +3258,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88ad59a7560b41a70d191093a945f0b87bc1deeda46fb237479708a1d6b6cdfc" dependencies = [ "getrandom 0.2.10", - "rand 0.8.5", + "rand", "serde", ] @@ -3693,8 +3648,8 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb66477291e7e8d2b0ff1bcb900bf29489a9692816d79874bea351e7a8b6de96" dependencies = [ - "curve25519-dalek 4.1.0", - "rand_core 0.6.4", + "curve25519-dalek", + "rand_core", "serde", "zeroize", ] diff --git a/Cargo.toml b/Cargo.toml index 319abce7b1d..12e8bfdfc8b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -104,7 +104,7 @@ data-encoding = { version = "2.4.0", default-features = false } diesel = { version = "2.1.3", default-features = false } digest = { version = "0.10.7", default-features = false } dirs = { version = "5.0.1", default-features = false } -ed25519-dalek = { version = "1.0.1", default-features = false } +ed25519-dalek = { version = "2.0.0", default-features = false } email-address-parser = { version = "2.0.0", default-features = false } env_logger = { version = "0.10.0", default-features = false } event-listener = { version = "2.5.3", default-features = false } @@ -144,7 +144,6 @@ proc-macro2 = { version = "1.0.69", default-features = false } pyo3 = { version = "0.19.2", default-features = false } quote = { version = "1.0.33", default-features = false } # Two versions of `rand` needed in `libparsec_crypto` -rand_07 = { package = "rand", version = "0.7", default-features = false } rand_08 = { package = "rand", version = "0.8", default-features = false } rand = { version = "0.8.5", default-features = false } regex = { version = "1.10.2", default-features = false } diff --git a/libparsec/crates/crypto/Cargo.toml b/libparsec/crates/crypto/Cargo.toml index fdcf29a5474..9d0aa2b8406 100644 --- a/libparsec/crates/crypto/Cargo.toml +++ b/libparsec/crates/crypto/Cargo.toml @@ -28,7 +28,6 @@ use-sodiumoxide = [ # "dep:getrandom_01", # "dep:getrandom_02", # "dep:lazy_static", -# "dep:rand_07", # "dep:rand_08", # "dep:rsa", # "dep:sha1", @@ -108,7 +107,7 @@ argon2 = { workspace = true, features = ["alloc", "password-hash", "rand"] } # blake2 = { workspace = true, features = ["std"] } # Optional rustcrypto dep crypto_box = { workspace = true, features = ["std", "salsa20", "rand_core"] } # Optional rustcrypto dep digest = { workspace = true, features = ["core-api"] } # Optional rustcrypto dep -ed25519-dalek = { workspace = true, features = ["std", "rand", "u64_backend"] } # Optional rustcrypto dep +ed25519-dalek = { workspace = true, features = ["std", "zeroize", "fast", "rand_core"] } # Optional rustcrypto dep generic-array = { workspace = true, features = ["serde"] } # Optional rustcrypto dep lazy_static = { workspace = true } # Optional rustcrypto dep rsa = { workspace = true, features = ["std", "pem"] } # Optional rustcrypto dep @@ -126,10 +125,6 @@ crypto_secretbox = { workspace = true, features = ["alloc", "getrandom", "salsa2 # configuring wasm-unknown-unknown web support (see [features] part). getrandom_01 = { workspace = true } # Optional rustcrypto dep getrandom_02 = { workspace = true } # Optional rustcrypto dep -# On top of that we need to have access to the two version of rand (0.7 and 0.8) -# to provide the randomness configuration to the crypto functions. -# rand 0.7 relies on rand_core~=0.5/getrandom~=0.1 -rand_07 = { workspace = true, features = ["std"] } # Optional rustcrypto dep # rand 0.8 relies on rand_core~=0.6/getrandom~=0.2 rand_08 = { workspace = true, features = ["std", "std_rng"] } # Optional rustcrypto dep diff --git a/libparsec/crates/crypto/src/rustcrypto/sign.rs b/libparsec/crates/crypto/src/rustcrypto/sign.rs index fc7ecebaa24..0ba527a6844 100644 --- a/libparsec/crates/crypto/src/rustcrypto/sign.rs +++ b/libparsec/crates/crypto/src/rustcrypto/sign.rs @@ -1,6 +1,6 @@ // Parsec Cloud (https://parsec.cloud) Copyright (c) BUSL-1.1 2016-present Scille SAS -use ed25519_dalek::{Keypair, Signature, Signer, Verifier}; +use ed25519_dalek::{Signature, Signer, Verifier}; use serde::{Deserialize, Serialize}; use serde_bytes::Bytes; @@ -10,25 +10,15 @@ use crate::CryptoError; * SigningKey */ -#[derive(Deserialize)] +#[derive(Deserialize, Clone)] #[serde(try_from = "&Bytes")] -pub struct SigningKey(Keypair); +pub struct SigningKey(ed25519_dalek::SigningKey); crate::impl_key_debug!(SigningKey); -impl Clone for SigningKey { - fn clone(&self) -> Self { - Self( - Keypair::from_bytes(&self.0.to_bytes()).expect( - "The input bytes come from the cloned signing key, which is a valid key size", - ), - ) - } -} - impl PartialEq for SigningKey { fn eq(&self, other: &Self) -> bool { - self.as_ref() == other.as_ref() + self.0.to_bytes() == other.0.to_bytes() } } @@ -42,11 +32,13 @@ impl SigningKey { pub const SIGNATURE_SIZE: usize = ed25519_dalek::SIGNATURE_LENGTH; pub fn verify_key(&self) -> VerifyKey { - VerifyKey(self.0.public) + VerifyKey(self.0.verifying_key()) } pub fn generate() -> Self { - Self(Keypair::generate(&mut rand_07::thread_rng())) + Self(ed25519_dalek::SigningKey::generate( + &mut rand_08::thread_rng(), + )) } /// Sign the message and prefix it with the signature. @@ -61,31 +53,25 @@ impl SigningKey { pub fn sign_only_signature(&self, data: &[u8]) -> [u8; Self::SIGNATURE_SIZE] { self.0.sign(data).to_bytes() } -} -impl AsRef<[u8]> for SigningKey { - #[inline] - fn as_ref(&self) -> &[u8] { - self.0.secret.as_bytes() + pub fn to_bytes(&self) -> [u8; Self::SIZE] { + self.0.to_bytes() } } impl TryFrom<&[u8]> for SigningKey { type Error = CryptoError; fn try_from(data: &[u8]) -> Result { - let sk = ed25519_dalek::SecretKey::from_bytes(data).map_err(|_| Self::Error::DataSize)?; - let pk = ed25519_dalek::PublicKey::from(&sk); - Ok(Self(Keypair { - secret: sk, - public: pk, - })) + ed25519_dalek::SigningKey::try_from(data) + .map(Self) + .map_err(|_| Self::Error::DataSize) } } impl From<[u8; Self::SIZE]> for SigningKey { fn from(key: [u8; Self::SIZE]) -> Self { // TODO: zero copy - Self::try_from(key.as_ref()).expect("Cannot fail because the provided secret key is the expected size of `ed25519_dalek::SecretKey::from_bytes`") + Self(ed25519_dalek::SigningKey::from(key)) } } @@ -101,7 +87,7 @@ impl Serialize for SigningKey { where S: serde::Serializer, { - serializer.serialize_bytes(self.as_ref()) + serializer.serialize_bytes(&self.to_bytes()) } } @@ -111,7 +97,7 @@ impl Serialize for SigningKey { #[derive(Clone, PartialEq, Eq, Deserialize)] #[serde(try_from = "&Bytes")] -pub struct VerifyKey(ed25519_dalek::PublicKey); +pub struct VerifyKey(ed25519_dalek::VerifyingKey); crate::impl_key_debug!(VerifyKey); @@ -156,7 +142,7 @@ impl VerifyKey { raw_signature: &[u8; SigningKey::SIGNATURE_SIZE], message: &[u8], ) -> Result<(), CryptoError> { - let signature = Signature::from_bytes(raw_signature).map_err(|_| CryptoError::Signature)?; + let signature = Signature::from_bytes(raw_signature); self.0 .verify(message, &signature) .map_err(|_| CryptoError::SignatureVerification)?; @@ -174,7 +160,7 @@ impl AsRef<[u8]> for VerifyKey { impl TryFrom<&[u8]> for VerifyKey { type Error = CryptoError; fn try_from(data: &[u8]) -> Result { - ed25519_dalek::PublicKey::from_bytes(data) + ed25519_dalek::VerifyingKey::try_from(data) .map(Self) .map_err(|_| Self::Error::DataSize) } diff --git a/libparsec/crates/crypto/src/sodiumoxide/private.rs b/libparsec/crates/crypto/src/sodiumoxide/private.rs index dadaf8cf593..f9094359077 100644 --- a/libparsec/crates/crypto/src/sodiumoxide/private.rs +++ b/libparsec/crates/crypto/src/sodiumoxide/private.rs @@ -39,7 +39,7 @@ impl PrivateKey { } pub fn generate_shared_secret_key(&self, peer_public_key: &PublicKey) -> SecretKey { - let scalar = Scalar(self.as_ref().try_into().unwrap()); + let scalar = Scalar(self.to_bytes()); let group_element = GroupElement(peer_public_key.as_ref().try_into().unwrap()); let mult = scalarmult(&scalar, &group_element).unwrap(); // TODO: too many copies... @@ -47,7 +47,7 @@ impl PrivateKey { SecretKey::from(x) } - pub fn to_bytes(&self) -> [u8; SECRETKEYBYTES] { + pub fn to_bytes(&self) -> [u8; Self::SIZE] { self.0 .0 } } @@ -64,7 +64,7 @@ impl Serialize for PrivateKey { where S: serde::Serializer, { - serializer.serialize_bytes(self.as_ref()) + serializer.serialize_bytes(&self.to_bytes()) } } diff --git a/libparsec/crates/crypto/src/sodiumoxide/sign.rs b/libparsec/crates/crypto/src/sodiumoxide/sign.rs index f93c0c808cb..f0c35fa650e 100644 --- a/libparsec/crates/crypto/src/sodiumoxide/sign.rs +++ b/libparsec/crates/crypto/src/sodiumoxide/sign.rs @@ -42,6 +42,12 @@ impl SigningKey { self.0.sign(data).to_bytes() } + + pub fn to_bytes(&self) -> [u8; Self::SIZE] { + // SecretKey is composed of Seed then PublicKey, we export only seed here + <[u8; Self::SIZE]>::try_from(&self.0 .0[..Self::SIZE]) + .expect("The internal array is > Self::SIZE") + } } impl TryFrom<&[u8]> for SigningKey { @@ -61,14 +67,6 @@ impl From<[u8; Self::SIZE]> for SigningKey { } } -impl AsRef<[u8]> for SigningKey { - #[inline] - fn as_ref(&self) -> &[u8] { - // SecretKey is composed of Seed then PublicKey, we export only seed here - &self.0 .0[..Self::SIZE] - } -} - impl TryFrom<&Bytes> for SigningKey { type Error = CryptoError; fn try_from(data: &Bytes) -> Result { @@ -81,7 +79,7 @@ impl Serialize for SigningKey { where S: serde::Serializer, { - serializer.serialize_bytes(self.as_ref()) + serializer.serialize_bytes(&self.to_bytes()) } } diff --git a/libparsec/crates/testbed/src/template/crc_hash.rs b/libparsec/crates/testbed/src/template/crc_hash.rs index 5d3fa4f7bb0..f3ad32d8c64 100644 --- a/libparsec/crates/testbed/src/template/crc_hash.rs +++ b/libparsec/crates/testbed/src/template/crc_hash.rs @@ -226,7 +226,7 @@ impl CrcHash for HashDigest { impl CrcHash for SigningKey { fn crc_hash(&self, hasher: &mut crc32fast::Hasher) { hasher.update(b"SigningKey"); - hasher.update(self.as_ref()); + hasher.update(&self.to_bytes()); } } diff --git a/libparsec/crates/testbed/src/template/events.rs b/libparsec/crates/testbed/src/template/events.rs index 67689df9605..f875657b0a6 100644 --- a/libparsec/crates/testbed/src/template/events.rs +++ b/libparsec/crates/testbed/src/template/events.rs @@ -914,7 +914,7 @@ impl CrcHash for TestbedEventNewDevice { self.author.crc_hash(state); self.device_id.crc_hash(state); self.device_label.crc_hash(state); - self.signing_key.as_ref().crc_hash(state); + self.signing_key.crc_hash(state); self.local_symkey.crc_hash(state); self.local_password.crc_hash(state); self.certificate_index.crc_hash(state); diff --git a/server/src/api_crypto.rs b/server/src/api_crypto.rs index f62944638ac..729aef32e0b 100644 --- a/server/src/api_crypto.rs +++ b/server/src/api_crypto.rs @@ -105,8 +105,8 @@ impl SigningKey { PyBytes::new(py, self.0.sign_only_signature(data).as_slice()) } - fn encode<'py>(&self, py: Python<'py>) -> &'py PyBytes { - PyBytes::new(py, self.0.as_ref()) + fn encode(&self) -> [u8; libparsec_types::SigningKey::SIZE] { + self.0.to_bytes() } }