1*2d543d20SAndroid Build Coastguard Worker /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 2*2d543d20SAndroid Build Coastguard Worker // LibSha1 3*2d543d20SAndroid Build Coastguard Worker // 4*2d543d20SAndroid Build Coastguard Worker // Implementation of SHA1 hash function. 5*2d543d20SAndroid Build Coastguard Worker // Original author: Steve Reid <[email protected]> 6*2d543d20SAndroid Build Coastguard Worker // Contributions by: James H. Brown <[email protected]>, Saul Kravitz <[email protected]>, 7*2d543d20SAndroid Build Coastguard Worker // and Ralph Giles <[email protected]> 8*2d543d20SAndroid Build Coastguard Worker // Modified by WaterJuice retaining Public Domain license. 9*2d543d20SAndroid Build Coastguard Worker // 10*2d543d20SAndroid Build Coastguard Worker // This is free and unencumbered software released into the public domain - June 2013 waterjuice.org 11*2d543d20SAndroid Build Coastguard Worker /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 12*2d543d20SAndroid Build Coastguard Worker 13*2d543d20SAndroid Build Coastguard Worker #ifndef _sha1_h_ 14*2d543d20SAndroid Build Coastguard Worker #define _sha1_h_ 15*2d543d20SAndroid Build Coastguard Worker 16*2d543d20SAndroid Build Coastguard Worker /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 17*2d543d20SAndroid Build Coastguard Worker // IMPORTS 18*2d543d20SAndroid Build Coastguard Worker /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 19*2d543d20SAndroid Build Coastguard Worker 20*2d543d20SAndroid Build Coastguard Worker #include <stdint.h> 21*2d543d20SAndroid Build Coastguard Worker #include <stdio.h> 22*2d543d20SAndroid Build Coastguard Worker 23*2d543d20SAndroid Build Coastguard Worker /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 24*2d543d20SAndroid Build Coastguard Worker // TYPES 25*2d543d20SAndroid Build Coastguard Worker /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 26*2d543d20SAndroid Build Coastguard Worker 27*2d543d20SAndroid Build Coastguard Worker // Sha1Context - This must be initialised using Sha1Initialised. Do not modify the contents of this structure directly. 28*2d543d20SAndroid Build Coastguard Worker typedef struct 29*2d543d20SAndroid Build Coastguard Worker { 30*2d543d20SAndroid Build Coastguard Worker uint32_t State[5]; 31*2d543d20SAndroid Build Coastguard Worker uint32_t Count[2]; 32*2d543d20SAndroid Build Coastguard Worker uint8_t Buffer[64]; 33*2d543d20SAndroid Build Coastguard Worker } Sha1Context; 34*2d543d20SAndroid Build Coastguard Worker 35*2d543d20SAndroid Build Coastguard Worker #define SHA1_HASH_SIZE ( 160 / 8 ) 36*2d543d20SAndroid Build Coastguard Worker 37*2d543d20SAndroid Build Coastguard Worker typedef struct 38*2d543d20SAndroid Build Coastguard Worker { 39*2d543d20SAndroid Build Coastguard Worker uint8_t bytes [SHA1_HASH_SIZE]; 40*2d543d20SAndroid Build Coastguard Worker } SHA1_HASH; 41*2d543d20SAndroid Build Coastguard Worker 42*2d543d20SAndroid Build Coastguard Worker /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 43*2d543d20SAndroid Build Coastguard Worker // PUBLIC FUNCTIONS 44*2d543d20SAndroid Build Coastguard Worker /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 45*2d543d20SAndroid Build Coastguard Worker 46*2d543d20SAndroid Build Coastguard Worker /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 47*2d543d20SAndroid Build Coastguard Worker // Sha1Initialise 48*2d543d20SAndroid Build Coastguard Worker // 49*2d543d20SAndroid Build Coastguard Worker // Initialises an SHA1 Context. Use this to initialise/reset a context. 50*2d543d20SAndroid Build Coastguard Worker /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 51*2d543d20SAndroid Build Coastguard Worker void 52*2d543d20SAndroid Build Coastguard Worker Sha1Initialise 53*2d543d20SAndroid Build Coastguard Worker ( 54*2d543d20SAndroid Build Coastguard Worker Sha1Context* Context 55*2d543d20SAndroid Build Coastguard Worker ); 56*2d543d20SAndroid Build Coastguard Worker 57*2d543d20SAndroid Build Coastguard Worker /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 58*2d543d20SAndroid Build Coastguard Worker // Sha1Update 59*2d543d20SAndroid Build Coastguard Worker // 60*2d543d20SAndroid Build Coastguard Worker // Adds data to the SHA1 context. This will process the data and update the internal state of the context. Keep on 61*2d543d20SAndroid Build Coastguard Worker // calling this function until all the data has been added. Then call Sha1Finalise to calculate the hash. 62*2d543d20SAndroid Build Coastguard Worker /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 63*2d543d20SAndroid Build Coastguard Worker void 64*2d543d20SAndroid Build Coastguard Worker Sha1Update 65*2d543d20SAndroid Build Coastguard Worker ( 66*2d543d20SAndroid Build Coastguard Worker Sha1Context* Context, 67*2d543d20SAndroid Build Coastguard Worker const void* Buffer, 68*2d543d20SAndroid Build Coastguard Worker uint32_t BufferSize 69*2d543d20SAndroid Build Coastguard Worker ); 70*2d543d20SAndroid Build Coastguard Worker 71*2d543d20SAndroid Build Coastguard Worker /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 72*2d543d20SAndroid Build Coastguard Worker // Sha1Finalise 73*2d543d20SAndroid Build Coastguard Worker // 74*2d543d20SAndroid Build Coastguard Worker // Performs the final calculation of the hash and returns the digest (20 byte buffer containing 160bit hash). After 75*2d543d20SAndroid Build Coastguard Worker // calling this, Sha1Initialised must be used to reuse the context. 76*2d543d20SAndroid Build Coastguard Worker /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 77*2d543d20SAndroid Build Coastguard Worker void 78*2d543d20SAndroid Build Coastguard Worker Sha1Finalise 79*2d543d20SAndroid Build Coastguard Worker ( 80*2d543d20SAndroid Build Coastguard Worker Sha1Context* Context, 81*2d543d20SAndroid Build Coastguard Worker SHA1_HASH* Digest 82*2d543d20SAndroid Build Coastguard Worker ); 83*2d543d20SAndroid Build Coastguard Worker 84*2d543d20SAndroid Build Coastguard Worker /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 85*2d543d20SAndroid Build Coastguard Worker #endif //_sha1_h_ 86