114 #if !defined(DATA_ORDER_IS_BIG_ENDIAN) && !defined(DATA_ORDER_IS_LITTLE_ENDIAN)
115 # error "DATA_ORDER must be defined!"
119 # error "HASH_CBLOCK must be defined!"
122 # error "HASH_LONG must be defined!"
125 # error "HASH_CTX must be defined!"
129 # error "HASH_UPDATE must be defined!"
131 #ifndef HASH_TRANSFORM
132 # error "HASH_TRANSFORM must be defined!"
135 # error "HASH_FINAL must be defined!"
138 #ifndef HASH_BLOCK_DATA_ORDER
139 # error "HASH_BLOCK_DATA_ORDER must be defined!"
147 # if defined(_MSC_VER)
148 # define ROTATE(a,n) _lrotl(a,n)
149 # elif defined(__ICC)
150 # define ROTATE(a,n) _rotl(a,n)
151 # elif defined(__MWERKS__)
152 # if defined(__POWERPC__)
153 # define ROTATE(a,n) __rlwinm(a,n,0,31)
154 # elif defined(__MC68K__)
156 # define ROTATE(a,n) ( n<24 ? __rol(a,n) : __ror(a,32-n) )
158 # define ROTATE(a,n) __rol(a,n)
160 # elif defined(__GNUC__) && __GNUC__>=2 && !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_NO_INLINE_ASM)
167 # if defined(__i386) || defined(__i386__) || defined(__x86_64) || defined(__x86_64__)
168 # define ROTATE(a,n) ({ register unsigned int ret; \
172 : "I"(n), "0"((unsigned int)(a)) \
176 # elif defined(_ARCH_PPC) || defined(_ARCH_PPC64) || \
177 defined(__powerpc) || defined(__ppc__) || defined(__powerpc64__)
178 # define ROTATE(a,n) ({ register unsigned int ret; \
180 "rlwinm %0,%1,%2,0,31" \
185 # elif defined(__s390x__)
186 # define ROTATE(a,n) ({ register unsigned int ret; \
187 asm ("rll %0,%1,%2" \
197 # define ROTATE(a,n) (((a)<<(n))|(((a)&0xffffffff)>>(32-(n))))
200 #if defined(DATA_ORDER_IS_BIG_ENDIAN)
203 # if defined(__GNUC__) && __GNUC__>=2 && !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_NO_INLINE_ASM)
204 # if ((defined(__i386) || defined(__i386__)) && !defined(I386_ONLY)) || \
205 (defined(__x86_64) || defined(__x86_64__))
206 # if !defined(B_ENDIAN)
213 # define HOST_c2l(c,l) ({ unsigned int r=*((const unsigned int *)(c)); \
214 asm ("bswapl %0":"=r"(r):"0"(r)); \
216 # define HOST_l2c(l,c) ({ unsigned int r=(l); \
217 asm ("bswapl %0":"=r"(r):"0"(r)); \
218 *((unsigned int *)(c))=r; (c)+=4; r; })
220 # elif defined(__aarch64__)
221 # if defined(__BYTE_ORDER__)
222 # if defined(__ORDER_LITTLE_ENDIAN__) && __BYTE_ORDER__==__ORDER_LITTLE_ENDIAN__
223 # define HOST_c2l(c,l) ({ unsigned int r; \
226 :"r"(*((const unsigned int *)(c))));\
228 # define HOST_l2c(l,c) ({ unsigned int r; \
231 :"r"((unsigned int)(l)));\
232 *((unsigned int *)(c))=r; (c)+=4; r; })
233 # elif defined(__ORDER_BIG_ENDIAN__) && __BYTE_ORDER__==__ORDER_BIG_ENDIAN__
234 # define HOST_c2l(c,l) ((l)=*((const unsigned int *)(c)), (c)+=4, (l))
235 # define HOST_l2c(l,c) (*((unsigned int *)(c))=(l), (c)+=4, (l))
240 # if defined(__s390__) || defined(__s390x__)
241 # define HOST_c2l(c,l) ((l)=*((const unsigned int *)(c)), (c)+=4, (l))
242 # define HOST_l2c(l,c) (*((unsigned int *)(c))=(l), (c)+=4, (l))
247 # define HOST_c2l(c,l) (l =(((unsigned long)(*((c)++)))<<24), \
248 l|=(((unsigned long)(*((c)++)))<<16), \
249 l|=(((unsigned long)(*((c)++)))<< 8), \
250 l|=(((unsigned long)(*((c)++))) ) )
253 # define HOST_l2c(l,c) (*((c)++)=(unsigned char)(((l)>>24)&0xff), \
254 *((c)++)=(unsigned char)(((l)>>16)&0xff), \
255 *((c)++)=(unsigned char)(((l)>> 8)&0xff), \
256 *((c)++)=(unsigned char)(((l) )&0xff), \
260 #elif defined(DATA_ORDER_IS_LITTLE_ENDIAN)
263 # if defined(__GNUC__) && __GNUC__>=2 && !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_NO_INLINE_ASM)
264 # if defined(__s390x__)
265 # define HOST_c2l(c,l) ({ asm ("lrv %0,%1" \
266 :"=d"(l) :"m"(*(const unsigned int *)(c)));\
268 # define HOST_l2c(l,c) ({ asm ("strv %1,%0" \
269 :"=m"(*(unsigned int *)(c)) :"d"(l));\
273 # if defined(__i386) || defined(__i386__) || defined(__x86_64) || defined(__x86_64__)
276 # define HOST_c2l(c,l) ((l)=*((const unsigned int *)(c)), (c)+=4, l)
277 # define HOST_l2c(l,c) (*((unsigned int *)(c))=(l), (c)+=4, l)
283 # define HOST_c2l(c,l) (l =(((unsigned long)(*((c)++))) ), \
284 l|=(((unsigned long)(*((c)++)))<< 8), \
285 l|=(((unsigned long)(*((c)++)))<<16), \
286 l|=(((unsigned long)(*((c)++)))<<24) )
289 # define HOST_l2c(l,c) (*((c)++)=(unsigned char)(((l) )&0xff), \
290 *((c)++)=(unsigned char)(((l)>> 8)&0xff), \
291 *((c)++)=(unsigned char)(((l)>>16)&0xff), \
292 *((c)++)=(unsigned char)(((l)>>24)&0xff), \
304 const unsigned char *data = (
const unsigned char *)data_;
312 l = (c->Nl + (((
HASH_LONG) len) << 3)) & 0xffffffffUL;
325 p = (
unsigned char *)c->data;
336 memcpy(
p + n, data, len);
337 c->num += (
unsigned int)len;
351 p = (
unsigned char *)c->data;
352 c->num = (
unsigned int)len;
353 memcpy(
p, data, len);
365 unsigned char *
p = (
unsigned char *)c->data;
379 #if defined(DATA_ORDER_IS_BIG_ENDIAN)
380 (void)HOST_l2c(c->Nh,
p);
381 (void)HOST_l2c(c->Nl,
p);
382 #elif defined(DATA_ORDER_IS_LITTLE_ENDIAN)
383 (void)HOST_l2c(c->Nl,
p);
384 (void)HOST_l2c(c->Nh,
p);
391 #ifndef HASH_MAKE_STRING
392 # error "HASH_MAKE_STRING must be defined!"
401 # if defined(__alpha) || defined(__sparcv9) || defined(__mips)
402 # define MD32_REG_T long
428 # define MD32_REG_T int
int HASH_UPDATE(HASH_CTX *c, const void *data_, size_t len)
Definition: md32_common.h:302
int HASH_FINAL(unsigned char *md, HASH_CTX *c)
Definition: md32_common.h:363
void HASH_TRANSFORM(HASH_CTX *c, const unsigned char *data)
Definition: md32_common.h:358
#define HASH_BLOCK_DATA_ORDER
Definition: sha256.c:138
#define HASH_CTX
Definition: sha256.c:104
#define HASH_CBLOCK
Definition: sha256.c:105
#define HASH_MAKE_STRING(c, s)
Definition: sha256.c:114
#define HASH_LONG
Definition: sha256.c:103
std::string p(std::string path)
Definition: test_filepath.cpp:59