[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.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: }