diff options
author | Filip Skokan <panva.ip@gmail.com> | 2022-10-04 08:06:25 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-03 23:06:25 -0700 |
commit | 7742ad77fa94c402d59a890c67a11da55886c68b (patch) | |
tree | 8d70af9ec2ce2176acc16df89fe5146d59fdd6cf /ext/crypto/ed25519.rs | |
parent | fde938116d8b44a87579d6b65dcba79cbe988809 (diff) |
fix(ext/crypto): curve25519 import export (#16140)
Diffstat (limited to 'ext/crypto/ed25519.rs')
-rw-r--r-- | ext/crypto/ed25519.rs | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/ext/crypto/ed25519.rs b/ext/crypto/ed25519.rs index a8060cae1..b7ff99d8b 100644 --- a/ext/crypto/ed25519.rs +++ b/ext/crypto/ed25519.rs @@ -66,6 +66,7 @@ pub fn op_import_spki_ed25519(key_data: &[u8], out: &mut [u8]) -> bool { #[op(fast)] pub fn op_import_pkcs8_ed25519(key_data: &[u8], out: &mut [u8]) -> bool { // 2-3. + // This should probably use OneAsymmetricKey instead let pk_info = match PrivateKeyInfo::from_der(key_data) { Ok(pk_info) => pk_info, Err(_) => return false, @@ -81,10 +82,10 @@ pub fn op_import_pkcs8_ed25519(key_data: &[u8], out: &mut [u8]) -> bool { } // 6. // CurvePrivateKey ::= OCTET STRING - if pk_info.private_key.len() != 32 { + if pk_info.private_key.len() != 34 { return false; } - out.copy_from_slice(pk_info.private_key); + out.copy_from_slice(&pk_info.private_key[2..]); true } @@ -103,6 +104,7 @@ pub fn op_export_spki_ed25519(pubkey: &[u8]) -> Result<ZeroCopyBuf, AnyError> { #[op] pub fn op_export_pkcs8_ed25519(pkey: &[u8]) -> Result<ZeroCopyBuf, AnyError> { + // This should probably use OneAsymmetricKey instead let pk_info = rsa::pkcs8::PrivateKeyInfo { public_key: None, algorithm: rsa::pkcs8::AlgorithmIdentifier { |