Skip to content

Commit 5337f14

Browse files
authored
Expose Ed25519PublicKey (#695)
1 parent 33614e2 commit 5337f14

File tree

4 files changed

+21
-9
lines changed

4 files changed

+21
-9
lines changed

aws-lc-rs/src/ed25519.rs

+1
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ impl Debug for Seed<'_> {
117117

118118
#[derive(Clone)]
119119
#[allow(clippy::module_name_repetitions)]
120+
/// Ed25519 Public Key
120121
pub struct PublicKey {
121122
evp_pkey: LcPtr<EVP_PKEY>,
122123
public_key_bytes: [u8; ED25519_PUBLIC_KEY_LEN],

aws-lc-rs/src/signature.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,8 @@ pub use crate::ec::signature::{
253253
EcdsaSigningAlgorithm, EcdsaVerificationAlgorithm, PublicKey as EcdsaPublicKey,
254254
};
255255
pub use crate::ed25519::{
256-
Ed25519KeyPair, EdDSAParameters, Seed as Ed25519Seed, ED25519_PUBLIC_KEY_LEN,
256+
Ed25519KeyPair, EdDSAParameters, PublicKey as Ed25519PublicKey, Seed as Ed25519Seed,
257+
ED25519_PUBLIC_KEY_LEN,
257258
};
258259
use crate::{digest, ec, error, hex, rsa, sealed};
259260

aws-lc-rs/tests/aead_test.rs

+1-5
Original file line numberDiff line numberDiff line change
@@ -189,14 +189,10 @@ fn test_aead<Seal, Open>(
189189
// Debug builds are too slow for this, so for those builds, only
190190
// test a smaller subset.
191191

192-
let mut more_comprehensive_in_prefix_lengths = vec![0; 4096].into_boxed_slice();
192+
let more_comprehensive_in_prefix_lengths: Box<[usize]> = (1..4096).collect();
193193
let in_prefix_lengths = if cfg!(any(debug_assertions, disable_slow_tests)) {
194194
&MINIMAL_IN_PREFIX_LENS[..]
195195
} else {
196-
#[allow(clippy::needless_range_loop)]
197-
for b in 0..more_comprehensive_in_prefix_lengths.len() {
198-
more_comprehensive_in_prefix_lengths[b] = b;
199-
}
200196
&more_comprehensive_in_prefix_lengths[..]
201197
};
202198
let mut o_in_out = vec![123u8; 4096];

aws-lc-rs/tests/ed25519_tests.rs

+17-3
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
// Modifications copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
44
// SPDX-License-Identifier: Apache-2.0 OR ISC
55

6-
use aws_lc_rs::encoding::{AsBigEndian, Curve25519SeedBin};
6+
use aws_lc_rs::encoding::{AsBigEndian, AsDer, Curve25519SeedBin};
77
use aws_lc_rs::rand::SystemRandom;
8-
use aws_lc_rs::signature::{self, Ed25519KeyPair, KeyPair};
8+
use aws_lc_rs::signature::{self, Ed25519KeyPair, KeyPair, VerificationAlgorithm, ED25519};
99
use aws_lc_rs::{error, test, test_file};
1010

1111
#[test]
@@ -179,9 +179,23 @@ fn ed25519_test_public_key_coverage() {
179179
"PublicKey(\"0590d26d769c711c3d8cbffc41f5b4665d63feb3d17765c3b630d50bf5c188fb\")";
180180

181181
let key_pair = Ed25519KeyPair::from_pkcs8_maybe_unchecked(PRIVATE_KEY).unwrap();
182+
let message = b"Hello world!";
183+
let sig = key_pair.sign(message);
184+
185+
let public_key = key_pair.public_key();
186+
let public_key_raw_bytes = public_key.as_ref();
187+
let public_key_x509 = public_key.as_der().unwrap();
188+
let public_key_x509_bytes = public_key_x509.as_ref();
182189

183190
// Test `AsRef<[u8]>`
184-
assert_eq!(key_pair.public_key().as_ref(), PUBLIC_KEY);
191+
assert_eq!(public_key_raw_bytes, PUBLIC_KEY);
192+
193+
assert!(ED25519
194+
.verify_sig(public_key_raw_bytes, message, sig.as_ref())
195+
.is_ok());
196+
assert!(ED25519
197+
.verify_sig(public_key_x509_bytes, message, sig.as_ref())
198+
.is_ok());
185199

186200
// Test `Clone`.
187201
#[allow(clippy::clone_on_copy)]

0 commit comments

Comments
 (0)