// 6 byes + data = INS + CLA + P1 + P2 + Lc + <data = Nc> + Le
int res = ExchangeAPDU14a(data, 6 + apdu.Lc, ActivateField, LeaveFieldON, Result, (int)MaxResultLen, (int *)ResultLen);
- if (APDULogging)
- PrintAndLog("<<<< %s", sprint_hex(Result, *ResultLen));
-
if (res) {
return res;
}
+ if (APDULogging)
+ PrintAndLog("<<<< %s", sprint_hex(Result, *ResultLen));
+
*ResultLen -= 2;
isw = Result[*ResultLen] * 0x0100 + Result[*ResultLen + 1];
if (sw)
int MSCComputeCryptoChecksum(bool LeaveFieldON, uint8_t *UDOL, uint8_t UDOLlen, uint8_t *Result, size_t MaxResultLen, size_t *ResultLen, uint16_t *sw, struct tlvdb *tlv) {
return EMVExchange(LeaveFieldON, (sAPDU){0x80, 0x2a, 0x8e, 0x80, UDOLlen, UDOL}, Result, MaxResultLen, ResultLen, sw, tlv);
}
+
+// Authentication
+int trSDA(uint8_t *AID, size_t AIDlen, struct tlvdb *tlv) {
+ if (AIDlen < 5)
+ return 1;
+
+ // Get public key index (0x8F)
+ //int PubKeyIndx = 0;
+
+ // Get public key from key storage
+ // GetPublicKey(AID(0..5), PubKeyIndx)
+
+ // Processing of Issuer Public Key Certificate (0x90)
+ //Certificate =
+
+ // check issuer public key certificate
+
+ // Verification of Signed Static Application Data (SSAD) (0x93)
+
+ // get 9F4A Static Data Authentication Tag List
+
+ // set Data Auth Code (9F45) from SSAD
+
+ return 0;
+}
+