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