22 #define SSH_DIGEST_MAX_LENGTH 64 25 #define SSH_DIGEST_MD5 0 26 #define SSH_DIGEST_RIPEMD160 1 27 #define SSH_DIGEST_SHA1 2 28 #define SSH_DIGEST_SHA256 3 29 #define SSH_DIGEST_SHA384 4 30 #define SSH_DIGEST_SHA512 5 31 #define SSH_DIGEST_MAX 6 34 struct ssh_digest_ctx;
37 int ssh_digest_alg_by_name(
const char *name);
40 const char *ssh_digest_alg_name(
int alg);
43 size_t ssh_digest_bytes(
int alg);
46 size_t ssh_digest_blocksize(
struct ssh_digest_ctx *ctx);
49 int ssh_digest_copy_state(
struct ssh_digest_ctx *from,
50 struct ssh_digest_ctx *to);
53 int ssh_digest_memory(
int alg,
const void *m,
size_t mlen,
54 u_char *d,
size_t dlen)
55 __attribute__((__bounded__(__buffer__, 2, 3)))
56 __attribute__((__bounded__(__buffer__, 4, 5)));
57 int ssh_digest_buffer(
int alg, const struct sshbuf *b, u_char *d,
size_t dlen)
58 __attribute__((__bounded__(__buffer__, 3, 4)));
61 struct ssh_digest_ctx *ssh_digest_start(
int alg);
62 int ssh_digest_update(struct ssh_digest_ctx *ctx, const
void *m,
size_t mlen)
63 __attribute__((__bounded__(__buffer__, 2, 3)));
64 int ssh_digest_update_buffer(struct ssh_digest_ctx *ctx,
65 const struct sshbuf *b);
66 int ssh_digest_final(struct ssh_digest_ctx *ctx, u_char *d,
size_t dlen)
67 __attribute__((__bounded__(__buffer__, 2, 3)));
68 void ssh_digest_free(struct ssh_digest_ctx *ctx);