Skip to content

Commit c65a549

Browse files
pennamgiulcioffi
authored andcommitted
SE05X: use defines instead of numbers
1 parent 14a6714 commit c65a549

File tree

1 file changed

+37
-26
lines changed

1 file changed

+37
-26
lines changed

libraries/SE05X/src/SE05X.cpp

Lines changed: 37 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,17 @@
1919

2020
#include "SE05X.h"
2121

22+
#define SE05X_EC_KEY_RAW_LENGTH 64
23+
#define SE05X_EC_KEY_HEADER_LENGTH 27
24+
#define SE05X_EC_KEY_DER_LENGTH SE05X_EC_KEY_HEADER_LENGTH + SE05X_EC_KEY_RAW_LENGTH
25+
#define SE05X_EC_SIGNATURE_RAW_LENGTH 64
26+
#define SE05X_EC_SIGNATURE_HEADER_LENGTH 6
27+
#define SE05X_EC_SIGNATURE_DER_LENGTH SE05X_EC_SIGNATURE_HEADER_LENGTH + SE05X_EC_SIGNATURE_RAW_LENGTH
28+
#define SE05X_SHA256_LENGTH 32
29+
#define SE05X_SN_LENGTH 18
30+
#define SE05X_DER_BUFFER_SIZE 256
31+
#define SE05X_TEMP_OBJECT 9999
32+
2233
SE05XClass::SE05XClass()
2334
: _cipher_type {kSSS_CipherType_EC_NIST_P}
2435
, _algorithm_type {kAlgorithm_SSS_ECDSA_SHA256}
@@ -34,21 +45,21 @@ SE05XClass::~SE05XClass()
3445

3546
static void getECKeyXyValuesFromDER(byte* derKey, size_t derLen, byte* rawKey)
3647
{
37-
memcpy(rawKey, &derKey[derLen-64], 64);
48+
memcpy(rawKey, &derKey[derLen - SE05X_EC_KEY_RAW_LENGTH], SE05X_EC_KEY_RAW_LENGTH);
3849
}
3950

4051
static void setECKeyXyVauesInDER(const byte* rawKey, byte* derKey)
4152
{
42-
static const byte ecc_der_header_nist256[27] =
53+
static const byte ecc_der_header_nist256[SE05X_EC_KEY_HEADER_LENGTH] =
4354
{
4455
0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86,
4556
0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a,
4657
0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03,
4758
0x42, 0x00, 0x04
4859
};
4960

50-
memcpy(&derKey[0], &ecc_der_header_nist256[0], 27);
51-
memcpy(&derKey[27], &rawKey[0], 64);
61+
memcpy(&derKey[0], &ecc_der_header_nist256[0], SE05X_EC_KEY_HEADER_LENGTH);
62+
memcpy(&derKey[SE05X_EC_KEY_HEADER_LENGTH], &rawKey[0], SE05X_EC_KEY_RAW_LENGTH);
5263
}
5364

5465
static void getECSignatureRsValuesFromDER(byte* derSignature, size_t derLen, byte* rawSignature)
@@ -61,32 +72,32 @@ static void getECSignatureRsValuesFromDER(byte* derSignature, size_t derLen, byt
6172

6273
byte * out = rawSignature;
6374

64-
if(rLen == 32)
75+
if(rLen == (SE05X_EC_SIGNATURE_RAW_LENGTH / 2))
6576
{
66-
memcpy(out, &derSignature[4], 32);
77+
memcpy(out, &derSignature[4], (SE05X_EC_SIGNATURE_RAW_LENGTH / 2));
6778
}
68-
else if ((rLen == 33) && (derSignature[4] == 0))
79+
else if ((rLen == ((SE05X_EC_SIGNATURE_RAW_LENGTH / 2) + 1)) && (derSignature[4] == 0))
6980
{
70-
memcpy(out, &derSignature[5], 32);
81+
memcpy(out, &derSignature[5], (SE05X_EC_SIGNATURE_RAW_LENGTH / 2));
7182
}
7283

73-
out += 32;
84+
out += (SE05X_EC_SIGNATURE_RAW_LENGTH / 2);
7485

75-
if(sLen == 32)
86+
if(sLen == (SE05X_EC_SIGNATURE_RAW_LENGTH / 2))
7687
{
77-
memcpy(out, &derSignature[3 + rLen + 3], 32);
88+
memcpy(out, &derSignature[3 + rLen + 3], (SE05X_EC_SIGNATURE_RAW_LENGTH / 2));
7889
}
79-
else if ((sLen == 33) && (derSignature[3 + rLen + 3] == 0))
90+
else if ((sLen == ((SE05X_EC_SIGNATURE_RAW_LENGTH / 2) + 1)) && (derSignature[3 + rLen + 3] == 0))
8091
{
81-
memcpy(out, &derSignature[3 + rLen + 4], 32);
92+
memcpy(out, &derSignature[3 + rLen + 4], (SE05X_EC_SIGNATURE_RAW_LENGTH / 2));
8293
}
8394
}
8495

