From: Igor Kotrasinski Date: Tue, 24 Oct 2017 09:41:51 +0000 (+0200) Subject: Rework char to hex conversion X-Git-Tag: submit/tizen_4.0/20171024.152729~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4e4cef67b64cb4191a4949a41a5d439fc65fa4e8;p=platform%2Fcore%2Fsecurity%2Ftef-simulator.git Rework char to hex conversion Remove unnecessary 22-case switch. Change-Id: Id9b07c7893b498642032bee24edd5a7d857718aa Signed-off-by: Igor Kotrasinski --- diff --git a/ssflib/dep/cryptocore/source/base/cc_bignum.c b/ssflib/dep/cryptocore/source/base/cc_bignum.c index 3d4a1b6..185b03c 100644 --- a/ssflib/dep/cryptocore/source/base/cc_bignum.c +++ b/ssflib/dep/cryptocore/source/base/cc_bignum.c @@ -2875,102 +2875,22 @@ int SDRM_HEX2BN(cc_u8* pbSrc, SDRM_BIG_NUM *BN_Dst) { for(j = (BN_Dst->Length * SDRM_SIZE_BLOCK) - (i * SDRM_SIZE_BLOCK) - SDRM_SIZE_BLOCK; j < (BN_Dst->Length * SDRM_SIZE_BLOCK) - (i * SDRM_SIZE_BLOCK) ; j++) { - switch(bufferHex[j]) - { - case '0': - BN_Dst->pData[i] = BN_Dst->pData[i] << 4; - //BN_Dst->pData[i] |= 0x0; Unnecessary - break; - case '1': - BN_Dst->pData[i] = BN_Dst->pData[i] << 4; - BN_Dst->pData[i] |= 0x1; - break; - case '2': - BN_Dst->pData[i] = BN_Dst->pData[i] << 4; - BN_Dst->pData[i] |= 0x2; - break; - case '3': - BN_Dst->pData[i] = BN_Dst->pData[i] << 4; - BN_Dst->pData[i] |= 0x3; - break; - case '4': - BN_Dst->pData[i] = BN_Dst->pData[i] << 4; - BN_Dst->pData[i] |= 0x4; - break; - case '5': - BN_Dst->pData[i] = BN_Dst->pData[i] << 4; - BN_Dst->pData[i] |= 0x5; - break; - case '6': - BN_Dst->pData[i] = BN_Dst->pData[i] << 4; - BN_Dst->pData[i] |= 0x6; - break; - case '7': - BN_Dst->pData[i] = BN_Dst->pData[i] << 4; - BN_Dst->pData[i] |= 0x7; - break; - case '8': - BN_Dst->pData[i] = BN_Dst->pData[i] << 4; - BN_Dst->pData[i] |= 0x8; - break; - case '9': - BN_Dst->pData[i] = BN_Dst->pData[i] << 4; - BN_Dst->pData[i] |= 0x9; - break; - case 'a': - BN_Dst->pData[i] = BN_Dst->pData[i] << 4; - BN_Dst->pData[i] |= 0xa; - break; - case 'A': - BN_Dst->pData[i] = BN_Dst->pData[i] << 4; - BN_Dst->pData[i] |= 0xa; - break; - case 'b': - BN_Dst->pData[i] = BN_Dst->pData[i] << 4; - BN_Dst->pData[i] |= 0xb; - break; - case 'B': - BN_Dst->pData[i] = BN_Dst->pData[i] << 4; - BN_Dst->pData[i] |= 0xb; - break; - case 'c': - BN_Dst->pData[i] = BN_Dst->pData[i] << 4; - BN_Dst->pData[i] |= 0xc; - break; - case 'C': - BN_Dst->pData[i] = BN_Dst->pData[i] << 4; - BN_Dst->pData[i] |= 0xc; - break; - case 'd': - BN_Dst->pData[i] = BN_Dst->pData[i] << 4; - BN_Dst->pData[i] |= 0xd; - break; - case 'D': - BN_Dst->pData[i] = BN_Dst->pData[i] << 4; - BN_Dst->pData[i] |= 0xd; - break; - case 'e': - BN_Dst->pData[i] = BN_Dst->pData[i] << 4; - BN_Dst->pData[i] |= 0xe; - break; - case 'E': - BN_Dst->pData[i] = BN_Dst->pData[i] << 4; - BN_Dst->pData[i] |= 0xe; - break; - case 'f': - BN_Dst->pData[i] = BN_Dst->pData[i] << 4; - BN_Dst->pData[i] |= 0xf; - break; - case 'F': - BN_Dst->pData[i] = BN_Dst->pData[i] << 4; - BN_Dst->pData[i] |= 0xf; - break; - default: - { - free(bufferHex); - return CRYPTO_INVALID_ARGUMENT; - } + char c = bufferHex[j]; + int c_int; + + if (c >= '0' && c <= '9') { + c_int = c - '0'; + } else if (c >= 'a' && c <= 'f') { + c_int = c - 'a' + 10; + } else if (c >= 'A' && c <= 'F') { + c_int = c - 'A' + 10; + } else { + free(bufferHex); + return CRYPTO_INVALID_ARGUMENT; } + + BN_Dst->pData[i] = BN_Dst->pData[i] << 4; + BN_Dst->pData[i] |= c_int; } }