|
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,29 @@ void SE05XClass::end() |
108 | 107 | Se05x_API_SessionClose(&_se05x_session); |
109 | 108 | } |
110 | 109 |
|
111 | | -String SE05XClass::serialNumber() |
| 110 | +int SE05XClass::serialNumber(byte sn[], size_t length) |
112 | 111 | { |
113 | | - String result = (char*)NULL; |
114 | | - byte UID[SE05X_SN_LENGTH]; |
115 | | - size_t uidLen = SE05X_SN_LENGTH; |
| 112 | + size_t uidLen; |
116 | 113 | const int kSE05x_AppletResID_UNIQUE_ID = 0x7FFF0206, |
117 | 114 |
|
118 | | - status = Se05x_API_ReadObject(&_se05x_session, kSE05x_AppletResID_UNIQUE_ID, 0, uidLen, UID, &uidLen); |
119 | | - if (status != SM_OK) { |
| 115 | + status = Se05x_API_ReadObject(&_se05x_session, kSE05x_AppletResID_UNIQUE_ID, 0, length, sn, &uidLen); |
| 116 | + if (status != SM_OK || length != uidLen) { |
120 | 117 | SMLOG_E("Error in Se05x_API_ReadObject \n"); |
121 | | - return ""; |
| 118 | + return 0; |
122 | 119 | } |
| 120 | + return 1; |
| 121 | +} |
| 122 | + |
| 123 | +String SE05XClass::serialNumber() |
| 124 | +{ |
| 125 | + String result = (char*)NULL; |
| 126 | + byte UID[SE05X_SN_LENGTH]; |
| 127 | + |
| 128 | + serialNumber(UID, sizeof(UID)); |
123 | 129 |
|
124 | | - result.reserve(uidLen * 2); |
| 130 | + result.reserve(SE05X_SN_LENGTH * 2); |
125 | 131 |
|
126 | | - for (size_t i = 0; i < uidLen; i++) { |
| 132 | + for (size_t i = 0; i < SE05X_SN_LENGTH; i++) { |
127 | 133 | byte b = UID[i]; |
128 | 134 |
|
129 | 135 | if (b < 16) { |
|
0 commit comments