.. | .. |
---|
112 | 112 | |
---|
113 | 113 | extern int crypto_sha512_finup(struct shash_desc *desc, const u8 *data, |
---|
114 | 114 | unsigned int len, u8 *hash); |
---|
| 115 | + |
---|
| 116 | +/* |
---|
| 117 | + * An implementation of SHA-1's compression function. Don't use in new code! |
---|
| 118 | + * You shouldn't be using SHA-1, and even if you *have* to use SHA-1, this isn't |
---|
| 119 | + * the correct way to hash something with SHA-1 (use crypto_shash instead). |
---|
| 120 | + */ |
---|
| 121 | +#define SHA1_DIGEST_WORDS (SHA1_DIGEST_SIZE / 4) |
---|
| 122 | +#define SHA1_WORKSPACE_WORDS 16 |
---|
| 123 | +void sha1_init(__u32 *buf); |
---|
| 124 | +void sha1_transform(__u32 *digest, const char *data, __u32 *W); |
---|
| 125 | + |
---|
| 126 | +/* |
---|
| 127 | + * Stand-alone implementation of the SHA256 algorithm. It is designed to |
---|
| 128 | + * have as little dependencies as possible so it can be used in the |
---|
| 129 | + * kexec_file purgatory. In other cases you should generally use the |
---|
| 130 | + * hash APIs from include/crypto/hash.h. Especially when hashing large |
---|
| 131 | + * amounts of data as those APIs may be hw-accelerated. |
---|
| 132 | + * |
---|
| 133 | + * For details see lib/crypto/sha256.c |
---|
| 134 | + */ |
---|
| 135 | + |
---|
| 136 | +static inline void sha256_init(struct sha256_state *sctx) |
---|
| 137 | +{ |
---|
| 138 | + sctx->state[0] = SHA256_H0; |
---|
| 139 | + sctx->state[1] = SHA256_H1; |
---|
| 140 | + sctx->state[2] = SHA256_H2; |
---|
| 141 | + sctx->state[3] = SHA256_H3; |
---|
| 142 | + sctx->state[4] = SHA256_H4; |
---|
| 143 | + sctx->state[5] = SHA256_H5; |
---|
| 144 | + sctx->state[6] = SHA256_H6; |
---|
| 145 | + sctx->state[7] = SHA256_H7; |
---|
| 146 | + sctx->count = 0; |
---|
| 147 | +} |
---|
| 148 | +void sha256_update(struct sha256_state *sctx, const u8 *data, unsigned int len); |
---|
| 149 | +void sha256_final(struct sha256_state *sctx, u8 *out); |
---|
| 150 | +void sha256(const u8 *data, unsigned int len, u8 *out); |
---|
| 151 | + |
---|
| 152 | +static inline void sha224_init(struct sha256_state *sctx) |
---|
| 153 | +{ |
---|
| 154 | + sctx->state[0] = SHA224_H0; |
---|
| 155 | + sctx->state[1] = SHA224_H1; |
---|
| 156 | + sctx->state[2] = SHA224_H2; |
---|
| 157 | + sctx->state[3] = SHA224_H3; |
---|
| 158 | + sctx->state[4] = SHA224_H4; |
---|
| 159 | + sctx->state[5] = SHA224_H5; |
---|
| 160 | + sctx->state[6] = SHA224_H6; |
---|
| 161 | + sctx->state[7] = SHA224_H7; |
---|
| 162 | + sctx->count = 0; |
---|
| 163 | +} |
---|
| 164 | +void sha224_update(struct sha256_state *sctx, const u8 *data, unsigned int len); |
---|
| 165 | +void sha224_final(struct sha256_state *sctx, u8 *out); |
---|
| 166 | + |
---|
115 | 167 | #endif |
---|