@@ -511,3 +511,75 @@ pub fn validate_key_for_jwe_encryption_wrong_alg_test() {
511511 assert msg
512512 == "key algorithm mismatch: key has RSA-OAEP, expected RSA-OAEP-256"
513513}
514+
515+ pub fn validate_jwe_key_type_oct_alg_ok_test() {
516+ let key = jwk.generate_enc_key(jwa.AesGcm(jwa.Aes128))
517+ let result = key_helpers.validate_jwe_key_type(jwa.JweDirect, key)
518+ assert result == Ok(Nil)
519+ }
520+
521+ pub fn validate_jwe_key_type_rsa_ok_test() {
522+ let key = fixtures.rsa_private_key()
523+ let result =
524+ key_helpers.validate_jwe_key_type(jwa.JweRsa(jwa.RsaOaepSha256), key)
525+ assert result == Ok(Nil)
526+ }
527+
528+ pub fn validate_jwe_key_type_ecdh_es_ec_ok_test() {
529+ let key = fixtures.ec_p256_key()
530+ let result =
531+ key_helpers.validate_jwe_key_type(jwa.JweEcdhEs(jwa.EcdhEsDirect), key)
532+ assert result == Ok(Nil)
533+ }
534+
535+ pub fn validate_jwe_key_type_ecdh_es_xdh_ok_test() {
536+ let key = fixtures.x25519_key()
537+ let result =
538+ key_helpers.validate_jwe_key_type(jwa.JweEcdhEs(jwa.EcdhEsDirect), key)
539+ assert result == Ok(Nil)
540+ }
541+
542+ pub fn validate_jwe_key_type_ecdh_es_rejects_eddsa_test() {
543+ let key = fixtures.ed25519_key()
544+ let assert Error(gose.InvalidState(msg)) =
545+ key_helpers.validate_jwe_key_type(jwa.JweEcdhEs(jwa.EcdhEsDirect), key)
546+ assert msg
547+ == "ECDH-ES algorithm requires an EC or XDH key (X25519/X448), not EdDSA"
548+ }
549+
550+ pub fn validate_jwe_key_type_pbes2_rejects_any_key_test() {
551+ let key = jwk.generate_hmac_key(jwa.HmacSha256)
552+ let assert Error(gose.InvalidState(msg)) =
553+ key_helpers.validate_jwe_key_type(
554+ jwa.JwePbes2(jwa.Pbes2Sha256Aes128Kw),
555+ key,
556+ )
557+ assert msg == "use password_decryptor for PBES2 algorithms"
558+ }
559+
560+ pub fn validate_jwe_key_type_wrong_key_type_test() {
561+ let key = jwk.generate_hmac_key(jwa.HmacSha256)
562+ let assert Error(gose.InvalidState(msg)) =
563+ key_helpers.validate_jwe_key_type(jwa.JweRsa(jwa.RsaOaepSha256), key)
564+ assert msg == "algorithm RSA-OAEP-256 incompatible with key type"
565+ }
566+
567+ pub fn validate_key_for_jwe_decryption_wrong_key_type_test() {
568+ let key = jwk.generate_hmac_key(jwa.HmacSha256)
569+ let assert Error(gose.InvalidState(msg)) =
570+ key_helpers.validate_key_for_jwe_decryption(
571+ jwa.JweRsa(jwa.RsaOaepSha256),
572+ key,
573+ )
574+ assert msg == "algorithm RSA-OAEP-256 incompatible with key type"
575+ }
576+
577+ pub fn validate_key_for_jwe_encryption_wrong_key_type_test() {
578+ let key = jwk.generate_hmac_key(jwa.HmacSha256)
579+ let assert Error(gose.InvalidState(msg)) =
580+ key_helpers.validate_key_for_jwe_encryption(
581+ jwa.JweRsa(jwa.RsaOaepSha256),
582+ key,
583+ )
584+ assert msg == "algorithm RSA-OAEP-256 incompatible with key type"
585+ }
0 commit comments