Beispiel #1
0
 def __init__(self, pin):
     """
     Keyword arguments:
     pin -- the (low entropy) shared secret for the PACE protocol
     """
     self.pin = pin
     self.ctx = eac.EAC_CTX_new()
     self.sec = eac.PACE_SEC_new(self.pin, eac.PACE_PIN)
     eac.EAC_CTX_init_ef_cardaccess(EF_CARD_ACCESS, self.ctx)
     self._enc_nonce = ""
     self._ephemeral_pubkey = ""
     self._opp_pubkey = ""
Beispiel #2
0
 def __init__(self):
     self.ctx = eac.EAC_CTX_new()
     if not self.ctx:
         raise TypeError("Failed to create context")
Beispiel #3
0
EF_CARDACCESS = b"\x31\x81\x82\x30\x0D\x06\x08\x04\x00\x7F\x00\x07\x02\x02\x02\x02\x01\x02\x30\x12\x06\x0A\x04\x00\x7F\x00\x07\x02\x02\x03\x02\x02\x02\x01\x02\x02\x01\x41\x30\x12\x06\x0A\x04\x00\x7F\x00\x07\x02\x02\x04\x02\x02\x02\x01\x02\x02\x01\x0D\x30\x1C\x06\x09\x04\x00\x7F\x00\x07\x02\x02\x03\x02\x30\x0C\x06\x07\x04\x00\x7F\x00\x07\x01\x02\x02\x01\x0D\x02\x01\x41\x30\x2B\x06\x08\x04\x00\x7F\x00\x07\x02\x02\x06\x16\x1F\x65\x50\x41\x20\x2D\x20\x42\x44\x72\x20\x47\x6D\x62\x48\x20\x2D\x20\x54\x65\x73\x74\x6B\x61\x72\x74\x65\x20\x76\x32\x2E\x30\x04\x49\x17\x15\x41\x19\x28\x80\x0A\x01\xB4\x21\xFA\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x10\x10\x29\x10\x10"
PIN = b"123456"

import eac
eac.EAC_init()

secret = eac.PACE_SEC_new(PIN, eac.PACE_PIN)

buf = eac.get_buf(EF_CARDACCESS)
eac.hexdump(b"EF.CardAccess", buf)

print("Secret:")
print(eac.PACE_SEC_print_private(secret, 4))

picc_ctx = eac.EAC_CTX_new()
pcd_ctx = eac.EAC_CTX_new()
eac.EAC_CTX_init_ef_cardaccess(EF_CARDACCESS, pcd_ctx)
eac.EAC_CTX_init_ef_cardaccess(EF_CARDACCESS, picc_ctx)

print("PACE step 1")
enc_nonce = eac.PACE_STEP1_enc_nonce(picc_ctx, secret)

print("PACE step 2")
eac.PACE_STEP2_dec_nonce(pcd_ctx, secret, enc_nonce)

print("PACE step 3A")
pcd_mapping_data = eac.PACE_STEP3A_generate_mapping_data(pcd_ctx)
picc_mapping_data = eac.PACE_STEP3A_generate_mapping_data(picc_ctx)

eac.PACE_STEP3A_map_generator(pcd_ctx, picc_mapping_data)
eac.PACE_STEP3A_map_generator(picc_ctx, pcd_mapping_data)