|
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