Annotation of src/usr.bin/ssh/md-sha256.c, Revision 1.2
1.1 djm 1: /*
2: * Copyright (c) 2005 Damien Miller <djm@openbsd.org>
3: *
4: * Permission to use, copy, modify, and distribute this software for any
5: * purpose with or without fee is hereby granted, provided that the above
6: * copyright notice and this permission notice appear in all copies.
7: *
8: * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9: * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10: * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11: * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12: * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13: * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14: * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15: */
16:
17: /* EVP wrapper for SHA256 */
18:
19: #include "includes.h"
20: #include <openssl/evp.h>
21: #include <sha2.h>
22:
23:
24: const EVP_MD *evp_ssh_sha256(void);
25:
26: static int
27: ssh_sha256_init(EVP_MD_CTX *ctxt)
28: {
29: SHA256_Init(ctxt->md_data);
30: return (1);
31: }
32:
33: static int
34: ssh_sha256_update(EVP_MD_CTX *ctxt, const void *data, unsigned long len)
35: {
36: SHA256_Update(ctxt->md_data, data, len);
37: return (1);
38: }
39:
40: static int
41: ssh_sha256_final(EVP_MD_CTX *ctxt, unsigned char *digest)
42: {
43: SHA256_Final(digest, ctxt->md_data);
44: return (1);
45: }
46:
47: static int
48: ssh_sha256_cleanup(EVP_MD_CTX *ctxt)
49: {
50: memset(ctxt->md_data, 0, sizeof(SHA256_CTX));
51: return (1);
52: }
53:
54: const EVP_MD *
55: evp_ssh_sha256(void)
56: {
57: static EVP_MD ssh_sha256;
58:
59: memset(&ssh_sha256, 0, sizeof(ssh_sha256));
60: ssh_sha256.type = NID_undef;
61: ssh_sha256.md_size = SHA256_DIGEST_LENGTH;
62: ssh_sha256.init = ssh_sha256_init;
63: ssh_sha256.update = ssh_sha256_update;
64: ssh_sha256.final = ssh_sha256_final;
65: ssh_sha256.cleanup = ssh_sha256_cleanup;
66: ssh_sha256.block_size = SHA256_BLOCK_LENGTH;
67: ssh_sha256.ctx_size = sizeof(SHA256_CTX);
68:
69: return (&ssh_sha256);
70: }