1/* 2 * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. 3 * 4 * Licensed under the OpenSSL license (the "License"). You may not use 5 * this file except in compliance with the License. You can obtain a copy 6 * in the file LICENSE in the source distribution or at 7 * https://www.openssl.org/source/license.html 8 */ 9 10#ifndef __OSSL_SHA_H__ 11#define __OSSL_SHA_H__ 12 13/* 14 * This is always included last which permits the namespace hacks below 15 * to work. 16 */ 17#define SHA256_CTX OSSL_SHA256_CTX 18#define SHA512_CTX OSSL_SHA512_CTX 19 20/* From include/openssl/sha.h */ 21# define SHA_LONG unsigned int 22 23# define SHA_LBLOCK 16 24# define SHA_CBLOCK (SHA_LBLOCK*4)/* SHA treats input data as a 25 * contiguous array of 32 bit wide 26 * big-endian values. */ 27 28typedef struct SHAstate_st { 29 SHA_LONG h0, h1, h2, h3, h4; 30 SHA_LONG Nl, Nh; 31 SHA_LONG data[SHA_LBLOCK]; 32 unsigned int num; 33} SHA_CTX; 34 35# define SHA256_CBLOCK (SHA_LBLOCK*4)/* SHA-256 treats input data as a 36 * contiguous array of 32 bit wide 37 * big-endian values. */ 38 39typedef struct SHA256state_st { 40 SHA_LONG h[8]; 41 SHA_LONG Nl, Nh; 42 SHA_LONG data[SHA_LBLOCK]; 43 unsigned int num, md_len; 44} SHA256_CTX; 45 46/* 47 * SHA-512 treats input data as a 48 * contiguous array of 64 bit 49 * wide big-endian values. 50 */ 51# define SHA512_CBLOCK (SHA_LBLOCK*8) 52 53# define SHA_LONG64 unsigned long long 54# define U64(C) C##ULL 55 56typedef struct SHA512state_st { 57 SHA_LONG64 h[8]; 58 SHA_LONG64 Nl, Nh; 59 union { 60 SHA_LONG64 d[SHA_LBLOCK]; 61 unsigned char p[SHA512_CBLOCK]; 62 } u; 63 unsigned int num, md_len; 64} SHA512_CTX; 65 66#endif /* !__OSSL_SHA_H__ */ 67