xref: /aosp_15_r20/external/selinux/libselinux/src/sha1.h (revision 2d543d20722ada2425b5bdab9d0d1d29470e7bba)
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