nsshash.c (5202B)
1 /* This Source Code Form is subject to the terms of the Mozilla Public 2 * License, v. 2.0. If a copy of the MPL was not distributed with this 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 4 5 #include "secoidt.h" 6 #include "secerr.h" 7 #include "nsshash.h" 8 9 /* put these mapping functions in util, so they can be used everywhere */ 10 HASH_HashType 11 HASH_GetHashTypeByOidTag(SECOidTag hashOid) 12 { 13 HASH_HashType ht = HASH_AlgNULL; 14 15 switch (hashOid) { 16 case SEC_OID_MD2: 17 ht = HASH_AlgMD2; 18 break; 19 case SEC_OID_MD5: 20 ht = HASH_AlgMD5; 21 break; 22 case SEC_OID_SHA1: 23 ht = HASH_AlgSHA1; 24 break; 25 case SEC_OID_SHA224: 26 ht = HASH_AlgSHA224; 27 break; 28 case SEC_OID_SHA256: 29 ht = HASH_AlgSHA256; 30 break; 31 case SEC_OID_SHA384: 32 ht = HASH_AlgSHA384; 33 break; 34 case SEC_OID_SHA512: 35 ht = HASH_AlgSHA512; 36 break; 37 case SEC_OID_SHA3_224: 38 ht = HASH_AlgSHA3_224; 39 break; 40 case SEC_OID_SHA3_256: 41 ht = HASH_AlgSHA3_256; 42 break; 43 case SEC_OID_SHA3_384: 44 ht = HASH_AlgSHA3_384; 45 break; 46 case SEC_OID_SHA3_512: 47 ht = HASH_AlgSHA3_512; 48 break; 49 default: 50 PORT_SetError(SEC_ERROR_INVALID_ALGORITHM); 51 break; 52 } 53 return ht; 54 } 55 56 SECOidTag 57 HASH_GetHashOidTagByHashType(HASH_HashType type) 58 { 59 SECOidTag oid = SEC_OID_UNKNOWN; 60 61 switch (type) { 62 case HASH_AlgMD2: 63 oid = SEC_OID_MD2; 64 break; 65 case HASH_AlgMD5: 66 oid = SEC_OID_MD5; 67 break; 68 case HASH_AlgSHA1: 69 oid = SEC_OID_SHA1; 70 break; 71 case HASH_AlgSHA224: 72 oid = SEC_OID_SHA224; 73 break; 74 case HASH_AlgSHA256: 75 oid = SEC_OID_SHA256; 76 break; 77 case HASH_AlgSHA384: 78 oid = SEC_OID_SHA384; 79 break; 80 case HASH_AlgSHA512: 81 oid = SEC_OID_SHA512; 82 break; 83 case HASH_AlgSHA3_224: 84 oid = SEC_OID_SHA3_224; 85 break; 86 case HASH_AlgSHA3_256: 87 oid = SEC_OID_SHA3_256; 88 break; 89 case HASH_AlgSHA3_384: 90 oid = SEC_OID_SHA3_384; 91 break; 92 case HASH_AlgSHA3_512: 93 oid = SEC_OID_SHA3_512; 94 break; 95 default: 96 PORT_SetError(SEC_ERROR_INVALID_ALGORITHM); 97 break; 98 } 99 return oid; 100 } 101 102 SECOidTag 103 HASH_GetHashOidTagByHMACOidTag(SECOidTag hmacOid) 104 { 105 SECOidTag hashOid = SEC_OID_UNKNOWN; 106 107 switch (hmacOid) { 108 /* no oid exists for HMAC_MD2 */ 109 /* NSS does not define a oid for HMAC_MD4 */ 110 case SEC_OID_HMAC_MD5: 111 hashOid = SEC_OID_MD5; 112 break; 113 case SEC_OID_HMAC_SHA1: 114 hashOid = SEC_OID_SHA1; 115 break; 116 case SEC_OID_HMAC_SHA224: 117 hashOid = SEC_OID_SHA224; 118 break; 119 case SEC_OID_HMAC_SHA256: 120 hashOid = SEC_OID_SHA256; 121 break; 122 case SEC_OID_HMAC_SHA384: 123 hashOid = SEC_OID_SHA384; 124 break; 125 case SEC_OID_HMAC_SHA512: 126 hashOid = SEC_OID_SHA512; 127 break; 128 case SEC_OID_HMAC_SHA3_224: 129 hashOid = SEC_OID_SHA3_224; 130 break; 131 case SEC_OID_HMAC_SHA3_256: 132 hashOid = SEC_OID_SHA3_256; 133 break; 134 case SEC_OID_HMAC_SHA3_384: 135 hashOid = SEC_OID_SHA3_384; 136 break; 137 case SEC_OID_HMAC_SHA3_512: 138 hashOid = SEC_OID_SHA3_512; 139 break; 140 default: 141 hashOid = SEC_OID_UNKNOWN; 142 PORT_SetError(SEC_ERROR_INVALID_ALGORITHM); 143 break; 144 } 145 return hashOid; 146 } 147 148 SECOidTag 149 HASH_GetHMACOidTagByHashOidTag(SECOidTag hashOid) 150 { 151 SECOidTag hmacOid = SEC_OID_UNKNOWN; 152 153 switch (hashOid) { 154 /* no oid exists for HMAC_MD2 */ 155 /* NSS does not define a oid for HMAC_MD4 */ 156 case SEC_OID_MD5: 157 hmacOid = SEC_OID_HMAC_MD5; 158 break; 159 case SEC_OID_SHA1: 160 hmacOid = SEC_OID_HMAC_SHA1; 161 break; 162 case SEC_OID_SHA224: 163 hmacOid = SEC_OID_HMAC_SHA224; 164 break; 165 case SEC_OID_SHA256: 166 hmacOid = SEC_OID_HMAC_SHA256; 167 break; 168 case SEC_OID_SHA384: 169 hmacOid = SEC_OID_HMAC_SHA384; 170 break; 171 case SEC_OID_SHA512: 172 hmacOid = SEC_OID_HMAC_SHA512; 173 break; 174 case SEC_OID_SHA3_224: 175 hmacOid = SEC_OID_HMAC_SHA3_224; 176 break; 177 case SEC_OID_SHA3_256: 178 hmacOid = SEC_OID_HMAC_SHA3_256; 179 break; 180 case SEC_OID_SHA3_384: 181 hmacOid = SEC_OID_HMAC_SHA3_384; 182 break; 183 case SEC_OID_SHA3_512: 184 hmacOid = SEC_OID_HMAC_SHA3_512; 185 break; 186 default: 187 hmacOid = SEC_OID_UNKNOWN; 188 PORT_SetError(SEC_ERROR_INVALID_ALGORITHM); 189 break; 190 } 191 return hmacOid; 192 }