Skip to content

Commit d1cacab

Browse files
authored
Merge pull request #442 from kentakayama/parametrize-aes-tests
Parametrize test {AES-KW, HPKE}x{CTR, CBC}x{128,192,256}
2 parents 98d1ef9 + 96ea8db commit d1cacab

1 file changed

Lines changed: 31 additions & 146 deletions

File tree

tests/test_recipient.py

Lines changed: 31 additions & 146 deletions
Original file line numberDiff line numberDiff line change
@@ -782,160 +782,47 @@ def test_recipients_open_with_invalid_rsk(self, rpk1):
782782
pytest.fail("decode() should fail.")
783783
assert "Failed to open." in str(err.value)
784784

785-
def test_recipients_a128ctr_aeskw(self, rsk1, rsk2):
786-
a128kw_key = COSEKey.from_symmetric_key(alg="A128KW")
787-
a128ctr_key = COSEKey.from_symmetric_key(alg="A128CTR", kid="A128CTR key")
788-
789-
# The sender side:
790-
r = Recipient.new(unprotected={"alg": "A128KW"}, sender_key=a128kw_key)
791-
sender = COSE.new(alg_auto_inclusion=True)
792-
encoded = sender.encode_and_encrypt(
793-
b"Hello world!",
794-
a128ctr_key,
795-
recipients=[r],
796-
)
797-
798-
# The recipient side:
799-
recipient = COSE.new()
800-
assert b"Hello world!" == recipient.decode(encoded, keys=[a128kw_key])
801-
802-
def test_recipients_a192ctr_aeskw(self, rsk1, rsk2):
803-
a192kw_key = COSEKey.from_symmetric_key(alg="A192KW")
804-
a192ctr_key = COSEKey.from_symmetric_key(alg="A192CTR", kid="A192CTR key")
805-
806-
# The sender side:
807-
r = Recipient.new(unprotected={"alg": "A192KW"}, sender_key=a192kw_key)
808-
sender = COSE.new(alg_auto_inclusion=True)
809-
encoded = sender.encode_and_encrypt(
810-
b"Hello world!",
811-
a192ctr_key,
812-
recipients=[r],
813-
)
814-
815-
# The recipient side:
816-
recipient = COSE.new()
817-
assert b"Hello world!" == recipient.decode(encoded, keys=[a192kw_key])
818-
819-
def test_recipients_a256_aeskw(self, rsk1, rsk2):
820-
a256kw_key = COSEKey.from_symmetric_key(alg="A256KW")
821-
a256ctr_key = COSEKey.from_symmetric_key(alg="A256CTR", kid="A256CTR key")
822-
823-
# The sender side:
824-
r = Recipient.new(unprotected={"alg": "A256KW"}, sender_key=a256kw_key)
825-
sender = COSE.new(alg_auto_inclusion=True)
826-
encoded = sender.encode_and_encrypt(
827-
b"Hello world!",
828-
a256ctr_key,
829-
recipients=[r],
830-
)
831-
832-
# The recipient side:
833-
recipient = COSE.new()
834-
assert b"Hello world!" == recipient.decode(encoded, keys=[a256kw_key])
835-
836-
def test_recipients_a128cbc_aeskw(self, rsk1, rsk2):
837-
a128kw_key = COSEKey.from_symmetric_key(alg="A128KW")
838-
a128cbc_key = COSEKey.from_symmetric_key(alg="A128CBC", kid="A128CBC key")
839-
840-
# The sender side:
841-
r = Recipient.new(unprotected={"alg": "A128KW"}, sender_key=a128kw_key)
842-
sender = COSE.new(alg_auto_inclusion=True)
843-
encoded = sender.encode_and_encrypt(
844-
b"Hello world!",
845-
a128cbc_key,
846-
recipients=[r],
847-
)
848-
849-
# The recipient side:
850-
recipient = COSE.new()
851-
assert b"Hello world!" == recipient.decode(encoded, keys=[a128kw_key])
852-
853-
def test_recipients_a192cbc_aeskw(self, rsk1, rsk2):
854-
a192kw_key = COSEKey.from_symmetric_key(alg="A192KW")
855-
a192cbc_key = COSEKey.from_symmetric_key(alg="A192CBC", kid="A192CBC key")
856-
857-
# The sender side:
858-
r = Recipient.new(unprotected={"alg": "A192KW"}, sender_key=a192kw_key)
859-
sender = COSE.new(alg_auto_inclusion=True)
860-
encoded = sender.encode_and_encrypt(
861-
b"Hello world!",
862-
a192cbc_key,
863-
recipients=[r],
864-
)
865-
866-
# The recipient side:
867-
recipient = COSE.new()
868-
assert b"Hello world!" == recipient.decode(encoded, keys=[a192kw_key])
869-
870-
def test_recipients_a256cbc_aeskw(self, rsk1, rsk2):
871-
a256kw_key = COSEKey.from_symmetric_key(alg="A256KW")
872-
a256cbc_key = COSEKey.from_symmetric_key(alg="A256CBC", kid="A256CBC key")
785+
@pytest.mark.parametrize(
786+
"kw_alg, enc_alg",
787+
[
788+
("A128KW", "A128CTR"),
789+
("A192KW", "A192CTR"),
790+
("A256KW", "A256CTR"),
791+
("A128KW", "A128CBC"),
792+
("A192KW", "A192CBC"),
793+
("A256KW", "A256CBC"),
794+
],
795+
)
796+
def test_recipients_aes(self, kw_alg, enc_alg):
797+
kw_key = COSEKey.from_symmetric_key(alg=kw_alg)
798+
enc_key = COSEKey.from_symmetric_key(alg=enc_alg)
873799

