feat: update jose-test
This commit is contained in:
@@ -163,27 +163,23 @@ where
|
|||||||
let header_b64 = URL_SAFE_NO_PAD.encode(header_str.as_bytes());
|
let header_b64 = URL_SAFE_NO_PAD.encode(header_str.as_bytes());
|
||||||
|
|
||||||
let data_key: [u8; 32] = random();
|
let data_key: [u8; 32] = random();
|
||||||
let nonce: [u8; 12] = random();
|
let iv: [u8; 12] = random();
|
||||||
let mut encryptor = Aes256GcmStreamEncryptor::new(data_key, &nonce);
|
let mut encryptor = Aes256GcmStreamEncryptor::new(data_key, &iv);
|
||||||
encryptor.init_adata(header_b64.as_bytes());
|
encryptor.init_adata(header_b64.as_bytes());
|
||||||
let mut e = encryptor.update(payload);
|
let mut ciphertext = encryptor.update(payload);
|
||||||
let (f, t) = encryptor.finalize();
|
let (ciphertext_final, tag) = encryptor.finalize();
|
||||||
e.extend_from_slice(&f);
|
ciphertext.extend_from_slice(&ciphertext_final);
|
||||||
|
|
||||||
let wrap_key = key_wrap_fn(&data_key)?;
|
let cek = key_wrap_fn(&data_key)?;
|
||||||
|
|
||||||
let mut jwe = String::new();
|
Ok(format!(
|
||||||
jwe.push_str(&header_b64);
|
"{}.{}.{}.{}.{}",
|
||||||
jwe.push_str(JWE_DOT);
|
header_b64,
|
||||||
jwe.push_str(&URL_SAFE_NO_PAD.encode(&wrap_key));
|
URL_SAFE_NO_PAD.encode(&cek),
|
||||||
jwe.push_str(JWE_DOT);
|
URL_SAFE_NO_PAD.encode(&iv),
|
||||||
jwe.push_str(&URL_SAFE_NO_PAD.encode(&nonce));
|
URL_SAFE_NO_PAD.encode(&ciphertext),
|
||||||
jwe.push_str(JWE_DOT);
|
URL_SAFE_NO_PAD.encode(&tag)
|
||||||
jwe.push_str(&URL_SAFE_NO_PAD.encode(&e));
|
))
|
||||||
jwe.push_str(JWE_DOT);
|
|
||||||
jwe.push_str(&URL_SAFE_NO_PAD.encode(&t));
|
|
||||||
|
|
||||||
Ok(jwe)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn deserialize_jwe_fn<F>(jwe: &str, key_unwrap_fn: F) -> XResult<(Vec<u8>, JweHeader2)>
|
fn deserialize_jwe_fn<F>(jwe: &str, key_unwrap_fn: F) -> XResult<(Vec<u8>, JweHeader2)>
|
||||||
|
|||||||
Reference in New Issue
Block a user