This library implements some hash and cryptographic algorithms.

Dependents:   ES_CW2_Starter_JIN EMBEDDED_CW2 EMBEDDED_CW2_Final Spinnybois ... more

Fork of Crypto by Francois Berder

Committer:
estott
Date:
Fri Mar 09 10:10:16 2018 +0000
Revision:
15:634f9c4cbab1
Parent:
7:2dbbdfb08123
Reduced flash footprint by removing __forceinline directive in SHA2_32.c

Who changed what in which revision?

UserRevisionLine numberNew contents of line
feb11 0:7a1237bd2d13 1 #ifndef SHA2_32_H
feb11 0:7a1237bd2d13 2 #define SHA2_32_H
feb11 0:7a1237bd2d13 3
feb11 0:7a1237bd2d13 4 #include <stdint.h>
feb11 0:7a1237bd2d13 5
feb11 0:7a1237bd2d13 6 enum SHA_32_TYPE
feb11 0:7a1237bd2d13 7 {
feb11 0:7a1237bd2d13 8 SHA_224,
feb11 0:7a1237bd2d13 9 SHA_256
feb11 0:7a1237bd2d13 10 };
feb11 0:7a1237bd2d13 11
feb11 0:7a1237bd2d13 12 class SHA2_32
feb11 0:7a1237bd2d13 13 {
feb11 0:7a1237bd2d13 14 public :
feb11 0:7a1237bd2d13 15
feb11 0:7a1237bd2d13 16 SHA2_32(SHA_32_TYPE type);
feb11 6:19aa835f2bbb 17 void update(uint8_t *data, uint32_t length);
feb11 5:06cd9c8afa0b 18 void finalize(uint8_t *digest);
feb11 6:19aa835f2bbb 19
feb11 6:19aa835f2bbb 20 static void computeHash(SHA_32_TYPE type, uint8_t *digest, uint8_t *data, uint32_t length);
feb11 0:7a1237bd2d13 21
feb11 0:7a1237bd2d13 22 private :
feb11 0:7a1237bd2d13 23
feb11 0:7a1237bd2d13 24 static void computeBlock(uint32_t *h02,
feb11 0:7a1237bd2d13 25 uint32_t *h12,
feb11 0:7a1237bd2d13 26 uint32_t *h22,
feb11 0:7a1237bd2d13 27 uint32_t *h32,
feb11 0:7a1237bd2d13 28 uint32_t *h42,
feb11 0:7a1237bd2d13 29 uint32_t *h52,
feb11 0:7a1237bd2d13 30 uint32_t *h62,
feb11 0:7a1237bd2d13 31 uint32_t *h72,
feb11 0:7a1237bd2d13 32 uint8_t *buffer);
feb11 0:7a1237bd2d13 33
feb11 0:7a1237bd2d13 34 SHA_32_TYPE type;
feb11 0:7a1237bd2d13 35 uint32_t h0, h1, h2, h3, h4, h5, h6, h7;
feb11 0:7a1237bd2d13 36 uint32_t totalBufferLength;
feb11 0:7a1237bd2d13 37 uint8_t buffer[64];
feb11 0:7a1237bd2d13 38 uint8_t bufferLength;
feb11 0:7a1237bd2d13 39 };
feb11 0:7a1237bd2d13 40
feb11 0:7a1237bd2d13 41 #endif