874800
# The sender side:
875-
r = Recipient.new(unprotected={"alg": "A256KW"}, sender_key=a256kw_key)
801+
r = Recipient.new(unprotected={"alg": kw_alg}, sender_key=kw_key)
876802
sender = COSE.new(alg_auto_inclusion=True)
877803
encoded = sender.encode_and_encrypt(
878804
b"Hello world!",
879-
a256cbc_key,
880-
recipients=[r],
881-
)
882-
883-
# The recipient side:
884-
recipient = COSE.new()
885-
assert b"Hello world!" == recipient.decode(encoded, keys=[a256kw_key])
886-
887-
def test_recipients_a128ctr_hpke(self, rsk1, rsk2):
888-
enc_key = COSEKey.from_symmetric_key(alg="A128CTR")
889-
rpk = COSEKey.from_jwk(
890-
{
891-
"kty": "EC",
892-
# "kid": "02",
893-
"crv": "P-256",
894-
"x": "-eZXC6nV-xgthy8zZMCN8pcYSeE2XfWWqckA2fsxHPc",
895-
"y": "BGU5soLgsu_y7GN2I3EPUXS9EZ7Sw0qif-V70JtInFI",
896-
}
897-
)
898-
r = Recipient.new(protected={1: 35}, recipient_key=rpk)
899-
r.encode(enc_key.key)
900-
sender = COSE.new()
901-
encoded = sender.encode_and_encrypt(
902-
b"This is the content.",
903805
enc_key,
904-
protected={
905-
1: -65534, # alg: "A128CTR"
906-
},
907806
recipients=[r],
908807
)
909-
recipient = COSE.new()
910-
assert b"This is the content." == recipient.decode(encoded, [rsk1, rsk2])
911808

912-
def test_recipients_a192ctr_hpke(self, rsk1, rsk2):
913-
enc_key = COSEKey.from_symmetric_key(alg="A192CTR")
914-
rpk = COSEKey.from_jwk(
915-
{
916-
"kty": "EC",
917-
# "kid": "02",
918-
"crv": "P-256",
919-
"x": "-eZXC6nV-xgthy8zZMCN8pcYSeE2XfWWqckA2fsxHPc",
920-
"y": "BGU5soLgsu_y7GN2I3EPUXS9EZ7Sw0qif-V70JtInFI",
921-
}
922-
)
923-
r = Recipient.new(protected={1: 35}, recipient_key=rpk)
924-
r.encode(enc_key.key)
925-
sender = COSE.new()
926-
encoded = sender.encode_and_encrypt(
927-
b"This is the content.",
928-
enc_key,
929-
protected={
930-
1: -65533, # alg: "A192CTR"
931-
},
932-
recipients=[r],
933-
)
809+
# The recipient side:
934810
recipient = COSE.new()
935-
assert b"This is the content." == recipient.decode(encoded, [rsk1, rsk2])
811+
assert b"Hello world!" == recipient.decode(encoded, keys=[kw_key])
936812

937-
def test_recipients_a256ctr_hpke(self, rsk1, rsk2):
938-
enc_key = COSEKey.from_symmetric_key(alg="A256CTR")
813+
@pytest.mark.parametrize(
814+
"enc_alg",
815+
[
816+
("A128CTR"),
817+
("A192CTR"),
818+
("A256CTR"),
819+
("A128CBC"),
820+
("A192CBC"),
821+
("A256CBC"),
822+
],
823+
)
824+
def test_recipients_hpke(self, rsk1, rsk2, enc_alg):
825+
enc_key = COSEKey.from_symmetric_key(alg=enc_alg)
939826
rpk = COSEKey.from_jwk(
940827
{
941828
"kty": "EC",
@@ -951,9 +838,7 @@ def test_recipients_a256ctr_hpke(self, rsk1, rsk2):
951838
encoded = sender.encode_and_encrypt(
952839
b"This is the content.",
953840
enc_key,
954-
protected={
955-
1: -65532, # alg: "A256CTR"
956-
},
841+
protected={"alg": enc_alg},
957842
recipients=[r],
958843
)
959844
recipient = COSE.new()

0 commit comments

Comments
 (0)