8596
static void setECSignatureRsValuesInDER(const byte* rawSignature, byte* signature)
8697
{
87-
byte rLen = 32;
88-
byte sLen = 32;
89-
byte rawSignatureLen = 64;
98+
byte rLen = (SE05X_EC_SIGNATURE_RAW_LENGTH / 2);
99+
byte sLen = (SE05X_EC_SIGNATURE_RAW_LENGTH / 2);
100+
byte rawSignatureLen = SE05X_EC_SIGNATURE_RAW_LENGTH;
90101

91102
signature[0] = 0x30;
92103
signature[1] = (uint8_t)(rawSignatureLen + 4);
@@ -150,7 +161,7 @@ int SE05XClass::readConfiguration(byte data[])
150161
String SE05XClass::serialNumber()
151162
{
152163
String result = (char*)NULL;
153-
byte UID[18];
164+
byte UID[SE05X_SN_LENGTH];
154165
size_t uidLen = 18;
155166

156167
sss_session_prop_get_au8(&_boot_ctx.session, kSSS_SessionProp_UID, UID, &uidLen);
@@ -240,7 +251,7 @@ int SE05XClass::generatePrivateKey(int keyId, byte pubKeyDer[], size_t pubKeyDer
240251

241252
int SE05XClass::generatePrivateKey(int slot, byte publicKey[])
242253
{
243-
byte publicKeyDer[256];
254+
byte publicKeyDer[SE05X_DER_BUFFER_SIZE];
244255
size_t publicKeyDerLen;
245256

246257
if ((_cipher_type != kSSS_CipherType_EC_NIST_P) || (_algorithm_type != kAlgorithm_SSS_ECDSA_SHA256)) {
@@ -279,7 +290,7 @@ int SE05XClass::generatePublicKey(int keyId, byte pubKeyDer[], size_t pubKeyDerM
279290

280291
int SE05XClass::generatePublicKey(int slot, byte publicKey[])
281292
{
282-
byte publicKeyDer[256];
293+
byte publicKeyDer[SE05X_DER_BUFFER_SIZE];
283294
size_t publicKeyDerLen;
284295

285296
if ((_cipher_type != kSSS_CipherType_EC_NIST_P) || (_algorithm_type != kAlgorithm_SSS_ECDSA_SHA256)) {
@@ -407,14 +418,14 @@ int SE05XClass::Sign(int keyId, const byte hash[], size_t hashLen, byte sig[], s
407418

408419
int SE05XClass::ecSign(int slot, const byte message[], byte signature[])
409420
{
410-
byte signatureDer[256];
421+
byte signatureDer[SE05X_DER_BUFFER_SIZE];
411422
size_t signatureDerLen;
412423

413424
if ((_cipher_type != kSSS_CipherType_EC_NIST_P) || (_algorithm_type != kAlgorithm_SSS_ECDSA_SHA256)) {
414425
return 0;
415426
}
416427

417-
if (!Sign(slot, message, 32, signatureDer, sizeof(signatureDer), &signatureDerLen)) {
428+
if (!Sign(slot, message, SE05X_SHA256_LENGTH, signatureDer, sizeof(signatureDer), &signatureDerLen)) {
418429
return 0;
419430
}
420431

@@ -454,24 +465,24 @@ int SE05XClass::Verify(int keyId, const byte hash[], size_t hashLen, const byte
454465

455466
int SE05XClass::ecdsaVerify(const byte message[], const byte signature[], const byte pubkey[])
456467
{
457-
byte pubKeyDER[91];
458-
byte signatureDER[70];
468+
byte pubKeyDER[SE05X_EC_KEY_DER_LENGTH];
469+
byte signatureDER[SE05X_EC_SIGNATURE_DER_LENGTH];
459470
int result;
460471

461472
if ((_cipher_type != kSSS_CipherType_EC_NIST_P) || (_algorithm_type != kAlgorithm_SSS_ECDSA_SHA256)) {
462473
return 0;
463474
}
464475

465476
setECKeyXyVauesInDER(pubkey, pubKeyDER);
466-
if (!importPublicKey(0xA5A5, pubKeyDER, sizeof(pubKeyDER))) {
477+
if (!importPublicKey(SE05X_TEMP_OBJECT, pubKeyDER, sizeof(pubKeyDER))) {
467478
return 0;
468479
}
469480

470481
setECSignatureRsValuesInDER(signature, signatureDER);
471482

472-
result = Verify(0xA5A5, message, 32, signatureDER, 70);
483+
result = Verify(SE05X_TEMP_OBJECT, message, SE05X_SHA256_LENGTH, signatureDER, SE05X_EC_SIGNATURE_DER_LENGTH);
473484

474-
if (!deleteBinaryObject(0xA5A5)) {
485+
if (!deleteBinaryObject(SE05X_TEMP_OBJECT)) {
475486
return 0;
476487
}
477488
return result;

0 commit comments

Comments
 (0)