security/nss/lib/util/hasht.h

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     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/. */
     5 #ifndef _HASHT_H_
     6 #define _HASHT_H_
     8 #include "prtypes.h"
    10 /* Opaque objects */
    11 typedef struct SECHashObjectStr SECHashObject;
    12 typedef struct HASHContextStr HASHContext;
    14 /*
    15  * The hash functions the security library supports
    16  * NOTE the order must match the definition of SECHashObjects[]!
    17  */
    18 typedef enum {
    19     HASH_AlgNULL   = 0,
    20     HASH_AlgMD2    = 1,
    21     HASH_AlgMD5    = 2,
    22     HASH_AlgSHA1   = 3,
    23     HASH_AlgSHA256 = 4,
    24     HASH_AlgSHA384 = 5,
    25     HASH_AlgSHA512 = 6,
    26     HASH_AlgSHA224 = 7,
    27     HASH_AlgTOTAL
    28 } HASH_HashType;
    30 /*
    31  * Number of bytes each hash algorithm produces
    32  */
    33 #define MD2_LENGTH	16
    34 #define MD5_LENGTH	16
    35 #define SHA1_LENGTH	20
    36 #define SHA224_LENGTH 	28
    37 #define SHA256_LENGTH 	32
    38 #define SHA384_LENGTH 	48
    39 #define SHA512_LENGTH 	64
    40 #define HASH_LENGTH_MAX SHA512_LENGTH
    42 /*
    43  * Structure to hold hash computation info and routines
    44  */
    45 struct SECHashObjectStr {
    46     unsigned int length;  /* hash output length (in bytes) */
    47     void * (*create)(void);
    48     void * (*clone)(void *);
    49     void (*destroy)(void *, PRBool);
    50     void (*begin)(void *);
    51     void (*update)(void *, const unsigned char *, unsigned int);
    52     void (*end)(void *, unsigned char *, unsigned int *, unsigned int);
    53     unsigned int blocklength;  /* hash input block size (in bytes) */
    54     HASH_HashType type;
    55     void (*end_raw)(void *, unsigned char *, unsigned int *, unsigned int);
    56 };
    58 struct HASHContextStr {
    59     const struct SECHashObjectStr *hashobj;
    60     void *hash_context;
    61 };
    63 #endif /* _HASHT_H_ */

mercurial