|
26 | 26 | #define SE05X_EC_SIGNATURE_HEADER_LENGTH 6
|
27 | 27 | #define SE05X_EC_SIGNATURE_DER_LENGTH SE05X_EC_SIGNATURE_HEADER_LENGTH + SE05X_EC_SIGNATURE_RAW_LENGTH
|
28 | 28 | #define SE05X_SHA256_LENGTH 32
|
29 |
| -#define SE05X_SN_LENGTH 18 |
30 | 29 | #define SE05X_DER_BUFFER_SIZE 256
|
31 | 30 | #define SE05X_TEMP_OBJECT 9999
|
32 | 31 |
|
@@ -111,8 +110,6 @@ static void setECSignatureRsValuesInDER(const byte* rawSignature, byte* signatur
|
111 | 110 |
|
112 | 111 | int SE05XClass::begin()
|
113 | 112 | {
|
114 |
| - sss_status_t status; |
115 |
| - |
116 | 113 | memset(&_boot_ctx, 0, sizeof(ex_sss_boot_ctx_t));
|
117 | 114 |
|
118 | 115 | se05x_ic_power_on();
|
@@ -158,17 +155,39 @@ int SE05XClass::readConfiguration(byte data[])
|
158 | 155 | return 1;
|
159 | 156 | }
|
160 | 157 |
|
| 158 | +int SE05XClass::serialNumber(byte sn[]) |
| 159 | +{ |
| 160 | + return serialNumber(sn, SE05X_SN_LENGTH); |
| 161 | +} |
| 162 | + |
| 163 | +int SE05XClass::serialNumber(byte sn[], size_t length) |
| 164 | +{ |
| 165 | + size_t uidLen = SE05X_SN_LENGTH; |
| 166 | + byte UID[SE05X_SN_LENGTH]; |
| 167 | + |
| 168 | + if(!sn) { |
| 169 | + return 0; |
| 170 | + } |
| 171 | + |
| 172 | + sss_status_t status = sss_session_prop_get_au8(&_boot_ctx.session, kSSS_SessionProp_UID, UID, &uidLen); |
| 173 | + if ((status != kStatus_SSS_Success)) { |
| 174 | + SE05X_PRINT_ERROR("Error in Se05x_API_ReadObject \n"); |
| 175 | + return 0; |
| 176 | + } |
| 177 | + memcpy(sn, UID, length < SE05X_SN_LENGTH ? length : SE05X_SN_LENGTH); |
| 178 | + return 1; |
| 179 | +} |
| 180 | + |
161 | 181 | String SE05XClass::serialNumber()
|
162 | 182 | {
|
163 | 183 | String result = (char*)NULL;
|
164 | 184 | byte UID[SE05X_SN_LENGTH];
|
165 |
| - size_t uidLen = 18; |
166 | 185 |
|
167 |
| - sss_session_prop_get_au8(&_boot_ctx.session, kSSS_SessionProp_UID, UID, &uidLen); |
| 186 | + serialNumber(UID, sizeof(UID)); |
168 | 187 |
|
169 |
| - result.reserve(uidLen*2); |
| 188 | + result.reserve(SE05X_SN_LENGTH * 2); |
170 | 189 |
|
171 |
| - for (int i = 0; i < uidLen; i++) { |
| 190 | + for (size_t i = 0; i < SE05X_SN_LENGTH; i++) { |
172 | 191 | byte b = UID[i];
|
173 | 192 |
|
174 | 193 | if (b < 16) {
|
@@ -591,8 +610,6 @@ int SE05XClass::deleteAllObjects(void)
|
591 | 610 |
|
592 | 611 | int SE05XClass::getObjectHandle(int objectId, sss_object_t * object)
|
593 | 612 | {
|
594 |
| - sss_status_t status; |
595 |
| - |
596 | 613 | if(kStatus_SSS_Success != sss_key_object_init(object, &_boot_ctx.ks)) {
|
597 | 614 | SE05X_PRINT_ERROR("sss_key_object_init Failed");
|
598 | 615 | return 0;
|
|
0 commit comments