feat: v1.13.19
This commit is contained in:
@@ -1,10 +1,9 @@
|
||||
use crate::rsautil::rsa_public_key_to_jwk;
|
||||
use crate::util::{base64_encode, to_pem};
|
||||
use ecdsa::elliptic_curve::pkcs8::LineEnding;
|
||||
use ml_kem::kem::{Decapsulate, Encapsulate};
|
||||
use ml_kem::{EncodedSizeUser, KemCore, MlKem1024, MlKem512, MlKem768};
|
||||
use rust_util::XResult;
|
||||
use std::convert::TryInto;
|
||||
use crate::pivutil::ToStr;
|
||||
|
||||
#[derive(Debug, Clone, Copy)]
|
||||
pub enum MlKemLen {
|
||||
@@ -13,6 +12,16 @@ pub enum MlKemLen {
|
||||
Len1024,
|
||||
}
|
||||
|
||||
impl ToStr for MlKemLen {
|
||||
fn to_str(&self) -> &str {
|
||||
match self {
|
||||
MlKemLen::Len512 => "mlkem512",
|
||||
MlKemLen::Len768 => "mlkem768",
|
||||
MlKemLen::Len1024 => "mlkem1024",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn generate_mlkem_keypair(len: usize) -> XResult<(String, String, String, Vec<u8>, String)> {
|
||||
let (dk_private, ek_public) = match len {
|
||||
512 => generate_ml_kem_512(),
|
||||
@@ -98,6 +107,19 @@ pub fn generate_ml_kem_1024() -> (Vec<u8>, Vec<u8>) {
|
||||
)
|
||||
}
|
||||
|
||||
pub fn try_parse_encapsulation_key_public_then_encapsulate(bytes: &[u8]) -> XResult<(MlKemLen, Vec<u8>, Vec<u8>)> {
|
||||
if let Ok((ciphertext, shared_key)) = parse_encapsulation_key_512_public_then_encapsulate(bytes) {
|
||||
return Ok((MlKemLen::Len512, ciphertext, shared_key));
|
||||
}
|
||||
if let Ok((ciphertext, shared_key)) = parse_encapsulation_key_768_public_then_encapsulate(bytes) {
|
||||
return Ok((MlKemLen::Len768, ciphertext, shared_key));
|
||||
}
|
||||
if let Ok((ciphertext, shared_key)) = parse_encapsulation_key_1024_public_then_encapsulate(bytes) {
|
||||
return Ok((MlKemLen::Len1024, ciphertext, shared_key));
|
||||
}
|
||||
simple_error!("Invalid encapsulation key, only allow MK-KEM-512, ML-KEM-768, ML-KEM-1024")
|
||||
}
|
||||
|
||||
pub fn parse_encapsulation_key_512_public_then_encapsulate(
|
||||
bytes: &[u8],
|
||||
) -> XResult<(Vec<u8>, Vec<u8>)> {
|
||||
|
||||
Reference in New Issue
Block a user