Skip to content

Commit

Permalink
Mlakey: add more tests
Browse files Browse the repository at this point in the history
  • Loading branch information
commial committed Aug 2, 2024
1 parent f71d5d7 commit 27b7c03
Show file tree
Hide file tree
Showing 6 changed files with 223 additions and 7 deletions.
117 changes: 110 additions & 7 deletions mlakey-parser/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -655,10 +655,27 @@ mod tests {
use rand_chacha::ChaChaRng;
use x25519_dalek::PublicKey;

/// MLA private key, DER, X25519 then MLKEM
static MLA_DER_PRIV: &[u8] = include_bytes!("../../samples/test_mlakey.der");
/// MLA public key, DER, X25519 then MLKEM
static MLA_DER_PUB: &[u8] = include_bytes!("../../samples/test_mlakey_pub.der");
/// MLA private key, PEM, X25519 then MLKEM
static MLA_PEM_PRIV: &[u8] = include_bytes!("../../samples/test_mlakey.pem");
/// MLA public key, PEM, X25519 then MLKEM
static MLA_PEM_PUB: &[u8] = include_bytes!("../../samples/test_mlakey_pub.pem");
/// MLA private key, DER, ED25519 then MLKEM
static MLA_DER_PRIV_ED: &[u8] = include_bytes!("../../samples/test_mlakey_ed.der");
/// MLA public key, DER, ED25519 then MLKEM
static MLA_DER_PUB_ED: &[u8] = include_bytes!("../../samples/test_mlakey_ed_pub.der");
/// MLA private key, DER, MLKEM then X25519
/// Note: This is the same as MLA_DER_PRIV
static MLA_DER_PRIV_REV: &[u8] = include_bytes!("../../samples/test_mlakey_rev.der");
/// MLA public key, DER, MLKEM then X25519
/// Note: This is the same as MLA_DER_PUB
static MLA_DER_PUB_REV: &[u8] = include_bytes!("../../samples/test_mlakey_rev_pub.der");
/// Several PEM, X25519 then MLKEM, keys in the same file
/// Note: Many[0] is MLA_PEM_PUB
static MLA_PEM_PUB_MANY: &[u8] = include_bytes!("../../samples/test_mlakey_many_pub.pem");

// Samples, generated by:
// openssl genpkey -algorithm x25519 -outform DER -out test_x25519.der
Expand All @@ -672,12 +689,12 @@ mod tests {
static ED_DER_PUB: &[u8] = include_bytes!("../../samples/test_ed25519_pub.der");

// openssl pkey -in test_ed25519_pub.der -inform DER -pubin -out test_ed25519_pub.pem -outform PEM -pubout
static PEM_PUB: &[u8] = include_bytes!("../../samples/test_ed25519_pub.pem");
static ED_PEM_PUB: &[u8] = include_bytes!("../../samples/test_ed25519_pub.pem");
// openssl pkey -in test_ed25519.der -inform DER -out test_ed25519.pem -outform PEM
static PEM_PRIV: &[u8] = include_bytes!("../../samples/test_ed25519.pem");
static ED_PEM_PRIV: &[u8] = include_bytes!("../../samples/test_ed25519.pem");

// Many[0] is PEM_PUB
static PEM_PUB_MANY: &[u8] = include_bytes!("../../samples/test_25519_pub_many.pem");
static ED_PEM_PUB_MANY: &[u8] = include_bytes!("../../samples/test_25519_pub_many.pem");

#[test]
fn parse_and_check_ed_pubkeys_der() {
Expand All @@ -701,25 +718,25 @@ mod tests {

#[test]
fn parse_and_check_pubkeys_multi_format() {
let pub_key_pem = parse_openssl_25519_pubkey(PEM_PUB).unwrap();
let pub_key_pem = parse_openssl_25519_pubkey(ED_PEM_PUB).unwrap();
let pub_key_der = parse_openssl_25519_pubkey(ED_DER_PUB).unwrap();
assert_eq!(pub_key_der.as_bytes().len(), ECC_PUBKEY_SIZE);
assert_eq!(pub_key_der.as_bytes(), pub_key_pem.as_bytes());
let priv_key_pem = parse_openssl_25519_privkey(PEM_PRIV).unwrap();
let priv_key_pem = parse_openssl_25519_privkey(ED_PEM_PRIV).unwrap();
let priv_key_der = parse_openssl_25519_privkey(ED_DER_PRIV).unwrap();
assert_eq!(priv_key_der.to_bytes().len(), ECC_PRIVKEY_SIZE);
assert_eq!(priv_key_der.to_bytes(), priv_key_pem.to_bytes());
}

#[test]
fn parse_many_pubkeys() {
let pub_keys_pem = parse_openssl_25519_pubkeys_pem_many(PEM_PUB).unwrap();
let pub_keys_pem = parse_openssl_25519_pubkeys_pem_many(ED_PEM_PUB).unwrap();
assert_eq!(pub_keys_pem.len(), 1);
let pub_key_der = parse_openssl_25519_pubkey(ED_DER_PUB).unwrap();
assert_eq!(pub_key_der.as_bytes().len(), ECC_PUBKEY_SIZE);
assert_eq!(pub_key_der.as_bytes(), pub_keys_pem[0].as_bytes());

let pub_keys_pem = parse_openssl_25519_pubkeys_pem_many(PEM_PUB_MANY).unwrap();
let pub_keys_pem = parse_openssl_25519_pubkeys_pem_many(ED_PEM_PUB_MANY).unwrap();
assert_eq!(pub_keys_pem.len(), 3);
assert_eq!(pub_key_der.as_bytes(), pub_keys_pem[0].as_bytes());
assert_ne!(pub_key_der.as_bytes(), pub_keys_pem[1].as_bytes());
Expand Down Expand Up @@ -870,4 +887,90 @@ mod tests {
priv_key_pem.private_key_ml.as_bytes()
);
}

/// Parse keys in DER with Ed25519 then MLKEM form
#[test]
fn parse_priv_der_ed() {
let priv_key_ed25519 = parse_mlakey_privkey_der(MLA_DER_PRIV_ED).unwrap();
let pub_key_ed25519 = parse_mlakey_pubkey_der(MLA_DER_PUB_ED).unwrap();
check_key_pair(pub_key_ed25519, priv_key_ed25519);
}

/// Parse a PEM file containning several public keys
#[test]
fn parse_many_mlakey_pubkeys() {
// Parse only one with `many` API
let pub_keys_pem = parse_mlakey_pubkeys_pem_many(MLA_PEM_PUB).unwrap();
assert_eq!(pub_keys_pem.len(), 1);
let pub_key = parse_mlakey_pubkey(MLA_DER_PUB).unwrap();
assert_eq!(pub_key.public_key_ecc.as_bytes().len(), ECC_PUBKEY_SIZE);
assert_eq!(
pub_key.public_key_ml.as_bytes().len(),
MLKEM_1024_PUBKEY_SIZE
);
assert_eq!(
pub_key.public_key_ecc.as_bytes(),
pub_keys_pem[0].public_key_ecc.as_bytes()
);
assert_eq!(
pub_key.public_key_ml.as_bytes(),
pub_keys_pem[0].public_key_ml.as_bytes()
);

// Parse several key in the same PEM file
let pub_keys_pem = parse_mlakey_pubkeys_pem_many(MLA_PEM_PUB_MANY).unwrap();
assert_eq!(pub_keys_pem.len(), 3);
assert_eq!(
pub_key.public_key_ecc.as_bytes(),
pub_keys_pem[0].public_key_ecc.as_bytes()
);
assert_ne!(
pub_key.public_key_ecc.as_bytes(),
pub_keys_pem[1].public_key_ecc.as_bytes()
);
assert_ne!(
pub_key.public_key_ecc.as_bytes(),
pub_keys_pem[2].public_key_ecc.as_bytes()
);
assert_eq!(
pub_key.public_key_ml.as_bytes(),
pub_keys_pem[0].public_key_ml.as_bytes()
);
assert_ne!(
pub_key.public_key_ml.as_bytes(),
pub_keys_pem[1].public_key_ml.as_bytes()
);
assert_ne!(
pub_key.public_key_ml.as_bytes(),
pub_keys_pem[2].public_key_ml.as_bytes()
);
}

/// Parse the (same) key in X25519 then MLKEM, and MLKEM then X25519 forms
#[test]
fn parse_der_rev() {
// Check private key
let priv_key = parse_mlakey_privkey_der(MLA_DER_PRIV).unwrap();
let priv_key_rev = parse_mlakey_privkey_der(MLA_DER_PRIV_REV).unwrap();
assert_eq!(
priv_key.private_key_ecc.as_bytes(),
priv_key_rev.private_key_ecc.as_bytes()
);
assert_eq!(
priv_key.private_key_ml.as_bytes(),
priv_key_rev.private_key_ml.as_bytes()
);

// Check public key
let pub_key = parse_mlakey_pubkey_der(MLA_DER_PUB).unwrap();
let pub_key_rev = parse_mlakey_pubkey_der(MLA_DER_PUB_REV).unwrap();
assert_eq!(
pub_key.public_key_ecc.as_bytes(),
pub_key_rev.public_key_ecc.as_bytes()
);
assert_eq!(
pub_key.public_key_ml.as_bytes(),
pub_key_rev.public_key_ml.as_bytes()
);
}
}
Binary file added samples/test_mlakey_ed.der
Binary file not shown.
Binary file added samples/test_mlakey_ed_pub.der
Binary file not shown.
113 changes: 113 additions & 0 deletions samples/test_mlakey_many_pub.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
-----BEGIN PUBLIC KEY-----
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
jhZTMupRsqLD6VNtLbZcgA==
-----END PUBLIC KEY-----
-----BEGIN PUBLIC KEY-----
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
f6wInA==
-----END PUBLIC KEY-----
-----BEGIN PUBLIC KEY-----
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
QftGRw==
-----END PUBLIC KEY-----
Binary file added samples/test_mlakey_rev.der
Binary file not shown.
Binary file added samples/test_mlakey_rev_pub.der
Binary file not shown.

0 comments on commit 27b7c03

Please sign in to comment.