Index: src/platform/vboot_reference/include/sha.h |
diff --git a/src/platform/vboot_reference/include/sha.h b/src/platform/vboot_reference/include/sha.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b15cfd1d09d3672b498926c8bd3aead8ba05c43c |
--- /dev/null |
+++ b/src/platform/vboot_reference/include/sha.h |
@@ -0,0 +1,73 @@ |
+/* Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
+ * Use of this source code is governed by a BSD-style license that can be |
+ * found in the LICENSE file. |
+ */ |
+ |
+/* SHA-1, 256 and 512 functions. */ |
+ |
+#ifndef VBOOT_REFERENCE_SHA_H_ |
+#define VBOOT_REFERENCE_SHA_H_ |
+ |
+#include <inttypes.h> |
+#include <string.h> |
+ |
+#define SHA1_DIGEST_SIZE 20 |
+#define SHA1_BLOCK_SIZE 64 |
+ |
+#define SHA256_DIGEST_SIZE 32 |
+#define SHA256_BLOCK_SIZE 64 |
+ |
+#define SHA512_DIGEST_SIZE 64 |
+#define SHA512_BLOCK_SIZE 128 |
+ |
+typedef struct SHA1_CTX { |
+ uint64_t count; |
+ uint32_t state[5]; |
+#if defined(HAVE_ENDIAN_H) && defined(HAVE_LITTLE_ENDIAN) |
+ union { |
+ uint8_t b[64]; |
+ uint32_t w[16]; |
+ } buf; |
+#else |
+ uint8_t buf[64]; |
+#endif |
+} SHA1_CTX; |
+ |
+typedef struct { |
+ uint32_t h[8]; |
+ uint32_t tot_len; |
+ uint32_t len; |
+ uint8_t block[2 * SHA256_BLOCK_SIZE]; |
+ uint8_t buf[SHA256_DIGEST_SIZE]; /* Used for storing the final digest. */ |
+} SHA256_CTX; |
+ |
+typedef struct { |
+ uint64_t h[8]; |
+ uint32_t tot_len; |
+ uint32_t len; |
+ uint8_t block[2 * SHA512_BLOCK_SIZE]; |
+ uint8_t buf[SHA512_DIGEST_SIZE]; /* Used for storing the final digest. */ |
+} SHA512_CTX; |
+ |
+ |
+void SHA1_init(SHA1_CTX* ctx); |
+void SHA1_update(SHA1_CTX* ctx, const uint8_t* data, int len); |
+uint8_t* SHA1_final(SHA1_CTX* ctx); |
+/* Convenience function for SHA-1. Computes hash on [data] of length [len]. |
+ * and stores it into [digest]. [digest] should be pre-allocated to |
+ * SHA1_DIGEST_SIZE bytes. |
+ */ |
+uint8_t* SHA1(const void* data, int len, uint8_t* digest); |
+ |
+void SHA256_init(SHA256_CTX* ctx); |
+void SHA256_update(SHA256_CTX* ctx, const uint8_t* data, int len); |
+uint8_t* SHA256_final(SHA256_CTX* ctx); |
+uint8_t* SHA256(const uint8_t* data, int len, uint8_t* digest); |
+ |
+void SHA512_init(SHA512_CTX* ctx); |
+void SHA512_update(SHA512_CTX* ctx, const uint8_t* data, int len); |
+uint8_t* SHA512_final(SHA512_CTX* ctx); |
+uint8_t* SHA512(const uint8_t* data, int len, uint8_t* digest); |
+ |
+ |
+#endif /* VBOOT_REFERENCE_SHA_H_ */ |