The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/crypto/openssl/ossl_sha1.c

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
    3  *
    4  * Licensed under the OpenSSL license (the "License").  You may not use
    5  * this file except in compliance with the License.  You can obtain a copy
    6  * in the file LICENSE in the source distribution or at
    7  * https://www.openssl.org/source/license.html
    8  */
    9 
   10 #include <sys/cdefs.h>
   11 __FBSDID("$FreeBSD$");
   12 
   13 #include <sys/libkern.h>
   14 #include <sys/malloc.h>
   15 
   16 #include <opencrypto/cryptodev.h>
   17 #include <opencrypto/xform_auth.h>
   18 
   19 #include <crypto/openssl/ossl.h>
   20 #include <crypto/openssl/ossl_sha.h>
   21 
   22 /* sha1-x86_64.S */
   23 void sha1_block_data_order(SHA_CTX *c, const void *p, size_t len);
   24 
   25 /* From crypto/sha/sha_local.h */
   26 #define DATA_ORDER_IS_BIG_ENDIAN
   27 
   28 #define HASH_LONG               SHA_LONG
   29 #define HASH_CTX                SHA_CTX
   30 #define HASH_CBLOCK             SHA_CBLOCK
   31 #define HASH_MAKE_STRING(c,s)   do {    \
   32         unsigned long ll;               \
   33         ll=(c)->h0; (void)HOST_l2c(ll,(s));     \
   34         ll=(c)->h1; (void)HOST_l2c(ll,(s));     \
   35         ll=(c)->h2; (void)HOST_l2c(ll,(s));     \
   36         ll=(c)->h3; (void)HOST_l2c(ll,(s));     \
   37         ll=(c)->h4; (void)HOST_l2c(ll,(s));     \
   38         } while (0)
   39 
   40 #define HASH_UPDATE                     ossl_sha1_update
   41 #define HASH_FINAL                      ossl_sha1_final
   42 #define HASH_INIT                       ossl_sha1_init
   43 #define HASH_BLOCK_DATA_ORDER           sha1_block_data_order
   44 
   45 #define INIT_DATA_h0 0x67452301UL
   46 #define INIT_DATA_h1 0xefcdab89UL
   47 #define INIT_DATA_h2 0x98badcfeUL
   48 #define INIT_DATA_h3 0x10325476UL
   49 #define INIT_DATA_h4 0xc3d2e1f0UL
   50 
   51 static void
   52 HASH_INIT(void *c_)
   53 {
   54     SHA_CTX *c = c_;
   55     memset(c, 0, sizeof(*c));
   56     c->h0 = INIT_DATA_h0;
   57     c->h1 = INIT_DATA_h1;
   58     c->h2 = INIT_DATA_h2;
   59     c->h3 = INIT_DATA_h3;
   60     c->h4 = INIT_DATA_h4;
   61 }
   62 
   63 #include "ossl_hash.h"
   64 
   65 struct auth_hash ossl_hash_sha1 = {
   66         .type = CRYPTO_SHA1,
   67         .name = "OpenSSL-SHA1",
   68         .hashsize = SHA1_HASH_LEN,
   69         .ctxsize = sizeof(SHA_CTX),
   70         .blocksize = SHA1_BLOCK_LEN,
   71         .Init = HASH_INIT,
   72         .Update = HASH_UPDATE,
   73         .Final = HASH_FINAL,
   74 };
   75 
   76 _Static_assert(sizeof(SHA_CTX) <= sizeof(struct ossl_hash_context),
   77     "ossl_hash_context too small");

Cache object: 88a0c84ff813839c19dad78518cfce00


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.