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
|