|
12 | 12 | from pymdoccbor.mso.issuer import MsoIssuer |
13 | 13 | from pymdoccbor.tests.pid_data import PID_DATA |
14 | 14 | from pymdoccbor.tests.cert_data import CERT_DATA |
15 | | - |
16 | | -from datetime import datetime, timezone, timedelta |
17 | | - |
18 | | - |
19 | | -PKEY = { |
20 | | - 'KTY': 'EC2', |
21 | | - 'CURVE': 'P_256', |
22 | | - 'ALG': 'ES256', |
23 | | - 'D': os.urandom(32), |
24 | | - 'KID': b"demo-kid" |
25 | | -} |
| 15 | +from pymdoccbor.tests.pkey import PKEY, PKEY_ED25519 |
26 | 16 |
|
27 | 17 |
|
28 | 18 | def extract_mso(mdoc:dict): |
@@ -53,9 +43,6 @@ def test_mso_writer(): |
53 | 43 |
|
54 | 44 | Sign1Message.decode(mso.encode()) |
55 | 45 |
|
56 | | - # TODO: assertion about the content |
57 | | - # breakpoint() |
58 | | - |
59 | 46 |
|
60 | 47 | def test_mdoc_issuer(): |
61 | 48 | validity = {"issuance_date": "2025-01-17", "expiry_date": "2025-11-13" } |
@@ -91,6 +78,49 @@ def test_mdoc_issuer(): |
91 | 78 | mdoci.dump() |
92 | 79 | mdoci.dumps() |
93 | 80 |
|
| 81 | + # check mso content for status list |
| 82 | + mso = extract_mso(mdoc) |
| 83 | + status_list = mso["status"]["status_list"] |
| 84 | + assert status_list["idx"] == 0 |
| 85 | + assert status_list["uri"] == "https://issuer.com/statuslists" |
| 86 | + cert_bytes = status_list["certificate"] |
| 87 | + cert:Certificate = load_der_x509_certificate(cert_bytes) |
| 88 | + assert "Test ASL Issuer" in cert.subject.rfc4514_string(), "ASL is not signed with the expected certificate" |
| 89 | + |
| 90 | +def test_mdoc_issuer_EdDSA(): |
| 91 | + validity = {"issuance_date": "2025-01-17", "expiry_date": "2025-11-13" } |
| 92 | + mdoci = MdocCborIssuer( |
| 93 | + private_key=PKEY, |
| 94 | + alg = "ES256", |
| 95 | + cert_info=CERT_DATA |
| 96 | + ) |
| 97 | + with open("pymdoccbor/tests/certs/fake-cert.pem", "rb") as file: |
| 98 | + fake_cert_file = file.read() |
| 99 | + asl_signing_cert = x509.load_pem_x509_certificate(fake_cert_file) |
| 100 | + _asl_signing_cert = asl_signing_cert.public_bytes(getattr(serialization.Encoding, "DER")) |
| 101 | + status_list = { |
| 102 | + "status_list": { |
| 103 | + "idx": 0, |
| 104 | + "uri": "https://issuer.com/statuslists", |
| 105 | + "certificate": _asl_signing_cert, |
| 106 | + } |
| 107 | + } |
| 108 | + mdoc = mdoci.new( |
| 109 | + doctype="eu.europa.ec.eudiw.pid.1", |
| 110 | + data=PID_DATA, |
| 111 | + devicekeyinfo=PKEY_ED25519, |
| 112 | + validity=validity, |
| 113 | + revocation=status_list |
| 114 | + ) |
| 115 | + |
| 116 | + mdocp = MdocCbor() |
| 117 | + aa = cbor2.dumps(mdoc) |
| 118 | + mdocp.loads(aa) |
| 119 | + assert mdocp.verify() is True |
| 120 | + |
| 121 | + mdoci.dump() |
| 122 | + mdoci.dumps() |
| 123 | + |
94 | 124 | # check mso content for status list |
95 | 125 | mso = extract_mso(mdoc) |
96 | 126 | status_list = mso["status"]["status_list"] |
|
0 commit comments