tor
master
|
Headers for crypto_digest.c. More...
Go to the source code of this file.
Data Structures | |
struct | crypto_digest_checkpoint_t |
struct | common_digests_t |
Macros | |
#define | DIGEST_LEN 20 |
#define | DIGEST256_LEN 32 |
#define | DIGEST512_LEN 64 |
#define | BASE32_DIGEST_LEN 32 |
#define | BASE64_DIGEST_LEN 27 |
#define | BASE64_DIGEST256_LEN 43 |
#define | BASE64_DIGEST512_LEN 86 |
#define | HEX_DIGEST_LEN 40 |
#define | HEX_DIGEST256_LEN 64 |
#define | HEX_DIGEST512_LEN 128 |
#define | N_DIGEST_ALGORITHMS (DIGEST_SHA3_512+1) |
#define | N_COMMON_DIGEST_ALGORITHMS (DIGEST_SHA256+1) |
#define | DIGEST_CHECKPOINT_BYTES (SIZEOF_VOID_P + 512) |
#define | crypto_digest_free(d) FREE_AND_NULL(crypto_digest_t, crypto_digest_free_, (d)) |
#define | crypto_xof_free(xof) FREE_AND_NULL(crypto_xof_t, crypto_xof_free_, (xof)) |
Typedefs | |
typedef struct crypto_digest_checkpoint_t | crypto_digest_checkpoint_t |
typedef struct crypto_digest_t | crypto_digest_t |
typedef struct crypto_xof_t | crypto_xof_t |
Enumerations | |
enum | digest_algorithm_t { DIGEST_SHA1 = 0, DIGEST_SHA256 = 1, DIGEST_SHA512 = 2, DIGEST_SHA3_256 = 3, DIGEST_SHA3_512 = 4 } |
Functions | |
int | crypto_digest (char *digest, const char *m, size_t len) |
int | crypto_digest256 (char *digest, const char *m, size_t len, digest_algorithm_t algorithm) |
int | crypto_digest512 (char *digest, const char *m, size_t len, digest_algorithm_t algorithm) |
int | crypto_common_digests (common_digests_t *ds_out, const char *m, size_t len) |
void | crypto_digest_smartlist_prefix (char *digest_out, size_t len_out, const char *prepend, const struct smartlist_t *lst, const char *append, digest_algorithm_t alg) |
void | crypto_digest_smartlist (char *digest_out, size_t len_out, const struct smartlist_t *lst, const char *append, digest_algorithm_t alg) |
const char * | crypto_digest_algorithm_get_name (digest_algorithm_t alg) |
size_t | crypto_digest_algorithm_get_length (digest_algorithm_t alg) |
int | crypto_digest_algorithm_parse_name (const char *name) |
crypto_digest_t * | crypto_digest_new (void) |
crypto_digest_t * | crypto_digest256_new (digest_algorithm_t algorithm) |
crypto_digest_t * | crypto_digest512_new (digest_algorithm_t algorithm) |
void | crypto_digest_free_ (crypto_digest_t *digest) |
void | crypto_digest_add_bytes (crypto_digest_t *digest, const char *data, size_t len) |
void | crypto_digest_get_digest (crypto_digest_t *digest, char *out, size_t out_len) |
crypto_digest_t * | crypto_digest_dup (const crypto_digest_t *digest) |
void | crypto_digest_checkpoint (crypto_digest_checkpoint_t *checkpoint, const crypto_digest_t *digest) |
void | crypto_digest_restore (crypto_digest_t *digest, const crypto_digest_checkpoint_t *checkpoint) |
void | crypto_digest_assign (crypto_digest_t *into, const crypto_digest_t *from) |
void | crypto_hmac_sha256 (char *hmac_out, const char *key, size_t key_len, const char *msg, size_t msg_len) |
void | crypto_mac_sha3_256 (uint8_t *mac_out, size_t len_out, const uint8_t *key, size_t key_len, const uint8_t *msg, size_t msg_len) |
crypto_xof_t * | crypto_xof_new (void) |
void | crypto_xof_add_bytes (crypto_xof_t *xof, const uint8_t *data, size_t len) |
void | crypto_xof_squeeze_bytes (crypto_xof_t *xof, uint8_t *out, size_t len) |
void | crypto_xof_free_ (crypto_xof_t *xof) |
Headers for crypto_digest.c.
#define BASE32_DIGEST_LEN 32 |
Length of a sha1 message digest when encoded in base32 with trailing = signs removed.
#define BASE64_DIGEST256_LEN 43 |
Length of a sha256 message digest when encoded in base64 with trailing = signs removed.
#define BASE64_DIGEST512_LEN 86 |
Length of a sha512 message digest when encoded in base64 with trailing = signs removed.
#define BASE64_DIGEST_LEN 27 |
Length of a sha1 message digest when encoded in base64 with trailing = signs removed.
#define DIGEST256_LEN 32 |
Length of the output of our second (improved) message digests. (For now this is just sha256, but it could be any other 256-bit digest.)
#define DIGEST512_LEN 64 |
Length of the output of our 64-bit optimized message digests (SHA512).
#define DIGEST_LEN 20 |
Length of the output of our message digest.
#define HEX_DIGEST256_LEN 64 |
Length of hex encoding of SHA256 digest, not including final NUL.
#define HEX_DIGEST512_LEN 128 |
Length of hex encoding of SHA512 digest, not including final NUL.
#define HEX_DIGEST_LEN 40 |
Length of hex encoding of SHA1 digest, not including final NUL.
typedef struct crypto_digest_checkpoint_t crypto_digest_checkpoint_t |
Structure used to temporarily save the a digest object. Only implemented for SHA1 digest for now.
int crypto_common_digests | ( | common_digests_t * | ds_out, |
const char * | m, | ||
size_t | len | ||
) |
Set the common_digests_t in ds_out to contain every digest on the len bytes in m that we know how to compute. Return 0 on success, -1 on failure.
int crypto_digest | ( | char * | digest, |
const char * | m, | ||
size_t | len | ||
) |
Compute the SHA1 digest of the len bytes on data stored in m. Write the DIGEST_LEN byte result into digest. Return 0 on success, -1 on failure.
int crypto_digest256 | ( | char * | digest, |
const char * | m, | ||
size_t | len, | ||
digest_algorithm_t | algorithm | ||
) |
Compute a 256-bit digest of len bytes in data stored in m, using the algorithm algorithm. Write the DIGEST_LEN256-byte result into digest. Return 0 on success, -1 on failure.
crypto_digest_t* crypto_digest256_new | ( | digest_algorithm_t | algorithm | ) |
Allocate and return a new digest object to compute 256-bit digests using algorithm.
C_RUST_COUPLED: external::crypto_digest::crypto_digest256_new
C_RUST_COUPLED: crypto::digest::Sha256::default
int crypto_digest512 | ( | char * | digest, |
const char * | m, | ||
size_t | len, | ||
digest_algorithm_t | algorithm | ||
) |
Compute a 512-bit digest of len bytes in data stored in m, using the algorithm algorithm. Write the DIGEST_LEN512-byte result into digest. Return 0 on success, -1 on failure.
crypto_digest_t* crypto_digest512_new | ( | digest_algorithm_t | algorithm | ) |
Allocate and return a new digest object to compute 512-bit digests using algorithm.
void crypto_digest_add_bytes | ( | crypto_digest_t * | digest, |
const char * | data, | ||
size_t | len | ||
) |
Add len bytes from data to the digest object.
C_RUST_COUPLED: external::crypto_digest::crypto_digest_add_bytess
C_RUST_COUPLED: crypto::digest::Sha256::process
size_t crypto_digest_algorithm_get_length | ( | digest_algorithm_t | alg | ) |
Given an algorithm, return the digest length in bytes.
const char* crypto_digest_algorithm_get_name | ( | digest_algorithm_t | alg | ) |
Return the name of an algorithm, as used in directory documents.
int crypto_digest_algorithm_parse_name | ( | const char * | name | ) |
Given the name of a digest algorithm, return its integer value, or -1 if the name is not recognized.
void crypto_digest_assign | ( | crypto_digest_t * | into, |
const crypto_digest_t * | from | ||
) |
Replace the state of the digest object into with the state of the digest object from. Requires that 'into' and 'from' have the same digest type.
void crypto_digest_checkpoint | ( | crypto_digest_checkpoint_t * | checkpoint, |
const crypto_digest_t * | digest | ||
) |
Temporarily save the state of digest in checkpoint. Asserts that digest is a SHA1 digest object.
crypto_digest_t* crypto_digest_dup | ( | const crypto_digest_t * | digest | ) |
Allocate and return a new digest object with the same state as digest
C_RUST_COUPLED: external::crypto_digest::crypto_digest_dup
C_RUST_COUPLED: impl Clone for crypto::digest::Sha256
void crypto_digest_free_ | ( | crypto_digest_t * | digest | ) |
Deallocate a digest object.
void crypto_digest_get_digest | ( | crypto_digest_t * | digest, |
char * | out, | ||
size_t | out_len | ||
) |
Compute the hash of the data that has been passed to the digest object; write the first out_len bytes of the result to out. out_len must be <= DIGEST512_LEN.
C_RUST_COUPLED: external::crypto_digest::crypto_digest_get_digest
C_RUST_COUPLED: impl digest::FixedOutput for Sha256
crypto_digest_t* crypto_digest_new | ( | void | ) |
Allocate and return a new digest object to compute SHA1 digests.
void crypto_digest_restore | ( | crypto_digest_t * | digest, |
const crypto_digest_checkpoint_t * | checkpoint | ||
) |
Restore the state of digest from checkpoint. Asserts that digest is a SHA1 digest object. Requires that the state was previously stored with crypto_digest_checkpoint()
void crypto_hmac_sha256 | ( | char * | hmac_out, |
const char * | key, | ||
size_t | key_len, | ||
const char * | msg, | ||
size_t | msg_len | ||
) |
Compute the HMAC-SHA-256 of the msg_len bytes in msg, using the key of length key_len. Store the DIGEST256_LEN-byte result in hmac_out. Asserts on failure.
void crypto_mac_sha3_256 | ( | uint8_t * | mac_out, |
size_t | len_out, | ||
const uint8_t * | key, | ||
size_t | key_len, | ||
const uint8_t * | msg, | ||
size_t | msg_len | ||
) |
Compute a MAC using SHA3-256 of msg_len bytes in msg using a key of length key_len and a salt of length salt_len. Store the result of len_out bytes in in mac_out. This function can't fail.
void crypto_xof_add_bytes | ( | crypto_xof_t * | xof, |
const uint8_t * | data, | ||
size_t | len | ||
) |
Absorb bytes into a XOF object. Must not be called after a call to crypto_xof_squeeze_bytes() for the same instance, and will assert if attempted.
void crypto_xof_free_ | ( | crypto_xof_t * | xof | ) |
Cleanse and deallocate a XOF object.
crypto_xof_t* crypto_xof_new | ( | void | ) |
Allocate a new XOF object backed by SHAKE-256. The security level provided is a function of the length of the output used. Read and understand FIPS-202 A.2 "Additional Consideration for Extendable-Output Functions" before using this construct.
void crypto_xof_squeeze_bytes | ( | crypto_xof_t * | xof, |
uint8_t * | out, | ||
size_t | len | ||
) |
Squeeze bytes out of a XOF object. Calling this routine will render the XOF instance ineligible to absorb further data.