diff --git a/src/include/gpxe/crypto.h b/src/include/gpxe/crypto.h new file mode 100644 index 00000000..e2a728fd --- /dev/null +++ b/src/include/gpxe/crypto.h @@ -0,0 +1,44 @@ +#ifndef _GPXE_CRYPTO_H +#define _GPXE_CRYPTO_H + +/** @file + * + * Cryptographic API + * + */ + +#include + +/** + * A message-digest algorithm + * + */ +struct digest_algorithm { + /** Size of a context for this algorithm */ + size_t context_len; + /** Size of a message digest for this algorithm */ + size_t digest_len; + /** + * Initialise digest algorithm + * + * @v context Context for digest operations + */ + void ( * init ) ( void *context ); + /** + * Calculate digest over data buffer + * + * @v context Context for digest operations + * @v data Data buffer + * @v len Length of data buffer + */ + void ( * update ) ( void *context, const void *data, size_t len ); + /** + * Finish calculating digest + * + * @v context Context for digest operations + * @v digest Buffer for message digest + */ + void ( * finish ) ( void *context, void *digest ); +}; + +#endif /* _GPXE_CRYPTO_H */