|
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