mirror of
https://github.com/librekeys/pycvc.git
synced 2026-04-14 08:44:08 -07:00
6d7a67486b
and adapted the tests Removed unused debug prints
66 lines
3.3 KiB
Python
66 lines
3.3 KiB
Python
import sys
|
|
import unittest
|
|
import binascii
|
|
import logging
|
|
|
|
from cvc.certificates import CVC
|
|
from cvc.tools.cvc_print import AuthorizationBits, decode_authorization_bits
|
|
|
|
# created with --rid --read-dg1 --write-dg22 --verify-age --install-cert
|
|
CERT_WITH_RID_READ_DG1_WRITE_DG22_VERIFY_AGE_INSTALL_CERT = b"7f2181e37f4e819c5f290100420d5a5a41544456434130303030317f494f060a04007f000702020202038641043eb3b230afe41d99b0e564b8673ca9f830de0c4f1a21ccfbebbb378b980d2384750751df9403878cb46f9297d5507a759e80ab463b0bb233e5dce068ddeb55665f200d5a5a41545445524d30303030317f4c12060904007f000703010202530501000001455f25060203000900095f24060203010100085f374094d5eb4162b8f38ab531b2259af0a8aaa7fdadaa126d21948e5d68a739bac4141b59ca43fb411165b7725c39ad4fa71ab548ede169616282de72860e7de9179b"
|
|
# created with --rid --read-dg22
|
|
CERT_WITH_RID_READ_DG22 = b"7f2181e37f4e819c5f290100420d5a5a41544456434130303030317f494f060a04007f00070202020203864104ed9e6911b2b4c39c7571f717ca0b61b7074fb05701d90f4474ee7e314d42828eb54ec3278a4cfc14cfe83014f01b534733e42ecee9a347c9c85691226a4692665f200d5a5a41545445524d30303030317f4c12060904007f000703010202530500200000045f25060203000900085f24060203010100075f37406e7f93614c8a63bbecc05ac8765055fe81b0d8a27389a8489aaed6ae9176503693d3016d1109d2cade63d4f0b661b142d7fc3368369ac3fe9c86154659a17518"
|
|
|
|
class TestAuthorizationBits(unittest.TestCase):
|
|
log = logging.getLogger("AuthBits")
|
|
|
|
def test_parse_authorization_bits(self):
|
|
self.log.info(
|
|
" Testing CERT_WITH_RID_READ_DG1_WRITE_DG22_VERIFY_AGE_INSTALL_CERT"
|
|
)
|
|
cvc = CVC().decode(
|
|
binascii.unhexlify(
|
|
CERT_WITH_RID_READ_DG1_WRITE_DG22_VERIFY_AGE_INSTALL_CERT
|
|
)
|
|
)
|
|
self.log.info(cvc)
|
|
bits = decode_authorization_bits(cvc.role().find(0x53).data())
|
|
|
|
self.log.info("Raw authorization bits:" + bits)
|
|
for bit in AuthorizationBits:
|
|
self.log.info(
|
|
"Field '{:<32}' has value: {:^6} at offset: {:2}".format(
|
|
bit,
|
|
str(bits[AuthorizationBits[bit]] == "1"),
|
|
AuthorizationBits[bit],
|
|
)
|
|
)
|
|
self.assertTrue(bits[AuthorizationBits["Age Verification"]])
|
|
self.assertTrue(bits[AuthorizationBits["Restricted Identification"]])
|
|
self.assertTrue(bits[AuthorizationBits["Install Certificate"]])
|
|
self.assertTrue(bits[AuthorizationBits["Read Datagroup 01"]])
|
|
self.assertTrue(bits[AuthorizationBits["Write Datagroup 22"]])
|
|
|
|
self.log.info(" Testing CERT_WITH_RID_READ_DG22")
|
|
cvc = CVC().decode(binascii.unhexlify(CERT_WITH_RID_READ_DG22))
|
|
self.log.info(cvc)
|
|
bits = decode_authorization_bits(cvc.role().find(0x53).data())
|
|
|
|
self.log.info("Raw authorization bits:" + bits)
|
|
for bit in AuthorizationBits:
|
|
self.log.info(
|
|
"Field '{:<32}' has value: {:^6} at offset: {:2}".format(
|
|
bit,
|
|
str(bits[AuthorizationBits[bit]] == "1"),
|
|
AuthorizationBits[bit],
|
|
)
|
|
)
|
|
self.assertTrue(bits[AuthorizationBits["Restricted Identification"]])
|
|
self.assertTrue(bits[AuthorizationBits["Read Datagroup 22"]])
|
|
|
|
|
|
if __name__ == "__main__":
|
|
logging.basicConfig(stream=sys.stderr)
|
|
logging.getLogger().setLevel(logging.DEBUG)
|
|
unittest.main()
|