44from urllib .parse import urljoin
55
66from cryptography .hazmat .primitives import serialization
7- from cryptography .hazmat .primitives .asymmetric import ec
7+ from cryptography .hazmat .primitives .asymmetric import ec , rsa
8+ from cryptography .hazmat .primitives .asymmetric .ed448 import Ed448PrivateKey
9+ from cryptography .hazmat .primitives .asymmetric .ed25519 import Ed25519PrivateKey
810from cryptography .hazmat .primitives .serialization import load_pem_public_key
911from fastapi .testclient import TestClient
1012from jwcrypto .jwk import JWK
@@ -31,13 +33,10 @@ def get_test_client() -> TestClient:
3133 return TestClient (app )
3234
3335
34- def test_enroll ( ) -> None :
36+ def _test_enroll ( data_key , x509_key ) -> None :
3537 client = get_test_client ()
3638 server = ""
3739
38- kty = "OKP"
39- crv = "Ed25519"
40-
4140 logging .basicConfig (level = logging .DEBUG )
4241 logging .debug ("Testing enrollment" )
4342
@@ -59,10 +58,8 @@ def test_enroll() -> None:
5958 hmac_key = JWK (kty = "oct" , k = secret )
6059 hmac_alg = "HS256"
6160
62- data_key = JWK .generate (kty = kty , crv = crv )
6361 data_alg = jwk_to_alg (data_key )
6462
65- x509_key = ec .generate_private_key (ec .SECP256R1 ())
6663 x509_csr = generate_x509_csr (key = x509_key , name = name ).public_bytes (serialization .Encoding .PEM ).decode ()
6764
6865 payload = {"x509_csr" : x509_csr , "public_key" : data_key .export_public (as_dict = True )}
@@ -107,6 +104,36 @@ def test_enroll() -> None:
107104 assert response .status_code == 404
108105
109106
107+ def test_enroll_p256_p256 () -> None :
108+ data_key = JWK .generate (kty = "EC" , crv = "P-256" )
109+ x509_key = ec .generate_private_key (ec .SECP256R1 ())
110+ _test_enroll (data_key = data_key , x509_key = x509_key )
111+
112+
113+ def test_enroll_ed25519_p256 () -> None :
114+ data_key = JWK .generate (kty = "OKP" , crv = "Ed25519" )
115+ x509_key = ec .generate_private_key (ec .SECP256R1 ())
116+ _test_enroll (data_key = data_key , x509_key = x509_key )
117+
118+
119+ def test_enroll_ed25519_ed25519 () -> None :
120+ data_key = JWK .generate (kty = "OKP" , crv = "Ed25519" )
121+ x509_key = Ed25519PrivateKey .generate ()
122+ _test_enroll (data_key = data_key , x509_key = x509_key )
123+
124+
125+ def test_enroll_ed448_ed448 () -> None :
126+ data_key = JWK .generate (kty = "OKP" , crv = "Ed448" )
127+ x509_key = Ed448PrivateKey .generate ()
128+ _test_enroll (data_key = data_key , x509_key = x509_key )
129+
130+
131+ def test_enroll_rsa_rsa () -> None :
132+ data_key = JWK .generate (kty = "RSA" , size = 2048 )
133+ x509_key = rsa .generate_private_key (public_exponent = 65537 , key_size = 2048 )
134+ _test_enroll (data_key = data_key , x509_key = x509_key )
135+
136+
110137def test_enroll_bad_hmac_signature () -> None :
111138 client = get_test_client ()
112139 server = ""
0 commit comments