Added "name" field to digest algorithms
[people/xl0/gpxe.git] / src / include / gpxe / crypto.h
1 #ifndef _GPXE_CRYPTO_H
2 #define _GPXE_CRYPTO_H
3
4 /** @file
5  *
6  * Cryptographic API
7  *
8  */
9
10 #include <stdint.h>
11
12 /**
13  * A message-digest algorithm
14  *
15  */
16 struct digest_algorithm {
17         /** Algorithm name */
18         const char *name;
19         /** Size of a context for this algorithm */
20         size_t context_len;
21         /** Size of a message digest for this algorithm */
22         size_t digest_len;
23         /**
24          * Initialise digest algorithm
25          *
26          * @v context           Context for digest operations
27          */
28         void ( * init ) ( void *context );
29         /**
30          * Calculate digest over data buffer
31          *
32          * @v context           Context for digest operations
33          * @v data              Data buffer
34          * @v len               Length of data buffer
35          */
36         void ( * update ) ( void *context, const void *data, size_t len );
37         /**
38          * Finish calculating digest
39          *
40          * @v context           Context for digest operations
41          * @v digest            Buffer for message digest
42          */
43         void ( * finish ) ( void *context, void *digest );
44 };
45
46 #endif /* _GPXE_CRYPTO_H */