(
seed: bytes,
)
| 40 | |
| 41 | |
| 42 | def _hybrid_from_mlkem1024_p384_seed( |
| 43 | seed: bytes, |
| 44 | ) -> MLKEM1024P384PrivateKey: |
| 45 | # MLKEM1024-P384 seed expansion: SHAKE256(seed, 112) -> (seed_PQ (64) || |
| 46 | # seed_T (48)). |
| 47 | expanded = hashlib.shake_256(seed).digest(112) |
| 48 | mlkem_sk = mlkem.MLKEM1024PrivateKey.from_seed_bytes(expanded[:64]) |
| 49 | p384_value = int.from_bytes(expanded[64:112], "big") |
| 50 | p384_sk = ec.derive_private_key(p384_value, ec.SECP384R1()) |
| 51 | return MLKEM1024P384PrivateKey(mlkem_sk, p384_sk) |
| 52 | |
| 53 | |
| 54 | X25519_ENC_LENGTH = 32 |
no test coverage detected