tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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 }