mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-14 18:48:13 -07:00
changing {} style to match majority of previous style
This commit is contained in:
parent
da6cdf014b
commit
961d929f4d
320 changed files with 5502 additions and 10485 deletions
|
@ -16,14 +16,12 @@
|
|||
#include "util.h"
|
||||
#include "fidocore.h"
|
||||
|
||||
static void indent(int nestingLevel)
|
||||
{
|
||||
static void indent(int nestingLevel) {
|
||||
while (nestingLevel--)
|
||||
printf(" ");
|
||||
}
|
||||
|
||||
static CborError dumpelm(CborValue *it, bool *got_next, int nestingLevel)
|
||||
{
|
||||
static CborError dumpelm(CborValue *it, bool *got_next, int nestingLevel) {
|
||||
CborError err;
|
||||
*got_next = false;
|
||||
|
||||
|
@ -124,8 +122,7 @@ static CborError dumpelm(CborValue *it, bool *got_next, int nestingLevel)
|
|||
return CborNoError;
|
||||
}
|
||||
|
||||
static CborError dumprecursive(uint8_t cmdCode, bool isResponse, CborValue *it, bool isMapType, int nestingLevel)
|
||||
{
|
||||
static CborError dumprecursive(uint8_t cmdCode, bool isResponse, CborValue *it, bool isMapType, int nestingLevel) {
|
||||
int elmCount = 0;
|
||||
while (!cbor_value_at_end(it)) {
|
||||
CborError err;
|
||||
|
@ -187,8 +184,7 @@ static CborError dumprecursive(uint8_t cmdCode, bool isResponse, CborValue *it,
|
|||
return CborNoError;
|
||||
}
|
||||
|
||||
int TinyCborInit(uint8_t *data, size_t length, CborValue *cb)
|
||||
{
|
||||
int TinyCborInit(uint8_t *data, size_t length, CborValue *cb) {
|
||||
CborParser parser;
|
||||
CborError err = cbor_parser_init(data, length, 0, &parser, cb);
|
||||
if (err)
|
||||
|
@ -197,8 +193,7 @@ int TinyCborInit(uint8_t *data, size_t length, CborValue *cb)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int TinyCborPrintFIDOPackage(uint8_t cmdCode, bool isResponse, uint8_t *data, size_t length)
|
||||
{
|
||||
int TinyCborPrintFIDOPackage(uint8_t cmdCode, bool isResponse, uint8_t *data, size_t length) {
|
||||
CborValue cb;
|
||||
int res;
|
||||
res = TinyCborInit(data, length, &cb);
|
||||
|
@ -221,8 +216,7 @@ int TinyCborPrintFIDOPackage(uint8_t cmdCode, bool isResponse, uint8_t *data, si
|
|||
return 0;
|
||||
}
|
||||
|
||||
int JsonObjElmCount(json_t *elm)
|
||||
{
|
||||
int JsonObjElmCount(json_t *elm) {
|
||||
int res = 0;
|
||||
const char *key;
|
||||
json_t *value;
|
||||
|
@ -238,8 +232,7 @@ int JsonObjElmCount(json_t *elm)
|
|||
return res;
|
||||
}
|
||||
|
||||
int JsonToCbor(json_t *elm, CborEncoder *encoder)
|
||||
{
|
||||
int JsonToCbor(json_t *elm, CborEncoder *encoder) {
|
||||
if (!elm || !encoder)
|
||||
return 1;
|
||||
|
||||
|
@ -323,8 +316,7 @@ int JsonToCbor(json_t *elm, CborEncoder *encoder)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int CborMapGetKeyById(CborParser *parser, CborValue *map, uint8_t *data, size_t dataLen, int key)
|
||||
{
|
||||
int CborMapGetKeyById(CborParser *parser, CborValue *map, uint8_t *data, size_t dataLen, int key) {
|
||||
CborValue cb;
|
||||
|
||||
CborError err = cbor_parser_init(data, dataLen, 0, parser, &cb);
|
||||
|
@ -361,13 +353,11 @@ int CborMapGetKeyById(CborParser *parser, CborValue *map, uint8_t *data, size_t
|
|||
return 2;
|
||||
}
|
||||
|
||||
CborError CborGetArrayBinStringValue(CborValue *elm, uint8_t *data, size_t maxdatalen, size_t *datalen)
|
||||
{
|
||||
CborError CborGetArrayBinStringValue(CborValue *elm, uint8_t *data, size_t maxdatalen, size_t *datalen) {
|
||||
return CborGetArrayBinStringValueEx(elm, data, maxdatalen, datalen, NULL, 0);
|
||||
}
|
||||
|
||||
CborError CborGetArrayBinStringValueEx(CborValue *elm, uint8_t *data, size_t maxdatalen, size_t *datalen, uint8_t *delimeter, size_t delimeterlen)
|
||||
{
|
||||
CborError CborGetArrayBinStringValueEx(CborValue *elm, uint8_t *data, size_t maxdatalen, size_t *datalen, uint8_t *delimeter, size_t delimeterlen) {
|
||||
CborValue array;
|
||||
if (datalen)
|
||||
*datalen = 0;
|
||||
|
@ -399,8 +389,7 @@ CborError CborGetArrayBinStringValueEx(CborValue *elm, uint8_t *data, size_t max
|
|||
return CborNoError;
|
||||
};
|
||||
|
||||
CborError CborGetBinStringValue(CborValue *elm, uint8_t *data, size_t maxdatalen, size_t *datalen)
|
||||
{
|
||||
CborError CborGetBinStringValue(CborValue *elm, uint8_t *data, size_t maxdatalen, size_t *datalen) {
|
||||
if (datalen)
|
||||
*datalen = 0;
|
||||
|
||||
|
@ -415,8 +404,7 @@ CborError CborGetBinStringValue(CborValue *elm, uint8_t *data, size_t maxdatalen
|
|||
return CborNoError;
|
||||
};
|
||||
|
||||
CborError CborGetArrayStringValue(CborValue *elm, char *data, size_t maxdatalen, size_t *datalen, char *delimeter)
|
||||
{
|
||||
CborError CborGetArrayStringValue(CborValue *elm, char *data, size_t maxdatalen, size_t *datalen, char *delimeter) {
|
||||
CborValue array;
|
||||
if (datalen)
|
||||
*datalen = 0;
|
||||
|
@ -449,8 +437,7 @@ CborError CborGetArrayStringValue(CborValue *elm, char *data, size_t maxdatalen,
|
|||
return CborNoError;
|
||||
};
|
||||
|
||||
CborError CborGetStringValue(CborValue *elm, char *data, size_t maxdatalen, size_t *datalen)
|
||||
{
|
||||
CborError CborGetStringValue(CborValue *elm, char *data, size_t maxdatalen, size_t *datalen) {
|
||||
if (datalen)
|
||||
*datalen = 0;
|
||||
|
||||
|
@ -465,16 +452,14 @@ CborError CborGetStringValue(CborValue *elm, char *data, size_t maxdatalen, size
|
|||
return CborNoError;
|
||||
};
|
||||
|
||||
CborError CborGetStringValueBuf(CborValue *elm)
|
||||
{
|
||||
CborError CborGetStringValueBuf(CborValue *elm) {
|
||||
static char stringBuf[2048];
|
||||
memset(stringBuf, 0x00, sizeof(stringBuf));
|
||||
|
||||
return CborGetStringValue(elm, stringBuf, sizeof(stringBuf), NULL);
|
||||
};
|
||||
|
||||
int CBOREncodeElm(json_t *root, char *rootElmId, CborEncoder *encoder)
|
||||
{
|
||||
int CBOREncodeElm(json_t *root, char *rootElmId, CborEncoder *encoder) {
|
||||
json_t *elm = NULL;
|
||||
if (rootElmId && strlen(rootElmId) && rootElmId[0] == '$')
|
||||
elm = json_path_get(root, rootElmId);
|
||||
|
@ -489,8 +474,7 @@ int CBOREncodeElm(json_t *root, char *rootElmId, CborEncoder *encoder)
|
|||
return res;
|
||||
}
|
||||
|
||||
CborError CBOREncodeClientDataHash(json_t *root, CborEncoder *encoder)
|
||||
{
|
||||
CborError CBOREncodeClientDataHash(json_t *root, CborEncoder *encoder) {
|
||||
uint8_t buf[100] = {0};
|
||||
size_t jlen;
|
||||
|
||||
|
|
|
@ -38,16 +38,14 @@ COSEValueNameDesc_t COSEKeyTypeValueDesc[] = {
|
|||
{4, "Symmetric", "Symmetric Key"},
|
||||
};
|
||||
|
||||
COSEValueNameDesc_t *GetCOSEktyElm(int id)
|
||||
{
|
||||
COSEValueNameDesc_t *GetCOSEktyElm(int id) {
|
||||
for (int i = 0; i < ARRAYLEN(COSEKeyTypeValueDesc); i++)
|
||||
if (COSEKeyTypeValueDesc[i].Value == id)
|
||||
return &COSEKeyTypeValueDesc[i];
|
||||
return NULL;
|
||||
}
|
||||
|
||||
const char *GetCOSEktyDescription(int id)
|
||||
{
|
||||
const char *GetCOSEktyDescription(int id) {
|
||||
COSEValueNameDesc_t *elm = GetCOSEktyElm(id);
|
||||
if (elm)
|
||||
return elm->Description;
|
||||
|
@ -65,16 +63,14 @@ COSEValueTypeNameDesc_t COSECurvesDesc[] = {
|
|||
{7, "OKP", "Ed448", "Ed448 for use w/ EdDSA only"},
|
||||
};
|
||||
|
||||
COSEValueTypeNameDesc_t *GetCOSECurveElm(int id)
|
||||
{
|
||||
COSEValueTypeNameDesc_t *GetCOSECurveElm(int id) {
|
||||
for (int i = 0; i < ARRAYLEN(COSECurvesDesc); i++)
|
||||
if (COSECurvesDesc[i].Value == id)
|
||||
return &COSECurvesDesc[i];
|
||||
return NULL;
|
||||
}
|
||||
|
||||
const char *GetCOSECurveDescription(int id)
|
||||
{
|
||||
const char *GetCOSECurveDescription(int id) {
|
||||
COSEValueTypeNameDesc_t *elm = GetCOSECurveElm(id);
|
||||
if (elm)
|
||||
return elm->Description;
|
||||
|
@ -139,32 +135,28 @@ COSEValueNameDesc_t COSEAlg[] = {
|
|||
{33, "AES-CCM-64-128-256", "AES-CCM mode 256-bit key, 128-bit tag, 7-byte nonce"}
|
||||
};
|
||||
|
||||
COSEValueNameDesc_t *GetCOSEAlgElm(int id)
|
||||
{
|
||||
COSEValueNameDesc_t *GetCOSEAlgElm(int id) {
|
||||
for (int i = 0; i < ARRAYLEN(COSEAlg); i++)
|
||||
if (COSEAlg[i].Value == id)
|
||||
return &COSEAlg[i];
|
||||
return NULL;
|
||||
}
|
||||
|
||||
const char *GetCOSEAlgName(int id)
|
||||
{
|
||||
const char *GetCOSEAlgName(int id) {
|
||||
COSEValueNameDesc_t *elm = GetCOSEAlgElm(id);
|
||||
if (elm)
|
||||
return elm->Name;
|
||||
return COSEEmptyStr;
|
||||
}
|
||||
|
||||
const char *GetCOSEAlgDescription(int id)
|
||||
{
|
||||
const char *GetCOSEAlgDescription(int id) {
|
||||
COSEValueNameDesc_t *elm = GetCOSEAlgElm(id);
|
||||
if (elm)
|
||||
return elm->Description;
|
||||
return COSEEmptyStr;
|
||||
}
|
||||
|
||||
int COSEGetECDSAKey(uint8_t *data, size_t datalen, bool verbose, uint8_t *public_key)
|
||||
{
|
||||
int COSEGetECDSAKey(uint8_t *data, size_t datalen, bool verbose, uint8_t *public_key) {
|
||||
CborParser parser;
|
||||
CborValue map;
|
||||
int64_t i64;
|
||||
|
|
|
@ -149,8 +149,7 @@ fido2Desc_t fido2CmdGetInfoRespDesc[] = {
|
|||
{fido2COSEKey, ptResponse, -4, "d - private key"},
|
||||
};
|
||||
|
||||
char *fido2GetCmdErrorDescription(uint8_t errorCode)
|
||||
{
|
||||
char *fido2GetCmdErrorDescription(uint8_t errorCode) {
|
||||
for (int i = 0; i < sizeof(fido2Errors) / sizeof(fido2Error_t); i++)
|
||||
if (fido2Errors[i].ErrorCode == errorCode)
|
||||
return fido2Errors[i].Description;
|
||||
|
@ -158,26 +157,23 @@ char *fido2GetCmdErrorDescription(uint8_t errorCode)
|
|||
return fido2Errors[0].Description;
|
||||
}
|
||||
|
||||
char *fido2GetCmdMemberDescription(uint8_t cmdCode, bool isResponse, int memberNum)
|
||||
{
|
||||
char *fido2GetCmdMemberDescription(uint8_t cmdCode, bool isResponse, int memberNum) {
|
||||
for (int i = 0; i < sizeof(fido2CmdGetInfoRespDesc) / sizeof(fido2Desc_t); i++)
|
||||
if (fido2CmdGetInfoRespDesc[i].Command == cmdCode &&
|
||||
fido2CmdGetInfoRespDesc[i].PckType == (isResponse ? ptResponse : ptQuery) &&
|
||||
fido2CmdGetInfoRespDesc[i].MemberNumber == memberNum)
|
||||
fido2CmdGetInfoRespDesc[i].PckType == (isResponse ? ptResponse : ptQuery) &&
|
||||
fido2CmdGetInfoRespDesc[i].MemberNumber == memberNum)
|
||||
return fido2CmdGetInfoRespDesc[i].Description;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int FIDOSelect(bool ActivateField, bool LeaveFieldON, uint8_t *Result, size_t MaxResultLen, size_t *ResultLen, uint16_t *sw)
|
||||
{
|
||||
int FIDOSelect(bool ActivateField, bool LeaveFieldON, uint8_t *Result, size_t MaxResultLen, size_t *ResultLen, uint16_t *sw) {
|
||||
uint8_t data[] = {0xA0, 0x00, 0x00, 0x06, 0x47, 0x2F, 0x00, 0x01};
|
||||
|
||||
return EMVSelect(ECC_CONTACTLESS, ActivateField, LeaveFieldON, data, sizeof(data), Result, MaxResultLen, ResultLen, sw, NULL);
|
||||
}
|
||||
|
||||
int FIDOExchange(sAPDU apdu, uint8_t *Result, size_t MaxResultLen, size_t *ResultLen, uint16_t *sw)
|
||||
{
|
||||
int FIDOExchange(sAPDU apdu, uint8_t *Result, size_t MaxResultLen, size_t *ResultLen, uint16_t *sw) {
|
||||
int res = EMVExchange(ECC_CONTACTLESS, true, apdu, Result, MaxResultLen, ResultLen, sw, NULL);
|
||||
if (res == 5) // apdu result (sw) not a 0x9000
|
||||
res = 0;
|
||||
|
@ -195,40 +191,34 @@ int FIDOExchange(sAPDU apdu, uint8_t *Result, size_t MaxResultLen, size_t *Resul
|
|||
return res;
|
||||
}
|
||||
|
||||
int FIDORegister(uint8_t *params, uint8_t *Result, size_t MaxResultLen, size_t *ResultLen, uint16_t *sw)
|
||||
{
|
||||
int FIDORegister(uint8_t *params, uint8_t *Result, size_t MaxResultLen, size_t *ResultLen, uint16_t *sw) {
|
||||
return FIDOExchange((sAPDU) {0x00, 0x01, 0x03, 0x00, 64, params}, Result, MaxResultLen, ResultLen, sw);
|
||||
}
|
||||
|
||||
int FIDOAuthentication(uint8_t *params, uint8_t paramslen, uint8_t controlb, uint8_t *Result, size_t MaxResultLen, size_t *ResultLen, uint16_t *sw)
|
||||
{
|
||||
int FIDOAuthentication(uint8_t *params, uint8_t paramslen, uint8_t controlb, uint8_t *Result, size_t MaxResultLen, size_t *ResultLen, uint16_t *sw) {
|
||||
return FIDOExchange((sAPDU) {0x00, 0x02, controlb, 0x00, paramslen, params}, Result, MaxResultLen, ResultLen, sw);
|
||||
}
|
||||
|
||||
int FIDO2GetInfo(uint8_t *Result, size_t MaxResultLen, size_t *ResultLen, uint16_t *sw)
|
||||
{
|
||||
int FIDO2GetInfo(uint8_t *Result, size_t MaxResultLen, size_t *ResultLen, uint16_t *sw) {
|
||||
uint8_t data[] = {fido2CmdGetInfo};
|
||||
return FIDOExchange((sAPDU) {0x80, 0x10, 0x00, 0x00, sizeof(data), data}, Result, MaxResultLen, ResultLen, sw);
|
||||
}
|
||||
|
||||
int FIDO2MakeCredential(uint8_t *params, uint8_t paramslen, uint8_t *Result, size_t MaxResultLen, size_t *ResultLen, uint16_t *sw)
|
||||
{
|
||||
int FIDO2MakeCredential(uint8_t *params, uint8_t paramslen, uint8_t *Result, size_t MaxResultLen, size_t *ResultLen, uint16_t *sw) {
|
||||
uint8_t data[paramslen + 1];
|
||||
data[0] = fido2CmdMakeCredential;
|
||||
memcpy(&data[1], params, paramslen);
|
||||
return FIDOExchange((sAPDU) {0x80, 0x10, 0x00, 0x00, sizeof(data), data}, Result, MaxResultLen, ResultLen, sw);
|
||||
}
|
||||
|
||||
int FIDO2GetAssertion(uint8_t *params, uint8_t paramslen, uint8_t *Result, size_t MaxResultLen, size_t *ResultLen, uint16_t *sw)
|
||||
{
|
||||
int FIDO2GetAssertion(uint8_t *params, uint8_t paramslen, uint8_t *Result, size_t MaxResultLen, size_t *ResultLen, uint16_t *sw) {
|
||||
uint8_t data[paramslen + 1];
|
||||
data[0] = fido2CmdGetAssertion;
|
||||
memcpy(&data[1], params, paramslen);
|
||||
return FIDOExchange((sAPDU) {0x80, 0x10, 0x00, 0x00, sizeof(data), data}, Result, MaxResultLen, ResultLen, sw);
|
||||
}
|
||||
|
||||
int FIDOCheckDERAndGetKey(uint8_t *der, size_t derLen, bool verbose, uint8_t *publicKey, size_t publicKeyMaxLen)
|
||||
{
|
||||
int FIDOCheckDERAndGetKey(uint8_t *der, size_t derLen, bool verbose, uint8_t *publicKey, size_t publicKeyMaxLen) {
|
||||
int res;
|
||||
|
||||
// load CA's
|
||||
|
@ -292,8 +282,7 @@ int FIDOCheckDERAndGetKey(uint8_t *der, size_t derLen, bool verbose, uint8_t *pu
|
|||
#define fido_check_if(r) if ((r) != CborNoError) {return r;} else
|
||||
#define fido_check(r) if ((r) != CborNoError) return r;
|
||||
|
||||
int FIDO2CreateMakeCredentionalReq(json_t *root, uint8_t *data, size_t maxdatalen, size_t *datalen)
|
||||
{
|
||||
int FIDO2CreateMakeCredentionalReq(json_t *root, uint8_t *data, size_t maxdatalen, size_t *datalen) {
|
||||
if (datalen)
|
||||
*datalen = 0;
|
||||
if (!root || !data || !maxdatalen)
|
||||
|
@ -353,8 +342,7 @@ int FIDO2CreateMakeCredentionalReq(json_t *root, uint8_t *data, size_t maxdatale
|
|||
return 0;
|
||||
}
|
||||
|
||||
bool CheckrpIdHash(json_t *json, uint8_t *hash)
|
||||
{
|
||||
bool CheckrpIdHash(json_t *json, uint8_t *hash) {
|
||||
char hashval[300] = {0};
|
||||
uint8_t hash2[32] = {0};
|
||||
|
||||
|
@ -367,8 +355,7 @@ bool CheckrpIdHash(json_t *json, uint8_t *hash)
|
|||
}
|
||||
|
||||
// check ANSI X9.62 format ECDSA signature (on P-256)
|
||||
int FIDO2CheckSignature(json_t *root, uint8_t *publickey, uint8_t *sign, size_t signLen, uint8_t *authData, size_t authDataLen, bool verbose)
|
||||
{
|
||||
int FIDO2CheckSignature(json_t *root, uint8_t *publickey, uint8_t *sign, size_t signLen, uint8_t *authData, size_t authDataLen, bool verbose) {
|
||||
int res;
|
||||
uint8_t rval[300] = {0};
|
||||
uint8_t sval[300] = {0};
|
||||
|
@ -413,8 +400,7 @@ int FIDO2CheckSignature(json_t *root, uint8_t *publickey, uint8_t *sign, size_t
|
|||
return 0;
|
||||
}
|
||||
|
||||
int FIDO2MakeCredentionalParseRes(json_t *root, uint8_t *data, size_t dataLen, bool verbose, bool verbose2, bool showCBOR, bool showDERTLV)
|
||||
{
|
||||
int FIDO2MakeCredentionalParseRes(json_t *root, uint8_t *data, size_t dataLen, bool verbose, bool verbose2, bool showCBOR, bool showDERTLV) {
|
||||
CborParser parser;
|
||||
CborValue map, mapsmt;
|
||||
int res;
|
||||
|
@ -580,8 +566,7 @@ int FIDO2MakeCredentionalParseRes(json_t *root, uint8_t *data, size_t dataLen, b
|
|||
return 0;
|
||||
}
|
||||
|
||||
int FIDO2CreateGetAssertionReq(json_t *root, uint8_t *data, size_t maxdatalen, size_t *datalen, bool createAllowList)
|
||||
{
|
||||
int FIDO2CreateGetAssertionReq(json_t *root, uint8_t *data, size_t maxdatalen, size_t *datalen, bool createAllowList) {
|
||||
if (datalen)
|
||||
*datalen = 0;
|
||||
if (!root || !data || !maxdatalen)
|
||||
|
@ -655,8 +640,7 @@ int FIDO2CreateGetAssertionReq(json_t *root, uint8_t *data, size_t maxdatalen, s
|
|||
return 0;
|
||||
}
|
||||
|
||||
int FIDO2GetAssertionParseRes(json_t *root, uint8_t *data, size_t dataLen, bool verbose, bool verbose2, bool showCBOR)
|
||||
{
|
||||
int FIDO2GetAssertionParseRes(json_t *root, uint8_t *data, size_t dataLen, bool verbose, bool verbose2, bool showCBOR) {
|
||||
CborParser parser;
|
||||
CborValue map, mapint;
|
||||
int res;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue