mirror of
https://github.com/rn10950/RetroZilla.git
synced 2024-11-15 04:00:12 +01:00
64 lines
1.7 KiB
C
64 lines
1.7 KiB
C
|
/* 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/. */
|
||
|
|
||
|
#ifndef _HASHT_H_
|
||
|
#define _HASHT_H_
|
||
|
|
||
|
#include "prtypes.h"
|
||
|
|
||
|
/* Opaque objects */
|
||
|
typedef struct SECHashObjectStr SECHashObject;
|
||
|
typedef struct HASHContextStr HASHContext;
|
||
|
|
||
|
/*
|
||
|
* The hash functions the security library supports
|
||
|
* NOTE the order must match the definition of SECHashObjects[]!
|
||
|
*/
|
||
|
typedef enum {
|
||
|
HASH_AlgNULL = 0,
|
||
|
HASH_AlgMD2 = 1,
|
||
|
HASH_AlgMD5 = 2,
|
||
|
HASH_AlgSHA1 = 3,
|
||
|
HASH_AlgSHA256 = 4,
|
||
|
HASH_AlgSHA384 = 5,
|
||
|
HASH_AlgSHA512 = 6,
|
||
|
HASH_AlgSHA224 = 7,
|
||
|
HASH_AlgTOTAL
|
||
|
} HASH_HashType;
|
||
|
|
||
|
/*
|
||
|
* Number of bytes each hash algorithm produces
|
||
|
*/
|
||
|
#define MD2_LENGTH 16
|
||
|
#define MD5_LENGTH 16
|
||
|
#define SHA1_LENGTH 20
|
||
|
#define SHA224_LENGTH 28
|
||
|
#define SHA256_LENGTH 32
|
||
|
#define SHA384_LENGTH 48
|
||
|
#define SHA512_LENGTH 64
|
||
|
#define HASH_LENGTH_MAX SHA512_LENGTH
|
||
|
|
||
|
/*
|
||
|
* Structure to hold hash computation info and routines
|
||
|
*/
|
||
|
struct SECHashObjectStr {
|
||
|
unsigned int length; /* hash output length (in bytes) */
|
||
|
void * (*create)(void);
|
||
|
void * (*clone)(void *);
|
||
|
void (*destroy)(void *, PRBool);
|
||
|
void (*begin)(void *);
|
||
|
void (*update)(void *, const unsigned char *, unsigned int);
|
||
|
void (*end)(void *, unsigned char *, unsigned int *, unsigned int);
|
||
|
unsigned int blocklength; /* hash input block size (in bytes) */
|
||
|
HASH_HashType type;
|
||
|
void (*end_raw)(void *, unsigned char *, unsigned int *, unsigned int);
|
||
|
};
|
||
|
|
||
|
struct HASHContextStr {
|
||
|
const struct SECHashObjectStr *hashobj;
|
||
|
void *hash_context;
|
||
|
};
|
||
|
|
||
|
#endif /* _HASHT_H_ */
|