Skip to content

Commit 555bd2f

Browse files
committed
SE050: Add serialNumber(byte sn[])
1 parent 103d4ab commit 555bd2f

File tree

2 files changed

+30
-5
lines changed

2 files changed

+30
-5
lines changed

Diff for: libraries/SE05X/src/SE05X.cpp

+26-5
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
#define SE05X_EC_SIGNATURE_HEADER_LENGTH 6
2727
#define SE05X_EC_SIGNATURE_DER_LENGTH SE05X_EC_SIGNATURE_HEADER_LENGTH + SE05X_EC_SIGNATURE_RAW_LENGTH
2828
#define SE05X_SHA256_LENGTH 32
29-
#define SE05X_SN_LENGTH 18
3029
#define SE05X_DER_BUFFER_SIZE 256
3130
#define SE05X_TEMP_OBJECT 9999
3231

@@ -158,17 +157,39 @@ int SE05XClass::readConfiguration(byte data[])
158157
return 1;
159158
}
160159

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+
161183
String SE05XClass::serialNumber()
162184
{
163185
String result = (char*)NULL;
164186
byte UID[SE05X_SN_LENGTH];
165-
size_t uidLen = 18;
166187

167-
sss_session_prop_get_au8(&_boot_ctx.session, kSSS_SessionProp_UID, UID, &uidLen);
188+
serialNumber(UID, sizeof(UID));
168189

169-
result.reserve(uidLen*2);
190+
result.reserve(SE05X_SN_LENGTH * 2);
170191

171-
for (int i = 0; i < uidLen; i++) {
192+
for (size_t i = 0; i < SE05X_SN_LENGTH; i++) {
172193
byte b = UID[i];
173194

174195
if (b < 16) {

Diff for: libraries/SE05X/src/SE05X.h

+4
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@
3232
#define SE05X_PRINT_ERROR
3333
#endif
3434

35+
#define SE05X_SN_LENGTH 18
36+
3537
class SE05XClass
3638
{
3739
public:
@@ -41,6 +43,8 @@ class SE05XClass
4143
int begin();
4244
void end();
4345

46+
int serialNumber(byte sn[]);
47+
int serialNumber(byte sn[], size_t length);
4448
String serialNumber();
4549

4650
long random(long max);

0 commit comments

Comments
 (0)