Skip to content

Commit 6d7ca0e

Browse files
committed
SATSE: Fix return values according function description
Also: - Remove unnecessary type casts - Use constexpr instead of numbers
1 parent 163b316 commit 6d7ca0e

File tree

1 file changed

+29
-24
lines changed

1 file changed

+29
-24
lines changed

libraries/SoftwareATSE/src/SoftwareATSE.cpp

+29-24
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@
2222

2323
using namespace std;
2424

25+
static uint8_t constexpr SATSE_SHA256_LENGTH = 32;
26+
static uint8_t constexpr SATSE_EC256_SIGNATURE_LENGTH = 64;
27+
static uint8_t constexpr SATSE_EC256_PUB_KEY_LENGTH = 64;
28+
2529
SoftwareATSEClass::SoftwareATSEClass() {
2630

2731
}
@@ -124,9 +128,9 @@ int SoftwareATSEClass::generatePrivateKey(int keyID, byte publicKey[])
124128
if (publicKey != nullptr) {
125129
modem.read_using_size();
126130
if (modem.write(string(PROMPT(_SOFTSE_PRI_KEY)), res, "%s%d\r\n", CMD_WRITE(_SOFTSE_PRI_KEY), keyID)) {
127-
if (res.size() >= 64) {
128-
memcpy(publicKey, (uint8_t*)&res[0], 64);
129-
return 64;
131+
if (res.size() == SATSE_EC256_PUB_KEY_LENGTH) {
132+
memcpy(publicKey, (uint8_t*)&res[0], SATSE_EC256_PUB_KEY_LENGTH);
133+
return 1;
130134
}
131135
}
132136
}
@@ -139,9 +143,9 @@ int SoftwareATSEClass::generatePublicKey(int keyID, byte publicKey[])
139143
if (publicKey != nullptr) {
140144
modem.read_using_size();
141145
if (modem.write(string(PROMPT(_SOFTSE_PUB_KEY)), res, "%s%d\r\n", CMD_WRITE(_SOFTSE_PUB_KEY), keyID)) {
142-
if (res.size() >= 64) {
143-
memcpy(publicKey, (uint8_t*)&res[0], 64);
144-
return 64;
146+
if (res.size() == SATSE_EC256_PUB_KEY_LENGTH) {
147+
memcpy(publicKey, (uint8_t*)&res[0], SATSE_EC256_PUB_KEY_LENGTH);
148+
return 1;
145149
}
146150
}
147151
}
@@ -152,18 +156,18 @@ int SoftwareATSEClass::ecSign(int slot, const byte message[], byte signature[])
152156
{
153157
string res = "";
154158
if ( message != nullptr) {
155-
modem.write_nowait(string(PROMPT(_SOFTSE_S_V_BUF_SET)), res, "%s%d\r\n", CMD_WRITE(_SOFTSE_S_V_BUF_SET), 32);
156-
if(!modem.passthrough((uint8_t *)message, 32)) {
159+
modem.write_nowait(string(PROMPT(_SOFTSE_S_V_BUF_SET)), res, "%s%d\r\n", CMD_WRITE(_SOFTSE_S_V_BUF_SET), SATSE_SHA256_LENGTH);
160+
if(!modem.passthrough(message, SATSE_SHA256_LENGTH)) {
157161
return 0;
158162
}
159163
}
160164

161165
if (signature != nullptr) {
162166
modem.read_using_size();
163167
if (modem.write(string(PROMPT(_SOFTSE_SIGN_GET)), res, "%s%d\r\n", CMD_WRITE(_SOFTSE_SIGN_GET), slot)) {
164-
if (res.size() == 64) {
165-
memcpy(signature, (uint8_t*)&res[0], 64);
166-
return 64;
168+
if (res.size() == SATSE_EC256_SIGNATURE_LENGTH) {
169+
memcpy(signature, (uint8_t*)&res[0], SATSE_EC256_SIGNATURE_LENGTH);
170+
return 1;
167171
}
168172
}
169173
}
@@ -174,12 +178,13 @@ int SoftwareATSEClass::ecdsaVerify(const byte message[], const byte signature[],
174178
{
175179
string res = "";
176180
if ( message != nullptr && signature!= nullptr) {
177-
byte tmp[256];
178-
memcpy(tmp, message,32);
179-
memcpy(&tmp[32], signature, 64);
180-
memcpy(&tmp[32+64], pubkey, 64);
181-
modem.write_nowait(string(PROMPT(_SOFTSE_S_V_BUF_SET)), res, "%s%d\r\n", CMD_WRITE(_SOFTSE_S_V_BUF_SET), 32+64+64);
182-
if(!modem.passthrough((uint8_t *)tmp, 32+64+64)) {
181+
static const byte len = SATSE_SHA256_LENGTH + SATSE_EC256_SIGNATURE_LENGTH + SATSE_EC256_PUB_KEY_LENGTH;
182+
byte tmp[len];
183+
memcpy(tmp, message, SATSE_SHA256_LENGTH);
184+
memcpy(&tmp[SATSE_SHA256_LENGTH], signature, SATSE_EC256_SIGNATURE_LENGTH);
185+
memcpy(&tmp[SATSE_SHA256_LENGTH + SATSE_EC256_SIGNATURE_LENGTH], pubkey, SATSE_EC256_PUB_KEY_LENGTH);
186+
modem.write_nowait(string(PROMPT(_SOFTSE_S_V_BUF_SET)), res, "%s%d\r\n", CMD_WRITE(_SOFTSE_S_V_BUF_SET), len);
187+
if(!modem.passthrough(tmp, len)) {
183188
return 0;
184189
}
185190
}
@@ -196,17 +201,17 @@ int SoftwareATSEClass::SHA256(const uint8_t *buffer, size_t size, uint8_t *diges
196201
string res = "";
197202
if ( buffer != nullptr) {
198203
modem.write_nowait(string(PROMPT(_SOFTSE_S_V_BUF_SET)), res, "%s%d\r\n", CMD_WRITE(_SOFTSE_S_V_BUF_SET), size);
199-
if(!modem.passthrough((uint8_t *)buffer, size)) {
204+
if(!modem.passthrough(buffer, size)) {
200205
return 0;
201206
}
202207
}
203208

204209
if (digest != nullptr) {
205210
modem.read_using_size();
206211
if (modem.write(string(PROMPT(_SOFTSE_SHA256_GET)), res, "%s", CMD(_SOFTSE_SHA256_GET))) {
207-
if (res.size() == 32) {
208-
memcpy(digest, (uint8_t*)&res[0], 32);
209-
return 32;
212+
if (res.size() == SATSE_SHA256_LENGTH) {
213+
memcpy(digest, (uint8_t*)&res[0], SATSE_SHA256_LENGTH);
214+
return 1;
210215
}
211216
}
212217
}
@@ -222,7 +227,7 @@ int SoftwareATSEClass::readSlot(int slot, byte data[], int length)
222227
if (res.size()) {
223228
int len = res.size() > length ? length : res.size();
224229
memcpy(data, (uint8_t*)&res[0], len);
225-
return len;
230+
return 1;
226231
}
227232
}
228233
}
@@ -234,8 +239,8 @@ int SoftwareATSEClass::writeSlot(int slot, const byte data[], int length)
234239
string res = "";
235240
if ( data != nullptr && length > 0) {
236241
modem.write_nowait(string(PROMPT(_SOFTSE_WRITE_SLOT)), res, "%s%d,%d\r\n", CMD_WRITE(_SOFTSE_WRITE_SLOT), slot, length);
237-
if(modem.passthrough((uint8_t *)data, length)) {
238-
return length;
242+
if(modem.passthrough(data, length)) {
243+
return 1;
239244
}
240245
}
241246
return 0;

0 commit comments

Comments
 (0)