|
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 |
|
@@ -158,17 +157,39 @@ int SE05XClass::readConfiguration(byte data[])
|
158 | 157 | return 1;
|
159 | 158 | }
|
160 | 159 |
|
| 160 | +int SE05XClass::serialNumber(byte sn[]) |
| 161 | +{ |
| 162 | + return serialNumber(sn, SE05X_SN_LENGTH); |
| 163 | +} |
| 164 | + |
| 165 | +int SE05XClass::serialNumber(byte sn[], size_t length) |
| 166 | +{ |
| 167 | + size_t uidLen = SE05X_SN_LENGTH; |
| 168 | + byte UID[SE05X_SN_LENGTH]; |
| 169 | + |
| 170 | + if(!sn) { |
| 171 | + return 0; |
| 172 | + } |
| 173 | + |
| 174 | + sss_status_t status = sss_session_prop_get_au8(&_boot_ctx.session, kSSS_SessionProp_UID, UID, &uidLen); |
| 175 | + if ((status != kStatus_SSS_Success)) { |
| 176 | + SE05X_PRINT_ERROR("Error in Se05x_API_ReadObject \n"); |
| 177 | + return 0; |
| 178 | + } |
| 179 | + memcpy(sn, UID, length < SE05X_SN_LENGTH ? length : SE05X_SN_LENGTH); |
| 180 | + return 1; |
| 181 | +} |
| 182 | + |
161 | 183 | String SE05XClass::serialNumber()
|
162 | 184 | {
|
163 | 185 | String result = (char*)NULL;
|
164 | 186 | byte UID[SE05X_SN_LENGTH];
|
165 |
| - size_t uidLen = 18; |
166 | 187 |
|
167 |
| - sss_session_prop_get_au8(&_boot_ctx.session, kSSS_SessionProp_UID, UID, &uidLen); |
| 188 | + serialNumber(UID, sizeof(UID)); |
168 | 189 |
|
169 |
| - result.reserve(uidLen*2); |
| 190 | + result.reserve(SE05X_SN_LENGTH * 2); |
170 | 191 |
|
171 |
| - for (int i = 0; i < uidLen; i++) { |
| 192 | + for (size_t i = 0; i < SE05X_SN_LENGTH; i++) { |
172 | 193 | byte b = UID[i];
|
173 | 194 |
|
174 | 195 | if (b < 16) {
|
|
0 commit comments