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 #include <stdio.h> 11 #include <string.h> 12 #include <openssl/ripemd.h> 13 #include <openssl/crypto.h> 14 RIPEMD160(const unsigned char * d,size_t n,unsigned char * md)15unsigned char *RIPEMD160(const unsigned char *d, size_t n, unsigned char *md) 16 { 17 RIPEMD160_CTX c; 18 static unsigned char m[RIPEMD160_DIGEST_LENGTH]; 19 20 if (md == NULL) 21 md = m; 22 if (!RIPEMD160_Init(&c)) 23 return NULL; 24 RIPEMD160_Update(&c, d, n); 25 RIPEMD160_Final(md, &c); 26 OPENSSL_cleanse(&c, sizeof(c)); /* security consideration */ 27 return md; 28 } 29