1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/security/nss/lib/freebl/rawhash.c Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,161 @@ 1.4 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.5 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.6 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.7 + 1.8 +#ifdef FREEBL_NO_DEPEND 1.9 +#include "stubs.h" 1.10 +#endif 1.11 + 1.12 +#include "nspr.h" 1.13 +#include "hasht.h" 1.14 +#include "blapi.h" /* below the line */ 1.15 +#include "secerr.h" 1.16 + 1.17 +static void * 1.18 +null_hash_new_context(void) 1.19 +{ 1.20 + return NULL; 1.21 +} 1.22 + 1.23 +static void * 1.24 +null_hash_clone_context(void *v) 1.25 +{ 1.26 + PORT_Assert(v == NULL); 1.27 + return NULL; 1.28 +} 1.29 + 1.30 +static void 1.31 +null_hash_begin(void *v) 1.32 +{ 1.33 +} 1.34 + 1.35 +static void 1.36 +null_hash_update(void *v, const unsigned char *input, unsigned int length) 1.37 +{ 1.38 +} 1.39 + 1.40 +static void 1.41 +null_hash_end(void *v, unsigned char *output, unsigned int *outLen, 1.42 + unsigned int maxOut) 1.43 +{ 1.44 + *outLen = 0; 1.45 +} 1.46 + 1.47 +static void 1.48 +null_hash_destroy_context(void *v, PRBool b) 1.49 +{ 1.50 + PORT_Assert(v == NULL); 1.51 +} 1.52 + 1.53 + 1.54 +const SECHashObject SECRawHashObjects[] = { 1.55 + { 0, 1.56 + (void * (*)(void)) null_hash_new_context, 1.57 + (void * (*)(void *)) null_hash_clone_context, 1.58 + (void (*)(void *, PRBool)) null_hash_destroy_context, 1.59 + (void (*)(void *)) null_hash_begin, 1.60 + (void (*)(void *, const unsigned char *, unsigned int)) null_hash_update, 1.61 + (void (*)(void *, unsigned char *, unsigned int *, 1.62 + unsigned int)) null_hash_end, 1.63 + 0, 1.64 + HASH_AlgNULL, 1.65 + (void (*)(void *, unsigned char *, unsigned int *, 1.66 + unsigned int)) null_hash_end 1.67 + }, 1.68 + { MD2_LENGTH, 1.69 + (void * (*)(void)) MD2_NewContext, 1.70 + (void * (*)(void *)) null_hash_clone_context, 1.71 + (void (*)(void *, PRBool)) MD2_DestroyContext, 1.72 + (void (*)(void *)) MD2_Begin, 1.73 + (void (*)(void *, const unsigned char *, unsigned int)) MD2_Update, 1.74 + (void (*)(void *, unsigned char *, unsigned int *, unsigned int)) MD2_End, 1.75 + MD2_BLOCK_LENGTH, 1.76 + HASH_AlgMD2, 1.77 + NULL /* end_raw */ 1.78 + }, 1.79 + { MD5_LENGTH, 1.80 + (void * (*)(void)) MD5_NewContext, 1.81 + (void * (*)(void *)) null_hash_clone_context, 1.82 + (void (*)(void *, PRBool)) MD5_DestroyContext, 1.83 + (void (*)(void *)) MD5_Begin, 1.84 + (void (*)(void *, const unsigned char *, unsigned int)) MD5_Update, 1.85 + (void (*)(void *, unsigned char *, unsigned int *, unsigned int)) MD5_End, 1.86 + MD5_BLOCK_LENGTH, 1.87 + HASH_AlgMD5, 1.88 + (void (*)(void *, unsigned char *, unsigned int *, unsigned int)) MD5_EndRaw 1.89 + }, 1.90 + { SHA1_LENGTH, 1.91 + (void * (*)(void)) SHA1_NewContext, 1.92 + (void * (*)(void *)) null_hash_clone_context, 1.93 + (void (*)(void *, PRBool)) SHA1_DestroyContext, 1.94 + (void (*)(void *)) SHA1_Begin, 1.95 + (void (*)(void *, const unsigned char *, unsigned int)) SHA1_Update, 1.96 + (void (*)(void *, unsigned char *, unsigned int *, unsigned int)) SHA1_End, 1.97 + SHA1_BLOCK_LENGTH, 1.98 + HASH_AlgSHA1, 1.99 + (void (*)(void *, unsigned char *, unsigned int *, unsigned int)) 1.100 + SHA1_EndRaw 1.101 + }, 1.102 + { SHA256_LENGTH, 1.103 + (void * (*)(void)) SHA256_NewContext, 1.104 + (void * (*)(void *)) null_hash_clone_context, 1.105 + (void (*)(void *, PRBool)) SHA256_DestroyContext, 1.106 + (void (*)(void *)) SHA256_Begin, 1.107 + (void (*)(void *, const unsigned char *, unsigned int)) SHA256_Update, 1.108 + (void (*)(void *, unsigned char *, unsigned int *, 1.109 + unsigned int)) SHA256_End, 1.110 + SHA256_BLOCK_LENGTH, 1.111 + HASH_AlgSHA256, 1.112 + (void (*)(void *, unsigned char *, unsigned int *, 1.113 + unsigned int)) SHA256_EndRaw 1.114 + }, 1.115 + { SHA384_LENGTH, 1.116 + (void * (*)(void)) SHA384_NewContext, 1.117 + (void * (*)(void *)) null_hash_clone_context, 1.118 + (void (*)(void *, PRBool)) SHA384_DestroyContext, 1.119 + (void (*)(void *)) SHA384_Begin, 1.120 + (void (*)(void *, const unsigned char *, unsigned int)) SHA384_Update, 1.121 + (void (*)(void *, unsigned char *, unsigned int *, 1.122 + unsigned int)) SHA384_End, 1.123 + SHA384_BLOCK_LENGTH, 1.124 + HASH_AlgSHA384, 1.125 + (void (*)(void *, unsigned char *, unsigned int *, 1.126 + unsigned int)) SHA384_EndRaw 1.127 + }, 1.128 + { SHA512_LENGTH, 1.129 + (void * (*)(void)) SHA512_NewContext, 1.130 + (void * (*)(void *)) null_hash_clone_context, 1.131 + (void (*)(void *, PRBool)) SHA512_DestroyContext, 1.132 + (void (*)(void *)) SHA512_Begin, 1.133 + (void (*)(void *, const unsigned char *, unsigned int)) SHA512_Update, 1.134 + (void (*)(void *, unsigned char *, unsigned int *, 1.135 + unsigned int)) SHA512_End, 1.136 + SHA512_BLOCK_LENGTH, 1.137 + HASH_AlgSHA512, 1.138 + (void (*)(void *, unsigned char *, unsigned int *, 1.139 + unsigned int)) SHA512_EndRaw 1.140 + }, 1.141 + { SHA224_LENGTH, 1.142 + (void * (*)(void)) SHA224_NewContext, 1.143 + (void * (*)(void *)) null_hash_clone_context, 1.144 + (void (*)(void *, PRBool)) SHA224_DestroyContext, 1.145 + (void (*)(void *)) SHA224_Begin, 1.146 + (void (*)(void *, const unsigned char *, unsigned int)) SHA224_Update, 1.147 + (void (*)(void *, unsigned char *, unsigned int *, 1.148 + unsigned int)) SHA224_End, 1.149 + SHA224_BLOCK_LENGTH, 1.150 + HASH_AlgSHA224, 1.151 + (void (*)(void *, unsigned char *, unsigned int *, 1.152 + unsigned int)) SHA224_EndRaw 1.153 + }, 1.154 +}; 1.155 + 1.156 +const SECHashObject * 1.157 +HASH_GetRawHashObject(HASH_HashType hashType) 1.158 +{ 1.159 + if (hashType < HASH_AlgNULL || hashType >= HASH_AlgTOTAL) { 1.160 + PORT_SetError(SEC_ERROR_INVALID_ARGS); 1.161 + return NULL; 1.162 + } 1.163 + return &SECRawHashObjects[hashType]; 1.164 +}