diff --git a/__crypto/jose-test/src/jose.rs b/__crypto/jose-test/src/jose.rs index ac81d92..ab2b6c8 100644 --- a/__crypto/jose-test/src/jose.rs +++ b/__crypto/jose-test/src/jose.rs @@ -163,27 +163,23 @@ where let header_b64 = URL_SAFE_NO_PAD.encode(header_str.as_bytes()); let data_key: [u8; 32] = random(); - let nonce: [u8; 12] = random(); - let mut encryptor = Aes256GcmStreamEncryptor::new(data_key, &nonce); + let iv: [u8; 12] = random(); + let mut encryptor = Aes256GcmStreamEncryptor::new(data_key, &iv); encryptor.init_adata(header_b64.as_bytes()); - let mut e = encryptor.update(payload); - let (f, t) = encryptor.finalize(); - e.extend_from_slice(&f); + let mut ciphertext = encryptor.update(payload); + let (ciphertext_final, tag) = encryptor.finalize(); + 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(); - jwe.push_str(&header_b64); - jwe.push_str(JWE_DOT); - jwe.push_str(&URL_SAFE_NO_PAD.encode(&wrap_key)); - jwe.push_str(JWE_DOT); - jwe.push_str(&URL_SAFE_NO_PAD.encode(&nonce)); - jwe.push_str(JWE_DOT); - 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) + Ok(format!( + "{}.{}.{}.{}.{}", + header_b64, + URL_SAFE_NO_PAD.encode(&cek), + URL_SAFE_NO_PAD.encode(&iv), + URL_SAFE_NO_PAD.encode(&ciphertext), + URL_SAFE_NO_PAD.encode(&tag) + )) } fn deserialize_jwe_fn(jwe: &str, key_unwrap_fn: F) -> XResult<(Vec, JweHeader2)>