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