adapt return codes

This commit is contained in:
iceman1001 2020-11-12 21:51:05 +01:00
parent a28e5a88d1
commit 0f4e31bfb0
6 changed files with 15 additions and 17 deletions

View file

@ -340,7 +340,7 @@ static int cmd_hf_fido_register(const char *cmd) {
uint8_t rval[300] = {0}; uint8_t rval[300] = {0};
uint8_t sval[300] = {0}; uint8_t sval[300] = {0};
res = ecdsa_asn1_get_signature(&buf[hashp], len - hashp, rval, sval); res = ecdsa_asn1_get_signature(&buf[hashp], len - hashp, rval, sval);
if (!res) { if (res == PM3_SUCCESS) {
if (verbose) { if (verbose) {
PrintAndLogEx(INFO, " r: %s", sprint_hex(rval, 32)); PrintAndLogEx(INFO, " r: %s", sprint_hex(rval, 32));
PrintAndLogEx(INFO, " s: %s", sprint_hex(sval, 32)); PrintAndLogEx(INFO, " s: %s", sprint_hex(sval, 32));
@ -583,7 +583,7 @@ static int cmd_hf_fido_authenticate(const char *cmd) {
uint8_t rval[300] = {0}; uint8_t rval[300] = {0};
uint8_t sval[300] = {0}; uint8_t sval[300] = {0};
res = ecdsa_asn1_get_signature(&buf[5], len - 5, rval, sval); res = ecdsa_asn1_get_signature(&buf[5], len - 5, rval, sval);
if (!res) { if (res == PM3_SUCCESS) {
if (verbose) { if (verbose) {
PrintAndLogEx(INFO, " r: %s", sprint_hex(rval, 32)); PrintAndLogEx(INFO, " r: %s", sprint_hex(rval, 32));
PrintAndLogEx(INFO, " s: %s", sprint_hex(sval, 32)); PrintAndLogEx(INFO, " s: %s", sprint_hex(sval, 32));

View file

@ -12,18 +12,16 @@
#include <ctype.h> #include <ctype.h>
#include <stdlib.h> #include <stdlib.h>
#include <mbedtls/asn1.h> #include <mbedtls/asn1.h>
#include "ui.h" // Print... #include "ui.h" // Print...
#include "emv/tlv.h" #include "emv/tlv.h"
#include "asn1dump.h" #include "asn1dump.h"
#include "util.h" #include "util.h"
int ecdsa_asn1_get_signature(uint8_t *signature, size_t signaturelen, uint8_t *rval, uint8_t *sval) { int ecdsa_asn1_get_signature(uint8_t *signature, size_t signaturelen, uint8_t *rval, uint8_t *sval) {
if (!signature || !signaturelen || !rval || !sval) if (!signature || !signaturelen || !rval || !sval)
return 1; return PM3_EINVARG;
int res = 0; int res = PM3_SUCCESS;
unsigned char *p = signature; unsigned char *p = signature;
const unsigned char *end = p + signaturelen; const unsigned char *end = p + signaturelen;
size_t len; size_t len;
@ -56,7 +54,7 @@ int ecdsa_asn1_get_signature(uint8_t *signature, size_t signaturelen, uint8_t *r
// check size // check size
if (end != p) if (end != p)
return 2; return PM3_ESOFT;
} }
exit: exit:
@ -79,10 +77,10 @@ int asn1_print(uint8_t *asn1buf, size_t asn1buflen, const char *indent) {
tlvdb_free(t); tlvdb_free(t);
} else { } else {
PrintAndLogEx(ERR, "Can't parse data as TLV tree"); PrintAndLogEx(ERR, "Can't parse data as TLV tree");
return 1; return PM3_ESOFT;
} }
return 0; return PM3_SUCCESS;
} }

View file

@ -418,7 +418,7 @@ int ecdsa_nist_test(bool verbose) {
// make signature // make signature
res = ecdsa_signature_create_test(curveid, T_PRIVATE_KEY, T_Q_X, T_Q_Y, T_K, input, length, signature, &siglen); res = ecdsa_signature_create_test(curveid, T_PRIVATE_KEY, T_Q_X, T_Q_Y, T_K, input, length, signature, &siglen);
// PrintAndLogEx(INFO, "res: %x signature[%x]: %s", (res < 0)? -res : res, siglen, sprint_hex(signature, siglen)); // PrintAndLogEx(INFO, "res: %x signature[%x]: %s", (res < 0)? -res : res, siglen, sprint_hex(signature, siglen));
if (res) if (res != PM3_SUCCESS)
goto exit; goto exit;
// check vectors // check vectors
@ -483,7 +483,7 @@ int ecdsa_nist_test(bool verbose) {
if (verbose) if (verbose)
PrintAndLogEx(NORMAL, _GREEN_("passed\n")); PrintAndLogEx(NORMAL, _GREEN_("passed\n"));
return 0; return PM3_SUCCESS;
exit: exit:
if (verbose) if (verbose)
PrintAndLogEx(NORMAL, _RED_("failed\n")); PrintAndLogEx(NORMAL, _RED_("failed\n"));

View file

@ -1356,10 +1356,10 @@ static int CmdEMVExec(const char *Cmd) {
// here must be AC2, but we dont make external authenticate ( // here must be AC2, but we dont make external authenticate (
/* // AC2 /* // AC2
PRINT_INDENT(level); PRINT_INDENT(level);
if ((CID & EMVAC_AC2_MASK) == EMVAC_AAC2) fprintf(f, "\tAC2: AAC (Transaction declined)\n"); if ((CID & EMVAC_AC2_MASK) == EMVAC_AAC2) PrintAndLogEx(NORMAL, "\tAC2: AAC (Transaction declined)");
if ((CID & EMVAC_AC2_MASK) == EMVAC_TC2) fprintf(f, "\tAC2: TC (Transaction approved)\n"); if ((CID & EMVAC_AC2_MASK) == EMVAC_TC2) PrintAndLogEx(NORMAL, "\tAC2: TC (Transaction approved)");
if ((CID & EMVAC_AC2_MASK) == EMVAC_ARQC2) fprintf(f, "\tAC2: not requested (ARQC)\n"); if ((CID & EMVAC_AC2_MASK) == EMVAC_ARQC2) PrintAndLogEx(NORMAL, "\tAC2: not requested (ARQC)");
if ((CID & EMVAC_AC2_MASK) == EMVAC_AC2_MASK) fprintf(f, "\tAC2: RFU\n"); if ((CID & EMVAC_AC2_MASK) == EMVAC_AC2_MASK) PrintAndLogEx(NORMAL, "\tAC2: RFU");
*/ */
} }
} }

View file

@ -363,7 +363,7 @@ static int FIDO2CheckSignature(json_t *root, uint8_t *publickey, uint8_t *sign,
uint8_t sval[300] = {0}; uint8_t sval[300] = {0};
int res = ecdsa_asn1_get_signature(sign, signLen, rval, sval); int res = ecdsa_asn1_get_signature(sign, signLen, rval, sval);
if (!res) { if (res == PM3_SUCCESS) {
if (verbose) { if (verbose) {
PrintAndLogEx(INFO, " r: %s", sprint_hex(rval, 32)); PrintAndLogEx(INFO, " r: %s", sprint_hex(rval, 32));
PrintAndLogEx(INFO, " s: %s", sprint_hex(sval, 32)); PrintAndLogEx(INFO, " s: %s", sprint_hex(sval, 32));

View file

@ -180,7 +180,7 @@ static int ndefDecodeSig1(uint8_t *sig, size_t siglen) {
uint8_t rval[300] = {0}; uint8_t rval[300] = {0};
uint8_t sval[300] = {0}; uint8_t sval[300] = {0};
int res = ecdsa_asn1_get_signature(&sig[indx], intsiglen, rval, sval); int res = ecdsa_asn1_get_signature(&sig[indx], intsiglen, rval, sval);
if (!res) { if (res == PM3_SUCCESS) {
PrintAndLogEx(SUCCESS, "\t\tr: %s", sprint_hex(rval + 32 - slen, slen)); PrintAndLogEx(SUCCESS, "\t\tr: %s", sprint_hex(rval + 32 - slen, slen));
PrintAndLogEx(SUCCESS, "\t\ts: %s", sprint_hex(sval + 32 - slen, slen)); PrintAndLogEx(SUCCESS, "\t\ts: %s", sprint_hex(sval + 32 - slen, slen));
} }