diff options
author | Colin Watson <cjwatson@debian.org> | 2019-10-09 22:59:48 +0100 |
---|---|---|
committer | Colin Watson <cjwatson@debian.org> | 2019-10-09 22:59:48 +0100 |
commit | 4213eec74e74de6310c27a40c3e9759a08a73996 (patch) | |
tree | e97a6dcafc6763aea7c804e4e113c2750cb1400d /openbsd-compat/sha2.h | |
parent | 102062f825fb26a74295a1c089c00c4c4c76b68a (diff) | |
parent | cdf1d0a9f5d18535e0a18ff34860e81a6d83aa5c (diff) |
Import openssh_8.1p1.orig.tar.gz
Diffstat (limited to 'openbsd-compat/sha2.h')
-rw-r--r-- | openbsd-compat/sha2.h | 138 |
1 files changed, 89 insertions, 49 deletions
diff --git a/openbsd-compat/sha2.h b/openbsd-compat/sha2.h index c6e6c97a5..d051e96e8 100644 --- a/openbsd-compat/sha2.h +++ b/openbsd-compat/sha2.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: sha2.h,v 1.6 2004/06/22 01:57:30 jfb Exp */ | 1 | /* $OpenBSD: sha2.h,v 1.10 2016/09/03 17:00:29 tedu Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * FILE: sha2.h | 4 | * FILE: sha2.h |
@@ -41,18 +41,13 @@ | |||
41 | 41 | ||
42 | #include "includes.h" | 42 | #include "includes.h" |
43 | 43 | ||
44 | #ifdef WITH_OPENSSL | 44 | #if !defined(HAVE_SHA256UPDATE) || !defined(HAVE_SHA384UPDATE) || \ |
45 | # include <openssl/opensslv.h> | 45 | !defined(HAVE_SHA512UPDATE) |
46 | # if !defined(HAVE_EVP_SHA256) && (OPENSSL_VERSION_NUMBER >= 0x00907000L) | ||
47 | # define _NEED_SHA2 1 | ||
48 | # endif | ||
49 | #else | ||
50 | # define _NEED_SHA2 1 | ||
51 | #endif | ||
52 | |||
53 | #if defined(_NEED_SHA2) && !defined(HAVE_SHA256_UPDATE) | ||
54 | 46 | ||
55 | /*** SHA-256/384/512 Various Length Definitions ***********************/ | 47 | /*** SHA-256/384/512 Various Length Definitions ***********************/ |
48 | #define SHA224_BLOCK_LENGTH 64 | ||
49 | #define SHA224_DIGEST_LENGTH 28 | ||
50 | #define SHA224_DIGEST_STRING_LENGTH (SHA224_DIGEST_LENGTH * 2 + 1) | ||
56 | #define SHA256_BLOCK_LENGTH 64 | 51 | #define SHA256_BLOCK_LENGTH 64 |
57 | #define SHA256_DIGEST_LENGTH 32 | 52 | #define SHA256_DIGEST_LENGTH 32 |
58 | #define SHA256_DIGEST_STRING_LENGTH (SHA256_DIGEST_LENGTH * 2 + 1) | 53 | #define SHA256_DIGEST_STRING_LENGTH (SHA256_DIGEST_LENGTH * 2 + 1) |
@@ -62,73 +57,118 @@ | |||
62 | #define SHA512_BLOCK_LENGTH 128 | 57 | #define SHA512_BLOCK_LENGTH 128 |
63 | #define SHA512_DIGEST_LENGTH 64 | 58 | #define SHA512_DIGEST_LENGTH 64 |
64 | #define SHA512_DIGEST_STRING_LENGTH (SHA512_DIGEST_LENGTH * 2 + 1) | 59 | #define SHA512_DIGEST_STRING_LENGTH (SHA512_DIGEST_LENGTH * 2 + 1) |
60 | #define SHA512_256_BLOCK_LENGTH 128 | ||
61 | #define SHA512_256_DIGEST_LENGTH 32 | ||
62 | #define SHA512_256_DIGEST_STRING_LENGTH (SHA512_256_DIGEST_LENGTH * 2 + 1) | ||
65 | 63 | ||
66 | 64 | ||
67 | /*** SHA-256/384/512 Context Structures *******************************/ | 65 | /*** SHA-224/256/384/512 Context Structure *******************************/ |
68 | typedef struct _SHA256_CTX { | 66 | typedef struct _SHA2_CTX { |
69 | u_int32_t state[8]; | 67 | union { |
70 | u_int64_t bitcount; | 68 | u_int32_t st32[8]; |
71 | u_int8_t buffer[SHA256_BLOCK_LENGTH]; | 69 | u_int64_t st64[8]; |
72 | } SHA256_CTX; | 70 | } state; |
73 | typedef struct _SHA512_CTX { | ||
74 | u_int64_t state[8]; | ||
75 | u_int64_t bitcount[2]; | 71 | u_int64_t bitcount[2]; |
76 | u_int8_t buffer[SHA512_BLOCK_LENGTH]; | 72 | u_int8_t buffer[SHA512_BLOCK_LENGTH]; |
77 | } SHA512_CTX; | 73 | } SHA2_CTX; |
78 | 74 | ||
79 | typedef SHA512_CTX SHA384_CTX; | 75 | #if 0 |
76 | __BEGIN_DECLS | ||
77 | void SHA224Init(SHA2_CTX *); | ||
78 | void SHA224Transform(u_int32_t state[8], const u_int8_t [SHA224_BLOCK_LENGTH]); | ||
79 | void SHA224Update(SHA2_CTX *, const u_int8_t *, size_t) | ||
80 | __attribute__((__bounded__(__string__,2,3))); | ||
81 | void SHA224Pad(SHA2_CTX *); | ||
82 | void SHA224Final(u_int8_t [SHA224_DIGEST_LENGTH], SHA2_CTX *) | ||
83 | __attribute__((__bounded__(__minbytes__,1,SHA224_DIGEST_LENGTH))); | ||
84 | char *SHA224End(SHA2_CTX *, char *) | ||
85 | __attribute__((__bounded__(__minbytes__,2,SHA224_DIGEST_STRING_LENGTH))); | ||
86 | char *SHA224File(const char *, char *) | ||
87 | __attribute__((__bounded__(__minbytes__,2,SHA224_DIGEST_STRING_LENGTH))); | ||
88 | char *SHA224FileChunk(const char *, char *, off_t, off_t) | ||
89 | __attribute__((__bounded__(__minbytes__,2,SHA224_DIGEST_STRING_LENGTH))); | ||
90 | char *SHA224Data(const u_int8_t *, size_t, char *) | ||
91 | __attribute__((__bounded__(__string__,1,2))) | ||
92 | __attribute__((__bounded__(__minbytes__,3,SHA224_DIGEST_STRING_LENGTH))); | ||
93 | #endif /* 0 */ | ||
80 | 94 | ||
81 | void SHA256_Init(SHA256_CTX *); | 95 | #ifndef HAVE_SHA256UPDATE |
82 | void SHA256_Transform(u_int32_t state[8], const u_int8_t [SHA256_BLOCK_LENGTH]); | 96 | void SHA256Init(SHA2_CTX *); |
83 | void SHA256_Update(SHA256_CTX *, const u_int8_t *, size_t) | 97 | void SHA256Transform(u_int32_t state[8], const u_int8_t [SHA256_BLOCK_LENGTH]); |
98 | void SHA256Update(SHA2_CTX *, const u_int8_t *, size_t) | ||
84 | __attribute__((__bounded__(__string__,2,3))); | 99 | __attribute__((__bounded__(__string__,2,3))); |
85 | void SHA256_Pad(SHA256_CTX *); | 100 | void SHA256Pad(SHA2_CTX *); |
86 | void SHA256_Final(u_int8_t [SHA256_DIGEST_LENGTH], SHA256_CTX *) | 101 | void SHA256Final(u_int8_t [SHA256_DIGEST_LENGTH], SHA2_CTX *) |
87 | __attribute__((__bounded__(__minbytes__,1,SHA256_DIGEST_LENGTH))); | 102 | __attribute__((__bounded__(__minbytes__,1,SHA256_DIGEST_LENGTH))); |
88 | char *SHA256_End(SHA256_CTX *, char *) | 103 | char *SHA256End(SHA2_CTX *, char *) |
89 | __attribute__((__bounded__(__minbytes__,2,SHA256_DIGEST_STRING_LENGTH))); | 104 | __attribute__((__bounded__(__minbytes__,2,SHA256_DIGEST_STRING_LENGTH))); |
90 | char *SHA256_File(const char *, char *) | 105 | char *SHA256File(const char *, char *) |
91 | __attribute__((__bounded__(__minbytes__,2,SHA256_DIGEST_STRING_LENGTH))); | 106 | __attribute__((__bounded__(__minbytes__,2,SHA256_DIGEST_STRING_LENGTH))); |
92 | char *SHA256_FileChunk(const char *, char *, off_t, off_t) | 107 | char *SHA256FileChunk(const char *, char *, off_t, off_t) |
93 | __attribute__((__bounded__(__minbytes__,2,SHA256_DIGEST_STRING_LENGTH))); | 108 | __attribute__((__bounded__(__minbytes__,2,SHA256_DIGEST_STRING_LENGTH))); |
94 | char *SHA256_Data(const u_int8_t *, size_t, char *) | 109 | char *SHA256Data(const u_int8_t *, size_t, char *) |
95 | __attribute__((__bounded__(__string__,1,2))) | 110 | __attribute__((__bounded__(__string__,1,2))) |
96 | __attribute__((__bounded__(__minbytes__,3,SHA256_DIGEST_STRING_LENGTH))); | 111 | __attribute__((__bounded__(__minbytes__,3,SHA256_DIGEST_STRING_LENGTH))); |
112 | #endif /* HAVE_SHA256UPDATE */ | ||
97 | 113 | ||
98 | void SHA384_Init(SHA384_CTX *); | 114 | #ifndef HAVE_SHA384UPDATE |
99 | void SHA384_Transform(u_int64_t state[8], const u_int8_t [SHA384_BLOCK_LENGTH]); | 115 | void SHA384Init(SHA2_CTX *); |
100 | void SHA384_Update(SHA384_CTX *, const u_int8_t *, size_t) | 116 | void SHA384Transform(u_int64_t state[8], const u_int8_t [SHA384_BLOCK_LENGTH]); |
117 | void SHA384Update(SHA2_CTX *, const u_int8_t *, size_t) | ||
101 | __attribute__((__bounded__(__string__,2,3))); | 118 | __attribute__((__bounded__(__string__,2,3))); |
102 | void SHA384_Pad(SHA384_CTX *); | 119 | void SHA384Pad(SHA2_CTX *); |
103 | void SHA384_Final(u_int8_t [SHA384_DIGEST_LENGTH], SHA384_CTX *) | 120 | void SHA384Final(u_int8_t [SHA384_DIGEST_LENGTH], SHA2_CTX *) |
104 | __attribute__((__bounded__(__minbytes__,1,SHA384_DIGEST_LENGTH))); | 121 | __attribute__((__bounded__(__minbytes__,1,SHA384_DIGEST_LENGTH))); |
105 | char *SHA384_End(SHA384_CTX *, char *) | 122 | char *SHA384End(SHA2_CTX *, char *) |
106 | __attribute__((__bounded__(__minbytes__,2,SHA384_DIGEST_STRING_LENGTH))); | 123 | __attribute__((__bounded__(__minbytes__,2,SHA384_DIGEST_STRING_LENGTH))); |
107 | char *SHA384_File(const char *, char *) | 124 | char *SHA384File(const char *, char *) |
108 | __attribute__((__bounded__(__minbytes__,2,SHA384_DIGEST_STRING_LENGTH))); | 125 | __attribute__((__bounded__(__minbytes__,2,SHA384_DIGEST_STRING_LENGTH))); |
109 | char *SHA384_FileChunk(const char *, char *, off_t, off_t) | 126 | char *SHA384FileChunk(const char *, char *, off_t, off_t) |
110 | __attribute__((__bounded__(__minbytes__,2,SHA384_DIGEST_STRING_LENGTH))); | 127 | __attribute__((__bounded__(__minbytes__,2,SHA384_DIGEST_STRING_LENGTH))); |
111 | char *SHA384_Data(const u_int8_t *, size_t, char *) | 128 | char *SHA384Data(const u_int8_t *, size_t, char *) |
112 | __attribute__((__bounded__(__string__,1,2))) | 129 | __attribute__((__bounded__(__string__,1,2))) |
113 | __attribute__((__bounded__(__minbytes__,3,SHA384_DIGEST_STRING_LENGTH))); | 130 | __attribute__((__bounded__(__minbytes__,3,SHA384_DIGEST_STRING_LENGTH))); |
131 | #endif /* HAVE_SHA384UPDATE */ | ||
114 | 132 | ||
115 | void SHA512_Init(SHA512_CTX *); | 133 | #ifndef HAVE_SHA512UPDATE |
116 | void SHA512_Transform(u_int64_t state[8], const u_int8_t [SHA512_BLOCK_LENGTH]); | 134 | void SHA512Init(SHA2_CTX *); |
117 | void SHA512_Update(SHA512_CTX *, const u_int8_t *, size_t) | 135 | void SHA512Transform(u_int64_t state[8], const u_int8_t [SHA512_BLOCK_LENGTH]); |
136 | void SHA512Update(SHA2_CTX *, const u_int8_t *, size_t) | ||
118 | __attribute__((__bounded__(__string__,2,3))); | 137 | __attribute__((__bounded__(__string__,2,3))); |
119 | void SHA512_Pad(SHA512_CTX *); | 138 | void SHA512Pad(SHA2_CTX *); |
120 | void SHA512_Final(u_int8_t [SHA512_DIGEST_LENGTH], SHA512_CTX *) | 139 | void SHA512Final(u_int8_t [SHA512_DIGEST_LENGTH], SHA2_CTX *) |
121 | __attribute__((__bounded__(__minbytes__,1,SHA512_DIGEST_LENGTH))); | 140 | __attribute__((__bounded__(__minbytes__,1,SHA512_DIGEST_LENGTH))); |
122 | char *SHA512_End(SHA512_CTX *, char *) | 141 | char *SHA512End(SHA2_CTX *, char *) |
123 | __attribute__((__bounded__(__minbytes__,2,SHA512_DIGEST_STRING_LENGTH))); | 142 | __attribute__((__bounded__(__minbytes__,2,SHA512_DIGEST_STRING_LENGTH))); |
124 | char *SHA512_File(const char *, char *) | 143 | char *SHA512File(const char *, char *) |
125 | __attribute__((__bounded__(__minbytes__,2,SHA512_DIGEST_STRING_LENGTH))); | 144 | __attribute__((__bounded__(__minbytes__,2,SHA512_DIGEST_STRING_LENGTH))); |
126 | char *SHA512_FileChunk(const char *, char *, off_t, off_t) | 145 | char *SHA512FileChunk(const char *, char *, off_t, off_t) |
127 | __attribute__((__bounded__(__minbytes__,2,SHA512_DIGEST_STRING_LENGTH))); | 146 | __attribute__((__bounded__(__minbytes__,2,SHA512_DIGEST_STRING_LENGTH))); |
128 | char *SHA512_Data(const u_int8_t *, size_t, char *) | 147 | char *SHA512Data(const u_int8_t *, size_t, char *) |
129 | __attribute__((__bounded__(__string__,1,2))) | 148 | __attribute__((__bounded__(__string__,1,2))) |
130 | __attribute__((__bounded__(__minbytes__,3,SHA512_DIGEST_STRING_LENGTH))); | 149 | __attribute__((__bounded__(__minbytes__,3,SHA512_DIGEST_STRING_LENGTH))); |
150 | #endif /* HAVE_SHA512UPDATE */ | ||
151 | |||
152 | #if 0 | ||
153 | void SHA512_256Init(SHA2_CTX *); | ||
154 | void SHA512_256Transform(u_int64_t state[8], const u_int8_t [SHA512_256_BLOCK_LENGTH]); | ||
155 | void SHA512_256Update(SHA2_CTX *, const u_int8_t *, size_t) | ||
156 | __attribute__((__bounded__(__string__,2,3))); | ||
157 | void SHA512_256Pad(SHA2_CTX *); | ||
158 | void SHA512_256Final(u_int8_t [SHA512_256_DIGEST_LENGTH], SHA2_CTX *) | ||
159 | __attribute__((__bounded__(__minbytes__,1,SHA512_256_DIGEST_LENGTH))); | ||
160 | char *SHA512_256End(SHA2_CTX *, char *) | ||
161 | __attribute__((__bounded__(__minbytes__,2,SHA512_256_DIGEST_STRING_LENGTH))); | ||
162 | char *SHA512_256File(const char *, char *) | ||
163 | __attribute__((__bounded__(__minbytes__,2,SHA512_256_DIGEST_STRING_LENGTH))); | ||
164 | char *SHA512_256FileChunk(const char *, char *, off_t, off_t) | ||
165 | __attribute__((__bounded__(__minbytes__,2,SHA512_256_DIGEST_STRING_LENGTH))); | ||
166 | char *SHA512_256Data(const u_int8_t *, size_t, char *) | ||
167 | __attribute__((__bounded__(__string__,1,2))) | ||
168 | __attribute__((__bounded__(__minbytes__,3,SHA512_256_DIGEST_STRING_LENGTH))); | ||
169 | __END_DECLS | ||
170 | #endif /* 0 */ | ||
131 | 171 | ||
132 | #endif /* defined(_NEED_SHA2) && !defined(HAVE_SHA256_UPDATE) */ | 172 | #endif /* HAVE_SHA{256,384,512}UPDATE */ |
133 | 173 | ||
134 | #endif /* _SSHSHA2_H */ | 174 | #endif /* _SSHSHA2_H */ |