[BACK]Return to md-sha256.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / ssh

Annotation of src/usr.bin/ssh/md-sha256.c, Revision 1.4

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