From 88f35663b8b13d02f87f940f1aee555392b64f7d Mon Sep 17 00:00:00 2001 From: pennam Date: Tue, 22 Oct 2024 12:07:01 +0200 Subject: [PATCH 1/3] Add serialNumber(byte sn[]) API --- src/SecureElement.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/SecureElement.h b/src/SecureElement.h index 8452bbd..94c5188 100644 --- a/src/SecureElement.h +++ b/src/SecureElement.h @@ -50,6 +50,7 @@ class SecureElement inline int begin() { return _secureElement.begin(); } inline void end() { return _secureElement.end(); } + inline int serialNumber(byte sn[]) { return _secureElement.serialNumber(sn); } inline String serialNumber() { return _secureElement.serialNumber(); } inline long random(long min, long max) { return this->_secureElement.random(min, max); }; From a585642060f802a0bae12d7cdef97735dc5b5b7c Mon Sep 17 00:00:00 2001 From: pennam Date: Fri, 29 Nov 2024 14:04:31 +0100 Subject: [PATCH 2/3] Add serialNumber(byte sn[], size_t length) --- src/SecureElement.cpp | 17 +++++++++++++++++ src/SecureElement.h | 9 +++++++++ 2 files changed, 26 insertions(+) diff --git a/src/SecureElement.cpp b/src/SecureElement.cpp index 882bf4f..f0ccd96 100644 --- a/src/SecureElement.cpp +++ b/src/SecureElement.cpp @@ -60,3 +60,20 @@ int SecureElement::SHA256(const uint8_t *buffer, size_t size, uint8_t *digest) #endif } +int SecureElement::serialNumber(byte sn[], size_t length) +{ +#if defined(SECURE_ELEMENT_IS_SE050) + return _secureElement.serialNumber(sn, length); +#else + if (sn == nullptr || length < SE_SN_LENGTH) { + return 0; + } + uint8_t tmp[12]; + if (!_secureElement.serialNumber(tmp)) { + return 0; + } + memcpy(sn, tmp, SE_SN_LENGTH); + return 1; +#endif +} + diff --git a/src/SecureElement.h b/src/SecureElement.h index 94c5188..6dc8581 100644 --- a/src/SecureElement.h +++ b/src/SecureElement.h @@ -37,6 +37,14 @@ #define SE_SHA256_BUFFER_LENGTH 32 #define SE_CERT_BUFFER_LENGTH 1024 +#if defined(SECURE_ELEMENT_IS_SE050) + #define SE_SN_LENGTH SE05X_SN_LENGTH +#elif defined(SECURE_ELEMENT_IS_ECCX08) + #define SE_SN_LENGTH 9 +#elif defined(SECURE_ELEMENT_IS_SOFTSE) + #define SE_SN_LENGTH 6 +#endif + /****************************************************************************** * CLASS DECLARATION ******************************************************************************/ @@ -52,6 +60,7 @@ class SecureElement inline int serialNumber(byte sn[]) { return _secureElement.serialNumber(sn); } inline String serialNumber() { return _secureElement.serialNumber(); } + int serialNumber(byte sn[], size_t length); inline long random(long min, long max) { return this->_secureElement.random(min, max); }; inline long random(long max) { return this->_secureElement.random(max); }; From badc8a6587e78064450715ce5cd8c7f1c851d0ca Mon Sep 17 00:00:00 2001 From: Mattia Pennasilico Date: Tue, 10 Dec 2024 10:13:41 +0100 Subject: [PATCH 3/3] Release v0.2.0 --- library.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library.properties b/library.properties index 4f0437e..7e88743 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=Arduino_SecureElement -version=0.1.3 +version=0.2.0 author=Arduino maintainer=Arduino sentence=Arduino Library for the Atmel/Microchip ECC508 and ECC608 and NXP SE050 crypto chips