|
69 | 69 | SE05X_EC_SIGNATURE_RAW_LENGTH
|
70 | 70 |
|
71 | 71 | #define SE05X_SHA256_LENGTH 32
|
72 |
| -#define SE05X_SN_LENGTH 18 |
73 | 72 |
|
74 | 73 | #define SE05X_TEMP_OBJECT 9999
|
75 | 74 |
|
@@ -108,22 +107,30 @@ void SE05XClass::end()
|
108 | 107 | Se05x_API_SessionClose(&_se05x_session);
|
109 | 108 | }
|
110 | 109 |
|
| 110 | +int SE05XClass::serialNumber(byte sn[], size_t length) |
| 111 | +{ |
| 112 | + size_t uidLen = length; |
| 113 | + const int kSE05x_AppletResID_UNIQUE_ID = 0x7FFF0206; |
| 114 | + smStatus_t status; |
| 115 | + |
| 116 | + status = Se05x_API_ReadObject(&_se05x_session, kSE05x_AppletResID_UNIQUE_ID, 0, length, sn, &uidLen); |
| 117 | + if (status != SM_OK || length != uidLen) { |
| 118 | + SMLOG_E("Error in Se05x_API_ReadObject \n"); |
| 119 | + return 0; |
| 120 | + } |
| 121 | + return 1; |
| 122 | +} |
| 123 | + |
111 | 124 | String SE05XClass::serialNumber()
|
112 | 125 | {
|
113 | 126 | String result = (char*)NULL;
|
114 | 127 | byte UID[SE05X_SN_LENGTH];
|
115 |
| - size_t uidLen = SE05X_SN_LENGTH; |
116 |
| - const int kSE05x_AppletResID_UNIQUE_ID = 0x7FFF0206, |
117 | 128 |
|
118 |
| - status = Se05x_API_ReadObject(&_se05x_session, kSE05x_AppletResID_UNIQUE_ID, 0, uidLen, UID, &uidLen); |
119 |
| - if (status != SM_OK) { |
120 |
| - SMLOG_E("Error in Se05x_API_ReadObject \n"); |
121 |
| - return ""; |
122 |
| - } |
| 129 | + serialNumber(UID, sizeof(UID)); |
123 | 130 |
|
124 |
| - result.reserve(uidLen * 2); |
| 131 | + result.reserve(SE05X_SN_LENGTH * 2); |
125 | 132 |
|
126 |
| - for (size_t i = 0; i < uidLen; i++) { |
| 133 | + for (size_t i = 0; i < SE05X_SN_LENGTH; i++) { |
127 | 134 | byte b = UID[i];
|
128 | 135 |
|
129 | 136 | if (b < 16) {
|
|
0 commit comments