Skip to content

Commit 256e1de

Browse files
author
Krzysztof Stachowiak
committed
Modify Silicon Labs target code to use MD API with the return values
1 parent 174530b commit 256e1de

File tree

3 files changed

+78
-25
lines changed

3 files changed

+78
-25
lines changed

features/mbedtls/targets/TARGET_Silicon_Labs/crypto_sha.c

Lines changed: 54 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ void mbedtls_sha256_clone( mbedtls_sha256_context *dst,
234234
/*
235235
* SHA-256 context setup
236236
*/
237-
void mbedtls_sha256_starts( mbedtls_sha256_context *ctx, int is224 )
237+
int mbedtls_sha256_starts_ret( mbedtls_sha256_context *ctx, int is224 )
238238
{
239239
ctx->total[0] = 0;
240240
ctx->total[1] = 0;
@@ -246,6 +246,8 @@ void mbedtls_sha256_starts( mbedtls_sha256_context *ctx, int is224 )
246246
ctx->is224 = false;
247247
memcpy(ctx->state, init_state_sha256, sizeof(ctx->state));
248248
}
249+
250+
return 0;
249251
}
250252

251253
void mbedtls_sha256_process( mbedtls_sha256_context *ctx,
@@ -257,15 +259,15 @@ void mbedtls_sha256_process( mbedtls_sha256_context *ctx,
257259
/*
258260
* SHA-256 process buffer
259261
*/
260-
void mbedtls_sha256_update( mbedtls_sha256_context *ctx,
261-
const unsigned char *input,
262-
size_t ilen )
262+
int mbedtls_sha256_update_ret( mbedtls_sha256_context *ctx,
263+
const unsigned char *input,
264+
size_t ilen )
263265
{
264266
size_t fill;
265267
uint32_t left;
266268

267269
if( ilen == 0 ) {
268-
return;
270+
return 0;
269271
}
270272

271273
left = ctx->total[0] & 0x3F;
@@ -296,17 +298,20 @@ void mbedtls_sha256_update( mbedtls_sha256_context *ctx,
296298
if( ilen > 0 ) {
297299
memcpy( (void *) (ctx->buffer + left), input, ilen );
298300
}
301+
302+
return 0;
299303
}
300304

301305
/*
302306
* SHA-256 final digest
303307
*/
304-
void mbedtls_sha256_finish( mbedtls_sha256_context *ctx,
305-
unsigned char output[32] )
308+
int mbedtls_sha256_finish_ret( mbedtls_sha256_context *ctx,
309+
unsigned char output[32] )
306310
{
307311
uint32_t last, padn;
308312
uint32_t high, low;
309313
unsigned char msglen[8];
314+
int err;
310315

311316
high = ( ctx->total[0] >> 29 )
312317
| ( ctx->total[1] << 3 );
@@ -318,12 +323,21 @@ void mbedtls_sha256_finish( mbedtls_sha256_context *ctx,
318323
last = ctx->total[0] & 0x3F;
319324
padn = ( last < 56 ) ? ( 56 - last ) : ( 120 - last );
320325

321-
mbedtls_sha256_update( ctx, sha_padding, padn );
322-
mbedtls_sha256_update( ctx, msglen, 8 );
326+
err = mbedtls_sha256_update_ret( ctx, sha_padding, padn );
327+
if( err != 0 ) {
328+
return err;
329+
}
330+
331+
err = mbedtls_sha256_update_ret( ctx, msglen, 8 );
332+
if( err != 0 ) {
333+
return err;
334+
}
323335

324336
for ( size_t i = 0; i < (ctx->is224 ? 28 : 32); i+=4) {
325337
*((uint32_t*)(&output[i])) = __REV(ctx->state[i >> 2]);
326338
}
339+
340+
return 0;
327341
}
328342
#endif /* #if defined(MBEDTLS_SHA256_ALT) && defined(MBEDTLS_SHA256_C) */
329343

@@ -366,12 +380,16 @@ void mbedtls_sha1_clone( mbedtls_sha1_context *dst,
366380
* \brief SHA-1 context setup
367381
*
368382
* \param ctx context to be initialized
383+
*
384+
* \return \c 0 if successful
385+
*
369386
*/
370-
void mbedtls_sha1_starts( mbedtls_sha1_context *ctx )
387+
int mbedtls_sha1_starts_ret( mbedtls_sha1_context *ctx )
371388
{
372389
ctx->total[0] = 0;
373390
ctx->total[1] = 0;
374391
memcpy(ctx->state, init_state_sha1, 32);
392+
return 0;
375393
}
376394

377395
/**
@@ -380,16 +398,19 @@ void mbedtls_sha1_starts( mbedtls_sha1_context *ctx )
380398
* \param ctx SHA-1 context
381399
* \param input buffer holding the data
382400
* \param ilen length of the input data
401+
*
402+
* \return \c 0 if successful
403+
*
383404
*/
384-
void mbedtls_sha1_update( mbedtls_sha1_context *ctx,
385-
const unsigned char *input,
386-
size_t ilen )
405+
int mbedtls_sha1_update_ret( mbedtls_sha1_context *ctx,
406+
const unsigned char *input,
407+
size_t ilen )
387408
{
388409
size_t fill;
389410
uint32_t left;
390411

391412
if( ilen == 0 ) {
392-
return;
413+
return 0;
393414
}
394415

395416
left = ctx->total[0] & 0x3F;
@@ -420,20 +441,26 @@ void mbedtls_sha1_update( mbedtls_sha1_context *ctx,
420441
if( ilen > 0 ) {
421442
memcpy( (void *) (ctx->buffer + left), input, ilen );
422443
}
444+
445+
return 0;
423446
}
424447

425448
/**
426449
* \brief SHA-1 final digest
427450
*
428451
* \param ctx SHA-1 context
429452
* \param output SHA-1 checksum result
453+
*
454+
* \return \c 0 if successful
455+
*
430456
*/
431-
void mbedtls_sha1_finish( mbedtls_sha1_context *ctx,
432-
unsigned char output[20] )
457+
int mbedtls_sha1_finish_ret( mbedtls_sha1_context *ctx,
458+
unsigned char output[20] )
433459
{
434460
uint32_t last, padn;
435461
uint32_t high, low;
436462
unsigned char msglen[8];
463+
int err;
437464

438465
high = ( ctx->total[0] >> 29 )
439466
| ( ctx->total[1] << 3 );
@@ -445,12 +472,21 @@ void mbedtls_sha1_finish( mbedtls_sha1_context *ctx,
445472
last = ctx->total[0] & 0x3F;
446473
padn = ( last < 56 ) ? ( 56 - last ) : ( 120 - last );
447474

448-
mbedtls_sha1_update( ctx, sha_padding, padn );
449-
mbedtls_sha1_update( ctx, msglen, 8 );
475+
err = mbedtls_sha1_update_ret( ctx, sha_padding, padn );
476+
if( err != 0 ) {
477+
return err;
478+
}
479+
480+
err = mbedtls_sha1_update_ret( ctx, msglen, 8 );
481+
if( err != 0 ) {
482+
return err;
483+
}
450484

451485
for ( size_t i = 0; i < 20; i+=4) {
452486
*((uint32_t*)(&output[i])) = __REV(ctx->state[i >> 2]);
453487
}
488+
489+
return 0;
454490
}
455491

456492
/* Internal use */

features/mbedtls/targets/TARGET_Silicon_Labs/sha1_alt.h

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,25 +78,34 @@ void mbedtls_sha1_clone( mbedtls_sha1_context *dst,
7878
* \brief SHA-1 context setup
7979
*
8080
* \param ctx context to be initialized
81+
*
82+
* \return \c 0 if successful
83+
*
8184
*/
82-
void mbedtls_sha1_starts( mbedtls_sha1_context *ctx );
85+
int mbedtls_sha1_starts_ret( mbedtls_sha1_context *ctx );
8386

8487
/**
8588
* \brief SHA-1 process buffer
8689
*
8790
* \param ctx SHA-1 context
8891
* \param input buffer holding the data
8992
* \param ilen length of the input data
93+
*
94+
* \return \c 0 if successful
95+
*
9096
*/
91-
void mbedtls_sha1_update( mbedtls_sha1_context *ctx, const unsigned char *input, size_t ilen );
97+
int mbedtls_sha1_update_ret( mbedtls_sha1_context *ctx, const unsigned char *input, size_t ilen );
9298

9399
/**
94100
* \brief SHA-1 final digest
95101
*
96102
* \param ctx SHA-1 context
97103
* \param output SHA-1 checksum result
104+
*
105+
* \return \c 0 if successful
106+
*
98107
*/
99-
void mbedtls_sha1_finish( mbedtls_sha1_context *ctx, unsigned char output[20] );
108+
int mbedtls_sha1_finish_ret( mbedtls_sha1_context *ctx, unsigned char output[20] );
100109

101110
/* Internal use */
102111
void mbedtls_sha1_process( mbedtls_sha1_context *ctx, const unsigned char data[64] );

features/mbedtls/targets/TARGET_Silicon_Labs/sha256_alt.h

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,26 +84,34 @@ void mbedtls_sha256_clone( mbedtls_sha256_context *dst,
8484
*
8585
* \param ctx context to be initialized
8686
* \param is224 0 = use SHA256, 1 = use SHA224
87+
*
88+
* \return \c 0 if successful
89+
*
8790
*/
88-
void mbedtls_sha256_starts( mbedtls_sha256_context *ctx, int is224 );
91+
int mbedtls_sha256_starts_ret( mbedtls_sha256_context *ctx, int is224 );
8992

9093
/**
9194
* \brief SHA-256 process buffer
9295
*
9396
* \param ctx SHA-256 context
9497
* \param input buffer holding the data
9598
* \param ilen length of the input data
99+
*
100+
* \return \c 0 if successful
101+
*
96102
*/
97-
void mbedtls_sha256_update( mbedtls_sha256_context *ctx, const unsigned char *input,
98-
size_t ilen );
103+
int mbedtls_sha256_update_ret( mbedtls_sha256_context *ctx, const unsigned char *input, size_t ilen );
99104

100105
/**
101106
* \brief SHA-256 final digest
102107
*
103108
* \param ctx SHA-256 context
104109
* \param output SHA-224/256 checksum result
110+
*
111+
* \return \c 0 if successful
112+
*
105113
*/
106-
void mbedtls_sha256_finish( mbedtls_sha256_context *ctx, unsigned char output[32] );
114+
int mbedtls_sha256_finish_ret( mbedtls_sha256_context *ctx, unsigned char output[32] );
107115

108116
/* Internal use */
109117
void mbedtls_sha256_process( mbedtls_sha256_context *ctx, const unsigned char data[64] );

0 commit comments

Comments
 (0)