Codebase list openssl / 5784ad8
New upstream version 3.0.3 Sebastian Andrzej Siewior 2 years ago
192 changed file(s) with 2614 addition(s) and 1314 deletion(s). Raw diff Collapse all Expand all
2626 breaking changes, and mappings for the large list of deprecated functions.
2727
2828 [Migration guide]: https://github.com/openssl/openssl/tree/master/doc/man7/migration_guide.pod
29
30 ### Changes between 3.0.2 and 3.0.3 [3 May 2022]
31
32 * Fixed a bug in the c_rehash script which was not properly sanitising shell
33 metacharacters to prevent command injection. This script is distributed by
34 some operating systems in a manner where it is automatically executed. On
35 such operating systems, an attacker could execute arbitrary commands with the
36 privileges of the script.
37
38 Use of the c_rehash script is considered obsolete and should be replaced
39 by the OpenSSL rehash command line tool.
40 (CVE-2022-1292)
41
42 *Tomáš Mráz*
43
44 * Fixed a bug in the function `OCSP_basic_verify` that verifies the signer
45 certificate on an OCSP response. The bug caused the function in the case
46 where the (non-default) flag OCSP_NOCHECKS is used to return a postivie
47 response (meaning a successful verification) even in the case where the
48 response signing certificate fails to verify.
49
50 It is anticipated that most users of `OCSP_basic_verify` will not use the
51 OCSP_NOCHECKS flag. In this case the `OCSP_basic_verify` function will return
52 a negative value (indicating a fatal error) in the case of a certificate
53 verification failure. The normal expected return value in this case would be
54 0.
55
56 This issue also impacts the command line OpenSSL "ocsp" application. When
57 verifying an ocsp response with the "-no_cert_checks" option the command line
58 application will report that the verification is successful even though it
59 has in fact failed. In this case the incorrect successful response will also
60 be accompanied by error messages showing the failure and contradicting the
61 apparently successful result.
62 ([CVE-2022-1343])
63
64 *Matt Caswell*
65
66 * Fixed a bug where the RC4-MD5 ciphersuite incorrectly used the
67 AAD data as the MAC key. This made the MAC key trivially predictable.
68
69 An attacker could exploit this issue by performing a man-in-the-middle attack
70 to modify data being sent from one endpoint to an OpenSSL 3.0 recipient such
71 that the modified data would still pass the MAC integrity check.
72
73 Note that data sent from an OpenSSL 3.0 endpoint to a non-OpenSSL 3.0
74 endpoint will always be rejected by the recipient and the connection will
75 fail at that point. Many application protocols require data to be sent from
76 the client to the server first. Therefore, in such a case, only an OpenSSL
77 3.0 server would be impacted when talking to a non-OpenSSL 3.0 client.
78
79 If both endpoints are OpenSSL 3.0 then the attacker could modify data being
80 sent in both directions. In this case both clients and servers could be
81 affected, regardless of the application protocol.
82
83 Note that in the absence of an attacker this bug means that an OpenSSL 3.0
84 endpoint communicating with a non-OpenSSL 3.0 endpoint will fail to complete
85 the handshake when using this ciphersuite.
86
87 The confidentiality of data is not impacted by this issue, i.e. an attacker
88 cannot decrypt data that has been encrypted using this ciphersuite - they can
89 only modify it.
90
91 In order for this attack to work both endpoints must legitimately negotiate
92 the RC4-MD5 ciphersuite. This ciphersuite is not compiled by default in
93 OpenSSL 3.0, and is not available within the default provider or the default
94 ciphersuite list. This ciphersuite will never be used if TLSv1.3 has been
95 negotiated. In order for an OpenSSL 3.0 endpoint to use this ciphersuite the
96 following must have occurred:
97
98 1) OpenSSL must have been compiled with the (non-default) compile time option
99 enable-weak-ssl-ciphers
100
101 2) OpenSSL must have had the legacy provider explicitly loaded (either
102 through application code or via configuration)
103
104 3) The ciphersuite must have been explicitly added to the ciphersuite list
105
106 4) The libssl security level must have been set to 0 (default is 1)
107
108 5) A version of SSL/TLS below TLSv1.3 must have been negotiated
109
110 6) Both endpoints must negotiate the RC4-MD5 ciphersuite in preference to any
111 others that both endpoints have in common
112 (CVE-2022-1434)
113
114 *Matt Caswell*
115
116 * Fix a bug in the OPENSSL_LH_flush() function that breaks reuse of the memory
117 occuppied by the removed hash table entries.
118
119 This function is used when decoding certificates or keys. If a long lived
120 process periodically decodes certificates or keys its memory usage will
121 expand without bounds and the process might be terminated by the operating
122 system causing a denial of service. Also traversing the empty hash table
123 entries will take increasingly more time.
124
125 Typically such long lived processes might be TLS clients or TLS servers
126 configured to accept client certificate authentication.
127 (CVE-2022-1473)
128
129 *Hugo Landau, Aliaksei Levin*
130
131 * The functions `OPENSSL_LH_stats` and `OPENSSL_LH_stats_bio` now only report
132 the `num_items`, `num_nodes` and `num_alloc_nodes` statistics. All other
133 statistics are no longer supported. For compatibility, these statistics are
134 still listed in the output but are now always reported as zero.
135
136 *Hugo Landau*
29137
30138 ### Changes between 3.0.1 and 3.0.2 [15 Mar 2022]
31139
5959 GitHub Actions and AppVeyor are required, and they are started automatically
6060 whenever a PR is created or updated.
6161
62 [coding style]: https://www.openssl.org/policies/codingstyle.html
62 [coding style]: https://www.openssl.org/policies/technical/coding-style.html
6363
6464 5. When at all possible, patches should include tests. These can
6565 either be added to an existing test, or completely new. Please see
2424 return $in_libname
2525 if $unified_info{attributes}->{libraries}->{$_[1]}->{noinst};
2626
27 return platform::BASE->staticname($_[1]) . '_a';
27 return platform::BASE->staticname($_[1]) . ($disabled{shared} ? '' : '_a');
2828 }
1616
1717 OpenSSL 3.0
1818 -----------
19
20 ### Major changes between OpenSSL 3.0.2 and OpenSSL 3.0.3 [3 May 2022]
21
22 * Fixed a bug in the c_rehash script which was not properly sanitising shell
23 metacharacters to prevent command injection ([CVE-2022-1292])
24 * Fixed a bug in the function `OCSP_basic_verify` that verifies the signer
25 certificate on an OCSP response ([CVE-2022-1343])
26 * Fixed a bug where the RC4-MD5 ciphersuite incorrectly used the
27 AAD data as the MAC key ([CVE-2022-1434])
28 * Fix a bug in the OPENSSL_LH_flush() function that breaks reuse of the memory
29 occuppied by the removed hash table entries ([CVE-2022-1473])
1930
2031 ### Major changes between OpenSSL 3.0.1 and OpenSSL 3.0.2 [15 Mar 2022]
2132
2727 Native builds using Visual C++
2828 ==============================
2929
30 The native builds using Visual C++ have a VC-* prefix.
30 The native builds using Visual C++ have a `VC-*` prefix.
3131
3232 Requirement details
3333 -------------------
3434
35 In addition to the requirements and instructions listed in INSTALL.md,
35 In addition to the requirements and instructions listed in `INSTALL.md`,
3636 these are required as well:
3737
3838 ### Perl
6363
6464 4. Use Visual Studio Developer Command Prompt with administrative privileges,
6565 choosing one of its variants depending on the intended architecture.
66 Or run "cmd" and execute "vcvarsall.bat" with one of the options x86,
67 x86_amd64, x86_arm, x86_arm64, amd64, amd64_x86, amd64_arm, or amd64_arm64.
68 This sets up the environment variables needed for nmake.exe, cl.exe, etc.
66 Or run `cmd` and execute `vcvarsall.bat` with one of the options `x86`,
67 `x86_amd64`, `x86_arm`, `x86_arm64`, `amd64`, `amd64_x86`, `amd64_arm`,
68 or `amd64_arm64`.
69 This sets up the environment variables needed for `nmake.exe`, `cl.exe`,
70 etc.
6971 See also
7072 <https://docs.microsoft.com/cpp/build/building-on-the-command-line>
7173
7274 5. From the root of the OpenSSL source directory enter
73 perl Configure VC-WIN32 if you want 32-bit OpenSSL or
74 perl Configure VC-WIN64A if you want 64-bit OpenSSL or
75 perl Configure to let Configure figure out the platform
76
77 6. nmake
78
79 7. nmake test
80
81 8. nmake install
75 - `perl Configure VC-WIN32` if you want 32-bit OpenSSL or
76 - `perl Configure VC-WIN64A` if you want 64-bit OpenSSL or
77 - `perl Configure VC-WIN64-ARM` if you want Windows on Arm (win-arm64)
78 OpenSSL or
79 - `perl Configure` to let Configure figure out the platform
80
81 6. `nmake`
82
83 7. `nmake test`
84
85 8. `nmake install`
8286
8387 For the full installation instructions, or if anything goes wrong at any stage,
8488 check the INSTALL.md file.
108112 ALSO NOTE that those directories are usually write protected, even if
109113 your account is in the Administrators group. To work around that,
110114 start the command prompt by right-clicking on it and choosing "Run as
111 Administrator" before running 'nmake install'. The other solution
115 Administrator" before running `nmake install`. The other solution
112116 is, of course, to choose a different set of directories by using
113 --prefix and --openssldir when configuring.
114
115 Special notes for Universal Windows Platform builds, aka VC-*-UWP
116 --------------------------------------------------------------------
117 `--prefix` and `--openssldir` when configuring.
118
119 Special notes for Universal Windows Platform builds, aka `VC-*-UWP`
120 -------------------------------------------------------------------
117121
118122 - UWP targets only support building the static and dynamic libraries.
119123
120 - You should define the platform type to "uwp" and the target arch via
121 "vcvarsall.bat" before you compile. For example, if you want to build
122 "arm64" builds, you should run "vcvarsall.bat x86_arm64 uwp".
124 - You should define the platform type to `uwp` and the target arch via
125 `vcvarsall.bat` before you compile. For example, if you want to build
126 `arm64` builds, you should run `vcvarsall.bat x86_arm64 uwp`.
123127
124128 Native builds using Embarcadero C++Builder
125129 =========================================
126130
127131 This toolchain (a descendant of Turbo/Borland C++) is an alternative to MSVC.
128132 OpenSSL currently includes an experimental 32-bit configuration targeting the
129 Clang-based compiler (bcc32c.exe) in v10.3.3 Community Edition.
133 Clang-based compiler (`bcc32c.exe`) in v10.3.3 Community Edition.
130134 <https://www.embarcadero.com/products/cbuilder/starter>
131135
132136 1. Install Perl.
134138 2. Open the RAD Studio Command Prompt.
135139
136140 3. Go to the root of the OpenSSL source directory and run:
137 perl Configure BC-32 --prefix=%CD%
138
139 4. make -N
140
141 5. make -N test
141 `perl Configure BC-32 --prefix=%CD%`
142
143 4. `make -N`
144
145 5. `make -N test`
142146
143147 6. Build your program against this OpenSSL:
144148 * Set your include search path to the "include" subdirectory of OpenSSL.
165169
166170 - Perl, at least version 5.10.0, which usually comes pre-installed with MSYS2
167171
168 - make, installed using "pacman -S make" into the MSYS2 environment
169
170 - MinGW[64] compiler: mingw-w64-i686-gcc and/or mingw-w64-x86_64-gcc.
172 - make, installed using `pacman -S make` into the MSYS2 environment
173
174 - MinGW[64] compiler: `mingw-w64-i686-gcc` and/or `mingw-w64-x86_64-gcc`.
171175 These compilers must be on your MSYS2 $PATH.
172176 A common error is to not have these on your $PATH.
173177 The MSYS2 version of gcc will not work correctly here.
175179 In the MSYS2 shell do the configuration depending on the target architecture:
176180
177181 ./Configure mingw ...
182
178183 or
184
179185 ./Configure mingw64 ...
186
180187 or
188
181189 ./Configure ...
182190
183191 for the default architecture.
184192
185 Apart from that, follow the Unix / Linux instructions in INSTALL.md.
193 Apart from that, follow the Unix / Linux instructions in `INSTALL.md`.
186194
187195 * It is also possible to build mingw[64] on Linux or Cygwin.
188196
189 In this case configure with the corresponding --cross-compile-prefix= option.
190 For example
197 In this case configure with the corresponding `--cross-compile-prefix=`
198 option. For example
191199
192200 ./Configure mingw --cross-compile-prefix=i686-w64-mingw32- ...
201
193202 or
203
194204 ./Configure mingw64 --cross-compile-prefix=x86_64-w64-mingw32- ...
195205
196206 This requires that you've installed the necessary add-on packages for
202212 This section applies to all native builds.
203213
204214 If you link with static OpenSSL libraries then you're expected to
205 additionally link your application with WS2_32.LIB, GDI32.LIB,
206 ADVAPI32.LIB, CRYPT32.LIB and USER32.LIB. Those developing
215 additionally link your application with `WS2_32.LIB`, `GDI32.LIB`,
216 `ADVAPI32.LIB`, `CRYPT32.LIB` and `USER32.LIB`. Those developing
207217 non-interactive service applications might feel concerned about
208 linking with GDI32.LIB and USER32.LIB, as they are justly associated
218 linking with `GDI32.LIB` and `USER32.LIB`, as they are justly associated
209219 with interactive desktop, which is not available to service
210220 processes. The toolkit is designed to detect in which context it's
211221 currently executed, GUI, console app or service, and act accordingly,
212222 namely whether or not to actually make GUI calls. Additionally those
213 who wish to /DELAYLOAD:GDI32.DLL and /DELAYLOAD:USER32.DLL and
223 who wish to `/DELAYLOAD:GDI32.DLL` and `/DELAYLOAD:USER32.DLL` and
214224 actually keep them off service process should consider implementing
215 and exporting from .exe image in question own _OPENSSL_isservice not
216 relying on USER32.DLL. E.g., on Windows Vista and later you could:
225 and exporting from .exe image in question own `_OPENSSL_isservice` not
226 relying on `USER32.DLL`. E.g., on Windows Vista and later you could:
217227
218228 __declspec(dllexport) __cdecl BOOL _OPENSSL_isservice(void)
219229 {
232242 Hosted builds using Cygwin
233243 ==========================
234244
235 Cygwin implements a POSIX/Unix runtime system (cygwin1.dll) on top of the
245 Cygwin implements a POSIX/Unix runtime system (`cygwin1.dll`) on top of the
236246 Windows subsystem and provides a Bash shell and GNU tools environment.
237247 Consequently, a build of OpenSSL with Cygwin is virtually identical to the
238248 Unix procedure.
248258
249259 Apart from that, follow the Unix / Linux instructions in INSTALL.md.
250260
251 NOTE: "make test" and normal file operations may fail in directories
252 mounted as text (i.e. mount -t c:\somewhere /home) due to Cygwin
261 NOTE: `make test` and normal file operations may fail in directories
262 mounted as text (i.e. `mount -t c:\somewhere /home`) due to Cygwin
253263 stripping of carriage returns. To avoid this ensure that a binary
254 mount is used, e.g. mount -b c:\somewhere /home.
264 mount is used, e.g. `mount -b c:\somewhere /home`.
00 MAJOR=3
11 MINOR=0
2 PATCH=2
2 PATCH=3
33 PRE_RELEASE_TAG=
44 BUILD_METADATA=
5 RELEASE_DATE="15 Mar 2022"
5 RELEASE_DATE="3 May 2022"
66 SHLIB_VERSION=3
00 /*
1 * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
23662366
23672367 case REV_CRL_REASON:
23682368 for (i = 0; i < 8; i++) {
2369 if (strcasecmp(rev_arg, crl_reasons[i]) == 0) {
2369 if (OPENSSL_strcasecmp(rev_arg, crl_reasons[i]) == 0) {
23702370 reason = crl_reasons[i];
23712371 break;
23722372 }
25832583 }
25842584 if (reason_str) {
25852585 for (i = 0; i < NUM_REASONS; i++) {
2586 if (strcasecmp(reason_str, crl_reasons[i]) == 0) {
2586 if (OPENSSL_strcasecmp(reason_str, crl_reasons[i]) == 0) {
25872587 reason_code = i;
25882588 break;
25892589 }
17441744 valptr[0] = '\0';
17451745 valptr++;
17461746
1747 if (strncasecmp(valptr, "int:", 4) != 0) {
1747 if (OPENSSL_strncasecmp(valptr, "int:", 4) != 0) {
17481748 CMP_err("missing 'int:' in -geninfo option");
17491749 return 0;
17501750 }
00 /*
1 * Copyright 2002-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2002-2022 The OpenSSL Project Authors. All Rights Reserved.
22 * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved
33 *
44 * Licensed under the Apache License 2.0 (the "License"). You may not use
228228 point_format, 0);
229229 *p = OSSL_PARAM_construct_end();
230230
231 if (strcasecmp(curve_name, "SM2") == 0)
231 if (OPENSSL_strcasecmp(curve_name, "SM2") == 0)
232232 gctx_params = EVP_PKEY_CTX_new_from_name(NULL, "sm2", NULL);
233233 else
234234 gctx_params = EVP_PKEY_CTX_new_from_name(NULL, "ec", NULL);
687687 int ret = 0;
688688 char *pass_string;
689689
690 if (exclude_http && (strncasecmp(uri, "http://", 7) == 0
691 || strncasecmp(uri, "https://", 8) == 0)) {
690 if (exclude_http && (OPENSSL_strncasecmp(uri, "http://", 7) == 0
691 || OPENSSL_strncasecmp(uri, "https://", 8) == 0)) {
692692 BIO_printf(bio_err, "error: HTTP retrieval not allowed for %s\n", desc);
693693 return ret;
694694 }
11811181
11821182 int set_dateopt(unsigned long *dateopt, const char *arg)
11831183 {
1184 if (strcasecmp(arg, "rfc_822") == 0)
1184 if (OPENSSL_strcasecmp(arg, "rfc_822") == 0)
11851185 *dateopt = ASN1_DTFLGS_RFC822;
1186 else if (strcasecmp(arg, "iso_8601") == 0)
1186 else if (OPENSSL_strcasecmp(arg, "iso_8601") == 0)
11871187 *dateopt = ASN1_DTFLGS_ISO8601;
11881188 return 0;
11891189 }
11901190
11911191 int set_ext_copy(int *copy_type, const char *arg)
11921192 {
1193 if (strcasecmp(arg, "none") == 0)
1193 if (OPENSSL_strcasecmp(arg, "none") == 0)
11941194 *copy_type = EXT_COPY_NONE;
1195 else if (strcasecmp(arg, "copy") == 0)
1195 else if (OPENSSL_strcasecmp(arg, "copy") == 0)
11961196 *copy_type = EXT_COPY_ADD;
1197 else if (strcasecmp(arg, "copyall") == 0)
1197 else if (OPENSSL_strcasecmp(arg, "copyall") == 0)
11981198 *copy_type = EXT_COPY_ALL;
11991199 else
12001200 return 0;
12741274 }
12751275
12761276 for (ptbl = in_tbl; ptbl->name; ptbl++) {
1277 if (strcasecmp(arg, ptbl->name) == 0) {
1277 if (OPENSSL_strcasecmp(arg, ptbl->name) == 0) {
12781278 *flags &= ~ptbl->mask;
12791279 if (c)
12801280 *flags |= ptbl->flag;
7070 char *keyid = NULL;
7171 OSSL_STORE_LOADER_CTX *ctx = NULL;
7272
73 if (strncasecmp(p, ENGINE_SCHEME_COLON, sizeof(ENGINE_SCHEME_COLON) - 1)
73 if (OPENSSL_strncasecmp(p, ENGINE_SCHEME_COLON, sizeof(ENGINE_SCHEME_COLON) - 1)
7474 != 0)
7575 return NULL;
7676 p += sizeof(ENGINE_SCHEME_COLON) - 1;
00 /*
1 * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
452452 }
453453 *line_end = '\0';
454454 /* https://tools.ietf.org/html/rfc7230#section-6.3 Persistence */
455 if (found_keep_alive != NULL && strcasecmp(key, "Connection") == 0) {
456 if (strcasecmp(value, "keep-alive") == 0)
455 if (found_keep_alive != NULL
456 && OPENSSL_strcasecmp(key, "Connection") == 0) {
457 if (OPENSSL_strcasecmp(value, "keep-alive") == 0)
457458 *found_keep_alive = 1;
458 else if (strcasecmp(value, "close") == 0)
459 else if (OPENSSL_strcasecmp(value, "close") == 0)
459460 *found_keep_alive = 0;
460461 }
461462 }
00 /*
1 * Copyright 2019-2020 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
1010 #include <openssl/bio.h>
1111 #include <openssl/safestack.h>
1212 #include "names.h"
13
14 #ifdef _WIN32
15 # define strcasecmp _stricmp
16 #endif
13 #include "openssl/crypto.h"
1714
1815 int name_cmp(const char * const *a, const char * const *b)
1916 {
20 return strcasecmp(*a, *b);
17 return OPENSSL_strcasecmp(*a, *b);
2118 }
2219
2320 void collect_names(const char *name, void *vdata)
00 /*
1 * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2016-2022 The OpenSSL Project Authors. All Rights Reserved.
22 * Copyright 2016 VMS Software, Inc. All Rights Reserved.
33 *
44 * Licensed under the Apache License 2.0 (the "License"). You may not use
131131 len;
132132
133133 LogMessage ("Enter 'q' or 'Q' to quit ...");
134 while (strcasecmp (TermBuff, "Q")) {
134 while (OPENSSL_strcasecmp (TermBuff, "Q")) {
135135 /*
136136 ** Create the terminal socket
137137 */
00 /*
1 * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
7070 {
7171 if (select_name != NULL
7272 && (c == NULL
73 || strcasecmp(select_name, EVP_CIPHER_get0_name(c)) != 0))
73 || OPENSSL_strcasecmp(select_name, EVP_CIPHER_get0_name(c)) != 0))
7474 return;
7575 if (c != NULL) {
7676 BIO_printf(arg, " %s\n", EVP_CIPHER_get0_name(c));
369369
370370 static int rand_cmp(const EVP_RAND * const *a, const EVP_RAND * const *b)
371371 {
372 int ret = strcasecmp(EVP_RAND_get0_name(*a), EVP_RAND_get0_name(*b));
372 int ret = OPENSSL_strcasecmp(EVP_RAND_get0_name(*a), EVP_RAND_get0_name(*b));
373373
374374 if (ret == 0)
375375 ret = strcmp(OSSL_PROVIDER_get0_name(EVP_RAND_get0_provider(*a)),
403403 const EVP_RAND *m = sk_EVP_RAND_value(rands, i);
404404
405405 if (select_name != NULL
406 && strcasecmp(EVP_RAND_get0_name(m), select_name) != 0)
406 && OPENSSL_strcasecmp(EVP_RAND_get0_name(m), select_name) != 0)
407407 continue;
408408 BIO_printf(bio_out, " %s", EVP_RAND_get0_name(m));
409409 BIO_printf(bio_out, " @ %s\n",
462462 if (gettables != NULL)
463463 for (; gettables->key != NULL; gettables++) {
464464 /* State has been dealt with already, so ignore */
465 if (strcasecmp(gettables->key, OSSL_RAND_PARAM_STATE) == 0)
465 if (OPENSSL_strcasecmp(gettables->key, OSSL_RAND_PARAM_STATE) == 0)
466466 continue;
467467 /* Outside of verbose mode, we skip non-string values */
468468 if (gettables->data_type != OSSL_PARAM_UTF8_STRING
11141114 single = OCSP_basic_add1_status(bs, cid,
11151115 V_OCSP_CERTSTATUS_REVOKED,
11161116 reason, revtm, thisupd, nextupd);
1117 if (single == NULL) {
1118 *resp = OCSP_response_create(OCSP_RESPONSE_STATUS_INTERNALERROR,
1119 NULL);
1120 goto end;
1121 }
11171122 if (invtm != NULL)
11181123 OCSP_SINGLERESP_add1_ext_i2d(single, NID_invalidity_date,
11191124 invtm, 0, 0);
213213 return -1;
214214 for (type = OSSL_NELEM(suffixes) - 1; type > 0; type--) {
215215 const char *suffix = suffixes[type];
216 if (strncasecmp(suffix, &filename[i], strlen(suffix)) == 0)
216 if (OPENSSL_strncasecmp(suffix, &filename[i], strlen(suffix)) == 0)
217217 break;
218218 }
219219 i += strlen(suffixes[type]);
248248 if ((ext = strrchr(filename, '.')) == NULL)
249249 goto end;
250250 for (i = 0; i < OSSL_NELEM(extensions); i++) {
251 if (strcasecmp(extensions[i], ext + 1) == 0)
251 if (OPENSSL_strcasecmp(extensions[i], ext + 1) == 0)
252252 break;
253253 }
254254 if (i >= OSSL_NELEM(extensions))
991991 goto end;
992992 }
993993 fprintf(stdout, "Modulus=");
994 if (EVP_PKEY_is_a(tpubkey, "RSA")) {
994 if (EVP_PKEY_is_a(tpubkey, "RSA") || EVP_PKEY_is_a(tpubkey, "RSA-PSS")) {
995995 BIGNUM *n = NULL;
996996
997997 if (!EVP_PKEY_get_bn_param(tpubkey, "n", &n))
00 /*
1 * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
256256 ERR_print_errors(bio_err);
257257 goto end;
258258 }
259 if (!EVP_PKEY_is_a(pkey, "RSA")) {
259 if (!EVP_PKEY_is_a(pkey, "RSA") && !EVP_PKEY_is_a(pkey, "RSA-PSS")) {
260260 BIO_printf(bio_err, "Not an RSA key\n");
261261 goto end;
262262 }
431431 return SSL_TLSEXT_ERR_NOACK;
432432
433433 if (servername != NULL) {
434 if (strcasecmp(servername, p->servername))
434 if (OPENSSL_strcasecmp(servername, p->servername))
435435 return p->extension_error;
436436 if (ctx2 != NULL) {
437437 BIO_printf(p->biodebug, "Switching server context.\n");
00 /*
1 * Copyright 2006-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2006-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
975975 const char *propq = app_get0_propq();
976976
977977 cert_ctx = X509_STORE_new();
978 if (cert_ctx == NULL) {
979 BIO_printf(bio_err, "memory allocation failure\n");
980 return NULL;
981 }
978982 X509_STORE_set_verify_cb(cert_ctx, verify_cb);
979983 if (CApath != NULL) {
980984 lookup = X509_STORE_add_lookup(cert_ctx, X509_LOOKUP_hash_dir());
953953 purpose_print(out, x, X509_PURPOSE_get0(j));
954954 } else if (i == modulus) {
955955 BIO_printf(out, "Modulus=");
956 if (EVP_PKEY_is_a(pkey, "RSA")) {
956 if (EVP_PKEY_is_a(pkey, "RSA") || EVP_PKEY_is_a(pkey, "RSA-PSS")) {
957957 BIGNUM *n = NULL;
958958
959959 /* Every RSA key has an 'n' */
00 /*
1 * Copyright 2004-2018 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2004-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
140140 p--;
141141 if (p > (*ctx)->entry_name && p[-1] == ';')
142142 p[-1] = '\0';
143 if (strcasecmp((*ctx)->entry_name, (*ctx)->previous_entry_name) == 0)
143 if (OPENSSL_strcasecmp((*ctx)->entry_name,
144 (*ctx)->previous_entry_name) == 0)
144145 goto again;
145146 }
146147 #endif
00 /*
1 * Copyright 2006-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2006-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
99 /* We need to use some engine deprecated APIs */
1010 #define OPENSSL_SUPPRESS_DEPRECATED
1111
12 #include "e_os.h" /* for strncasecmp */
1312 #include "internal/cryptlib.h"
1413 #include <stdio.h>
1514 #include <openssl/asn1t.h>
133132 if (ameth->pkey_flags & ASN1_PKEY_ALIAS)
134133 continue;
135134 if ((int)strlen(ameth->pem_str) == len
136 && strncasecmp(ameth->pem_str, str, len) == 0)
135 && OPENSSL_strncasecmp(ameth->pem_str, str, len) == 0)
137136 return ameth;
138137 }
139138 return NULL;
00 /*
1 * Copyright 2002-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2002-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
99 #include "internal/cryptlib.h"
1010 #include <openssl/asn1.h>
1111 #include <openssl/x509v3.h>
12 #include "e_os.h" /* strncasecmp() */
1312
1413 #define ASN1_GEN_FLAG 0x10000
1514 #define ASN1_GEN_FLAG_IMP (ASN1_GEN_FLAG|1)
564563
565564 tntmp = tnst;
566565 for (i = 0; i < OSSL_NELEM(tnst); i++, tntmp++) {
567 if ((len == tntmp->len) && (strncasecmp(tntmp->strnam, tagstr, len) == 0))
566 if ((len == tntmp->len)
567 && (OPENSSL_strncasecmp(tntmp->strnam, tagstr, len) == 0))
568568 return tntmp->tag;
569569 }
570570
00 /*
1 * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
445445 snum->neg = num_neg;
446446 snum->top = div_n;
447447 snum->flags |= BN_FLG_FIXED_TOP;
448 if (rm != NULL)
449 bn_rshift_fixed_top(rm, snum, norm_shift);
448
449 if (rm != NULL && bn_rshift_fixed_top(rm, snum, norm_shift) == 0)
450 goto err;
451
450452 BN_CTX_end(ctx);
451453 return 1;
452454 err:
00 /*
1 * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
186186 return ret;
187187 }
188188
189 BN_RECP_CTX_init(&recp);
190
189191 BN_CTX_start(ctx);
190192 aa = BN_CTX_get(ctx);
191193 val[0] = BN_CTX_get(ctx);
192194 if (val[0] == NULL)
193195 goto err;
194196
195 BN_RECP_CTX_init(&recp);
196197 if (m->neg) {
197198 /* ignore sign of 'm' */
198199 if (!BN_copy(aa, m))
00 /*
1 * Copyright 2006-2020 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2006-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
498498 PUTU32(plaintext + 12, s1);
499499 }
500500
501 void Camellia_DecryptBlock(int keyBitLength, const u8 plaintext[],
502 const KEY_TABLE_TYPE keyTable, u8 ciphertext[])
501 void Camellia_DecryptBlock(int keyBitLength, const u8 ciphertext[],
502 const KEY_TABLE_TYPE keyTable, u8 plaintext[])
503503 {
504504 Camellia_DecryptBlock_Rounds(keyBitLength == 128 ? 3 : 4,
505 plaintext, keyTable, ciphertext);
505 ciphertext, keyTable, plaintext);
506506 }
44 $CHACHAASM_x86=chacha-x86.s
55 $CHACHAASM_x86_64=chacha-x86_64.s
66
7 $CHACHAASM_ia64=chacha-ia64.S
7 $CHACHAASM_ia64=chacha-ia64.s
88
99 $CHACHAASM_s390x=chacha-s390x.S
1010
3535 INCLUDE[chacha-s390x.o]=..
3636 GENERATE[chacha-c64xplus.S]=asm/chacha-c64xplus.pl
3737 GENERATE[chacha-s390x.S]=asm/chacha-s390x.pl
38 GENERATE[chacha-ia64.S]=asm/chacha-ia64.pl
38 GENERATE[chacha-ia64.s]=asm/chacha-ia64.pl
00 /*
1 * Copyright 2008-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2008-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
4040 ci = ASN1_item_d2i_bio_ex(ASN1_ITEM_rptr(CMS_ContentInfo), bp, cms,
4141 ossl_cms_ctx_get0_libctx(ctx),
4242 ossl_cms_ctx_get0_propq(ctx));
43 if (ci != NULL)
43 if (ci != NULL) {
44 ERR_set_mark();
4445 ossl_cms_resolve_libctx(ci);
46 ERR_pop_to_mark();
47 }
4548 return ci;
4649 }
4750
103106 (ASN1_VALUE **)cms,
104107 ossl_cms_ctx_get0_libctx(ctx),
105108 ossl_cms_ctx_get0_propq(ctx));
106 if (ci != NULL)
109 if (ci != NULL) {
110 ERR_set_mark();
107111 ossl_cms_resolve_libctx(ci);
112 ERR_pop_to_mark();
113 }
108114 return ci;
109115 }
110116
00 /*
1 * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
1010
1111 #include <stdio.h>
1212 #include <string.h>
13 #include "e_os.h" /* strcasecmp and struct stat */
13 #include "e_os.h" /* struct stat */
1414 #ifdef __TANDEM
1515 # include <sys/types.h> /* needed for stat.h */
1616 # include <sys/stat.h> /* struct stat */
191191 /* Parse a boolean value and fill in *flag. Return 0 on error. */
192192 static int parsebool(const char *pval, int *flag)
193193 {
194 if (strcasecmp(pval, "on") == 0
195 || strcasecmp(pval, "true") == 0) {
194 if (OPENSSL_strcasecmp(pval, "on") == 0
195 || OPENSSL_strcasecmp(pval, "true") == 0) {
196196 *flag = 1;
197 } else if (strcasecmp(pval, "off") == 0
198 || strcasecmp(pval, "false") == 0) {
197 } else if (OPENSSL_strcasecmp(pval, "off") == 0
198 || OPENSSL_strcasecmp(pval, "false") == 0) {
199199 *flag = 0;
200200 } else {
201201 ERR_raise(ERR_LIB_CONF, CONF_R_INVALID_PRAGMA);
838838 namelen = strlen(filename);
839839
840840
841 if ((namelen > 5 && strcasecmp(filename + namelen - 5, ".conf") == 0)
842 || (namelen > 4 && strcasecmp(filename + namelen - 4, ".cnf") == 0)) {
841 if ((namelen > 5
842 && OPENSSL_strcasecmp(filename + namelen - 5, ".conf") == 0)
843 || (namelen > 4
844 && OPENSSL_strcasecmp(filename + namelen - 4, ".cnf") == 0)) {
843845 size_t newlen;
844846 char *newpath;
845847 BIO *bio;
1313 #include "internal/core.h"
1414 #include "internal/bio.h"
1515 #include "internal/provider.h"
16 #include "crypto/ctype.h"
1617
1718 struct ossl_lib_ctx_onfree_list_st {
1819 ossl_lib_ctx_onfree_fn *fn;
149150 DEFINE_RUN_ONCE_STATIC(default_context_do_init)
150151 {
151152 return CRYPTO_THREAD_init_local(&default_context_thread_local, NULL)
152 && context_init(&default_context_int);
153 && context_init(&default_context_int)
154 && ossl_init_casecmp();
153155 }
154156
155157 void ossl_lib_ctx_default_deinit(void)
66 * https://www.openssl.org/source/license.html
77 */
88
9 #include "e_os.h" /* strcasecmp */
109 #include "internal/namemap.h"
1110 #include <openssl/lhash.h>
1211 #include "crypto/lhash.h" /* ossl_lh_strcasehash */
4847
4948 static int namenum_cmp(const NAMENUM_ENTRY *a, const NAMENUM_ENTRY *b)
5049 {
51 return strcasecmp(a->name, b->name);
50 return OPENSSL_strcasecmp(a->name, b->name);
5251 }
5352
5453 static void namenum_free(NAMENUM_ENTRY *n)
00 /*
1 * Copyright 2017-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2017-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
1010 #include <stdio.h>
1111 #include "crypto/ctype.h"
1212 #include <openssl/ebcdic.h>
13
14 #include <openssl/crypto.h>
15 #include "internal/core.h"
16 #include "internal/thread_once.h"
17
18 #ifndef OPENSSL_SYS_WINDOWS
19 #include <strings.h>
20 #endif
21 #include <locale.h>
22
23 #ifdef OPENSSL_SYS_MACOSX
24 #include <xlocale.h>
25 #endif
1326
1427 /*
1528 * Define the character classes for each character in the seven bit ASCII
277290 return 1;
278291 return 0;
279292 }
293
294 /* str[n]casecmp_l is defined in POSIX 2008-01. Value is taken accordingly
295 * https://www.gnu.org/software/libc/manual/html_node/Feature-Test-Macros.html */
296
297 #if (defined OPENSSL_SYS_WINDOWS) || (defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 200809L)
298
299 # if defined OPENSSL_SYS_WINDOWS
300 # define locale_t _locale_t
301 # define freelocale _free_locale
302 # define strcasecmp_l _stricmp_l
303 # define strncasecmp_l _strnicmp_l
304 # endif
305
306 # ifndef FIPS_MODULE
307 static locale_t loc;
308
309 static int locale_base_inited = 0;
310 static CRYPTO_ONCE locale_base = CRYPTO_ONCE_STATIC_INIT;
311 static CRYPTO_ONCE locale_base_deinit = CRYPTO_ONCE_STATIC_INIT;
312
313 void *ossl_c_locale() {
314 return (void *)loc;
315 }
316
317 DEFINE_RUN_ONCE_STATIC(ossl_init_locale_base)
318 {
319 # ifdef OPENSSL_SYS_WINDOWS
320 loc = _create_locale(LC_COLLATE, "C");
321 # else
322 loc = newlocale(LC_COLLATE_MASK, "C", (locale_t) 0);
323 # endif
324 locale_base_inited = 1;
325 return (loc == (locale_t) 0) ? 0 : 1;
326 }
327
328 DEFINE_RUN_ONCE_STATIC(ossl_deinit_locale_base)
329 {
330 if (locale_base_inited && loc) {
331 freelocale(loc);
332 loc = NULL;
333 }
334 return 1;
335 }
336
337 int ossl_init_casecmp()
338 {
339 return RUN_ONCE(&locale_base, ossl_init_locale_base);
340 }
341
342 void ossl_deinit_casecmp() {
343 (void)RUN_ONCE(&locale_base_deinit, ossl_deinit_locale_base);
344 }
345 # endif
346
347 int OPENSSL_strcasecmp(const char *s1, const char *s2)
348 {
349 return strcasecmp_l(s1, s2, (locale_t)ossl_c_locale());
350 }
351
352 int OPENSSL_strncasecmp(const char *s1, const char *s2, size_t n)
353 {
354 return strncasecmp_l(s1, s2, n, (locale_t)ossl_c_locale());
355 }
356 #else
357 # ifndef FIPS_MODULE
358 void *ossl_c_locale() {
359 return NULL;
360 }
361 # endif
362
363 int ossl_init_casecmp() {
364 return 1;
365 }
366
367 void ossl_deinit_casecmp() {
368 }
369
370 int OPENSSL_strcasecmp(const char *s1, const char *s2)
371 {
372 return strcasecmp(s1, s2);
373 }
374
375 int OPENSSL_strncasecmp(const char *s1, const char *s2, size_t n)
376 {
377 return strncasecmp(s1, s2, n);
378 }
379 #endif
00 /*
1 * Copyright 2017-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2017-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
2222 #include <openssl/objects.h>
2323 #include "internal/nelem.h"
2424 #include "crypto/dh.h"
25 #include "e_os.h" /* strcasecmp */
2625
2726 static DH *dh_param_init(OSSL_LIB_CTX *libctx, const DH_NAMED_GROUP *group)
2827 {
00 /*
1 * Copyright 2013-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2013-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
3838 const char *mdname = EVP_MD_get0_name(md);
3939
4040 kdf = EVP_KDF_fetch(libctx, OSSL_KDF_NAME_X942KDF_ASN1, propq);
41 if (kdf == NULL)
42 return 0;
4143 kctx = EVP_KDF_CTX_new(kdf);
4244 if (kctx == NULL)
4345 goto err;
00 /*
1 * Copyright 2017-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2017-2022 The OpenSSL Project Authors. All Rights Reserved.
22 * Copyright 2015-2016 Cryptography Research, Inc.
33 *
44 * Licensed under the Apache License 2.0 (the "License"). You may not use
585585 int32_t delta = odd & mask;
586586
587587 assert(position >= 0);
588 assert(pos < 32); /* can't fail since current & 0xFFFF != 0 */
588589 if (odd & (1 << (table_bits + 1)))
589590 delta -= (1 << (table_bits + 1));
590591 current -= delta * (1 << pos);
00 /*
1 * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2020-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
5353 return OPENSSL_EC_NAMED_CURVE;
5454
5555 for (i = 0, sz = OSSL_NELEM(encoding_nameid_map); i < sz; i++) {
56 if (strcasecmp(name, encoding_nameid_map[i].ptr) == 0)
56 if (OPENSSL_strcasecmp(name, encoding_nameid_map[i].ptr) == 0)
5757 return encoding_nameid_map[i].id;
5858 }
5959 return -1;
9090 return 0;
9191
9292 for (i = 0, sz = OSSL_NELEM(check_group_type_nameid_map); i < sz; i++) {
93 if (strcasecmp(name, check_group_type_nameid_map[i].ptr) == 0)
93 if (OPENSSL_strcasecmp(name, check_group_type_nameid_map[i].ptr) == 0)
9494 return check_group_type_nameid_map[i].id;
9595 }
9696 return -1;
135135 return (int)POINT_CONVERSION_UNCOMPRESSED;
136136
137137 for (i = 0, sz = OSSL_NELEM(format_nameid_map); i < sz; i++) {
138 if (strcasecmp(name, format_nameid_map[i].ptr) == 0)
138 if (OPENSSL_strcasecmp(name, format_nameid_map[i].ptr) == 0)
139139 return format_nameid_map[i].id;
140140 }
141141 return -1;
00 /*
11 * Generated by util/mkerr.pl DO NOT EDIT
2 * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
2 * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
33 *
44 * Licensed under the Apache License 2.0 (the "License"). You may not use
55 * this file except in compliance with the License. You can obtain a copy
3434 "discriminant is zero"},
3535 {ERR_PACK(ERR_LIB_EC, 0, EC_R_EC_GROUP_NEW_BY_NAME_FAILURE),
3636 "ec group new by name failure"},
37 {ERR_PACK(ERR_LIB_EC, 0, EC_R_EXPLICIT_PARAMS_NOT_SUPPORTED),
38 "explicit params not supported"},
3739 {ERR_PACK(ERR_LIB_EC, 0, EC_R_FAILED_MAKING_PUBLIC_KEY),
3840 "failed making public key"},
3941 {ERR_PACK(ERR_LIB_EC, 0, EC_R_FIELD_TOO_LARGE), "field too large"},
2121 #include "crypto/ec.h"
2222 #include "internal/nelem.h"
2323 #include "ec_local.h"
24 #include "e_os.h" /* strcasecmp */
2524
2625 /* functions for EC_GROUP objects */
2726
13861385 }
13871386 #endif
13881387
1388 #ifndef FIPS_MODULE
13891389 /*
13901390 * Check if the explicit parameters group matches any built-in curves.
13911391 *
14231423 * parameters with one created from a named group.
14241424 */
14251425
1426 #ifndef OPENSSL_NO_EC_NISTP_64_GCC_128
1426 # ifndef OPENSSL_NO_EC_NISTP_64_GCC_128
14271427 /*
14281428 * NID_wap_wsg_idm_ecid_wtls12 and NID_secp224r1 are both aliases for
14291429 * the same curve, we prefer the SECP nid when matching explicit
14311431 */
14321432 if (curve_name_nid == NID_wap_wsg_idm_ecid_wtls12)
14331433 curve_name_nid = NID_secp224r1;
1434 #endif /* !def(OPENSSL_NO_EC_NISTP_64_GCC_128) */
1434 # endif /* !def(OPENSSL_NO_EC_NISTP_64_GCC_128) */
14351435
14361436 ret_group = EC_GROUP_new_by_curve_name_ex(libctx, propq, curve_name_nid);
14371437 if (ret_group == NULL)
14661466 EC_GROUP_free(ret_group);
14671467 return NULL;
14681468 }
1469 #endif /* FIPS_MODULE */
14691470
14701471 static EC_GROUP *group_new_from_name(const OSSL_PARAM *p,
14711472 OSSL_LIB_CTX *libctx, const char *propq)
15351536 EC_GROUP *EC_GROUP_new_from_params(const OSSL_PARAM params[],
15361537 OSSL_LIB_CTX *libctx, const char *propq)
15371538 {
1538 const OSSL_PARAM *ptmp, *pa, *pb;
1539 const OSSL_PARAM *ptmp;
1540 EC_GROUP *group = NULL;
1541
1542 #ifndef FIPS_MODULE
1543 const OSSL_PARAM *pa, *pb;
15391544 int ok = 0;
1540 EC_GROUP *group = NULL, *named_group = NULL;
1545 EC_GROUP *named_group = NULL;
15411546 BIGNUM *p = NULL, *a = NULL, *b = NULL, *order = NULL, *cofactor = NULL;
15421547 EC_POINT *point = NULL;
15431548 int field_bits = 0;
15451550 BN_CTX *bnctx = NULL;
15461551 const unsigned char *buf = NULL;
15471552 int encoding_flag = -1;
1553 #endif
15481554
15491555 /* This is the simple named group case */
15501556 ptmp = OSSL_PARAM_locate_const(params, OSSL_PKEY_PARAM_GROUP_NAME);
15581564 }
15591565 return group;
15601566 }
1567 #ifdef FIPS_MODULE
1568 ERR_raise(ERR_LIB_EC, EC_R_EXPLICIT_PARAMS_NOT_SUPPORTED);
1569 return NULL;
1570 #else
15611571 /* If it gets here then we are trying explicit parameters */
15621572 bnctx = BN_CTX_new_ex(libctx);
15631573 if (bnctx == NULL) {
15801590 ERR_raise(ERR_LIB_EC, EC_R_INVALID_FIELD);
15811591 goto err;
15821592 }
1583 if (strcasecmp(ptmp->data, SN_X9_62_prime_field) == 0) {
1593 if (OPENSSL_strcasecmp(ptmp->data, SN_X9_62_prime_field) == 0) {
15841594 is_prime_field = 1;
1585 } else if (strcasecmp(ptmp->data, SN_X9_62_characteristic_two_field) == 0) {
1595 } else if (OPENSSL_strcasecmp(ptmp->data,
1596 SN_X9_62_characteristic_two_field) == 0) {
15861597 is_prime_field = 0;
15871598 } else {
15881599 /* Invalid field */
16221633 /* create the EC_GROUP structure */
16231634 group = EC_GROUP_new_curve_GFp(p, a, b, bnctx);
16241635 } else {
1625 #ifdef OPENSSL_NO_EC2M
1636 # ifdef OPENSSL_NO_EC2M
16261637 ERR_raise(ERR_LIB_EC, EC_R_GF2M_NOT_SUPPORTED);
16271638 goto err;
1628 #else
1639 # else
16291640 /* create the EC_GROUP structure */
16301641 group = EC_GROUP_new_curve_GF2m(p, a, b, NULL);
16311642 if (group != NULL) {
16351646 goto err;
16361647 }
16371648 }
1638 #endif /* OPENSSL_NO_EC2M */
1649 # endif /* OPENSSL_NO_EC2M */
16391650 }
16401651
16411652 if (group == NULL) {
17321743 BN_CTX_free(bnctx);
17331744
17341745 return group;
1735 }
1746 #endif /* FIPS_MODULE */
1747 }
00 /*
1 * Copyright 2014-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2014-2022 The OpenSSL Project Authors. All Rights Reserved.
22 * Copyright (c) 2014, Intel Corporation. All Rights Reserved.
33 * Copyright (c) 2015, CloudFlare, Inc.
44 *
977977 return 0;
978978 }
979979
980 memset(&p, 0, sizeof(p));
980981 BN_CTX_start(ctx);
981982
982983 if (scalar) {
00 /*
1 * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2020-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
788788 */
789789 trace_data_structure = data_structure;
790790 if (data_type != NULL && data_structure != NULL
791 && strcasecmp(data_structure, "type-specific") == 0)
791 && OPENSSL_strcasecmp(data_structure, "type-specific") == 0)
792792 data_structure = NULL;
793793
794794 OSSL_TRACE_BEGIN(DECODER) {
849849 * that's the case, we do this extra check.
850850 */
851851 if (decoder == NULL && ctx->start_input_type != NULL
852 && strcasecmp(ctx->start_input_type, new_input_type) != 0) {
852 && OPENSSL_strcasecmp(ctx->start_input_type, new_input_type) != 0) {
853853 OSSL_TRACE_BEGIN(DECODER) {
854854 BIO_printf(trc_out,
855855 "(ctx %p) %s [%u] the start input type '%s' doesn't match the input type of the considered decoder, skipping...\n",
895895 */
896896 if (data_structure != NULL
897897 && (new_input_structure == NULL
898 || strcasecmp(data_structure, new_input_structure) != 0)) {
898 || OPENSSL_strcasecmp(data_structure,
899 new_input_structure) != 0)) {
899900 OSSL_TRACE_BEGIN(DECODER) {
900901 BIO_printf(trc_out,
901902 "(ctx %p) %s [%u] the previous decoder's data structure doesn't match the input structure of the considered decoder, skipping...\n",
914915 && ctx->input_structure != NULL
915916 && new_input_structure != NULL) {
916917 data->flag_input_structure_checked = 1;
917 if (strcasecmp(new_input_structure, ctx->input_structure) != 0) {
918 if (OPENSSL_strcasecmp(new_input_structure,
919 ctx->input_structure) != 0) {
918920 OSSL_TRACE_BEGIN(DECODER) {
919921 BIO_printf(trc_out,
920922 "(ctx %p) %s [%u] the previous decoder's data structure doesn't match the input structure given by the user, skipping...\n",
00 /*
1 * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2020-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
1717 #include "crypto/evp.h"
1818 #include "crypto/decoder.h"
1919 #include "encoder_local.h"
20 #include "e_os.h" /* strcasecmp on Windows */
2120
2221 int OSSL_DECODER_CTX_set_passphrase(OSSL_DECODER_CTX *ctx,
2322 const unsigned char *kstr,
00 /*
1 * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
66 * https://www.openssl.org/source/license.html
77 */
88
9 #include "e_os.h" /* strcasecmp on Windows */
109 #include <openssl/core_names.h>
1110 #include <openssl/bio.h>
1211 #include <openssl/encoder.h>
452451 */
453452 if (top) {
454453 if (data->ctx->output_type != NULL
455 && strcasecmp(current_output_type,
456 data->ctx->output_type) != 0) {
454 && OPENSSL_strcasecmp(current_output_type,
455 data->ctx->output_type) != 0) {
457456 OSSL_TRACE_BEGIN(ENCODER) {
458457 BIO_printf(trc_out,
459458 "[%d] Skipping because current encoder output type (%s) != desired output type (%s)\n",
481480 */
482481 if (data->ctx->output_structure != NULL
483482 && current_output_structure != NULL) {
484 if (strcasecmp(data->ctx->output_structure,
485 current_output_structure) != 0) {
483 if (OPENSSL_strcasecmp(data->ctx->output_structure,
484 current_output_structure) != 0) {
486485 OSSL_TRACE_BEGIN(ENCODER) {
487486 BIO_printf(trc_out,
488487 "[%d] Skipping because current encoder output structure (%s) != ctx output structure (%s)\n",
66 * https://www.openssl.org/source/license.html
77 */
88
9 #include "e_os.h" /* strcasecmp on Windows */
109 #include <openssl/err.h>
1110 #include <openssl/ui.h>
1211 #include <openssl/params.h>
400400 return 0;
401401 }
402402
403 /*
404 * Unfortunately the version checker does not distinguish between
405 * engines built for openssl 1.1.x and openssl 3.x, but loading
406 * an engine that is built for openssl 1.1.x will cause a fatal
407 * error. Detect such engines, since EVP_PKEY_base_id is exported
408 * as a function in openssl 1.1.x, while it is named EVP_PKEY_get_base_id
409 * in openssl 3.x. Therefore we take the presence of that symbol
410 * as an indication that the engine will be incompatible.
411 */
412 static int using_libcrypto_11(dynamic_data_ctx *ctx)
413 {
414 int ret;
415
416 ERR_set_mark();
417 ret = DSO_bind_func(ctx->dynamic_dso, "EVP_PKEY_base_id") != NULL;
418 ERR_pop_to_mark();
419
420 return ret;
421 }
422
403423 static int dynamic_load(ENGINE *e, dynamic_data_ctx *ctx)
404424 {
405425 ENGINE cpy;
449469 /*
450470 * We fail if the version checker veto'd the load *or* if it is
451471 * deferring to us (by returning its version) and we think it is too
452 * old.
453 * Unfortunately the version checker does not distinguish between
454 * engines built for openssl 1.1.x and openssl 3.x, but loading
455 * an engine that is built for openssl 1.1.x will cause a fatal
456 * error. Detect such engines, since EVP_PKEY_base_id is exported
457 * as a function in openssl 1.1.x, while it is a macro in openssl 3.x,
458 * and therefore only the symbol EVP_PKEY_get_base_id is available
459 * in openssl 3.x.
472 * old. Also fail if this is engine for openssl 1.1.x.
460473 */
461 if (vcheck_res < OSSL_DYNAMIC_OLDEST
462 || DSO_bind_func(ctx->dynamic_dso,
463 "EVP_PKEY_base_id") != NULL) {
474 if (vcheck_res < OSSL_DYNAMIC_OLDEST || using_libcrypto_11(ctx)) {
464475 /* Fail */
465476 ctx->bind_engine = NULL;
466477 ctx->v_check = NULL;
00 /*
1 * Copyright 2006-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2006-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
151151 e->pkey_asn1_meths(e, &ameth, NULL, nids[i]);
152152 if (ameth != NULL
153153 && ((int)strlen(ameth->pem_str) == len)
154 && strncasecmp(ameth->pem_str, str, len) == 0)
154 && OPENSSL_strncasecmp(ameth->pem_str, str, len) == 0)
155155 return ameth;
156156 }
157157 return NULL;
176176 e->pkey_asn1_meths(e, &ameth, NULL, nid);
177177 if (ameth != NULL
178178 && ((int)strlen(ameth->pem_str) == lk->len)
179 && strncasecmp(ameth->pem_str, lk->str, lk->len) == 0) {
179 && OPENSSL_strncasecmp(ameth->pem_str, lk->str, lk->len) == 0) {
180180 lk->e = e;
181181 lk->ameth = ameth;
182182 return;
0 # Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved.
0 # Copyright 1999-2022 The OpenSSL Project Authors. All Rights Reserved.
11 #
22 # Licensed under the Apache License 2.0 (the "License"). You may not use
33 # this file except in compliance with the License. You can obtain a copy
536536 EC_R_DECODE_ERROR:142:decode error
537537 EC_R_DISCRIMINANT_IS_ZERO:118:discriminant is zero
538538 EC_R_EC_GROUP_NEW_BY_NAME_FAILURE:119:ec group new by name failure
539 EC_R_EXPLICIT_PARAMS_NOT_SUPPORTED:127:explicit params not supported
539540 EC_R_FAILED_MAKING_PUBLIC_KEY:166:failed making public key
540541 EC_R_FIELD_TOO_LARGE:143:field too large
541542 EC_R_GF2M_NOT_SUPPORTED:147:gf2m not supported
3535 #include "crypto/evp.h"
3636 #include "crypto/dh.h"
3737 #include "crypto/ec.h"
38
39 #include "e_os.h" /* strcasecmp() for Windows */
4038
4139 struct translation_ctx_st; /* Forwarding */
4240 struct translation_st; /* Forwarding */
904902
905903 /* Convert KDF type strings to numbers */
906904 for (; kdf_type_map->kdf_type_str != NULL; kdf_type_map++)
907 if (strcasecmp(ctx->p2, kdf_type_map->kdf_type_str) == 0) {
905 if (OPENSSL_strcasecmp(ctx->p2, kdf_type_map->kdf_type_str) == 0) {
908906 ctx->p1 = kdf_type_map->kdf_type_num;
909907 ret = 1;
910908 break;
10731071 return 0;
10741072
10751073 if (state == PRE_CTRL_STR_TO_PARAMS) {
1076 ctx->p2 = (char *)ossl_dh_gen_type_id2name(atoi(ctx->p2));
1074 if ((ctx->p2 = (char *)ossl_dh_gen_type_id2name(atoi(ctx->p2)))
1075 == NULL) {
1076 ERR_raise(ERR_LIB_EVP, EVP_R_INVALID_VALUE);
1077 return 0;
1078 }
10771079 ctx->p1 = strlen(ctx->p2);
10781080 }
10791081
24682470 * cmd name in the template.
24692471 */
24702472 if (item->ctrl_str != NULL
2471 && strcasecmp(tmpl->ctrl_str, item->ctrl_str) == 0)
2473 && OPENSSL_strcasecmp(tmpl->ctrl_str, item->ctrl_str) == 0)
24722474 ctrl_str = tmpl->ctrl_str;
24732475 else if (item->ctrl_hexstr != NULL
2474 && strcasecmp(tmpl->ctrl_hexstr, item->ctrl_hexstr) == 0)
2476 && OPENSSL_strcasecmp(tmpl->ctrl_hexstr,
2477 item->ctrl_hexstr) == 0)
24752478 ctrl_hexstr = tmpl->ctrl_hexstr;
24762479 else
24772480 continue;
24992502 if ((item->action_type != NONE
25002503 && tmpl->action_type != item->action_type)
25012504 || (item->param_key != NULL
2502 && strcasecmp(tmpl->param_key, item->param_key) != 0))
2505 && OPENSSL_strcasecmp(tmpl->param_key,
2506 item->param_key) != 0))
25032507 continue;
25042508 } else {
25052509 return NULL;
00 /*
1 * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2020-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
99 #include <string.h>
1010 #include <openssl/ec.h>
1111 #include "crypto/ec.h"
12 #include "e_os.h" /* strcasecmp required by windows */
12 #include "internal/nelem.h"
1313
1414 typedef struct ec_name2nid_st {
1515 const char *name;
138138 return nid;
139139
140140 for (i = 0; i < OSSL_NELEM(curve_list); i++) {
141 if (strcasecmp(curve_list[i].name, name) == 0)
141 if (OPENSSL_strcasecmp(curve_list[i].name, name) == 0)
142142 return curve_list[i].nid;
143143 }
144144 }
343343
344344 case EVP_CIPH_CBC_MODE:
345345 n = EVP_CIPHER_CTX_get_iv_length(ctx);
346 if (!ossl_assert(n >= 0 && n <= (int)sizeof(ctx->iv)))
347 return 0;
346 if (n < 0 || n > (int)sizeof(ctx->iv)) {
347 ERR_raise(ERR_LIB_EVP, EVP_R_INVALID_IV_LENGTH);
348 return 0;
349 }
348350 if (iv != NULL)
349351 memcpy(ctx->oiv, iv, n);
350352 memcpy(ctx->iv, ctx->oiv, n);
354356 ctx->num = 0;
355357 /* Don't reuse IV for CTR mode */
356358 if (iv != NULL) {
357 if ((n = EVP_CIPHER_CTX_get_iv_length(ctx)) <= 0)
359 n = EVP_CIPHER_CTX_get_iv_length(ctx);
360 if (n <= 0 || n > (int)sizeof(ctx->iv)) {
361 ERR_raise(ERR_LIB_EVP, EVP_R_INVALID_IV_LENGTH);
358362 return 0;
363 }
359364 memcpy(ctx->iv, iv, n);
360365 }
361366 break;
00 /*
1 * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
1414
1515 #include <stdio.h>
1616 #include <string.h>
17 #include "e_os.h" /* strcasecmp */
1817 #include "internal/cryptlib.h"
1918 #include <openssl/evp.h>
2019 #include <openssl/objects.h>
11691168
11701169 va_start(args, type);
11711170
1172 if (strcasecmp(type, "RSA") == 0) {
1171 if (OPENSSL_strcasecmp(type, "RSA") == 0) {
11731172 bits = va_arg(args, size_t);
11741173 params[0] = OSSL_PARAM_construct_size_t(OSSL_PKEY_PARAM_RSA_BITS, &bits);
1175 } else if (strcasecmp(type, "EC") == 0) {
1174 } else if (OPENSSL_strcasecmp(type, "EC") == 0) {
11761175 name = va_arg(args, char *);
11771176 params[0] = OSSL_PARAM_construct_utf8_string(OSSL_PKEY_PARAM_GROUP_NAME,
11781177 name, 0);
1179 } else if (strcasecmp(type, "ED25519") != 0
1180 && strcasecmp(type, "X25519") != 0
1181 && strcasecmp(type, "ED448") != 0
1182 && strcasecmp(type, "X448") != 0) {
1178 } else if (OPENSSL_strcasecmp(type, "ED25519") != 0
1179 && OPENSSL_strcasecmp(type, "X25519") != 0
1180 && OPENSSL_strcasecmp(type, "ED448") != 0
1181 && OPENSSL_strcasecmp(type, "X448") != 0) {
11831182 ERR_raise(ERR_LIB_EVP, ERR_R_PASSED_INVALID_ARGUMENT);
11841183 goto end;
11851184 }
00 /*
1 * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 1999-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
4141 salt = (unsigned char *)empty;
4242
4343 kdf = EVP_KDF_fetch(libctx, OSSL_KDF_NAME_PBKDF2, propq);
44 if (kdf == NULL)
45 return 0;
4446 kctx = EVP_KDF_CTX_new(kdf);
4547 EVP_KDF_free(kdf);
4648 if (kctx == NULL)
00 /*
1 * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
4848 #endif
4949 #include "internal/provider.h"
5050 #include "evp_local.h"
51
52 #include "e_os.h" /* strcasecmp on Windows */
5351
5452 static int pkey_set_type(EVP_PKEY *pkey, ENGINE *e, int type, const char *str,
5553 int len, EVP_KEYMGMT *keymgmt);
10171015 size_t i;
10181016
10191017 for (i = 0; i < OSSL_NELEM(standard_name2type); i++) {
1020 if (strcasecmp(name, standard_name2type[i].ptr) == 0)
1018 if (OPENSSL_strcasecmp(name, standard_name2type[i].ptr) == 0)
10211019 return (int)standard_name2type[i].id;
10221020 }
10231021
00 /*
1 * Copyright 2006-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2006-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
2626 #ifndef FIPS_MODULE
2727 # include "crypto/asn1.h"
2828 #endif
29 #include "crypto/ctype.h"
2930 #include "crypto/evp.h"
3031 #include "crypto/dh.h"
3132 #include "crypto/ec.h"
198199 }
199200 #ifndef FIPS_MODULE
200201 if (keytype != NULL) {
202 ossl_init_casecmp();
201203 id = evp_pkey_name2type(keytype);
202204 if (id == NID_undef)
203205 id = -1;
00 /*
1 * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2020-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
99 #include "internal/ffc.h"
1010 #include "internal/nelem.h"
1111 #include "crypto/bn_dh.h"
12 #include "e_os.h" /* strcasecmp */
1312
1413 #ifndef OPENSSL_NO_DH
1514
8382 size_t i;
8483
8584 for (i = 0; i < OSSL_NELEM(dh_named_groups); ++i) {
86 if (strcasecmp(dh_named_groups[i].name, name) == 0)
85 if (OPENSSL_strcasecmp(dh_named_groups[i].name, name) == 0)
8786 return &dh_named_groups[i];
8887 }
8988 return NULL;
00 /*
1 * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
1111 #include "internal/ffc.h"
1212 #include "internal/param_build_set.h"
1313 #include "internal/nelem.h"
14 #include "e_os.h" /* strcasecmp */
1514
1615 #ifndef FIPS_MODULE
1716 # include <openssl/asn1.h> /* ossl_ffc_params_print */
321321
322322 for (i = 0; i < sk_CONF_VALUE_num(headers); i++) {
323323 hdr = sk_CONF_VALUE_value(headers, i);
324 if (add_host && strcasecmp("host", hdr->name) == 0)
324 if (add_host && OPENSSL_strcasecmp("host", hdr->name) == 0)
325325 add_host = 0;
326326 if (!OSSL_HTTP_REQ_CTX_add1_header(rctx, hdr->name, hdr->value))
327327 return 0;
665665 }
666666 if (value != NULL && line_end != NULL) {
667667 if (rctx->state == OHS_REDIRECT
668 && strcasecmp(key, "Location") == 0) {
668 && OPENSSL_strcasecmp(key, "Location") == 0) {
669669 rctx->redirection_url = value;
670670 return 0;
671671 }
672 if (rctx->expected_ct != NULL
673 && strcasecmp(key, "Content-Type") == 0) {
674 if (strcasecmp(rctx->expected_ct, value) != 0) {
672 if (rctx->state == OHS_HEADERS && rctx->expected_ct != NULL
673 && OPENSSL_strcasecmp(key, "Content-Type") == 0) {
674 if (OPENSSL_strcasecmp(rctx->expected_ct, value) != 0) {
675675 ERR_raise_data(ERR_LIB_HTTP, HTTP_R_UNEXPECTED_CONTENT_TYPE,
676676 "expected=%s, actual=%s",
677677 rctx->expected_ct, value);
681681 }
682682
683683 /* https://tools.ietf.org/html/rfc7230#section-6.3 Persistence */
684 if (strcasecmp(key, "Connection") == 0) {
685 if (strcasecmp(value, "keep-alive") == 0)
684 if (OPENSSL_strcasecmp(key, "Connection") == 0) {
685 if (OPENSSL_strcasecmp(value, "keep-alive") == 0)
686686 found_keep_alive = 1;
687 else if (strcasecmp(value, "close") == 0)
687 else if (OPENSSL_strcasecmp(value, "close") == 0)
688688 found_keep_alive = 0;
689 } else if (strcasecmp(key, "Content-Length") == 0) {
689 } else if (OPENSSL_strcasecmp(key, "Content-Length") == 0) {
690690 resp_len = (size_t)strtoul(value, &line_end, 10);
691691 if (line_end == value || *line_end != '\0') {
692692 ERR_raise_data(ERR_LIB_HTTP,
00 /*
1 * Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2016-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
3131 #include "crypto/store.h"
3232 #include <openssl/cmp_util.h> /* for OSSL_CMP_log_close() */
3333 #include <openssl/trace.h>
34 #include "crypto/ctype.h"
3435
3536 static int stopped = 0;
3637 static uint64_t optsdone = 0;
446447 OSSL_TRACE(INIT, "OPENSSL_cleanup: ossl_trace_cleanup()\n");
447448 ossl_trace_cleanup();
448449
450 OSSL_TRACE(INIT, "OPENSSL_cleanup: ossl_deinit_casecmp()\n");
451 ossl_deinit_casecmp();
452
449453 base_inited = 0;
450454 }
451455
458462 {
459463 uint64_t tmp;
460464 int aloaddone = 0;
465
466 if (!ossl_init_casecmp())
467 return 0;
461468
462469 /* Applications depend on 0 being returned when cleanup was already done */
463470 if (stopped) {
6060
6161 void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out)
6262 {
63 int omit_tsan = 0;
64
65 #ifdef TSAN_REQUIRES_LOCKING
66 if (!CRYPTO_THREAD_read_lock(lh->tsan_lock)) {
67 BIO_printf(out, "unable to lock table, omitting TSAN counters\n");
68 omit_tsan = 1;
69 }
70 #endif
7163 BIO_printf(out, "num_items = %lu\n", lh->num_items);
7264 BIO_printf(out, "num_nodes = %u\n", lh->num_nodes);
7365 BIO_printf(out, "num_alloc_nodes = %u\n", lh->num_alloc_nodes);
74 BIO_printf(out, "num_expands = %lu\n", lh->num_expands);
75 BIO_printf(out, "num_expand_reallocs = %lu\n", lh->num_expand_reallocs);
76 BIO_printf(out, "num_contracts = %lu\n", lh->num_contracts);
77 BIO_printf(out, "num_contract_reallocs = %lu\n", lh->num_contract_reallocs);
78 if (!omit_tsan) {
79 BIO_printf(out, "num_hash_calls = %lu\n", lh->num_hash_calls);
80 BIO_printf(out, "num_comp_calls = %lu\n", lh->num_comp_calls);
81 }
82 BIO_printf(out, "num_insert = %lu\n", lh->num_insert);
83 BIO_printf(out, "num_replace = %lu\n", lh->num_replace);
84 BIO_printf(out, "num_delete = %lu\n", lh->num_delete);
85 BIO_printf(out, "num_no_delete = %lu\n", lh->num_no_delete);
86 if (!omit_tsan) {
87 BIO_printf(out, "num_retrieve = %lu\n", lh->num_retrieve);
88 BIO_printf(out, "num_retrieve_miss = %lu\n", lh->num_retrieve_miss);
89 BIO_printf(out, "num_hash_comps = %lu\n", lh->num_hash_comps);
90 #ifdef TSAN_REQUIRES_LOCKING
91 CRYPTO_THREAD_unlock(lh->tsan_lock);
92 #endif
93 }
66 BIO_printf(out, "num_expands = 0\n");
67 BIO_printf(out, "num_expand_reallocs = 0\n");
68 BIO_printf(out, "num_contracts = 0\n");
69 BIO_printf(out, "num_contract_reallocs = 0\n");
70 BIO_printf(out, "num_hash_calls = 0\n");
71 BIO_printf(out, "num_comp_calls = 0\n");
72 BIO_printf(out, "num_insert = 0\n");
73 BIO_printf(out, "num_replace = 0\n");
74 BIO_printf(out, "num_delete = 0\n");
75 BIO_printf(out, "num_no_delete = 0\n");
76 BIO_printf(out, "num_retrieve = 0\n");
77 BIO_printf(out, "num_retrieve_miss = 0\n");
78 BIO_printf(out, "num_hash_comps = 0\n");
9479 }
9580
9681 void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out)
4343 static void contract(OPENSSL_LHASH *lh);
4444 static OPENSSL_LH_NODE **getrn(OPENSSL_LHASH *lh, const void *data, unsigned long *rhash);
4545
46 static ossl_inline int tsan_lock(const OPENSSL_LHASH *lh)
47 {
48 #ifdef TSAN_REQUIRES_LOCKING
49 if (!CRYPTO_THREAD_write_lock(lh->tsan_lock))
50 return 0;
51 #endif
52 return 1;
53 }
54
55 static ossl_inline void tsan_unlock(const OPENSSL_LHASH *lh)
56 {
57 #ifdef TSAN_REQUIRES_LOCKING
58 CRYPTO_THREAD_unlock(lh->tsan_lock);
59 #endif
60 }
61
6246 OPENSSL_LHASH *OPENSSL_LH_new(OPENSSL_LH_HASHFUNC h, OPENSSL_LH_COMPFUNC c)
6347 {
6448 OPENSSL_LHASH *ret;
7357 }
7458 if ((ret->b = OPENSSL_zalloc(sizeof(*ret->b) * MIN_NODES)) == NULL)
7559 goto err;
76 #ifdef TSAN_REQUIRES_LOCKING
77 if ((ret->tsan_lock = CRYPTO_THREAD_lock_new()) == NULL)
78 goto err;
79 #endif
8060 ret->comp = ((c == NULL) ? (OPENSSL_LH_COMPFUNC)strcmp : c);
8161 ret->hash = ((h == NULL) ? (OPENSSL_LH_HASHFUNC)OPENSSL_LH_strhash : h);
8262 ret->num_nodes = MIN_NODES / 2;
9878 return;
9979
10080 OPENSSL_LH_flush(lh);
101 #ifdef TSAN_REQUIRES_LOCKING
102 CRYPTO_THREAD_lock_free(lh->tsan_lock);
103 #endif
10481 OPENSSL_free(lh->b);
10582 OPENSSL_free(lh);
10683 }
12299 }
123100 lh->b[i] = NULL;
124101 }
102
103 lh->num_items = 0;
125104 }
126105
127106 void *OPENSSL_LH_insert(OPENSSL_LHASH *lh, void *data)
146125 nn->hash = hash;
147126 *rn = nn;
148127 ret = NULL;
149 lh->num_insert++;
150128 lh->num_items++;
151129 } else { /* replace same key */
152130 ret = (*rn)->data;
153131 (*rn)->data = data;
154 lh->num_replace++;
155132 }
156133 return ret;
157134 }
166143 rn = getrn(lh, data, &hash);
167144
168145 if (*rn == NULL) {
169 lh->num_no_delete++;
170146 return NULL;
171147 } else {
172148 nn = *rn;
173149 *rn = nn->next;
174150 ret = nn->data;
175151 OPENSSL_free(nn);
176 lh->num_delete++;
177152 }
178153
179154 lh->num_items--;
189164 unsigned long hash;
190165 OPENSSL_LH_NODE **rn;
191166
192 /*-
193 * This should be atomic without tsan.
194 * It's not clear why it was done this way and not elsewhere.
195 */
196 tsan_store((TSAN_QUALIFIER int *)&lh->error, 0);
167 if (lh->error != 0)
168 lh->error = 0;
197169
198170 rn = getrn(lh, data, &hash);
199171
200 if (tsan_lock(lh)) {
201 tsan_counter(*rn == NULL ? &lh->num_retrieve_miss : &lh->num_retrieve);
202 tsan_unlock(lh);
203 }
204172 return *rn == NULL ? NULL : (*rn)->data;
205173 }
206174
261229 memset(n + nni, 0, sizeof(*n) * (j - nni));
262230 lh->pmax = nni;
263231 lh->num_alloc_nodes = j;
264 lh->num_expand_reallocs++;
265232 lh->p = 0;
266233 } else {
267234 lh->p++;
268235 }
269236
270237 lh->num_nodes++;
271 lh->num_expands++;
272238 n1 = &(lh->b[p]);
273239 n2 = &(lh->b[p + pmax]);
274240 *n2 = NULL;
301267 lh->error++;
302268 return;
303269 }
304 lh->num_contract_reallocs++;
305270 lh->num_alloc_nodes /= 2;
306271 lh->pmax /= 2;
307272 lh->p = lh->pmax - 1;
310275 lh->p--;
311276
312277 lh->num_nodes--;
313 lh->num_contracts++;
314278
315279 n1 = lh->b[(int)lh->p];
316280 if (n1 == NULL)
328292 OPENSSL_LH_NODE **ret, *n1;
329293 unsigned long hash, nn;
330294 OPENSSL_LH_COMPFUNC cf;
331 int do_tsan = 1;
332
333 #ifdef TSAN_REQUIRES_LOCKING
334 do_tsan = tsan_lock(lh);
335 #endif
295
336296 hash = (*(lh->hash)) (data);
337 if (do_tsan)
338 tsan_counter(&lh->num_hash_calls);
339297 *rhash = hash;
340298
341299 nn = hash % lh->pmax;
345303 cf = lh->comp;
346304 ret = &(lh->b[(int)nn]);
347305 for (n1 = *ret; n1 != NULL; n1 = n1->next) {
348 if (do_tsan)
349 tsan_counter(&lh->num_hash_comps);
350306 if (n1->hash != hash) {
351307 ret = &(n1->next);
352308 continue;
353309 }
354 if (do_tsan)
355 tsan_counter(&lh->num_comp_calls);
356310 if (cf(n1->data, data) == 0)
357311 break;
358312 ret = &(n1->next);
359313 }
360 if (do_tsan)
361 tsan_unlock(lh);
362314 return ret;
363315 }
364316
2626 unsigned long up_load; /* load times 256 */
2727 unsigned long down_load; /* load times 256 */
2828 unsigned long num_items;
29 unsigned long num_expands;
30 unsigned long num_expand_reallocs;
31 unsigned long num_contracts;
32 unsigned long num_contract_reallocs;
33 TSAN_QUALIFIER unsigned long num_hash_calls;
34 TSAN_QUALIFIER unsigned long num_comp_calls;
35 unsigned long num_insert;
36 unsigned long num_replace;
37 unsigned long num_delete;
38 unsigned long num_no_delete;
39 TSAN_QUALIFIER unsigned long num_retrieve;
40 TSAN_QUALIFIER unsigned long num_retrieve_miss;
41 TSAN_QUALIFIER unsigned long num_hash_comps;
4229 int error;
43 #ifdef TSAN_REQUIRES_LOCKING
44 CRYPTO_RWLOCK *tsan_lock;
45 #endif
4630 };
00 /*
1 * Copyright 1998-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 1998-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
2121 #include "e_os.h"
2222
2323 /*
24 * We define this wrapper for two reasons. Firstly, later versions of
25 * DEC C add linkage information to certain functions, which makes it
26 * tricky to use them as values to regular function pointers.
27 * Secondly, in the EDK2 build environment, the strcasecmp function is
28 * actually an external function with the Microsoft ABI, so we can't
29 * transparently assign function pointers to it.
30 */
31 #if defined(OPENSSL_SYS_VMS_DECC) || defined(OPENSSL_SYS_UEFI)
32 static int obj_strcasecmp(const char *a, const char *b)
33 {
34 return strcasecmp(a, b);
35 }
36 #else
37 #define obj_strcasecmp strcasecmp
38 #endif
39
40 /*
4124 * I use the ex_data stuff to manage the identifiers for the obj_name_types
4225 * that applications may define. I only really use the free function field.
4326 */
11093 goto out;
11194 }
11295 name_funcs->hash_func = ossl_lh_strcasehash;
113 name_funcs->cmp_func = obj_strcasecmp;
96 name_funcs->cmp_func = OPENSSL_strcasecmp;
11497 push = sk_NAME_FUNCS_push(name_funcs_stack, name_funcs);
11598
11699 if (!push) {
144127 ret = sk_NAME_FUNCS_value(name_funcs_stack,
145128 a->type)->cmp_func(a->name, b->name);
146129 } else
147 ret = strcasecmp(a->name, b->name);
130 ret = OPENSSL_strcasecmp(a->name, b->name);
148131 }
149132 return ret;
150133 }
00 /*
1 * Copyright 2001-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2001-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
5858
5959 ret = X509_verify_cert(ctx);
6060 if (ret <= 0) {
61 ret = X509_STORE_CTX_get_error(ctx);
61 int err = X509_STORE_CTX_get_error(ctx);
62
6263 ERR_raise_data(ERR_LIB_OCSP, OCSP_R_CERTIFICATE_VERIFY_ERROR,
63 "Verify error: %s", X509_verify_cert_error_string(ret));
64 "Verify error: %s", X509_verify_cert_error_string(err));
6465 goto end;
6566 }
6667 if (chain != NULL)
00 /*
1 * Copyright 2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2021-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
1010 #include <openssl/params.h>
1111 #include <openssl/param_build.h>
1212 #include "internal/param_build_set.h"
13 #include "e_os.h" /* strcasecmp */
1413
1514 #define OSSL_PARAM_ALLOCATED_END 127
1615 #define OSSL_PARAM_MERGE_LIST_MAX 128
141140 const OSSL_PARAM *l = *(const OSSL_PARAM **)left;
142141 const OSSL_PARAM *r = *(const OSSL_PARAM **)right;
143142
144 return strcasecmp(l->key, r->key);
143 return OPENSSL_strcasecmp(l->key, r->key);
145144 }
146145
147146 OSSL_PARAM *OSSL_PARAM_merge(const OSSL_PARAM *p1, const OSSL_PARAM *p2)
204203 break;
205204 }
206205 /* consume the list element with the smaller key */
207 diff = strcasecmp((*p1cur)->key, (*p2cur)->key);
206 diff = OPENSSL_strcasecmp((*p1cur)->key, (*p2cur)->key);
208207 if (diff == 0) {
209208 /* If the keys are the same then throw away the list1 element */
210209 *dst++ = **p2cur;
+0
-365
crypto/poly1305/asm/poly1305-ia64.S less more
0 // ====================================================================
1 // Written by Andy Polyakov, @dot-asm, initially for use in the OpenSSL
2 // project.
3 // ====================================================================
4 //
5 // Poly1305 for Itanium.
6 //
7 // January 2019
8 //
9 // Performance was reported to be ~2.1 cycles per byte on Itanium 2.
10 // With exception for processors in 95xx family, which have higher
11 // floating-point instructions' latencies and deliver ~2.6 cpb.
12 // Comparison to compiler-generated code is not exactly fair, because
13 // of different radixes. But just for reference, it was observed to be
14 // >3x faster. Originally it was argued that floating-point base 2^32
15 // implementation would be optimal. Upon closer look estimate for below
16 // integer base 2^64 implementation turned to be approximately same on
17 // Itanium 2. But floating-point code would be larger, and have higher
18 // overhead, which would negatively affect small-block performance...
19
20 #if defined(_HPUX_SOURCE)
21 # if !defined(_LP64)
22 # define ADDP addp4
23 # else
24 # define ADDP add
25 # endif
26 # define RUM rum
27 # define SUM sum
28 #else
29 # define ADDP add
30 # define RUM nop
31 # define SUM nop
32 #endif
33
34 .text
35 .explicit
36
37 .global poly1305_init#
38 .proc poly1305_init#
39 .align 64
40 poly1305_init:
41 .prologue
42 .save ar.pfs,r2
43 { .mmi; alloc r2=ar.pfs,2,0,0,0
44 cmp.eq p6,p7=0,r33 } // key == NULL?
45 { .mmi; ADDP r9=8,r32
46 ADDP r10=16,r32
47 ADDP r32=0,r32 };;
48 .body
49 { .mmi; st8 [r32]=r0,24 // ctx->h0 = 0
50 st8 [r9]=r0 // ctx->h1 = 0
51 (p7) ADDP r8=0,r33 }
52 { .mib; st8 [r10]=r0 // ctx->h2 = 0
53 (p6) mov r8=0
54 (p6) br.ret.spnt b0 };;
55
56 { .mmi; ADDP r9=1,r33
57 ADDP r10=2,r33
58 ADDP r11=3,r33 };;
59 { .mmi; ld1 r16=[r8],4 // load key, little-endian
60 ld1 r17=[r9],4 }
61 { .mmi; ld1 r18=[r10],4
62 ld1 r19=[r11],4 };;
63 { .mmi; ld1 r20=[r8],4
64 ld1 r21=[r9],4 }
65 { .mmi; ld1 r22=[r10],4
66 ld1 r23=[r11],4
67 and r19=15,r19 };;
68 { .mmi; ld1 r24=[r8],4
69 ld1 r25=[r9],4
70 and r20=-4,r20 }
71 { .mmi; ld1 r26=[r10],4
72 ld1 r27=[r11],4
73 and r23=15,r23 };;
74 { .mmi; ld1 r28=[r8],4
75 ld1 r29=[r9],4
76 and r24=-4,r24 }
77 { .mmi; ld1 r30=[r10],4
78 ld1 r31=[r11],4
79 and r27=15,r27 };;
80
81 { .mii; and r28=-4,r28
82 dep r16=r17,r16,8,8
83 dep r18=r19,r18,8,8 };;
84 { .mii; and r31=15,r31
85 dep r16=r18,r16,16,16
86 dep r20=r21,r20,8,8 };;
87 { .mii; dep r16=r20,r16,32,16
88 dep r22=r23,r22,8,8 };;
89 { .mii; dep r16=r22,r16,48,16
90 dep r24=r25,r24,8,8 };;
91 { .mii; dep r26=r27,r26,8,8
92 dep r28=r29,r28,8,8 };;
93 { .mii; dep r24=r26,r24,16,16
94 dep r30=r31,r30,8,8 };;
95 { .mii; st8 [r32]=r16,8 // ctx->r0
96 dep r24=r28,r24,32,16;;
97 dep r24=r30,r24,48,16 };;
98 { .mii; st8 [r32]=r24,8 // ctx->r1
99 shr.u r25=r24,2;;
100 add r25=r25,r24 };;
101 { .mib; st8 [r32]=r25 // ctx->s1
102 mov r8=0
103 br.ret.sptk b0 };;
104 .endp poly1305_init#
105
106 h0=r17; h1=r18; h2=r19;
107 i0=r20; i1=r21;
108 HF0=f8; HF1=f9; HF2=f10;
109 RF0=f11; RF1=f12; SF1=f13;
110
111 .global poly1305_blocks#
112 .proc poly1305_blocks#
113 .align 64
114 poly1305_blocks:
115 .prologue
116 .save ar.pfs,r2
117 { .mii; alloc r2=ar.pfs,4,1,0,0
118 .save ar.lc,r3
119 mov r3=ar.lc
120 .save pr,r36
121 mov r36=pr }
122
123 .body
124 { .mmi; ADDP r8=0,r32
125 ADDP r9=8,r32
126 and r29=7,r33 };;
127 { .mmi; ld8 h0=[r8],16
128 ld8 h1=[r9],16
129 and r33=-8,r33 };;
130 { .mmi; ld8 h2=[r8],16
131 ldf8 RF0=[r9],16
132 shr.u r34=r34,4 };;
133 { .mmi; ldf8 RF1=[r8],-32
134 ldf8 SF1=[r9],-32
135 cmp.ltu p16,p17=1,r34 };;
136 { .mmi;
137 (p16) add r34=-2,r34
138 (p17) mov r34=0
139 ADDP r10=0,r33 }
140 { .mii; ADDP r11=8,r33
141 (p16) mov ar.ec=2
142 (p17) mov ar.ec=1 };;
143 { .mib; RUM 1<<1 // go little-endian
144 mov ar.lc=r34
145 brp.loop.imp .Loop,.Lcend-16 }
146
147 { .mmi; cmp.eq p8,p7=0,r29
148 cmp.eq p9,p0=1,r29
149 cmp.eq p10,p0=2,r29 }
150 { .mmi; cmp.eq p11,p0=3,r29
151 cmp.eq p12,p0=4,r29
152 cmp.eq p13,p0=5,r29 }
153 { .mmi; cmp.eq p14,p0=6,r29
154 cmp.eq p15,p0=7,r29
155 add r16=16,r10 };;
156
157 { .mmb;
158 (p8) ld8 i0=[r10],16 // aligned input
159 (p8) ld8 i1=[r11],16
160 (p8) br.cond.sptk .Loop };;
161
162 // align first block
163 .pred.rel "mutex",p8,p9,p10,p11,p12,p13,p14,p15
164 { .mmi; (p7) ld8 r14=[r10],24
165 (p7) ld8 r15=[r11],24 }
166
167 { .mii; (p7) ld8 r16=[r16]
168 nop.i 0;;
169 (p15) shrp i0=r15,r14,56 }
170 { .mii; (p15) shrp i1=r16,r15,56
171 (p14) shrp i0=r15,r14,48 }
172 { .mii; (p14) shrp i1=r16,r15,48
173 (p13) shrp i0=r15,r14,40 }
174 { .mii; (p13) shrp i1=r16,r15,40
175 (p12) shrp i0=r15,r14,32 }
176 { .mii; (p12) shrp i1=r16,r15,32
177 (p11) shrp i0=r15,r14,24 }
178 { .mii; (p11) shrp i1=r16,r15,24
179 (p10) shrp i0=r15,r14,16 }
180 { .mii; (p10) shrp i1=r16,r15,16
181 (p9) shrp i0=r15,r14,8 }
182 { .mii; (p9) shrp i1=r16,r15,8
183 mov r14=r16 };;
184
185 .Loop:
186 .pred.rel "mutex",p8,p9,p10,p11,p12,p13,p14,p15
187 { .mmi; add h0=h0,i0
188 add h1=h1,i1
189 add h2=h2,r35 };;
190 { .mmi; setf.sig HF0=h0
191 cmp.ltu p6,p0=h0,i0
192 cmp.ltu p7,p0=h1,i1 };;
193 { .mmi; (p6) add h1=1,h1;;
194 setf.sig HF1=h1
195 (p6) cmp.eq.or p7,p0=0,h1 };;
196 { .mmi; (p7) add h2=1,h2;;
197 setf.sig HF2=h2 };;
198
199 { .mfi; (p16) ld8 r15=[r10],16
200 xmpy.lu f32=HF0,RF0 }
201 { .mfi; (p16) ld8 r16=[r11],16
202 xmpy.hu f33=HF0,RF0 }
203 { .mfi; xmpy.lu f36=HF0,RF1 }
204 { .mfi; xmpy.hu f37=HF0,RF1 };;
205 { .mfi; xmpy.lu f34=HF1,SF1
206 (p15) shrp i0=r15,r14,56 }
207 { .mfi; xmpy.hu f35=HF1,SF1 }
208 { .mfi; xmpy.lu f38=HF1,RF0
209 (p15) shrp i1=r16,r15,56 }
210 { .mfi; xmpy.hu f39=HF1,RF0 }
211 { .mfi; xmpy.lu f40=HF2,SF1
212 (p14) shrp i0=r15,r14,48 }
213 { .mfi; xmpy.lu f41=HF2,RF0 };;
214
215 { .mmi; getf.sig r22=f32
216 getf.sig r23=f33
217 (p14) shrp i1=r16,r15,48 }
218 { .mmi; getf.sig r24=f34
219 getf.sig r25=f35
220 (p13) shrp i0=r15,r14,40 }
221 { .mmi; getf.sig r26=f36
222 getf.sig r27=f37
223 (p13) shrp i1=r16,r15,40 }
224 { .mmi; getf.sig r28=f38
225 getf.sig r29=f39
226 (p12) shrp i0=r15,r14,32 }
227 { .mmi; getf.sig r30=f40
228 getf.sig r31=f41 };;
229
230 { .mmi; add h0=r22,r24
231 add r23=r23,r25
232 (p12) shrp i1=r16,r15,32 }
233 { .mmi; add h1=r26,r28
234 add r27=r27,r29
235 (p11) shrp i0=r15,r14,24 };;
236 { .mmi; cmp.ltu p6,p0=h0,r24
237 cmp.ltu p7,p0=h1,r28
238 add r23=r23,r30 };;
239 { .mmi; (p6) add r23=1,r23
240 (p7) add r27=1,r27
241 (p11) shrp i1=r16,r15,24 };;
242 { .mmi; add h1=h1,r23;;
243 cmp.ltu p6,p7=h1,r23
244 (p10) shrp i0=r15,r14,16 };;
245 { .mmi; (p6) add h2=r31,r27,1
246 (p7) add h2=r31,r27
247 (p10) shrp i1=r16,r15,16 };;
248
249 { .mmi; (p8) mov i0=r15
250 and r22=-4,h2
251 shr.u r23=h2,2 };;
252 { .mmi; add r22=r22,r23
253 and h2=3,h2
254 (p9) shrp i0=r15,r14,8 };;
255
256 { .mmi; add h0=h0,r22;;
257 cmp.ltu p6,p0=h0,r22
258 (p9) shrp i1=r16,r15,8 };;
259 { .mmi; (p8) mov i1=r16
260 (p6) cmp.eq.unc p7,p0=-1,h1
261 (p6) add h1=1,h1 };;
262 { .mmb; (p7) add h2=1,h2
263 mov r14=r16
264 br.ctop.sptk .Loop };;
265 .Lcend:
266
267 { .mii; SUM 1<<1 // back to big-endian
268 mov ar.lc=r3 };;
269
270 { .mmi; st8 [r8]=h0,16
271 st8 [r9]=h1
272 mov pr=r36,0x1ffff };;
273 { .mmb; st8 [r8]=h2
274 rum 1<<5
275 br.ret.sptk b0 };;
276 .endp poly1305_blocks#
277
278 .global poly1305_emit#
279 .proc poly1305_emit#
280 .align 64
281 poly1305_emit:
282 .prologue
283 .save ar.pfs,r2
284 { .mmi; alloc r2=ar.pfs,3,0,0,0
285 ADDP r8=0,r32
286 ADDP r9=8,r32 };;
287
288 .body
289 { .mmi; ld8 r16=[r8],16 // load hash
290 ld8 r17=[r9]
291 ADDP r10=0,r34 };;
292 { .mmi; ld8 r18=[r8]
293 ld4 r24=[r10],8 // load nonce
294 ADDP r11=4,r34 };;
295
296 { .mmi; ld4 r25=[r11],8
297 ld4 r26=[r10]
298 add r20=5,r16 };;
299
300 { .mmi; ld4 r27=[r11]
301 cmp.ltu p6,p7=r20,r16
302 shl r25=r25,32 };;
303 { .mmi;
304 (p6) add r21=1,r17
305 (p7) add r21=0,r17
306 (p6) cmp.eq.or.andcm p6,p7=-1,r17 };;
307 { .mmi;
308 (p6) add r22=1,r18
309 (p7) add r22=0,r18
310 shl r27=r27,32 };;
311 { .mmi; or r24=r24,r25
312 or r26=r26,r27
313 cmp.leu p6,p7=4,r22 };;
314 { .mmi;
315 (p6) add r16=r20,r24
316 (p7) add r16=r16,r24
317 (p6) add r17=r21,r26 };;
318 { .mii;
319 (p7) add r17=r17,r26
320 cmp.ltu p6,p7=r16,r24;;
321 (p6) add r17=1,r17 };;
322
323 { .mmi; ADDP r8=0,r33
324 ADDP r9=4,r33
325 shr.u r20=r16,32 }
326 { .mmi; ADDP r10=8,r33
327 ADDP r11=12,r33
328 shr.u r21=r17,32 };;
329
330 { .mmi; st1 [r8]=r16,1 // write mac, little-endian
331 st1 [r9]=r20,1
332 shr.u r16=r16,8 }
333 { .mii; st1 [r10]=r17,1
334 shr.u r20=r20,8
335 shr.u r17=r17,8 }
336 { .mmi; st1 [r11]=r21,1
337 shr.u r21=r21,8 };;
338
339 { .mmi; st1 [r8]=r16,1
340 st1 [r9]=r20,1
341 shr.u r16=r16,8 }
342 { .mii; st1 [r10]=r17,1
343 shr.u r20=r20,8
344 shr.u r17=r17,8 }
345 { .mmi; st1 [r11]=r21,1
346 shr.u r21=r21,8 };;
347
348 { .mmi; st1 [r8]=r16,1
349 st1 [r9]=r20,1
350 shr.u r16=r16,8 }
351 { .mii; st1 [r10]=r17,1
352 shr.u r20=r20,8
353 shr.u r17=r17,8 }
354 { .mmi; st1 [r11]=r21,1
355 shr.u r21=r21,8 };;
356
357 { .mmi; st1 [r8]=r16
358 st1 [r9]=r20 }
359 { .mmb; st1 [r10]=r17
360 st1 [r11]=r21
361 br.ret.sptk b0 };;
362 .endp poly1305_emit#
363
364 stringz "Poly1305 for IA64, CRYPTOGAMS by \@dot-asm"
0 // ====================================================================
1 // Written by Andy Polyakov, @dot-asm, initially for use in the OpenSSL
2 // project.
3 // ====================================================================
4 //
5 // Poly1305 for Itanium.
6 //
7 // January 2019
8 //
9 // Performance was reported to be ~2.1 cycles per byte on Itanium 2.
10 // With exception for processors in 95xx family, which have higher
11 // floating-point instructions' latencies and deliver ~2.6 cpb.
12 // Comparison to compiler-generated code is not exactly fair, because
13 // of different radixes. But just for reference, it was observed to be
14 // >3x faster. Originally it was argued that floating-point base 2^32
15 // implementation would be optimal. Upon closer look estimate for below
16 // integer base 2^64 implementation turned to be approximately same on
17 // Itanium 2. But floating-point code would be larger, and have higher
18 // overhead, which would negatively affect small-block performance...
19
20 #if defined(_HPUX_SOURCE)
21 # if !defined(_LP64)
22 # define ADDP addp4
23 # else
24 # define ADDP add
25 # endif
26 # define RUM rum
27 # define SUM sum
28 #else
29 # define ADDP add
30 # define RUM nop
31 # define SUM nop
32 #endif
33
34 .text
35 .explicit
36
37 .global poly1305_init#
38 .proc poly1305_init#
39 .align 64
40 poly1305_init:
41 .prologue
42 .save ar.pfs,r2
43 { .mmi; alloc r2=ar.pfs,2,0,0,0
44 cmp.eq p6,p7=0,r33 } // key == NULL?
45 { .mmi; ADDP r9=8,r32
46 ADDP r10=16,r32
47 ADDP r32=0,r32 };;
48 .body
49 { .mmi; st8 [r32]=r0,24 // ctx->h0 = 0
50 st8 [r9]=r0 // ctx->h1 = 0
51 (p7) ADDP r8=0,r33 }
52 { .mib; st8 [r10]=r0 // ctx->h2 = 0
53 (p6) mov r8=0
54 (p6) br.ret.spnt b0 };;
55
56 { .mmi; ADDP r9=1,r33
57 ADDP r10=2,r33
58 ADDP r11=3,r33 };;
59 { .mmi; ld1 r16=[r8],4 // load key, little-endian
60 ld1 r17=[r9],4 }
61 { .mmi; ld1 r18=[r10],4
62 ld1 r19=[r11],4 };;
63 { .mmi; ld1 r20=[r8],4
64 ld1 r21=[r9],4 }
65 { .mmi; ld1 r22=[r10],4
66 ld1 r23=[r11],4
67 and r19=15,r19 };;
68 { .mmi; ld1 r24=[r8],4
69 ld1 r25=[r9],4
70 and r20=-4,r20 }
71 { .mmi; ld1 r26=[r10],4
72 ld1 r27=[r11],4
73 and r23=15,r23 };;
74 { .mmi; ld1 r28=[r8],4
75 ld1 r29=[r9],4
76 and r24=-4,r24 }
77 { .mmi; ld1 r30=[r10],4
78 ld1 r31=[r11],4
79 and r27=15,r27 };;
80
81 { .mii; and r28=-4,r28
82 dep r16=r17,r16,8,8
83 dep r18=r19,r18,8,8 };;
84 { .mii; and r31=15,r31
85 dep r16=r18,r16,16,16
86 dep r20=r21,r20,8,8 };;
87 { .mii; dep r16=r20,r16,32,16
88 dep r22=r23,r22,8,8 };;
89 { .mii; dep r16=r22,r16,48,16
90 dep r24=r25,r24,8,8 };;
91 { .mii; dep r26=r27,r26,8,8
92 dep r28=r29,r28,8,8 };;
93 { .mii; dep r24=r26,r24,16,16
94 dep r30=r31,r30,8,8 };;
95 { .mii; st8 [r32]=r16,8 // ctx->r0
96 dep r24=r28,r24,32,16;;
97 dep r24=r30,r24,48,16 };;
98 { .mii; st8 [r32]=r24,8 // ctx->r1
99 shr.u r25=r24,2;;
100 add r25=r25,r24 };;
101 { .mib; st8 [r32]=r25 // ctx->s1
102 mov r8=0
103 br.ret.sptk b0 };;
104 .endp poly1305_init#
105
106 h0=r17; h1=r18; h2=r19;
107 i0=r20; i1=r21;
108 HF0=f8; HF1=f9; HF2=f10;
109 RF0=f11; RF1=f12; SF1=f13;
110
111 .global poly1305_blocks#
112 .proc poly1305_blocks#
113 .align 64
114 poly1305_blocks:
115 .prologue
116 .save ar.pfs,r2
117 { .mii; alloc r2=ar.pfs,4,1,0,0
118 .save ar.lc,r3
119 mov r3=ar.lc
120 .save pr,r36
121 mov r36=pr }
122
123 .body
124 { .mmi; ADDP r8=0,r32
125 ADDP r9=8,r32
126 and r29=7,r33 };;
127 { .mmi; ld8 h0=[r8],16
128 ld8 h1=[r9],16
129 and r33=-8,r33 };;
130 { .mmi; ld8 h2=[r8],16
131 ldf8 RF0=[r9],16
132 shr.u r34=r34,4 };;
133 { .mmi; ldf8 RF1=[r8],-32
134 ldf8 SF1=[r9],-32
135 cmp.ltu p16,p17=1,r34 };;
136 { .mmi;
137 (p16) add r34=-2,r34
138 (p17) mov r34=0
139 ADDP r10=0,r33 }
140 { .mii; ADDP r11=8,r33
141 (p16) mov ar.ec=2
142 (p17) mov ar.ec=1 };;
143 { .mib; RUM 1<<1 // go little-endian
144 mov ar.lc=r34
145 brp.loop.imp .Loop,.Lcend-16 }
146
147 { .mmi; cmp.eq p8,p7=0,r29
148 cmp.eq p9,p0=1,r29
149 cmp.eq p10,p0=2,r29 }
150 { .mmi; cmp.eq p11,p0=3,r29
151 cmp.eq p12,p0=4,r29
152 cmp.eq p13,p0=5,r29 }
153 { .mmi; cmp.eq p14,p0=6,r29
154 cmp.eq p15,p0=7,r29
155 add r16=16,r10 };;
156
157 { .mmb;
158 (p8) ld8 i0=[r10],16 // aligned input
159 (p8) ld8 i1=[r11],16
160 (p8) br.cond.sptk .Loop };;
161
162 // align first block
163 .pred.rel "mutex",p8,p9,p10,p11,p12,p13,p14,p15
164 { .mmi; (p7) ld8 r14=[r10],24
165 (p7) ld8 r15=[r11],24 }
166
167 { .mii; (p7) ld8 r16=[r16]
168 nop.i 0;;
169 (p15) shrp i0=r15,r14,56 }
170 { .mii; (p15) shrp i1=r16,r15,56
171 (p14) shrp i0=r15,r14,48 }
172 { .mii; (p14) shrp i1=r16,r15,48
173 (p13) shrp i0=r15,r14,40 }
174 { .mii; (p13) shrp i1=r16,r15,40
175 (p12) shrp i0=r15,r14,32 }
176 { .mii; (p12) shrp i1=r16,r15,32
177 (p11) shrp i0=r15,r14,24 }
178 { .mii; (p11) shrp i1=r16,r15,24
179 (p10) shrp i0=r15,r14,16 }
180 { .mii; (p10) shrp i1=r16,r15,16
181 (p9) shrp i0=r15,r14,8 }
182 { .mii; (p9) shrp i1=r16,r15,8
183 mov r14=r16 };;
184
185 .Loop:
186 .pred.rel "mutex",p8,p9,p10,p11,p12,p13,p14,p15
187 { .mmi; add h0=h0,i0
188 add h1=h1,i1
189 add h2=h2,r35 };;
190 { .mmi; setf.sig HF0=h0
191 cmp.ltu p6,p0=h0,i0
192 cmp.ltu p7,p0=h1,i1 };;
193 { .mmi; (p6) add h1=1,h1;;
194 setf.sig HF1=h1
195 (p6) cmp.eq.or p7,p0=0,h1 };;
196 { .mmi; (p7) add h2=1,h2;;
197 setf.sig HF2=h2 };;
198
199 { .mfi; (p16) ld8 r15=[r10],16
200 xmpy.lu f32=HF0,RF0 }
201 { .mfi; (p16) ld8 r16=[r11],16
202 xmpy.hu f33=HF0,RF0 }
203 { .mfi; xmpy.lu f36=HF0,RF1 }
204 { .mfi; xmpy.hu f37=HF0,RF1 };;
205 { .mfi; xmpy.lu f34=HF1,SF1
206 (p15) shrp i0=r15,r14,56 }
207 { .mfi; xmpy.hu f35=HF1,SF1 }
208 { .mfi; xmpy.lu f38=HF1,RF0
209 (p15) shrp i1=r16,r15,56 }
210 { .mfi; xmpy.hu f39=HF1,RF0 }
211 { .mfi; xmpy.lu f40=HF2,SF1
212 (p14) shrp i0=r15,r14,48 }
213 { .mfi; xmpy.lu f41=HF2,RF0 };;
214
215 { .mmi; getf.sig r22=f32
216 getf.sig r23=f33
217 (p14) shrp i1=r16,r15,48 }
218 { .mmi; getf.sig r24=f34
219 getf.sig r25=f35
220 (p13) shrp i0=r15,r14,40 }
221 { .mmi; getf.sig r26=f36
222 getf.sig r27=f37
223 (p13) shrp i1=r16,r15,40 }
224 { .mmi; getf.sig r28=f38
225 getf.sig r29=f39
226 (p12) shrp i0=r15,r14,32 }
227 { .mmi; getf.sig r30=f40
228 getf.sig r31=f41 };;
229
230 { .mmi; add h0=r22,r24
231 add r23=r23,r25
232 (p12) shrp i1=r16,r15,32 }
233 { .mmi; add h1=r26,r28
234 add r27=r27,r29
235 (p11) shrp i0=r15,r14,24 };;
236 { .mmi; cmp.ltu p6,p0=h0,r24
237 cmp.ltu p7,p0=h1,r28
238 add r23=r23,r30 };;
239 { .mmi; (p6) add r23=1,r23
240 (p7) add r27=1,r27
241 (p11) shrp i1=r16,r15,24 };;
242 { .mmi; add h1=h1,r23;;
243 cmp.ltu p6,p7=h1,r23
244 (p10) shrp i0=r15,r14,16 };;
245 { .mmi; (p6) add h2=r31,r27,1
246 (p7) add h2=r31,r27
247 (p10) shrp i1=r16,r15,16 };;
248
249 { .mmi; (p8) mov i0=r15
250 and r22=-4,h2
251 shr.u r23=h2,2 };;
252 { .mmi; add r22=r22,r23
253 and h2=3,h2
254 (p9) shrp i0=r15,r14,8 };;
255
256 { .mmi; add h0=h0,r22;;
257 cmp.ltu p6,p0=h0,r22
258 (p9) shrp i1=r16,r15,8 };;
259 { .mmi; (p8) mov i1=r16
260 (p6) cmp.eq.unc p7,p0=-1,h1
261 (p6) add h1=1,h1 };;
262 { .mmb; (p7) add h2=1,h2
263 mov r14=r16
264 br.ctop.sptk .Loop };;
265 .Lcend:
266
267 { .mii; SUM 1<<1 // back to big-endian
268 mov ar.lc=r3 };;
269
270 { .mmi; st8 [r8]=h0,16
271 st8 [r9]=h1
272 mov pr=r36,0x1ffff };;
273 { .mmb; st8 [r8]=h2
274 rum 1<<5
275 br.ret.sptk b0 };;
276 .endp poly1305_blocks#
277
278 .global poly1305_emit#
279 .proc poly1305_emit#
280 .align 64
281 poly1305_emit:
282 .prologue
283 .save ar.pfs,r2
284 { .mmi; alloc r2=ar.pfs,3,0,0,0
285 ADDP r8=0,r32
286 ADDP r9=8,r32 };;
287
288 .body
289 { .mmi; ld8 r16=[r8],16 // load hash
290 ld8 r17=[r9]
291 ADDP r10=0,r34 };;
292 { .mmi; ld8 r18=[r8]
293 ld4 r24=[r10],8 // load nonce
294 ADDP r11=4,r34 };;
295
296 { .mmi; ld4 r25=[r11],8
297 ld4 r26=[r10]
298 add r20=5,r16 };;
299
300 { .mmi; ld4 r27=[r11]
301 cmp.ltu p6,p7=r20,r16
302 shl r25=r25,32 };;
303 { .mmi;
304 (p6) add r21=1,r17
305 (p7) add r21=0,r17
306 (p6) cmp.eq.or.andcm p6,p7=-1,r17 };;
307 { .mmi;
308 (p6) add r22=1,r18
309 (p7) add r22=0,r18
310 shl r27=r27,32 };;
311 { .mmi; or r24=r24,r25
312 or r26=r26,r27
313 cmp.leu p6,p7=4,r22 };;
314 { .mmi;
315 (p6) add r16=r20,r24
316 (p7) add r16=r16,r24
317 (p6) add r17=r21,r26 };;
318 { .mii;
319 (p7) add r17=r17,r26
320 cmp.ltu p6,p7=r16,r24;;
321 (p6) add r17=1,r17 };;
322
323 { .mmi; ADDP r8=0,r33
324 ADDP r9=4,r33
325 shr.u r20=r16,32 }
326 { .mmi; ADDP r10=8,r33
327 ADDP r11=12,r33
328 shr.u r21=r17,32 };;
329
330 { .mmi; st1 [r8]=r16,1 // write mac, little-endian
331 st1 [r9]=r20,1
332 shr.u r16=r16,8 }
333 { .mii; st1 [r10]=r17,1
334 shr.u r20=r20,8
335 shr.u r17=r17,8 }
336 { .mmi; st1 [r11]=r21,1
337 shr.u r21=r21,8 };;
338
339 { .mmi; st1 [r8]=r16,1
340 st1 [r9]=r20,1
341 shr.u r16=r16,8 }
342 { .mii; st1 [r10]=r17,1
343 shr.u r20=r20,8
344 shr.u r17=r17,8 }
345 { .mmi; st1 [r11]=r21,1
346 shr.u r21=r21,8 };;
347
348 { .mmi; st1 [r8]=r16,1
349 st1 [r9]=r20,1
350 shr.u r16=r16,8 }
351 { .mii; st1 [r10]=r17,1
352 shr.u r20=r20,8
353 shr.u r17=r17,8 }
354 { .mmi; st1 [r11]=r21,1
355 shr.u r21=r21,8 };;
356
357 { .mmi; st1 [r8]=r16
358 st1 [r9]=r20 }
359 { .mmb; st1 [r10]=r17
360 st1 [r11]=r21
361 br.ret.sptk b0 };;
362 .endp poly1305_emit#
363
364 stringz "Poly1305 for IA64, CRYPTOGAMS by \@dot-asm"
44 $POLY1305ASM_x86=poly1305-x86.s
55 $POLY1305ASM_x86_64=poly1305-x86_64.s
66
7 $POLY1305ASM_ia64=asm/poly1305-ia64.S
7 $POLY1305ASM_ia64=asm/poly1305-ia64.s
88
99 $POLY1305ASM_sparcv9=poly1305-sparcv9.S
1010
00 /*
1 * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved.
22 * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
33 *
44 * Licensed under the Apache License 2.0 (the "License"). You may not use
4444 {
4545 const char *s = *t;
4646
47 if (strncasecmp(s, m, m_len) == 0) {
47 if (OPENSSL_strncasecmp(s, m, m_len) == 0) {
4848 *t = skip_space(s + m_len);
4949 return 1;
5050 }
767767
768768 for (i = 0; i < sk_CONF_VALUE_num(elist); i++) {
769769 cval = sk_CONF_VALUE_value(elist, i);
770 if (strcasecmp(cval->name, "random") == 0) {
770 if (OPENSSL_strcasecmp(cval->name, "random") == 0) {
771771 if (!random_set_string(&dgbl->rng_name, cval->value))
772772 return 0;
773 } else if (strcasecmp(cval->name, "cipher") == 0) {
773 } else if (OPENSSL_strcasecmp(cval->name, "cipher") == 0) {
774774 if (!random_set_string(&dgbl->rng_cipher, cval->value))
775775 return 0;
776 } else if (strcasecmp(cval->name, "digest") == 0) {
776 } else if (OPENSSL_strcasecmp(cval->name, "digest") == 0) {
777777 if (!random_set_string(&dgbl->rng_digest, cval->value))
778778 return 0;
779 } else if (strcasecmp(cval->name, "properties") == 0) {
779 } else if (OPENSSL_strcasecmp(cval->name, "properties") == 0) {
780780 if (!random_set_string(&dgbl->rng_propq, cval->value))
781781 return 0;
782 } else if (strcasecmp(cval->name, "seed") == 0) {
782 } else if (OPENSSL_strcasecmp(cval->name, "seed") == 0) {
783783 if (!random_set_string(&dgbl->seed_name, cval->value))
784784 return 0;
785 } else if (strcasecmp(cval->name, "seed_properties") == 0) {
785 } else if (OPENSSL_strcasecmp(cval->name, "seed_properties") == 0) {
786786 if (!random_set_string(&dgbl->seed_propq, cval->value))
787787 return 0;
788788 } else {
2525 #include "internal/param_build_set.h"
2626 #include "crypto/rsa.h"
2727 #include "rsa_local.h"
28
29 #include "e_os.h" /* strcasecmp for Windows() */
3028
3129 /*
3230 * The intention with the "backend" source file is to offer backend support
274272 else if (!OSSL_PARAM_get_utf8_ptr(param_mgf, &mgfname))
275273 return 0;
276274
277 if (strcasecmp(param_mgf->data,
278 ossl_rsa_mgf_nid2name(default_maskgenalg_nid)) != 0)
275 if (OPENSSL_strcasecmp(param_mgf->data,
276 ossl_rsa_mgf_nid2name(default_maskgenalg_nid)) != 0)
279277 return 0;
280278 }
281279
00 /*
1 * Copyright 2017-2020 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2017-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
7171 unsigned long long kdsa[2];
7272 };
7373
74 #if defined(__GNUC__) && defined(__linux)
75 __attribute__ ((visibility("hidden")))
76 #endif
7477 extern struct OPENSSL_s390xcap_st OPENSSL_s390xcap_P;
7578
7679 /* Max number of 64-bit words currently returned by STFLE */
00 /*
1 * Copyright 2010-2018 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2010-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
7373
7474 struct OPENSSL_s390xcap_st OPENSSL_s390xcap_P;
7575
76 #if defined(__GNUC__) && defined(__linux)
77 __attribute__ ((visibility("hidden")))
78 #endif
7679 void OPENSSL_cpuid_setup(void)
7780 {
7881 struct OPENSSL_s390xcap_st cap;
00 /*
1 * Copyright 2017-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2017-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
203203 uint64_t v2 = ctx->v2;
204204 uint64_t v3 = ctx->v3;
205205
206 if (outlen != (size_t)ctx->hash_size)
206 if (ctx->crounds == 0 || outlen == 0 || outlen != (size_t)ctx->hash_size)
207207 return 0;
208208
209209 switch (ctx->len) {
00 /*
1 * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved.
22 * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
33 *
44 * Licensed under the Apache License 2.0 (the "License"). You may not use
1818 * depth of the tree but potentially wastes more memory. That is, this is a
1919 * direct space versus time tradeoff.
2020 *
21 * The large memory model uses twelve bits which means that the are 4096
22 * pointers in each tree node. This is more than sufficient to hold the
23 * largest defined NID (as of Feb 2019). This means that using a NID to
24 * index a sparse array becomes a constant time single array look up.
25 *
26 * The small memory model uses four bits which means the tree nodes contain
27 * sixteen pointers. This reduces the amount of unused space significantly
28 * at a cost in time.
21 * The default is to use four bits which means that the are 16
22 * pointers in each tree node.
2923 *
3024 * The library builder is also permitted to define other sizes in the closed
31 * interval [2, sizeof(ossl_uintmax_t) * 8].
25 * interval [2, sizeof(ossl_uintmax_t) * 8]. Space use generally scales
26 * exponentially with the block size, although the implementation only
27 * creates enough blocks to support the largest used index. The depth is:
28 * ceil(log_2(largest index) / 2^{block size})
29 * E.g. with a block size of 4, and a largest index of 1000, the depth
30 * will be three.
3231 */
3332 #ifndef OPENSSL_SA_BLOCK_BITS
34 # ifdef OPENSSL_SMALL_FOOTPRINT
35 # define OPENSSL_SA_BLOCK_BITS 4
36 # else
37 # define OPENSSL_SA_BLOCK_BITS 12
38 # endif
33 # define OPENSSL_SA_BLOCK_BITS 4
3934 #elif OPENSSL_SA_BLOCK_BITS < 2 || OPENSSL_SA_BLOCK_BITS > (BN_BITS2 - 1)
4035 # error OPENSSL_SA_BLOCK_BITS is out of range
4136 #endif
00 /*
1 * Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2016-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
9292 OPENSSL_strlcpy(scheme_copy, uri, sizeof(scheme_copy));
9393 if ((p = strchr(scheme_copy, ':')) != NULL) {
9494 *p++ = '\0';
95 if (strcasecmp(scheme_copy, "file") != 0) {
95 if (OPENSSL_strcasecmp(scheme_copy, "file") != 0) {
9696 if (strncmp(p, "//", 2) == 0)
9797 schemes_n--; /* Invalidate the file scheme */
9898 schemes[schemes_n++] = scheme_copy;
456456
457457 /* If we have a data type, it should be a PEM name */
458458 if (data->data_type != NULL
459 && (strcasecmp(data->data_type, PEM_STRING_X509_TRUSTED) == 0))
459 && (OPENSSL_strcasecmp(data->data_type, PEM_STRING_X509_TRUSTED) == 0))
460460 ignore_trusted = 0;
461461
462462 if (d2i_X509_AUX(&cert, (const unsigned char **)&data->octet_data,
1414
1515 #if defined(__sun)
1616 # include <atomic.h>
17 #endif
18
19 #if defined(__apple_build_version__) && __apple_build_version__ < 6000000
20 /*
21 * OS/X 10.7 and 10.8 had a weird version of clang which has __ATOMIC_ACQUIRE and
22 * __ATOMIC_ACQ_REL but which expects only one parameter for __atomic_is_lock_free()
23 * rather than two which has signature __atomic_is_lock_free(sizeof(_Atomic(T))).
24 * All of this makes impossible to use __atomic_is_lock_free here.
25 *
26 * See: https://github.com/llvm/llvm-project/commit/a4c2602b714e6c6edb98164550a5ae829b2de760
27 */
28 #define BROKEN_CLANG_ATOMICS
1729 #endif
1830
1931 #if defined(OPENSSL_THREADS) && !defined(CRYPTO_TDEBUG) && !defined(OPENSSL_SYS_WINDOWS)
187199
188200 int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock)
189201 {
190 # if defined(__GNUC__) && defined(__ATOMIC_ACQ_REL)
202 # if defined(__GNUC__) && defined(__ATOMIC_ACQ_REL) && !defined(BROKEN_CLANG_ATOMICS)
191203 if (__atomic_is_lock_free(sizeof(*val), val)) {
192204 *ret = __atomic_add_fetch(val, amount, __ATOMIC_ACQ_REL);
193205 return 1;
214226 int CRYPTO_atomic_or(uint64_t *val, uint64_t op, uint64_t *ret,
215227 CRYPTO_RWLOCK *lock)
216228 {
217 # if defined(__GNUC__) && defined(__ATOMIC_ACQ_REL)
229 # if defined(__GNUC__) && defined(__ATOMIC_ACQ_REL) && !defined(BROKEN_CLANG_ATOMICS)
218230 if (__atomic_is_lock_free(sizeof(*val), val)) {
219231 *ret = __atomic_or_fetch(val, op, __ATOMIC_ACQ_REL);
220232 return 1;
239251
240252 int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock)
241253 {
242 # if defined(__GNUC__) && defined(__ATOMIC_ACQUIRE)
254 # if defined(__GNUC__) && defined(__ATOMIC_ACQUIRE) && !defined(BROKEN_CLANG_ATOMICS)
243255 if (__atomic_is_lock_free(sizeof(*val), val)) {
244256 __atomic_load(val, ret, __ATOMIC_ACQUIRE);
245257 return 1;
1717 #include "internal/nelem.h"
1818 #include "internal/refcount.h"
1919 #include "crypto/cryptlib.h"
20
21 #include "e_os.h" /* strcasecmp for Windows */
2220
2321 #ifndef OPENSSL_NO_TRACE
2422
157155 size_t i;
158156
159157 for (i = 0; i < OSSL_NELEM(trace_categories); i++)
160 if (strcasecmp(name, trace_categories[i].name) == 0)
158 if (OPENSSL_strcasecmp(name, trace_categories[i].name) == 0)
161159 return trace_categories[i].num;
162160 return -1; /* not found */
163161 }
00 /*
1 * Copyright 2015-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2015-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
107107 extval = val->name;
108108
109109 for (j = 0; j < OSSL_NELEM(tls_feature_tbl); j++)
110 if (strcasecmp(extval, tls_feature_tbl[j].name) == 0)
110 if (OPENSSL_strcasecmp(extval, tls_feature_tbl[j].name) == 0)
111111 break;
112112 if (j < OSSL_NELEM(tls_feature_tbl))
113113 tlsextid = tls_feature_tbl[j].num;
348348 ERR_raise(ERR_LIB_X509V3, X509V3_R_INVALID_EMPTY_NAME);
349349 goto err;
350350 }
351 X509V3_add_value(ntmp, NULL, &values);
351 if (!X509V3_add_value(ntmp, NULL, &values)) {
352 goto err;
353 }
352354 }
353355 break;
354356
361363 ERR_raise(ERR_LIB_X509V3, X509V3_R_INVALID_NULL_VALUE);
362364 goto err;
363365 }
364 X509V3_add_value(ntmp, vtmp, &values);
366 if (!X509V3_add_value(ntmp, vtmp, &values)) {
367 goto err;
368 }
365369 ntmp = NULL;
366370 q = p + 1;
367371 }
375379 ERR_raise(ERR_LIB_X509V3, X509V3_R_INVALID_NULL_VALUE);
376380 goto err;
377381 }
378 X509V3_add_value(ntmp, vtmp, &values);
382 if (!X509V3_add_value(ntmp, vtmp, &values)) {
383 goto err;
384 }
379385 } else {
380386 ntmp = strip_spaces(q);
381387 if (!ntmp) {
382388 ERR_raise(ERR_LIB_X509V3, X509V3_R_INVALID_EMPTY_NAME);
383389 goto err;
384390 }
385 X509V3_add_value(ntmp, NULL, &values);
391 if (!X509V3_add_value(ntmp, NULL, &values)) {
392 goto err;
393 }
386394 }
387395 OPENSSL_free(linebuf);
388396 return values;
706714 }
707715 /* IDNA labels cannot match partial wildcards */
708716 if (!allow_idna &&
709 subject_len >= 4 && strncasecmp((char *)subject, "xn--", 4) == 0)
717 subject_len >= 4 && OPENSSL_strncasecmp((char *)subject, "xn--", 4) == 0)
710718 return 0;
711719 /* The wildcard may match a literal '*' */
712720 if (wildcard_end == wildcard_start + 1 && *wildcard_start == '*')
766774 || ('A' <= p[i] && p[i] <= 'Z')
767775 || ('0' <= p[i] && p[i] <= '9')) {
768776 if ((state & LABEL_START) != 0
769 && len - i >= 4 && strncasecmp((char *)&p[i], "xn--", 4) == 0)
777 && len - i >= 4 && OPENSSL_strncasecmp((char *)&p[i], "xn--", 4) == 0)
770778 state |= LABEL_IDNA;
771779 state &= ~(LABEL_HYPHEN | LABEL_START);
772780 } else if (p[i] == '.') {
15301530 GENERATE[html/man3/OPENSSL_secure_malloc.html]=man3/OPENSSL_secure_malloc.pod
15311531 DEPEND[man/man3/OPENSSL_secure_malloc.3]=man3/OPENSSL_secure_malloc.pod
15321532 GENERATE[man/man3/OPENSSL_secure_malloc.3]=man3/OPENSSL_secure_malloc.pod
1533 DEPEND[html/man3/OPENSSL_strcasecmp.html]=man3/OPENSSL_strcasecmp.pod
1534 GENERATE[html/man3/OPENSSL_strcasecmp.html]=man3/OPENSSL_strcasecmp.pod
1535 DEPEND[man/man3/OPENSSL_strcasecmp.3]=man3/OPENSSL_strcasecmp.pod
1536 GENERATE[man/man3/OPENSSL_strcasecmp.3]=man3/OPENSSL_strcasecmp.pod
15331537 DEPEND[html/man3/OSSL_CMP_CTX_new.html]=man3/OSSL_CMP_CTX_new.pod
15341538 GENERATE[html/man3/OSSL_CMP_CTX_new.html]=man3/OSSL_CMP_CTX_new.pod
15351539 DEPEND[man/man3/OSSL_CMP_CTX_new.3]=man3/OSSL_CMP_CTX_new.pod
31093113 html/man3/OPENSSL_malloc.html \
31103114 html/man3/OPENSSL_s390xcap.html \
31113115 html/man3/OPENSSL_secure_malloc.html \
3116 html/man3/OPENSSL_strcasecmp.html \
31123117 html/man3/OSSL_CMP_CTX_new.html \
31133118 html/man3/OSSL_CMP_HDR_get0_transactionID.html \
31143119 html/man3/OSSL_CMP_ITAV_set0.html \
37033708 man/man3/OPENSSL_malloc.3 \
37043709 man/man3/OPENSSL_s390xcap.3 \
37053710 man/man3/OPENSSL_secure_malloc.3 \
3711 man/man3/OPENSSL_strcasecmp.3 \
37063712 man/man3/OSSL_CMP_CTX_new.3 \
37073713 man/man3/OSSL_CMP_HDR_get0_transactionID.3 \
37083714 man/man3/OSSL_CMP_ITAV_set0.3 \
1818 8657 ABB2 60F0 56B1 E519 0839 D9C4 D26D 0E60 4491
1919
2020 Paul Dale:
21 1B72 6772 1033 CC88 A531 5EF5 5359 C4D8 443B 383B
21 B7C1 C143 60F3 53A3 6862 E4D5 231C 84CD DCC6 9C45
22
23 Tomáš Mráz:
24 A21F AB74 B008 8AA3 6115 2586 B8EF 1A6B A9DA 2D5C
117117 called in response to the application calling BIO_new() and passing
118118 in a pointer to the current BIO_METHOD. The BIO_new() function will allocate the
119119 memory for the new BIO, and a pointer to this newly allocated structure will
120 be passed as a parameter to the function.
120 be passed as a parameter to the function. If a create function is set,
121 BIO_new() will not mark the BIO as initialised on allocation.
122 L<BIO_set_init(3)> must then be called either by the create function, or later,
123 by a BIO ctrl function, once BIO initialisation is complete.
121124
122125 BIO_meth_get_destroy() and BIO_meth_set_destroy() get and set the function used
123126 for destroying an instance of a BIO respectively. This function will be
153156
154157 =head1 COPYRIGHT
155158
156 Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved.
159 Copyright 2016-2022 The OpenSSL Project Authors. All Rights Reserved.
157160
158161 Licensed under the Apache License 2.0 (the "License"). You may not use
159162 this file except in compliance with the License. You can obtain a copy
3333 =head1 RETURN VALUES
3434
3535 These functions return a B<EVP_MD> structure that contains the
36 implementation of the symmetric cipher. See L<EVP_MD_meth_new(3)> for
36 implementation of the message digest. See L<EVP_MD_meth_new(3)> for
3737 details of the B<EVP_MD> structure.
3838
3939 =head1 CONFORMING TO
5353
5454 =head1 COPYRIGHT
5555
56 Copyright 2017 The OpenSSL Project Authors. All Rights Reserved.
56 Copyright 2017-2022 The OpenSSL Project Authors. All Rights Reserved.
5757
5858 Licensed under the Apache License 2.0 (the "License"). You may not use
5959 this file except in compliance with the License. You can obtain a copy
2727 =head1 RETURN VALUES
2828
2929 These functions return a B<EVP_MD> structure that contains the
30 implementation of the symmetric cipher. See L<EVP_MD_meth_new(3)> for
30 implementation of the message digest. See L<EVP_MD_meth_new(3)> for
3131 details of the B<EVP_MD> structure.
3232
3333 =head1 CONFORMING TO
4242
4343 =head1 COPYRIGHT
4444
45 Copyright 2017-2020 The OpenSSL Project Authors. All Rights Reserved.
45 Copyright 2017-2022 The OpenSSL Project Authors. All Rights Reserved.
4646
4747 Licensed under the Apache License 2.0 (the "License"). You may not use
4848 this file except in compliance with the License. You can obtain a copy
2828 =head1 RETURN VALUES
2929
3030 These functions return a B<EVP_MD> structure that contains the
31 implementation of the symmetric cipher. See L<EVP_MD_meth_new(3)> for
31 implementation of the message digest. See L<EVP_MD_meth_new(3)> for
3232 details of the B<EVP_MD> structure.
3333
3434 =head1 CONFORMING TO
4343
4444 =head1 COPYRIGHT
4545
46 Copyright 2017-2020 The OpenSSL Project Authors. All Rights Reserved.
46 Copyright 2017-2022 The OpenSSL Project Authors. All Rights Reserved.
4747
4848 Licensed under the Apache License 2.0 (the "License"). You may not use
4949 this file except in compliance with the License. You can obtain a copy
3939 =head1 RETURN VALUES
4040
4141 These functions return a B<EVP_MD> structure that contains the
42 implementation of the symmetric cipher. See L<EVP_MD_meth_new(3)> for
42 implementation of the message digest. See L<EVP_MD_meth_new(3)> for
4343 details of the B<EVP_MD> structure.
4444
4545 =head1 CONFORMING TO
5353
5454 =head1 COPYRIGHT
5555
56 Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved.
56 Copyright 2017-2022 The OpenSSL Project Authors. All Rights Reserved.
5757
5858 Licensed under the Apache License 2.0 (the "License"). You may not use
5959 this file except in compliance with the License. You can obtain a copy
2828 =head1 RETURN VALUES
2929
3030 These functions return a B<EVP_MD> structure that contains the
31 implementation of the symmetric cipher. See L<EVP_MD_meth_new(3)> for
31 implementation of the message digest. See L<EVP_MD_meth_new(3)> for
3232 details of the B<EVP_MD> structure.
3333
3434 =head1 CONFORMING TO
4343
4444 =head1 COPYRIGHT
4545
46 Copyright 2017-2020 The OpenSSL Project Authors. All Rights Reserved.
46 Copyright 2017-2022 The OpenSSL Project Authors. All Rights Reserved.
4747
4848 Licensed under the Apache License 2.0 (the "License"). You may not use
4949 this file except in compliance with the License. You can obtain a copy
2727 =head1 RETURN VALUES
2828
2929 These functions return a B<EVP_MD> structure that contains the
30 implementation of the symmetric cipher. See L<EVP_MD_meth_new(3)> for
30 implementation of the message digest. See L<EVP_MD_meth_new(3)> for
3131 details of the B<EVP_MD> structure.
3232
3333 =head1 CONFORMING TO
4242
4343 =head1 COPYRIGHT
4444
45 Copyright 2017-2020 The OpenSSL Project Authors. All Rights Reserved.
45 Copyright 2017-2022 The OpenSSL Project Authors. All Rights Reserved.
4646
4747 Licensed under the Apache License 2.0 (the "License"). You may not use
4848 this file except in compliance with the License. You can obtain a copy
2828 =head1 RETURN VALUES
2929
3030 These functions return a B<EVP_MD> structure that contains the
31 implementation of the symmetric cipher. See L<EVP_MD_meth_new(3)> for
31 implementation of the message digest. See L<EVP_MD_meth_new(3)> for
3232 details of the B<EVP_MD> structure.
3333
3434 =head1 CONFORMING TO
4242
4343 =head1 COPYRIGHT
4444
45 Copyright 2017 The OpenSSL Project Authors. All Rights Reserved.
45 Copyright 2017-2022 The OpenSSL Project Authors. All Rights Reserved.
4646
4747 Licensed under the Apache License 2.0 (the "License"). You may not use
4848 this file except in compliance with the License. You can obtain a copy
4848 =head1 RETURN VALUES
4949
5050 These functions return a B<EVP_MD> structure that contains the
51 implementation of the symmetric cipher. See L<EVP_MD_meth_new(3)> for
51 implementation of the message digest. See L<EVP_MD_meth_new(3)> for
5252 details of the B<EVP_MD> structure.
5353
5454 =head1 CONFORMING TO
6262
6363 =head1 COPYRIGHT
6464
65 Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved.
65 Copyright 2017-2022 The OpenSSL Project Authors. All Rights Reserved.
6666
6767 Licensed under the Apache License 2.0 (the "License"). You may not use
6868 this file except in compliance with the License. You can obtain a copy
5353 =head1 RETURN VALUES
5454
5555 These functions return a B<EVP_MD> structure that contains the
56 implementation of the symmetric cipher. See L<EVP_MD_meth_new(3)> for
56 implementation of the message digest. See L<EVP_MD_meth_new(3)> for
5757 details of the B<EVP_MD> structure.
5858
5959 =head1 CONFORMING TO
6767
6868 =head1 COPYRIGHT
6969
70 Copyright 2017 The OpenSSL Project Authors. All Rights Reserved.
70 Copyright 2017-2022 The OpenSSL Project Authors. All Rights Reserved.
7171
7272 Licensed under the Apache License 2.0 (the "License"). You may not use
7373 this file except in compliance with the License. You can obtain a copy
2727 =head1 RETURN VALUES
2828
2929 These functions return a B<EVP_MD> structure that contains the
30 implementation of the symmetric cipher. See L<EVP_MD_meth_new(3)> for
30 implementation of the message digest. See L<EVP_MD_meth_new(3)> for
3131 details of the B<EVP_MD> structure.
3232
3333 =head1 CONFORMING TO
4141
4242 =head1 COPYRIGHT
4343
44 Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved.
44 Copyright 2017-2022 The OpenSSL Project Authors. All Rights Reserved.
4545 Copyright 2017 Ribose Inc. All Rights Reserved.
4646
4747 Licensed under the Apache License 2.0 (the "License"). You may not use
2929 =head1 RETURN VALUES
3030
3131 These functions return a B<EVP_MD> structure that contains the
32 implementation of the symmetric cipher. See L<EVP_MD_meth_new(3)> for
32 implementation of the message digest. See L<EVP_MD_meth_new(3)> for
3333 details of the B<EVP_MD> structure.
3434
3535 =head1 CONFORMING TO
4444
4545 =head1 COPYRIGHT
4646
47 Copyright 2017-2020 The OpenSSL Project Authors. All Rights Reserved.
47 Copyright 2017-2022 The OpenSSL Project Authors. All Rights Reserved.
4848
4949 Licensed under the Apache License 2.0 (the "License"). You may not use
5050 this file except in compliance with the License. You can obtain a copy
2222 The B<LHASH> structure records statistics about most aspects of
2323 accessing the hash table.
2424
25 OPENSSL_LH_stats() prints out statistics on the size of the hash table, how
26 many entries are in it, and the number and result of calls to the
27 routines in this library.
25 OPENSSL_LH_stats() prints out statistics on the size of the hash table and how
26 many entries are in it. For historical reasons, this function also outputs a
27 number of additional statistics, but the tracking of these statistics is no
28 longer supported and these statistics are always reported as zero.
2829
2930 OPENSSL_LH_node_stats() prints the number of entries for each 'bucket' in the
3031 hash table.
5758
5859 =head1 COPYRIGHT
5960
60 Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved.
61 Copyright 2000-2022 The OpenSSL Project Authors. All Rights Reserved.
6162
6263 Licensed under the Apache License 2.0 (the "License"). You may not use
6364 this file except in compliance with the License. You can obtain a copy
0 =pod
1
2 =head1 NAME
3
4 OPENSSL_strcasecmp, OPENSSL_strncasecmp - compare two strings ignoring case
5
6 =head1 SYNOPSIS
7
8 #include <openssl/crypto.h>
9
10 int OPENSSL_strcasecmp(const char *s1, const char *s2);
11 int OPENSSL_strncasecmp(const char *s1, const char *s2, size_t n);
12
13 =head1 DESCRIPTION
14
15 The OPENSSL_strcasecmp function performs a byte-by-byte comparison of the strings
16 B<s1> and B<s2>, ignoring the case of the characters.
17
18 The OPENSSL_strncasecmp function is similar, except that it compares no more than
19 B<n> bytes of B<s1> and B<s2>.
20
21 In POSIX-compatible system and on Windows these functions use "C" locale for
22 case insensitive. Otherwise the comparison is done in current locale.
23
24 =head1 RETURN VALUES
25
26 Both functions return an integer less than, equal to, or greater than zero if
27 s1 is found, respectively, to be less than, to match, or be greater than s2.
28
29 =head1 NOTES
30
31 OpenSSL extensively uses case insensitive comparison of ASCII strings. Though
32 OpenSSL itself is locale-agnostic, the applications using OpenSSL libraries may
33 unpredictably suffer when they use localization (e.g. Turkish locale is
34 well-known with a specific I/i cases). These functions use C locale for string
35 comparison.
36
37 =head1 COPYRIGHT
38
39 Copyright 2022 The OpenSSL Project Authors. All Rights Reserved.
40
41 Licensed under the Apache License 2.0 (the "License"). You may not use
42 this file except in compliance with the License. You can obtain a copy
43 in the file LICENSE in the source distribution or at
44 L<https://www.openssl.org/source/license.html>.
45
46 =cut
243243 ("indirect method")
244244
245245 Note that a signature-based POPO can only be produced if a private key
246 is provided as the newPkey or client pkey component of the CMP context.
246 is provided as the newPkey or client's pkey component of the CMP context.
247247
248248 =item B<OSSL_CMP_OPT_DIGEST_ALGNID>
249249
440440 OSSL_CMP_CTX_get0_untrusted(OSSL_CMP_CTX *ctx) returns a pointer to the
441441 list of untrusted certs, which may be empty if unset.
442442
443 OSSL_CMP_CTX_set1_cert() sets the certificate related to the private key
443 OSSL_CMP_CTX_set1_cert() sets the certificate related to the client's private key
444444 used for CMP message protection.
445445 Therefore the public key of this I<cert> must correspond to
446446 the private key set before or thereafter via OSSL_CMP_CTX_set1_pkey().
467467 is performed on demand that is equivalent to calling this function
468468 with the I<candidates> and I<own_trusted> arguments being NULL.
469469
470 OSSL_CMP_CTX_set1_pkey() sets the private key corresponding to the
470 OSSL_CMP_CTX_set1_pkey() sets the client's private key corresponding to the
471471 CMP signer certificate set via OSSL_CMP_CTX_set1_cert().
472472 This key is used create signature-based protection (protectionAlg = MSG_SIG_ALG)
473473 of outgoing messages
518518 OSSL_CMP_CTX_get0_newPkey() gives the key to use for certificate enrollment
519519 dependent on fields of the CMP context structure:
520520 the newPkey (which may be a private or public key) if present,
521 else the public key in the p10CSR if present, else the client private key.
521 else the public key in the p10CSR if present, else the client's private key.
522522 If the I<priv> parameter is not 0 and the selected key does not have a
523523 private component then NULL is returned.
524524
3939 for inclusion in a CMP request message based on details contained in I<ctx>.
4040 The I<rid> argument defines the request identifier to use, which typically is 0.
4141
42 The subject DN to include in the certificate template is determined as follows.
43 If I<ctx> includes a subject name set via L<OSSL_CMP_CTX_set1_subjectName(3)>,
44 this name is used.
45 Otherwise, if a PKCS#10 CSR is given in I<ctx>, its subject is used.
46 Otherwise, if a reference certificate is given in I<ctx>
47 (see L<OSSL_CMP_CTX_set1_oldCert(3)>), its subject is used if I<for_KUR>
48 is nonzero or the I<ctx> does not include a Subject Alternative Name.
42 The subject DN included in the certificate template is
43 the first available value of these:
4944
50 The public key to include is taken from any value set via
51 L<OSSL_CMP_CTX_set0_newPkey(3)>,
52 otherwise the public key of any PKCS#10 CSR is given in I<ctx>,
53 otherwise the public key of any reference certificate given in I<ctx>,
54 otherwise it is derived from the client private key if given in I<ctx>.
45 =over 4
46
47 =item any subject name in I<ctx> set via L<OSSL_CMP_CTX_set1_subjectName(3)>,
48
49 =item the subject field of any PKCS#10 CSR is given in I<ctx>, or
50
51 =item the subject field of any reference certificate given in I<ctx>
52 (see L<OSSL_CMP_CTX_set1_oldCert(3)>), if I<for_KUR> is nonzero
53 or the I<ctx> does not include a Subject Alternative Name.
54
55 =back
56
57 The public key included is the first available value of these:
58
59 =over 4
60
61 =item the public key derived from any key set via L<OSSL_CMP_CTX_set0_newPkey(3)>,
62
63 =item the public key of any PKCS#10 CSR is given in I<ctx>,
64
65 =item the public key of any reference certificate given in I<ctx>, or
66
67 =item the public key derived from any client's private key
68 set via L<OSSL_CMP_CTX_set1_pkey(3)>.
69
70 =back
5571
5672 The set of X.509 extensions to include is computed as follows.
5773 If a PKCS#10 CSR is present in I<ctx>, default extensions are taken from there,
192192 =head1 DESCRIPTION
193193
194194 All of the functions described on this page that have a I<TYPE> of B<DH>, B<DSA>
195 and B<RSA> are deprecated. Applications should use OSSL_ENCODER_to_bio() and
196 OSSL_DECODER_from_bio() instead.
195 and B<RSA> are deprecated. Applications should use L<OSSL_ENCODER_to_bio(3)> and
196 L<OSSL_DECODER_from_bio(3)> instead.
197197
198198 The PEM functions read or write structures in PEM format. In
199199 this sense PEM format is simply base64 encoded data surrounded
6363 setting B<SSL_OP_ALLOW_CLIENT_RENEGOTIATION>.
6464 Only used by servers.
6565
66 =item B<-legacyrenegotiation>
66 =item B<-legacy_renegotiation>
6767
6868 Permits the use of unsafe legacy renegotiation. Equivalent to setting
6969 B<SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION>.
11
22 =head1 NAME
33
4 SSL_CTX_get0_param, SSL_get0_param, SSL_CTX_set1_param, SSL_set1_param -
4 SSL_CTX_get0_param, SSL_get0_param, SSL_CTX_set1_param, SSL_set1_param,
5 SSL_CTX_set_purpose, SSL_CTX_set_trust, SSL_set_purpose, SSL_set_trust -
56 get and set verification parameters
67
78 =head1 SYNOPSIS
1314 int SSL_CTX_set1_param(SSL_CTX *ctx, X509_VERIFY_PARAM *vpm);
1415 int SSL_set1_param(SSL *ssl, X509_VERIFY_PARAM *vpm);
1516
17 int SSL_CTX_set_purpose(SSL_CTX *ctx, int purpose);
18 int SSL_set_purpose(SSL *ssl, int purpose);
19
20 int SSL_CTX_set_trust(SSL_CTX *ctx, int trust);
21 int SSL_set_trust(SSL *ssl, int trust);
22
1623 =head1 DESCRIPTION
1724
1825 SSL_CTX_get0_param() and SSL_get0_param() retrieve an internal pointer to
2128
2229 SSL_CTX_set1_param() and SSL_set1_param() set the verification parameters
2330 to B<vpm> for B<ctx> or B<ssl>.
31
32 The functions SSL_CTX_set_purpose() and SSL_set_purpose() are shorthands which
33 set the purpose parameter on the verification parameters object. These functions
34 are equivalent to calling X509_VERIFY_PARAM_set_purpose() directly.
35
36 The functions SSL_CTX_set_trust() and SSL_set_trust() are similarly shorthands
37 which set the trust parameter on the verification parameters object. These
38 functions are equivalent to calling X509_VERIFY_PARAM_set_trust() directly.
2439
2540 =head1 NOTES
2641
3348 SSL_CTX_get0_param() and SSL_get0_param() return a pointer to an
3449 B<X509_VERIFY_PARAM> structure.
3550
36 SSL_CTX_set1_param() and SSL_set1_param() return 1 for success and 0
37 for failure.
51 SSL_CTX_set1_param(), SSL_set1_param(), SSL_CTX_set_purpose(),
52 SSL_set_purpose(), SSL_CTX_set_trust() and SSL_set_trust() return 1 for success
53 and 0 for failure.
3854
3955 =head1 EXAMPLES
4056
5470
5571 =head1 COPYRIGHT
5672
57 Copyright 2015-2020 The OpenSSL Project Authors. All Rights Reserved.
73 Copyright 2015-2022 The OpenSSL Project Authors. All Rights Reserved.
5874
5975 Licensed under the Apache License 2.0 (the "License"). You may not use
6076 this file except in compliance with the License. You can obtain a copy
44 SSL_CTX_set0_verify_cert_store, SSL_CTX_set1_verify_cert_store,
55 SSL_CTX_set0_chain_cert_store, SSL_CTX_set1_chain_cert_store,
66 SSL_set0_verify_cert_store, SSL_set1_verify_cert_store,
7 SSL_set0_chain_cert_store, SSL_set1_chain_cert_store - set certificate
7 SSL_set0_chain_cert_store, SSL_set1_chain_cert_store,
8 SSL_CTX_get0_verify_cert_store, SSL_CTX_get0_chain_cert_store,
9 SSL_get0_verify_cert_store, SSL_get0_chain_cert_store - set certificate
810 verification or chain store
911
1012 =head1 SYNOPSIS
1517 int SSL_CTX_set1_verify_cert_store(SSL_CTX *ctx, X509_STORE *st);
1618 int SSL_CTX_set0_chain_cert_store(SSL_CTX *ctx, X509_STORE *st);
1719 int SSL_CTX_set1_chain_cert_store(SSL_CTX *ctx, X509_STORE *st);
20 int SSL_CTX_get0_verify_cert_store(SSL_CTX *ctx, X509_STORE **st);
21 int SSL_CTX_get0_chain_cert_store(SSL_CTX *ctx, X509_STORE **st);
1822
1923 int SSL_set0_verify_cert_store(SSL *ctx, X509_STORE *st);
2024 int SSL_set1_verify_cert_store(SSL *ctx, X509_STORE *st);
2125 int SSL_set0_chain_cert_store(SSL *ctx, X509_STORE *st);
2226 int SSL_set1_chain_cert_store(SSL *ctx, X509_STORE *st);
27 int SSL_get0_verify_cert_store(SSL *ctx, X509_STORE **st);
28 int SSL_get0_chain_cert_store(SSL *ctx, X509_STORE **st);
2329
2430 =head1 DESCRIPTION
2531
3238 SSL_set0_verify_cert_store(), SSL_set1_verify_cert_store(),
3339 SSL_set0_chain_cert_store() and SSL_set1_chain_cert_store() are similar
3440 except they apply to SSL structure B<ssl>.
41
42 SSL_CTX_get0_verify_chain_store(), SSL_get0_verify_chain_store(),
43 SSL_CTX_get0_chain_cert_store() and SSL_get0_chain_cert_store() retrieve the
44 objects previously set via the above calls. A pointer to the object (or NULL if
45 no such object has been set) is written to B<*st>.
3546
3647 All these functions are implemented as macros. Those containing a B<1>
3748 increment the reference count of the supplied store so it must
93104
94105 =head1 COPYRIGHT
95106
96 Copyright 2013-2021 The OpenSSL Project Authors. All Rights Reserved.
107 Copyright 2013-2022 The OpenSSL Project Authors. All Rights Reserved.
97108
98109 Licensed under the Apache License 2.0 (the "License"). You may not use
99110 this file except in compliance with the License. You can obtain a copy
11
22 =head1 NAME
33
4 SSL_CTX_set_ssl_version, SSL_set_ssl_method, SSL_get_ssl_method
4 SSL_CTX_set_ssl_version, SSL_CTX_get_ssl_method, SSL_set_ssl_method, SSL_get_ssl_method
55 - choose a new TLS/SSL method
66
77 =head1 SYNOPSIS
99 #include <openssl/ssl.h>
1010
1111 int SSL_CTX_set_ssl_version(SSL_CTX *ctx, const SSL_METHOD *method);
12 const SSL_METHOD *SSL_CTX_get_ssl_method(const SSL_CTX *ctx);
13
1214 int SSL_set_ssl_method(SSL *s, const SSL_METHOD *method);
1315 const SSL_METHOD *SSL_get_ssl_method(const SSL *ssl);
1416
2123 SSL_CTX with L<SSL_new(3)> are not affected, except when L<SSL_clear(3)> is
2224 being called, as described below.
2325
26 SSL_CTX_get_ssl_method() returns the SSL_METHOD which was used to construct the
27 SSL_CTX.
28
2429 SSL_set_ssl_method() sets a new TLS/SSL B<method> for a particular B<ssl>
2530 object. It may be reset, when SSL_clear() is called.
2631
27 SSL_get_ssl_method() returns a function pointer to the TLS/SSL method
32 SSL_get_ssl_method() returns a pointer to the TLS/SSL method
2833 set in B<ssl>.
2934
3035 =head1 NOTES
5863
5964 =back
6065
66 SSL_CTX_get_ssl_method() and SSL_get_ssl_method() always return non-NULL
67 pointers.
68
6169 =head1 SEE ALSO
6270
6371 L<SSL_CTX_new(3)>, L<SSL_new(3)>,
7078
7179 =head1 COPYRIGHT
7280
73 Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved.
81 Copyright 2000-2022 The OpenSSL Project Authors. All Rights Reserved.
7482
7583 Licensed under the Apache License 2.0 (the "License"). You may not use
7684 this file except in compliance with the License. You can obtain a copy
4141 All currently supported protocols have the same default timeout value
4242 of 300 seconds.
4343
44 This timeout value is used as the ticket lifetime hint for stateless session
45 tickets. It is also used as the timeout value within the ticket itself.
46
47 For TLSv1.3, RFC8446 limits transmission of this value to 1 week (604800
48 seconds).
49
50 For TLSv1.2, tickets generated during an initial handshake use the value
51 as specified. Tickets generated during a resumed handshake have a value
52 of 0 for the ticket lifetime hint.
53
4454 =head1 RETURN VALUES
4555
4656 SSL_CTX_set_timeout() returns the previously set timeout value.
5767
5868 =head1 COPYRIGHT
5969
60 Copyright 2001-2016 The OpenSSL Project Authors. All Rights Reserved.
70 Copyright 2001-2022 The OpenSSL Project Authors. All Rights Reserved.
6171
6272 Licensed under the Apache License 2.0 (the "License"). You may not use
6373 this file except in compliance with the License. You can obtain a copy
5252 with B<SSL_ERROR_WANT_RETRY_VERIFY>.
5353 The application can for instance fetch further certificates or cert status
5454 information needed for the verification.
55 Note that the handshake may still be aborted if a subsequent invocation of the
56 callback (e.g. at a lower depth, or for a separate error condition) returns 0.
5755 Calling L<SSL_connect(3)> again resumes the connection attempt by retrying the
5856 server certificate verification step.
5957 This process may even be repeated if need be.
58 Note that the handshake may still be aborted if a subsequent invocation of the
59 callback (e.g., at a lower depth, or for a separate error condition) returns 0.
6060
6161 SSL_CTX_set_verify_depth() sets the maximum B<depth> for the certificate chain
6262 verification that shall be allowed for B<ctx>.
2020
2121 If there is already a session set inside B<ssl> (because it was set with
2222 SSL_set_session() before or because the same B<ssl> was already used for
23 a connection), SSL_SESSION_free() will be called for that session. If that old
23 a connection), SSL_SESSION_free() will be called for that session.
24 This is also the case when B<session> is a NULL pointer. If that old
2425 session is still B<open>, it is considered bad and will be removed from the
2526 session cache (if used). A session is considered open, if L<SSL_shutdown(3)> was
2627 not called for the connection (or at least L<SSL_set_shutdown(3)> was used to
5960
6061 =head1 COPYRIGHT
6162
62 Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
63 Copyright 2000-2022 The OpenSSL Project Authors. All Rights Reserved.
6364
6465 Licensed under the Apache License 2.0 (the "License"). You may not use
6566 this file except in compliance with the License. You can obtain a copy
102102
103103 EVP_KDF *kdf;
104104 EVP_KDF_CTX *kctx;
105 const char type = EVP_KDF_SSHKDF_TYPE_INITIAL_IV_CLI_TO_SRV;
105 char type = EVP_KDF_SSHKDF_TYPE_INITIAL_IV_CLI_TO_SRV;
106106 unsigned char key[1024] = "01234...";
107107 unsigned char xcghash[32] = "012345...";
108108 unsigned char session_id[32] = "012345...";
125125 *p++ = OSSL_PARAM_construct_utf8_string(OSSL_KDF_PARAM_SSHKDF_TYPE,
126126 &type, sizeof(type));
127127 *p = OSSL_PARAM_construct_end();
128 if (EVP_KDF_derive(kctx, out, &outlen, params) <= 0)
128 if (EVP_KDF_derive(kctx, out, outlen, params) <= 0)
129129 /* Error */
130130
131131
145145
146146 =head1 COPYRIGHT
147147
148 Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved.
148 Copyright 2016-2022 The OpenSSL Project Authors. All Rights Reserved.
149149
150150 Licensed under the Apache License 2.0 (the "License"). You may not use
151151 this file except in compliance with the License. You can obtain a copy
4242
4343 /* Digest Sign */
4444 int OSSL_FUNC_signature_digest_sign_init(void *ctx, const char *mdname,
45 const char *props, void *provkey,
45 void *provkey,
4646 const OSSL_PARAM params[]);
4747 int OSSL_FUNC_signature_digest_sign_update(void *ctx, const unsigned char *data,
4848 size_t datalen);
5555
5656 /* Digest Verify */
5757 int OSSL_FUNC_signature_digest_verify_init(void *ctx, const char *mdname,
58 const char *props, void *provkey,
58 void *provkey,
5959 const OSSL_PARAM params[]);
6060 int OSSL_FUNC_signature_digest_verify_update(void *ctx,
6161 const unsigned char *data,
265265 The key object should have been
266266 previously generated, loaded or imported into the provider using the
267267 key management (OSSL_OP_KEYMGMT) operation (see provider-keymgmt(7)>.
268 The name of the digest to be used will be in the I<mdname> parameter. There may
269 also be properties to be used in fetching the digest in the I<props> parameter,
270 although this may be ignored by providers.
268 The name of the digest to be used will be in the I<mdname> parameter.
271269
272270 OSSL_FUNC_signature_digest_sign_update() provides data to be signed in the I<data>
273271 parameter which should be of length I<datalen>. A previously initialised
304302 The key object should have been
305303 previously generated, loaded or imported into the provider using the
306304 key management (OSSL_OP_KEYMGMT) operation (see provider-keymgmt(7)>.
307 The name of the digest to be used will be in the I<mdname> parameter. There may
308 also be properties to be used in fetching the digest in the I<props> parameter,
309 although this may be ignored by providers.
305 The name of the digest to be used will be in the I<mdname> parameter.
310306
311307 OSSL_FUNC_signature_digest_verify_update() provides data to be verified in the I<data>
312308 parameter which should be of length I<datalen>. A previously initialised
434430
435431 =head1 COPYRIGHT
436432
437 Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved.
433 Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved.
438434
439435 Licensed under the Apache License 2.0 (the "License"). You may not use
440436 this file except in compliance with the License. You can obtain a copy
114114 B<EVP_MD>.
115115 The number for this operation is B<OSSL_OP_DIGEST>.
116116 The functions the provider can offer are described in
117 L<provider-digest(7)>
117 L<provider-digest(7)>.
118118
119119 =item Symmetric ciphers
120120
122122 B<EVP_CIPHER>.
123123 The number for this operation is B<OSSL_OP_CIPHER>.
124124 The functions the provider can offer are described in
125 L<provider-cipher(7)>
125 L<provider-cipher(7)>.
126126
127127 =item Message Authentication Code (MAC)
128128
130130 B<EVP_MAC>.
131131 The number for this operation is B<OSSL_OP_MAC>.
132132 The functions the provider can offer are described in
133 L<provider-mac(7)>
133 L<provider-mac(7)>.
134134
135135 =item Key Derivation Function (KDF)
136136
138138 B<EVP_KDF>.
139139 The number for this operation is B<OSSL_OP_KDF>.
140140 The functions the provider can offer are described in
141 L<provider-kdf(7)>
141 L<provider-kdf(7)>.
142142
143143 =item Key Exchange
144144
146146 B<EVP_KEYEXCH>.
147147 The number for this operation is B<OSSL_OP_KEYEXCH>.
148148 The functions the provider can offer are described in
149 L<provider-keyexch(7)>
149 L<provider-keyexch(7)>.
150150
151151 =item Asymmetric Ciphers
152152
154154 B<EVP_ASYM_CIPHER>.
155155 The number for this operation is B<OSSL_OP_ASYM_CIPHER>.
156156 The functions the provider can offer are described in
157 L<provider-asym_cipher(7)>
157 L<provider-asym_cipher(7)>.
158158
159159 =item Asymmetric Key Encapsulation
160160
161161 In the OpenSSL libraries, the corresponding method object is B<EVP_KEM>.
162162 The number for this operation is B<OSSL_OP_KEM>.
163 The functions the provider can offer are described in L<provider-kem(7)>
163 The functions the provider can offer are described in L<provider-kem(7)>.
164164
165165 =item Encoding
166166
168168 B<OSSL_ENCODER>.
169169 The number for this operation is B<OSSL_OP_ENCODER>.
170170 The functions the provider can offer are described in
171 L<provider-encoder(7)>
171 L<provider-encoder(7)>.
172
173 =item Decoding
174
175 In the OpenSSL libraries, the corresponding method object is
176 B<OSSL_DECODER>.
177 The number for this operation is B<OSSL_OP_DECODER>.
178 The functions the provider can offer are described in
179 L<provider-decoder(7)>.
180
181 =item Random Number Generation
182
183 The number for this operation is B<OSSL_OP_RAND>.
184 The functions the provider can offer for random number generation are described
185 in L<provider-rand(7)>.
186
187 =item Key Management
188
189 The number for this operation is B<OSSL_OP_KEYMGMT>.
190 The functions the provider can offer for key management are described in
191 L<provider-keymgmt(7)>.
192
193 =item Signing and Signature Verification
194
195 The number for this operation is B<OSSL_OP_SIGNATURE>.
196 The functions the provider can offer for digital signatures are described in
197 L<provider-signature(7)>.
198
199 =item Store Management
200
201 The number for this operation is B<OSSL_OP_STORE>.
202 The functions the provider can offer for store management are described in
203 L<provider-storemgmt(7)>.
172204
173205 =back
174206
221253
222254 =head1 COPYRIGHT
223255
224 Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved.
256 Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved.
225257
226258 Licensed under the Apache License 2.0 (the "License"). You may not use
227259 this file except in compliance with the License. You can obtain a copy
00 /*
1 * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
248248 /***********************************************/
249249
250250 # if defined(OPENSSL_SYS_WINDOWS)
251 # define strcasecmp _stricmp
252 # define strncasecmp _strnicmp
253251 # if (_MSC_VER >= 1310) && !defined(_WIN32_WCE)
254252 # define open _open
255253 # define fdopen _fdopen
00 /*
1 * Copyright 2017-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2017-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
11581158 case DEVCRYPTO_CMD_CIPHERS:
11591159 if (p == NULL)
11601160 return 1;
1161 if (strcasecmp((const char *)p, "ALL") == 0) {
1161 if (OPENSSL_strcasecmp((const char *)p, "ALL") == 0) {
11621162 devcrypto_select_all_ciphers(selected_ciphers);
1163 } else if (strcasecmp((const char*)p, "NONE") == 0) {
1163 } else if (OPENSSL_strcasecmp((const char*)p, "NONE") == 0) {
11641164 memset(selected_ciphers, 0, sizeof(selected_ciphers));
11651165 } else {
11661166 new_list=OPENSSL_zalloc(sizeof(selected_ciphers));
11781178 case DEVCRYPTO_CMD_DIGESTS:
11791179 if (p == NULL)
11801180 return 1;
1181 if (strcasecmp((const char *)p, "ALL") == 0) {
1181 if (OPENSSL_strcasecmp((const char *)p, "ALL") == 0) {
11821182 devcrypto_select_all_digests(selected_digests);
1183 } else if (strcasecmp((const char*)p, "NONE") == 0) {
1183 } else if (OPENSSL_strcasecmp((const char*)p, "NONE") == 0) {
11841184 memset(selected_digests, 0, sizeof(selected_digests));
11851185 } else {
11861186 new_list=OPENSSL_zalloc(sizeof(selected_digests));
00 /*
1 * Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2016-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
1313 /* We need to use some engine deprecated APIs */
1414 #define OPENSSL_SUPPRESS_DEPRECATED
1515
16 /* #include "e_os.h" */
1716 #include <string.h>
1817 #include <sys/stat.h>
1918 #include <ctype.h>
4342
4443 #ifdef _WIN32
4544 # define stat _stat
46 # define strncasecmp _strnicmp
4745 #endif
4846
4947 #ifndef S_ISDIR
970968 * There's a special case if the URI also contains an authority, then
971969 * the full URI shouldn't be used as a path anywhere.
972970 */
973 if (strncasecmp(uri, "file:", 5) == 0) {
971 if (OPENSSL_strncasecmp(uri, "file:", 5) == 0) {
974972 const char *p = &uri[5];
975973
976974 if (strncmp(&uri[5], "//", 2) == 0) {
977975 path_data_n--; /* Invalidate using the full URI */
978 if (strncasecmp(&uri[7], "localhost/", 10) == 0) {
976 if (OPENSSL_strncasecmp(&uri[7], "localhost/", 10) == 0) {
979977 p = &uri[16];
980978 } else if (uri[7] == '/') {
981979 p = &uri[7];
14651463 /*
14661464 * First, check the basename
14671465 */
1468 if (strncasecmp(name, ctx->_.dir.search_name, len) != 0 || name[len] != '.')
1466 if (OPENSSL_strncasecmp(name, ctx->_.dir.search_name, len) != 0
1467 || name[len] != '.')
14691468 return 0;
14701469 p = &name[len + 1];
14711470
00 /*
1 * Copyright 2015-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2015-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
4040 #include <crypto/evp.h>
4141
4242 #include "e_ossltest_err.c"
43
44 #ifdef _WIN32
45 # define strncasecmp _strnicmp
46 #endif
4743
4844 /* Engine Id and Name */
4945 static const char *engine_ossltest_id = "ossltest";
382378 BIO *in;
383379 EVP_PKEY *key;
384380
385 if (strncasecmp(key_id, "ot:", 3) != 0)
381 if (OPENSSL_strncasecmp(key_id, "ot:", 3) != 0)
386382 return NULL;
387383 key_id += 3;
388384
00 /*
1 * Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2016-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License");
44 * you may not use this file except in compliance with the License.
5454
5555 int FuzzerTestOneInput(const uint8_t *buf, size_t len)
5656 {
57 SSL *client;
57 SSL *client = NULL;
5858 BIO *in;
5959 BIO *out;
6060 SSL_CTX *ctx;
6464
6565 /* This only fuzzes the initial flow from the client so far. */
6666 ctx = SSL_CTX_new(SSLv23_method());
67 if (ctx == NULL)
68 goto end;
6769
6870 client = SSL_new(ctx);
71 if (client == NULL)
72 goto end;
6973 OPENSSL_assert(SSL_set_min_proto_version(client, 0) == 1);
7074 OPENSSL_assert(SSL_set_cipher_list(client, "ALL:eNULL:@SECLEVEL=0") == 1);
7175 SSL_set_tlsext_host_name(client, "localhost");
7276 in = BIO_new(BIO_s_mem());
77 if (in == NULL)
78 goto end;
7379 out = BIO_new(BIO_s_mem());
80 if (out == NULL) {
81 BIO_free(in);
82 goto end;
83 }
7484 SSL_set_bio(client, in, out);
7585 SSL_set_connect_state(client);
7686 OPENSSL_assert((size_t)BIO_write(in, buf, len) == len);
8393 }
8494 }
8595 }
96 end:
8697 SSL_free(client);
8798 ERR_clear_error();
8899 SSL_CTX_free(ctx);
00 /*
1 * Copyright 2017-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2017-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
7979 # define ossl_isbase64(c) (ossl_ctype_check((c), CTYPE_MASK_base64))
8080 # define ossl_isasn1print(c) (ossl_ctype_check((c), CTYPE_MASK_asn1print))
8181
82 int ossl_init_casecmp(void);
83 void ossl_deinit_casecmp(void);
8284 #endif
00 /*
11 * Generated by util/mkerr.pl DO NOT EDIT
2 * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.
2 * Copyright 2020-2022 The OpenSSL Project Authors. All Rights Reserved.
33 *
44 * Licensed under the Apache License 2.0 (the "License"). You may not use
55 * this file except in compliance with the License. You can obtain a copy
00 /*
1 * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
6262 int ossl_lib_ctx_unlock(OSSL_LIB_CTX *ctx);
6363 int ossl_lib_ctx_is_child(OSSL_LIB_CTX *ctx);
6464
65 void *ossl_c_locale(void);
66
6567 #endif
132132 const char *str, const char sep);
133133 unsigned char *OPENSSL_hexstr2buf(const char *str, long *buflen);
134134 int OPENSSL_hexchar2int(unsigned char c);
135 int OPENSSL_strcasecmp(const char *s1, const char *s2);
136 int OPENSSL_strncasecmp(const char *s1, const char *s2, size_t n);
135137
136138 # define OPENSSL_MALLOC_MAX_NELEMS(type) (((1U<<(sizeof(int)*8-1))-1)/sizeof(type))
137139
00 /*
11 * Generated by util/mkerr.pl DO NOT EDIT
2 * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
2 * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
33 *
44 * Licensed under the Apache License 2.0 (the "License"). You may not use
55 * this file except in compliance with the License. You can obtain a copy
3434 # define EC_R_DECODE_ERROR 142
3535 # define EC_R_DISCRIMINANT_IS_ZERO 118
3636 # define EC_R_EC_GROUP_NEW_BY_NAME_FAILURE 119
37 # define EC_R_EXPLICIT_PARAMS_NOT_SUPPORTED 127
3738 # define EC_R_FAILED_MAKING_PUBLIC_KEY 166
3839 # define EC_R_FIELD_TOO_LARGE 143
3940 # define EC_R_GF2M_NOT_SUPPORTED 147
13081308 # define SSL_CTRL_GET_TMP_KEY 133
13091309 # define SSL_CTRL_GET_NEGOTIATED_GROUP 134
13101310 # define SSL_CTRL_SET_RETRY_VERIFY 136
1311 # define SSL_CTRL_GET_VERIFY_CERT_STORE 137
1312 # define SSL_CTRL_GET_CHAIN_CERT_STORE 138
13111313 # define SSL_CERT_SET_FIRST 1
13121314 # define SSL_CERT_SET_NEXT 2
13131315 # define SSL_CERT_SET_SERVER 3
13691371 SSL_CTX_ctrl(ctx,SSL_CTRL_SET_VERIFY_CERT_STORE,0,(char *)(st))
13701372 # define SSL_CTX_set1_verify_cert_store(ctx,st) \
13711373 SSL_CTX_ctrl(ctx,SSL_CTRL_SET_VERIFY_CERT_STORE,1,(char *)(st))
1374 # define SSL_CTX_get0_verify_cert_store(ctx,st) \
1375 SSL_CTX_ctrl(ctx,SSL_CTRL_GET_VERIFY_CERT_STORE,0,(char *)(st))
13721376 # define SSL_CTX_set0_chain_cert_store(ctx,st) \
13731377 SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CHAIN_CERT_STORE,0,(char *)(st))
13741378 # define SSL_CTX_set1_chain_cert_store(ctx,st) \
13751379 SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CHAIN_CERT_STORE,1,(char *)(st))
1380 # define SSL_CTX_get0_chain_cert_store(ctx,st) \
1381 SSL_CTX_ctrl(ctx,SSL_CTRL_GET_CHAIN_CERT_STORE,0,(char *)(st))
13761382 # define SSL_set0_chain(s,sk) \
13771383 SSL_ctrl(s,SSL_CTRL_CHAIN,0,(char *)(sk))
13781384 # define SSL_set1_chain(s,sk) \
13951401 SSL_ctrl(s,SSL_CTRL_SET_VERIFY_CERT_STORE,0,(char *)(st))
13961402 # define SSL_set1_verify_cert_store(s,st) \
13971403 SSL_ctrl(s,SSL_CTRL_SET_VERIFY_CERT_STORE,1,(char *)(st))
1404 #define SSL_get0_verify_cert_store(s,st) \
1405 SSL_ctrl(s,SSL_CTRL_GET_VERIFY_CERT_STORE,0,(char *)(st))
13981406 # define SSL_set0_chain_cert_store(s,st) \
13991407 SSL_ctrl(s,SSL_CTRL_SET_CHAIN_CERT_STORE,0,(char *)(st))
14001408 # define SSL_set1_chain_cert_store(s,st) \
14011409 SSL_ctrl(s,SSL_CTRL_SET_CHAIN_CERT_STORE,1,(char *)(st))
1410 #define SSL_get0_chain_cert_store(s,st) \
1411 SSL_ctrl(s,SSL_CTRL_GET_CHAIN_CERT_STORE,0,(char *)(st))
1412
14021413 # define SSL_get1_groups(s, glist) \
14031414 SSL_ctrl(s,SSL_CTRL_GET_GROUPS,0,(int*)(glist))
14041415 # define SSL_CTX_set1_groups(ctx, glist, glistlen) \
00 /*
11 * {- join("\n * ", @autowarntext) -}
22 *
3 * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
3 * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
44 * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved
55 *
66 * Licensed under the Apache License 2.0 (the "License"). You may not use
357357 X509 *X509_load_http(const char *url, BIO *bio, BIO *rbio, int timeout);
358358 X509_CRL *X509_CRL_load_http(const char *url, BIO *bio, BIO *rbio, int timeout);
359359 # ifndef OPENSSL_NO_DEPRECATED_3_0
360 # include <openssl/ocsp.h> /* OCSP_REQ_CTX_nbio_d2i */
360 # include <openssl/http.h> /* OSSL_HTTP_REQ_CTX_nbio_d2i */
361361 # define X509_http_nbio(rctx, pcert) \
362 OCSP_REQ_CTX_nbio_d2i(rctx, pcert, ASN1_ITEM_rptr(X509))
362 OSSL_HTTP_REQ_CTX_nbio_d2i(rctx, pcert, ASN1_ITEM_rptr(X509))
363363 # define X509_CRL_http_nbio(rctx, pcrl) \
364 OCSP_REQ_CTX_nbio_d2i(rctx, pcrl, ASN1_ITEM_rptr(X509_CRL))
364 OSSL_HTTP_REQ_CTX_nbio_d2i(rctx, pcrl, ASN1_ITEM_rptr(X509_CRL))
365365 # endif
366366
367367 # ifndef OPENSSL_NO_STDIO
00 /*
1 * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
216216 int ossl_prov_get_capabilities(void *provctx, const char *capability,
217217 OSSL_CALLBACK *cb, void *arg)
218218 {
219 if (strcasecmp(capability, "TLS-GROUP") == 0)
219 if (OPENSSL_strcasecmp(capability, "TLS-GROUP") == 0)
220220 return tls_group_capability(cb, arg);
221221
222222 /* We don't support this capability */
00 /*
1 * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
2121 #include "prov/provider_util.h"
2222 #include "prov/seeding.h"
2323 #include "self_test.h"
24 #include "internal/core.h"
2425
2526 static const char FIPS_DEFAULT_PROPERTIES[] = "provider=fips,fips=yes";
2627 static const char FIPS_UNAPPROVED_PROPERTIES[] = "provider=fips,fips=no";
3334 static OSSL_FUNC_provider_gettable_params_fn fips_gettable_params;
3435 static OSSL_FUNC_provider_get_params_fn fips_get_params;
3536 static OSSL_FUNC_provider_query_operation_fn fips_query;
37
38 /* Locale object accessor functions */
39 #ifdef OPENSSL_SYS_MACOSX
40 # include <xlocale.h>
41 #else
42 # include <locale.h>
43 #endif
44
45 #if defined OPENSSL_SYS_WINDOWS
46 # define locale_t _locale_t
47 # define freelocale _free_locale
48 #endif
49 static locale_t loc;
50
51 static int fips_init_casecmp(void);
52 static void fips_deinit_casecmp(void);
3653
3754 #define ALGC(NAMES, FUNC, CHECK) { { NAMES, FIPS_DEFAULT_PROPERTIES, FUNC }, CHECK }
3855 #define ALG(NAMES, FUNC) ALGC(NAMES, FUNC, NULL)
485502 return NULL;
486503 }
487504
505 void *ossl_c_locale() {
506 return (void *)loc;
507 }
508
509 static int fips_init_casecmp(void) {
510 # ifdef OPENSSL_SYS_WINDOWS
511 loc = _create_locale(LC_COLLATE, "C");
512 # else
513 loc = newlocale(LC_COLLATE_MASK, "C", (locale_t) 0);
514 # endif
515 return (loc == (locale_t) 0) ? 0 : 1;
516 }
517
518 static void fips_deinit_casecmp(void) {
519 freelocale(loc);
520 }
521
488522 static void fips_teardown(void *provctx)
489523 {
490524 OSSL_LIB_CTX_free(PROV_LIBCTX_OF(provctx));
497531 * We know that the library context is the same as for the outer provider,
498532 * so no need to destroy it here.
499533 */
534 fips_deinit_casecmp();
500535 ossl_prov_ctx_free(provctx);
501536 }
502537
546581
547582 memset(&selftest_params, 0, sizeof(selftest_params));
548583
584 if (!fips_init_casecmp())
585 return 0;
549586 if (!ossl_prov_seeding_from_dispatch(in))
550587 return 0;
551588 for (; in->function_id != 0; in++) {
00 /*
1 * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
102102 }
103103 return TRUE;
104104 }
105
106 #elif defined(__GNUC__)
107 # undef DEP_INIT_ATTRIBUTE
108 # undef DEP_FINI_ATTRIBUTE
109 # define DEP_INIT_ATTRIBUTE static __attribute__((constructor))
110 # define DEP_FINI_ATTRIBUTE static __attribute__((destructor))
111
105112 #elif defined(__sun)
106113 # pragma init(init)
107114 # pragma fini(cleanup)
123130 #elif defined(__hpux)
124131 # pragma init "init"
125132 # pragma fini "cleanup"
126
127 #elif defined(__GNUC__)
128 # undef DEP_INIT_ATTRIBUTE
129 # undef DEP_FINI_ATTRIBUTE
130 # define DEP_INIT_ATTRIBUTE static __attribute__((constructor))
131 # define DEP_FINI_ATTRIBUTE static __attribute__((destructor))
132133
133134 #elif defined(__TANDEM)
134135 /* Method automatically called by the NonStop OS when the DLL loads */
7171 58b587e20404efa408b31a88ba9c357059ced709bea78c07deb91df7b687db81 crypto/bn/bn_conv.c
7272 2893b6d03d4850d09c15959941b0759bbb50d8c20e873bed088e7cde4e15a65a crypto/bn/bn_ctx.c
7373 d94295953ab91469fe2b9da2a542b8ea11ac38551ecde8f8202b7f645c2dea16 crypto/bn/bn_dh.c
74 a837ba52750ab30a57b6dd2fd4cf901e18a891a189b089f83add2f5dc8138eb7 crypto/bn/bn_div.c
75 160ea2c916774d6a7f8130e0a05cad7c0a954b4726c15017b3df67e3285231f3 crypto/bn/bn_exp.c
74 74b63a4515894592b7241fb30b91b21510beaa3d397809e3d74bc9a73e879d18 crypto/bn/bn_div.c
75 692e200e66389991eb2e6fe9d9a62eda5fe9005cda834b8af1a435a811b6b3c9 crypto/bn/bn_exp.c
7676 ec2b6e3af6df473a23e7f1a8522f2554cb0eb5d34e3282458c4a66d242278434 crypto/bn/bn_exp2.c
7777 b32d83cee8c00d837a7e4fb8af3f5cf17cb8d2419302e8f5fbcf62119092e874 crypto/bn/bn_gcd.c
7878 4d6cc7ed36978247a191df1eea0120f8ee97b639ba228793dabe5a8355a1a609 crypto/bn/bn_gf2m.c
100100 834db8ff36006e5cb53e09ca6c44290124bd23692f4341ea6563b66fcade4cea crypto/bsearch.c
101101 c39334b70e1394e43f378ae8d31b6e6dc125e4d9181e6536d38e649c4eaadb75 crypto/buffer/buffer.c
102102 23d46ae37a8d9452c0c88418d2cb8350153f8c2c6060234130a2e429da2370e0 crypto/cmac/cmac.c
103 7f24e4937e0af857e233afbb6a7f25b09b1e5674185242a5cc8f579a45bbf1da crypto/context.c
103 58068d6533fed9359b164ddc9711b2dd7b2a76f32ad94103d91dbe3462ac95d8 crypto/context.c
104104 83b8912fb01bacfe0b5269c7afa69db7e1718530cce1ed27870abef1407951d6 crypto/core_algorithm.c
105105 60321d1af7bf9697d969438f6b319fbcb4fdc1a47a0b056d02b971973a8550ca crypto/core_fetch.c
106 7d090f71175f28fdc400455fdbc68340a545556d16cb1f6251ac92ebb63a38c1 crypto/core_namemap.c
106 02670d631bf0f34cca1e3477079d7fe5de4e03c391cf3992986f44f55319597c crypto/core_namemap.c
107107 469e2f53b5f76cd487a60d3d4c44c8fc3a6c4d08405597ba664661ba485508d3 crypto/cpuid.c
108108 71f0fff881eb4c5505fb17662f0ea4bbff24c6858c045a013ad8f786b07da5c4 crypto/cryptlib.c
109 a3d146afa1d66cc3bbfdc7c106f262b679bb5aecce54e8dee732ae9b3e3333db crypto/ctype.c
109 7e8c8c0b43af045fb31c38a0eb643d5db1316fb832b3b0494809f7c288630ec8 crypto/ctype.c
110110 8e61d79299003917ac409d129d291f0a63e4ed417811a8b21169b2b918355335 crypto/der_writer.c
111111 fea3ba4225df97aee90690adf387625b746d8edfdc5af2357ee65151a3d236ac crypto/des/des_enc.c
112112 4971cdc016ee262d81e31f96c1617a33a63c0d90139e440c2ff32a368ee07bbd crypto/des/des_local.h
118118 816472a54c273906d0a2b58650e0b9d28cc2c8023d120f0d77160f1fe34c4ca3 crypto/dh/dh_backend.c
119119 832e5a1caf9cb0dacfd937fc59252aaac7c5c1bf0ae1a9ebf3c3af6e59dcf4c0 crypto/dh/dh_check.c
120120 7838e9a35870b0fbcba0aff2f52a2439f64d026e9922bce6e5978c2f22c51120 crypto/dh/dh_gen.c
121 70f4cf3485a38cd7d22aa3e965bfe950905f8efec1622e832592a6728498fd78 crypto/dh/dh_group_params.c
122 7809cbfd5570db17dcb4bd8f0cf9c5f94337096d39da453d0624c08f071e809f crypto/dh/dh_kdf.c
121 129ee295875e68ad444070b0676f1021eb254cbd87ab22d6baaf7e4e6e59a40b crypto/dh/dh_group_params.c
122 a5cf5cb464b40f1bc5457dc2a6f2c5ec0f050196603cd2ba7037a23ab64adbf7 crypto/dh/dh_kdf.c
123123 0afa7dd237f9b21b0cfb0de10505facd57eb07ded905d888d43a1de2356d4002 crypto/dh/dh_key.c
124124 b0046b2c4e1d74ff4e93f2486a00f63728909b8a75cbdd29b9100e607f97995c crypto/dh/dh_lib.c
125125 8300775d88db0a1aa26a77eb49d6c4f7252e7fee69e1440de4c40edadc9da044 crypto/dh/dh_local.h
146146 063dac1e4a9573c47532123e9e03e3532a7473cc3e146521ba9ec6f486ddf3b1 crypto/ec/curve448/arch_64/arch_intrinsics.h
147147 43423b7ee85a5c740c1d81499ee06f4a17732c7731a598e7429d5e402ee77cf4 crypto/ec/curve448/arch_64/f_impl.h
148148 1689097ae10e4982a8cbe50c2f6eddb03c83436f331f0b67edb98d6b58adc962 crypto/ec/curve448/arch_64/f_impl64.c
149 b35976955a49414313e3823144a898bc58873b755f4e3a772d520cdd63099581 crypto/ec/curve448/curve448.c
149 9b408ec0d43f3b6d714ef5963147e2c2abaddc88633db7dd759193d3c56ed727 crypto/ec/curve448/curve448.c
150150 3c12d90e3fdd59b5d32d63186f1a6f15c75eb73f5035b844a2054356a9459780 crypto/ec/curve448/curve448_local.h
151151 178fb9863c33174b633c2e7607160b1bedb506d66cc06d53382d87431441f306 crypto/ec/curve448/curve448_tables.c
152152 f30e13bba5a136ab9ba5225c98b9b94c2cd73fb3aef60f9dcde3cd471cfa1ca4 crypto/ec/curve448/curve448utils.h
160160 ae1637d89287c9d22a34bdc0d67f6e01262a2f8dcef9b61369dba8c334f5a80d crypto/ec/ec2_oct.c
161161 6bbbf570ce31f5b579f7e03ec9f8a774663c7c1eb5e475bd31f8fee94a021ffc crypto/ec/ec2_smpl.c
162162 2a71bd8dbe4f427c117d990581709a4ddce07fa8e530794b5a9574fef7c48a0c crypto/ec/ec_asn1.c
163 c07fa05c6885e59913e2ce345ff52ef9dfb0418842de3affa6163ad3e71f9c1b crypto/ec/ec_backend.c
163 88e19ca6b892a3afefb25dab0f9cf8796e2eb8504022dcc10b29d5d3923ce73d crypto/ec/ec_backend.c
164164 86e2becf9b3870979e2abefa1bd318e1a31820d275e2b50e03b17fc287abb20a crypto/ec/ec_check.c
165165 265f911b9d4aada326a2d52cd8a589b556935c8b641598dcd36c6f85d29ce655 crypto/ec/ec_curve.c
166166 8cfd0dcfb5acbf6105691a2d5e2826dba1ff3906707bc9dd6ff9bffcc306468f crypto/ec/ec_cvt.c
167167 28726bc957ea821639b1023e5bff0e77ced61bae31f96c165e33aadfe0bc5c9a crypto/ec/ec_key.c
168168 7e40fc646863e0675bbb90f075b809f61bdf0600d8095c8366858d9533ab7700 crypto/ec/ec_kmeth.c
169 074a5345ea71ff3fdfb8e0be360391a7640719f1a8a4eae8580c8f02e57af880 crypto/ec/ec_lib.c
169 f520a41732e4ca96a74d047b6e8bdca8bdfdc4517c18d27410de33969646abef crypto/ec/ec_lib.c
170170 a8a4690e42b4af60aad822aa8b16196df337906af53ea4db926707f7b596ff27 crypto/ec/ec_local.h
171171 fa901b996eb0e460359cd470843bdb03af7a77a2f1136c5e1d30daef70f3e4d2 crypto/ec/ec_mult.c
172172 129c6b42417bfcf582f4a959cfd65433e6f85b158274f4fa38f9c62615ac9166 crypto/ec/ec_oct.c
177177 f686cea8c8a3259d95c1e6142813d9da47b6d624c62f26c7e4a16d5607cddb35 crypto/ec/ecdsa_vrf.c
178178 141cfc1459214555b623517a054a9e8d5e4065a11301237b7247be2c6f397a0a crypto/ec/ecp_mont.c
179179 13b30f34aeeb0c98747239bfe91b5f0f14e91b2c1f11db62ebb5950c7219daa0 crypto/ec/ecp_nist.c
180 c016eb9412aad8cd1213a2f5b1083df1a1a9cb734dc6cc19d99e706935c81ef2 crypto/ec/ecp_nistz256.c
180 f288c23b6f83740956886b2303c64d5a3098c98b530859c3bb4b698c01c1643b crypto/ec/ecp_nistz256.c
181181 51cb98e7e9c241e33261589f0d74103238baaa850e333c61ff1da360e127518a crypto/ec/ecp_oct.c
182182 b4b7c683279454ba41438f50a015cb63ef056ccb9be0168918dfbae00313dc68 crypto/ec/ecp_smpl.c
183183 2096e13aa2fbcb0d4b10faca3e3f5359cf66098b0397a6d74c6fca14f5dee659 crypto/ec/ecx_backend.c
186186 28abc295dad8888b5482eb61d31cd78dd80545ecb67dc6f9446a36deb8c40a5e crypto/evp/asymcipher.c
187187 0e75a058dcbbb62cfe39fec6c4a85385dc1a8fce794e4278ce6cebb29763b82b crypto/evp/dh_support.c
188188 7fca5ec7c5723b799a7d84d5803071b8f495511e1baf89d430e6800a5228cdad crypto/evp/digest.c
189 5e2c5d865029ae86855f15e162360d091f28ca0d4c67260700c90aa25faf308b crypto/evp/ec_support.c
190 2724dc804304135bc874bd305e14b811169a9e4a62176220a0d5e83f152c2546 crypto/evp/evp_enc.c
189 838277f228cd3025cf95a9cd435e5606ad1fb5d207bbb057aa29892e6a657c55 crypto/evp/ec_support.c
190 cfccc525e3806d0932254a94ca1a895fe086da84ae8ad2bf2972e96a12d649d2 crypto/evp/evp_enc.c
191191 0cd2765bf33d998f96d6e8193b2bf27293bcc6a37b7bef7dfd6ec54952ad3c8f crypto/evp/evp_fetch.c
192 029df8bb80a2fb45c22765234b9041ffce82735108e0b11580fd3fbd805362dd crypto/evp/evp_lib.c
192 c9c399b7848f64832deb6e1704e957423ea93827edb4917fafbb0ff911892a2b crypto/evp/evp_lib.c
193193 9ac3d97d756ec008db16dd1952115b551f32b2d0590d9a85e1c87d1c78620257 crypto/evp/evp_local.h
194194 e822c16fc4dc30f2c86e8598c721a9ddfe46d318ce78f4e8e883cdcf8b936221 crypto/evp/evp_rand.c
195195 2a128617ec0178e9eeacbe41d75a5530755f41ea524cd124607543cf73456a0c crypto/evp/evp_utils.c
202202 e1a052839b8b70dca20dbac1282d61abd1c415bf4fb6afb56b811e8770d8a2e1 crypto/evp/m_sigver.c
203203 5b8b0bcd4b720b66ce6bc54090ec333891126bb7f6cce4502daf2333668c3db9 crypto/evp/mac_lib.c
204204 e7e8eb5683cd3fbd409df888020dc353b65ac291361829cc4131d5bc86c9fcb3 crypto/evp/mac_meth.c
205 b976077a1f880768f2f0a1c996a53dfdd363605e4977c56fb37e9c1f84f35aa6 crypto/evp/p_lib.c
205 ee87cce7ee44b6f3121d21fd20f00d0c91c494a1a9804319981987f3d093923d crypto/evp/p_lib.c
206206 3b4228b92eebd04616ecc3ee58684095313dd5ffd1b43cf698a7d6c202cb4622 crypto/evp/pmeth_check.c
207207 1f0e9e94e9b0ad322956521b438b78d44cfcd8eb974e8921d05f9e21ba1c05cf crypto/evp/pmeth_gn.c
208 76511fba789089a50ef87774817a5482c33633a76a94ecf7b6e8eb915585575d crypto/evp/pmeth_lib.c
208 ef2f789091e4e3f77fea3b4643ff36d9659b18bf7a8c59929ce3305480a3baef crypto/evp/pmeth_lib.c
209209 f3a5cbbccb1078cf1fafd74c4caa9f30827081832fbe6dfa5579b17ef809776c crypto/evp/signature.c
210210 b06cb8fd4bd95aae1f66e1e145269c82169257f1a60ef0f78f80a3d4c5131fac crypto/ex_data.c
211211 324feb067d0f8deb4334f3e6518f570114cb388c85b24f9232bd931a64ff0a9e crypto/ffc/ffc_backend.c
212 ead786b4f5689ab69d6cca5d49e513e0f90cb558b67e6c5898255f2671f1393d crypto/ffc/ffc_dh.c
212 5fe89ce2ce34848b832a2b5a7ac42c161d7ec214a641b7fb11fb1153f2186f74 crypto/ffc/ffc_dh.c
213213 82abf1f9645336b7dff5e3fa153899280ecaa27b3dad50e6a9ba94d871961888 crypto/ffc/ffc_key_generate.c
214214 084ae8e68a9df5785376bb961a998036336ed13092ffd1c4258b56e6a7e0478b crypto/ffc/ffc_key_validate.c
215 67fdf1a07ea118963a55540be2ee21c98b7a5eb8149c8caa26e19d922bf60346 crypto/ffc/ffc_params.c
215 ecc0d737ccece492f86262dd45f8f03eef2beacafce8022f91939a372f68ac90 crypto/ffc/ffc_params.c
216216 5174e008f44909724e0ee7109095ee353e67e9ba77e1ab3bedfcf6eaecab7b6c crypto/ffc/ffc_params_generate.c
217217 73dac805abab36cd9df53a421221c71d06a366a4ce479fa788be777f11b47159 crypto/ffc/ffc_params_validate.c
218218 0a4fc92e408b0562cf95c480df93a9907a318a2c92356642903a5d50ed04fd88 crypto/hmac/hmac.c
219219 0395c1b0834f2f4a0ca1756385f4dc1a4ef6fb925b2db3743df7f57256c5166f crypto/hmac/hmac_local.h
220220 f897493b50f4e9dd4cacb2a7accda6683c10ece602641874cdff1dac7128a751 crypto/initthread.c
221 f0782ee92b6ebf5a0e66b970ecfbd9c9c6fc4a35ccd055967fbb402577c234ab crypto/lhash/lhash.c
222 73d63f91fbaba47649231636c5afdf76d049a46436fde9fbb2e107cf16bb879e crypto/lhash/lhash_local.h
221 5482c47c266523129980302426d25839fda662f1544f4b684707e6b272a952c9 crypto/lhash/lhash.c
222 5d49ce00fc06df1b64cbc139ef45c71e0faf08a33f966bc608c82d574521a49e crypto/lhash/lhash_local.h
223223 f866aafae928db1b439ac950dc90744a2397dfe222672fe68b3798396190c8b0 crypto/mem_clr.c
224224 183bdca6f855182d7d2c78a5c961b34283f85ea69ac828b700605ee82546397d crypto/modes/asm/aes-gcm-armv8_64.pl
225225 1d686af304f94743038f916125effcb51790c025f3165d8d37b526bbeee781f0 crypto/modes/asm/aesni-gcm-x86_64.pl
247247 cc4483ec9ba7a30908e3a433a6817e2f211d4c1f69c206e6bae24bbd39a68281 crypto/param_build.c
248248 c2fe815fb3fd5efe9a6544cae55f9469063a0f6fb728361737b927f6182ae0bb crypto/param_build_set.c
249249 02dfeb286c85567bb1b6323a53c089ba66447db97695cc78eceb6677fbc76bf9 crypto/params.c
250 4f2a8c9acf5898fdc1e4bf98813049947221cd9a1db04faaa490250591f54cb4 crypto/params_dup.c
250 4fda13f6af05d80b0ab89ec4f5813c274a21a9b4565be958a02d006236cef05c crypto/params_dup.c
251251 a0097ff2da8955fe15ba204cb54f3fd48a06f846e2b9826f507b26acf65715c3 crypto/params_from_text.c
252252 2140778d5f35e503e22b173736e18ff84406f6657463e8ff9e7b91a78aa686d3 crypto/property/defn_cache.c
253253 9153343b26e5c2c4f6009d37a12d6af85681ed0c7d3f58de2ace44dfd789a59b crypto/property/property.c
254254 a2c69527b60692a8b07cfdfe7e75f654daa092411d5de5e02b446a4ef3752855 crypto/property/property_local.h
255 c3217b73871d93d81ab9f15e9f1fc37ea609bbe4bbc0c1b84ec62a99c91f6756 crypto/property/property_parse.c
255 b87bfb053457cbe1cedad3a53cce044375d2f429c75d0c97c2a61def59080644 crypto/property/property_parse.c
256256 a7cefda6a117550e2c76e0f307565ce1e11640b11ba10c80e469a837fd1212a3 crypto/property/property_query.c
257257 065698c8d88a5facc0cbc02a3bd0c642c94687a8c5dd79901c942138b406067d crypto/property/property_string.c
258258 01d2e5be52d94efdff4329281b3609c7fa57162ab6143492c380c96952df1396 crypto/provider_core.c
261261 4e6b7d1d8278067c18bcb5e3ac9b7fe7e9b1d0d03bc5a276275483f541d1a12c crypto/rand/rand_lib.c
262262 fd03b9bb2c23470fa40880ed3bf9847bb17d50592101a78c0ad7a0f121209788 crypto/rand/rand_local.h
263263 f0c8792a99132e0b9c027cfa7370f45594a115934cdc9e8f23bdd64abecaf7fd crypto/rsa/rsa_acvp_test_params.c
264 054f8e32eabb218d219a5fa8cb40f6e76bc5a395d03e4f83c5f2b703a5a476b9 crypto/rsa/rsa_backend.c
264 b89d28722134386072670ddc4d5cbff736d1649c114f38d964892f21420c13bf crypto/rsa/rsa_backend.c
265265 38a102cd1da1f6ca5a46e6a22f018237964336274385f5c70cbedcaa6997647e crypto/rsa/rsa_chk.c
266266 e32cfa04221a2a3ea33f7bcb93ee51b84cbeba97e94c1fbf6e420b24f97fc9ce crypto/rsa/rsa_crpt.c
267267 21794dcb6bfebcf9a14d4f8aa7fab8f745b595433b388b55f46ba6e615d90f98 crypto/rsa/rsa_gen.c
327327 3d972a11be18bfbfcd45790028635d63548bfe0a2e45d2fc56b6051b759d22f0 crypto/sha/sha3.c
328328 8038a5a97f826f519424db634be5b082b3f7eca3ccb89875ca40fa6bd7dfdcfd crypto/sha/sha512.c
329329 6c6f0e6069ac98e407a5810b84deace2d1396d252c584703bcd154d1a015c3ea crypto/sha/sha_local.h
330 86913a593b55c759a3824eeede398f966278d79c148bef41986c5ac4e48f0bd7 crypto/sparse_array.c
330 4f6b66f811144648d6cb6bc26e08779529acbbd563519590c726d0e51699fe96 crypto/sparse_array.c
331331 b39e5ba863af36e455cc5864fe8c5d0fc05a6aaef0d528a115951d1248e8fa8b crypto/stack/stack.c
332332 7b4efa594d8d1f3ecbf4605cf54f72fb296a3b1d951bdc69e415aaa08f34e5c8 crypto/threads_lib.c
333333 a41ae93a755e2ec89b3cb5b4932e2b508fdda92ace2e025a2650a6da0e9e972c crypto/threads_none.c
334 ebb210a22c280839853920bee245eb769c713ab99cb35a468ed2b1df0d112a7f crypto/threads_pthread.c
334 2637a8727dee790812b000f2e02b336f7907949df633dda72938bbaafdb204fe crypto/threads_pthread.c
335335 68e1cdeb948d3a106b5a27b76bcddbae6bb053b2bdc4a21a1fec9797a00cd904 crypto/threads_win.c
336336 fd6c27cf7c6b5449b17f2b725f4203c4c10207f1973db09fd41571efe5de08fd crypto/x86_64cpuid.pl
337 d13560a5f8a66d7b956d54cd6bf24eade529d686992d243bfb312376a57b475e e_os.h
337 84c4331bbe99471706fadf97299c660dca46f663c2526f33c3424656215aa0c5 e_os.h
338338 6f353dc7c8c4d8f24f7ffbf920668ccb224ebb5810805a7c80d96770cd858005 include/crypto/aes_platform.h
339339 8c6f308c1ca774e6127e325c3b80511dbcdc99631f032694d8db53a5c02364ee include/crypto/asn1_dsa.h
340340 8ce1b35c6924555ef316c7c51d6c27656869e6da7f513f45b7a7051579e3e54d include/crypto/bn.h
341341 1c46818354d42bd1b1c4e5fdae9e019814936e775fd8c918ca49959c2a6416df include/crypto/bn_conf.h.in
342342 7a43a4898fcc8446065e6c99249bcc14e475716e8c1d40d50408c0ab179520e6 include/crypto/bn_dh.h
343343 e69b2b20fb415e24b970941c84a62b752b5d0175bc68126e467f7cc970495504 include/crypto/cryptlib.h
344 5ee1ea30382bef9869f29b6610665ca304f3b9cf3653746a2d02c64b1a24f103 include/crypto/ctype.h
344 cf1d91147fb3f6cd02387c7fe219ff2efd8c060e9a8501d1c2245fbdb21bf7a6 include/crypto/ctype.h
345345 89693e0a7528a9574e1d2f80644b29e3b895d3684111dd07c18cc5bed28b45b7 include/crypto/des_platform.h
346346 daf508bb7ed5783f1c8c622f0c230e179244dd3f584e1223a19ab95930fbcb4f include/crypto/dh.h
347347 20d99c9a740e4d7d67e23fa4ae4c6a39d114e486c66ad41b65d91a8244cd1dea include/crypto/dsa.h
360360 5bfeea62d21b7cb43d9a819c5cd2800f02ea019687a8331abf313d615889ad37 include/crypto/types.h
361361 782a83d4e489fd865e2768a20bfa31e78c2071fd0ceeb9eb077276ae2bcc6590 include/internal/bio.h
362362 92aacb3e49288f91b44f97e41933e88fe455706e1dd21a365683c2ab545db131 include/internal/constant_time.h
363 71ddae419297069056065ab71f32fe88b09ddbe4db2200a759fedd8ad4349628 include/internal/core.h
363 1f92626d81730616fb459849c1c7fb0ec105f2ffb0e51edaa0a64307bc1e1027 include/internal/core.h
364364 d7ddeab97434a21cb2cad1935a3cb130f6cd0b3c75322463d431c5eab3ab1ae1 include/internal/cryptlib.h
365365 9571cfd3d5666749084b354a6d65adee443deeb5713a58c098c7b03bc69dbc63 include/internal/deprecated.h
366366 8a2371f964cbb7fc3916583d2a4cee5c56f98595dfa30bd60c71637811a6d9da include/internal/der.h
401401 df5e60af861665675e4a00d40d15e36884f940e3379c7b45c9f717eaf1942697 include/openssl/core.h
402402 00110e80b9b4f621c604ea99f05e7a75d3db4721fc2779224e6fa7e52f06e345 include/openssl/core_dispatch.h
403403 cbd9d7855ca3ba4240207fc025c22bbfef7411116446ff63511e336a0559bed0 include/openssl/core_names.h
404 8880892256a4d2dd7a9be91f23518f71e5037dbd377cd41bdb4c1f3cb3c7ee2d include/openssl/crypto.h.in
404 194f96a30bdc4dab3f65693c09326ef53c54ebfd613c2513d8258a0aa35a6996 include/openssl/crypto.h.in
405405 1d1697bd3e35920ff9eaec23c29472d727a7fc4d108150957f41f6f5ecf80f1a include/openssl/cryptoerr.h
406406 bbc82260cbcadd406091f39b9e3b5ea63146d9a4822623ead16fa12c43ab9fc6 include/openssl/cryptoerr_legacy.h
407407 fa3e6b6c2e6222424b9cd7005e3c5499a2334c831cd5d6a29256ce945be8cb1d include/openssl/des.h
412412 41bf49e64e1c341a8c17778147ddeba35e88dfd7ff131db6210e801ef25a8fd5 include/openssl/e_os2.h
413413 bc9ec2be442a4f49980ba2c63c8f0da701de1f6e23d7db35d781658f833dd7b9 include/openssl/ebcdic.h
414414 33b6321d1c6b7b1621198346946401bb81472054aa236b03c6f22f247248d2ad include/openssl/ec.h
415 cbbf74efc7fdb020f06840c856ad7fe97553944f4cc3c197fbb004de38158048 include/openssl/ecerr.h
415 dad1943d309aaadb800be4a3056096abec611d81982b83c601b482405e11d5c0 include/openssl/ecerr.h
416416 61c76ee3f12ed0e42503a56421ca00f1cb9a0f4caa5f9c4421c374bcd45917d7 include/openssl/encoder.h
417417 69dd983f45b8ccd551f084796519446552963a18c52b70470d978b597c81b2dc include/openssl/encodererr.h
418418 0bb50eda4fe2600c20779d5e3c49668cf2dd8f295104549a33e57bc95a9219eb include/openssl/err.h.in
447447 410c6eb3ffadcbee13d511d6b8ee576db75b35b324cb394b5e05dbd4a17fb92e include/openssl/trace.h
448448 873d2ec2054ec24c52df4abe830cb2b9666fe4e75cc62b4de0f50ef9d20c5812 include/openssl/types.h
449449 c0a9551efccf43f3dd748d4fd8ec897ddaabbc629c00ec1ad76ce983e1195a13 providers/common/bio_prov.c
450 e7c39ef7b76668dae1470ce0edd7254da2937569762cebbf20e08fb97cb3324c providers/common/capabilities.c
450 4546387d6642603c81ec4cd8d5fc4af8ba60ac7359eb6f31e7d24827031e68ad providers/common/capabilities.c
451451 f94b7435d4ec888ec30df1c611afa8b9eedbb59e905a2c7cb17cfc8c4b9b85b8 providers/common/der/der_digests_gen.c.in
452452 424d7b2ece984a0904b80c73e541400c6e2d50a285c397dd323b440a4f2a8d8e providers/common/der/der_dsa_gen.c.in
453453 27ff361a5fbfc97cd41690ab26639708961d0507b60912f55f5919649842c6ae providers/common/der/der_dsa_key.c
481481 ba345b0d71f74c9e3d752579e16d11cc70b4b00faa329cc674bc43dd2620e044 providers/common/securitycheck.c
482482 527eda471e26763a5fcf123b2d290234d5c836de7b8ef6eef2166ef439919d82 providers/common/securitycheck_fips.c
483483 abd5997bc33b681a4ab275978b92aebca0806a4a3f0c2f41dacf11b3b6f4e101 providers/fips/fips_entry.c
484 a4dc9bf2d77e34175737b7b8d28fbe90815ac0e2904e3ac2d9e2a271f345ef20 providers/fips/fipsprov.c
485 fdbaf748044ce54f13e673b92db876e32436e4d5644f443cc43d063112a89676 providers/fips/self_test.c
484 c458e4830c0cd31e4aabef0e33c2011079f201c6bbaee59b59cefab70eb9c7b4 providers/fips/fipsprov.c
485 24a2e1a855de57b9d970727fcc11ebe7e06c0d4884d3cedbacf59fa471f91e72 providers/fips/self_test.c
486486 f822a03138e8b83ccaa910b89d72f31691da6778bf6638181f993ec7ae1167e3 providers/fips/self_test.h
487487 5b3379a3d382c4dad37841dbd58b77ed5ff712b0a37c485771b828fa9b39c351 providers/fips/self_test_data.inc
488488 2f4f23ebc2c7ed5ef71c98ca71f06b639112a1dea04784c46af58083482c150f providers/fips/self_test_kats.c
512512 c4a2499b214d7cf786dafaaee5c8c6963b3d5d1c27c144eec4b460f839074a3b providers/implementations/ciphers/cipher_aes_xts.h
513513 281157d1da4d7285d878978e6d42d0d33b3a6bc16e3bc5b6879e39093a7d70da providers/implementations/ciphers/cipher_aes_xts_fips.c
514514 f358c4121a8a223e2c6cf009fd28b8a195520279016462890214e8858880f632 providers/implementations/ciphers/cipher_aes_xts_hw.c
515 f2e7404005e0602c4cc90b49b7af7453aa5b8644720ca1028d93e78bc28a7c09 providers/implementations/ciphers/cipher_cts.c
515 46ba8271917b53fd8fdf77aee19cc326a219c950b94e043d6d118dcac25ad7ad providers/implementations/ciphers/cipher_cts.c
516516 74640ce402acc704af72e055fb7f27e6aa8efd417babc56f710478e571d8631c providers/implementations/ciphers/cipher_cts.h
517517 fcc3bb0637864252402aaa9d543209909df9a39611127f777b168bc888498dc0 providers/implementations/ciphers/cipher_tdes.c
518518 77709f7fc3f7c08986cd4f0ebf2ef6e44bacb975c1483ef444b3cf5e5071f9d6 providers/implementations/ciphers/cipher_tdes.h
543543 c95ce5498e724b9b3d58e3c2f4723e7e3e4beb07f9bea9422e43182cbadb43af providers/implementations/include/prov/macsignature.h
544544 29d1a112b799e1f45fdf8bcee8361c2ed67428c250c1cdf408a9fbb7ebf4cce1 providers/implementations/include/prov/names.h
545545 2187713b446d8b6d24ee986748b941ac3e24292c71e07ff9fb53a33021decdda providers/implementations/include/prov/seeding.h
546 432e2d5e467a50bd031a6b94b27072f5d66f4fadb6d62c9bfd9453d444c2aedf providers/implementations/kdfs/hkdf.c
547 06c93b62806819ee51f69c899413fda5be2435d43a70ef467b77a7296cd9528a providers/implementations/kdfs/kbkdf.c
546 86026710ea733f0dd44e400c43e7dab745526f2255816f48a6b00dd8b8009879 providers/implementations/kdfs/hkdf.c
547 a62e3af09f5af84dcf36f951ba4ac90ca1694adaf3747126186020b155f94186 providers/implementations/kdfs/kbkdf.c
548548 e0644e727aacfea4da3cf2c4d2602d7ef0626ebb760b6467432ffd54d5fbb24d providers/implementations/kdfs/pbkdf2.c
549549 c0778565abff112c0c5257329a7750ec4605e62f26cc36851fa1fbee6e03c70c providers/implementations/kdfs/pbkdf2.h
550550 abe2b0f3711eaa34846e155cffc9242e4051c45de896f747afd5ac9d87f637dc providers/implementations/kdfs/pbkdf2_fips.c
551 66d30c754c1e16d97a8e989f7f2e89eab59ec40ca3731dea664ba56ec38c4002 providers/implementations/kdfs/sshkdf.c
551 9cc42a4b0a8089e6d1be64637dbb9e41bd21ae5e3386022a27a8f29308ad25c9 providers/implementations/kdfs/sshkdf.c
552552 7c692170729ab1d648564abdbf9bcbba5071f9a81a25fab9eae66899316bcd4a providers/implementations/kdfs/sskdf.c
553 3c46ec0e14be09a133d709c3a1c3d5ab05a4f1ed5385c3e7a1afb2f0ee47ef7a providers/implementations/kdfs/tls1_prf.c
553 7d258a469fac4d5ae99c785bae5f490044c593ed13a02a861b1d33339ee167e0 providers/implementations/kdfs/tls1_prf.c
554554 27bb6ee5e2d00c545635c0c29402b10e74a1831adbc9800c159cbe04f2bfa2f7 providers/implementations/kdfs/x942kdf.c
555 f419a9f6b17cfba1543a3690326188ac8335db66807c58de211a3d69e18f7d4d providers/implementations/kem/rsa_kem.c
555 6b6c776b12664164f3cb54c21df61e1c4477c7855d89431a16fb338cdae58d43 providers/implementations/kem/rsa_kem.c
556556 7628cfd7c88f37faa557c671a78ff56266691d64075104a514a28cb6fb9a6816 providers/implementations/keymgmt/dh_kmgmt.c
557 68d5cad49334ad0ee6948329b3784bb43eede84c3bc59ff22cbbe7aed9292672 providers/implementations/keymgmt/dsa_kmgmt.c
558 3e2798d299d6571c973fc75468e2ac025b7c893ae2f15f14e057430325622a69 providers/implementations/keymgmt/ec_kmgmt.c
557 9dc19fb4e9775e93b233fa93212e60f0959faa61248f853db75f3281e2535e95 providers/implementations/keymgmt/dsa_kmgmt.c
558 c68b2331f2863d0d92725367c16a6a68b1243c672c14dde13768ed4afd9c7418 providers/implementations/keymgmt/ec_kmgmt.c
559559 258ae17bb2dd87ed1511a8eb3fe99eed9b77f5c2f757215ff6b3d0e8791fc251 providers/implementations/keymgmt/ec_kmgmt_imexport.inc
560 8871260c1b05832efa8363e5546210004da1683fee74da6c749ebba802b40f2b providers/implementations/keymgmt/ecx_kmgmt.c
560 d77ece2494e6b12a6201a2806ee5fb24a6dc2fa3e1891a46012a870e0b781ab1 providers/implementations/keymgmt/ecx_kmgmt.c
561561 053a2be39a87f50b877ebdbbf799cf5faf8b2de33b04311d819d212ee1ea329b providers/implementations/keymgmt/kdf_legacy_kmgmt.c
562 260c560930c5aca61225a40ed49dfbb905f2b1fa50728d1388e946358f9d5e18 providers/implementations/keymgmt/mac_legacy_kmgmt.c
562 e30357311e4a3e1c78266af6315fd1fc99584bfb09f4a7cd0ddc7261cf1e17e1 providers/implementations/keymgmt/mac_legacy_kmgmt.c
563563 d469be20a6d1a3744c1a2d5c26cb3b8ff6339a2242d4ef6e5ed9531551f717c1 providers/implementations/keymgmt/rsa_kmgmt.c
564 79da66d4b696388d7eab6b2126bccc88908915813d79c4305b8b4d545a500469 providers/implementations/macs/cmac_prov.c
565 41464d1e640434bb3ff9998f093829d5e2c1963d68033dca7d31e5ab75365fb1 providers/implementations/macs/gmac_prov.c
566 282c1065f18c87073529ed1bdc2c0b3a1967701728084de6632ddc72c671d209 providers/implementations/macs/hmac_prov.c
564 aeb42590728ca87b916b8a3d337351b1c82ee0747213e5ce740c2350b3db7185 providers/implementations/macs/cmac_prov.c
565 93fa712c692bd5c93d3802b2554d5df33ea9d0b8987f9c92aa88358089a4bdfa providers/implementations/macs/gmac_prov.c
566 400a054d449cdee1f308644f1314bdc044fd0fdf793ae58ffa4e4aac6c0498d3 providers/implementations/macs/hmac_prov.c
567567 aa7ba1d39ea4e3347294eb50b4dfcb895ef1a22bd6117d3b076a74e9ff11c242 providers/implementations/macs/kmac_prov.c
568568 bf30274dd6b528ae913984775bd8f29c6c48c0ef06d464d0f738217727b7aa5c providers/implementations/rands/crngt.c
569569 c7236e6e2e8adce14f8206da0ceef63c7974d4ba1a7dd71b94fa100cac6b46ba providers/implementations/rands/drbg.c
570 b1e7a0b2610aaab5800af7ede0df13a184f4a321a4084652cdb509357c55783b providers/implementations/rands/drbg_ctr.c
570 bb5f8161a80d0d1a7ee919af2b167972b00afd62e326252ca6aa93101f315f19 providers/implementations/rands/drbg_ctr.c
571571 a05adc3f6d9d6f948e5ead75f0522ed3164cb5b2d301169242f3cb97c4a7fac3 providers/implementations/rands/drbg_hash.c
572572 0876dfae991028c569631938946e458e6829cacf4cfb673d2b144ae50a3160bb providers/implementations/rands/drbg_hmac.c
573573 fc43558964bdf12442d3f6ab6cc3e6849f7adb42f4d0123a1279819befcf71cb providers/implementations/rands/drbg_local.h
576576 a30dc6308de0ca33406e7ce909f3bcf7580fb84d863b0976b275839f866258df providers/implementations/signature/ecdsa_sig.c
577577 b057870cf8be1fd28834670fb092f0e6f202424c7ae19282fe9df4e52c9ce036 providers/implementations/signature/eddsa_sig.c
578578 3bb0f342b4cc1b4594ed0986adc47791c0a7b5c1ae7b1888c1fb5edb268a78d9 providers/implementations/signature/mac_legacy_sig.c
579 cee0e3304cc365ef76b422363ef12affc4d03670fd2ab2c8f3babc38f9d5db37 providers/implementations/signature/rsa_sig.c
579 2334c8bba705032b8c1db5dd28e024a45a73b72cae82a2d815fe855445a49d10 providers/implementations/signature/rsa_sig.c
580580 c8df17850314b145ca83d4037207d6bf0994f9c34e6e55116860cf575df58e81 ssl/record/tls_pad.c
581581 3f2e01a98d9e3fda6cc5cb4b44dd43f6cae4ec34994e8f734d11b1e643e58636 ssl/s3_cbc.c
0 0223646a9f0ba5ca3bd4dc320fe5a647c8b4d48cc1e273b09acceeabc035c19e providers/fips-sources.checksums
0 d0e2cb7b2818aed1f4d89da6323f20372c8834c3f57f9dfd1c5e9f908d7e420a providers/fips-sources.checksums
00 /*
1 * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2020-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
4545 * Otherwise it is the same as CS2.
4646 */
4747
48 #include "e_os.h" /* strcasecmp */
4948 #include <openssl/core_names.h>
5049 #include "prov/ciphercommon.h"
5150 #include "internal/nelem.h"
9190 size_t i;
9291
9392 for (i = 0; i < OSSL_NELEM(cts_modes); ++i) {
94 if (strcasecmp(name, cts_modes[i].name) == 0)
93 if (OPENSSL_strcasecmp(name, cts_modes[i].name) == 0)
9594 return (int)cts_modes[i].id;
9695 }
9796 return -1;
00 /*
1 * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
182182 }
183183 ctx->tls_aad_pad_sz = sz;
184184 }
185 p = OSSL_PARAM_locate_const(params, OSSL_CIPHER_PARAM_AEAD_TLS1_AAD);
185 p = OSSL_PARAM_locate_const(params, OSSL_CIPHER_PARAM_AEAD_MAC_KEY);
186186 if (p != NULL) {
187187 if (p->data_type != OSSL_PARAM_OCTET_STRING) {
188188 ERR_raise(ERR_LIB_PROV, PROV_R_FAILED_TO_GET_PARAMETER);
00 /*
1 * Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2016-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
198198
199199 if ((p = OSSL_PARAM_locate_const(params, OSSL_KDF_PARAM_MODE)) != NULL) {
200200 if (p->data_type == OSSL_PARAM_UTF8_STRING) {
201 if (strcasecmp(p->data, "EXTRACT_AND_EXPAND") == 0) {
201 if (OPENSSL_strcasecmp(p->data, "EXTRACT_AND_EXPAND") == 0) {
202202 ctx->mode = EVP_KDF_HKDF_MODE_EXTRACT_AND_EXPAND;
203 } else if (strcasecmp(p->data, "EXTRACT_ONLY") == 0) {
203 } else if (OPENSSL_strcasecmp(p->data, "EXTRACT_ONLY") == 0) {
204204 ctx->mode = EVP_KDF_HKDF_MODE_EXTRACT_ONLY;
205 } else if (strcasecmp(p->data, "EXPAND_ONLY") == 0) {
205 } else if (OPENSSL_strcasecmp(p->data, "EXPAND_ONLY") == 0) {
206206 ctx->mode = EVP_KDF_HKDF_MODE_EXPAND_ONLY;
207207 } else {
208208 ERR_raise(ERR_LIB_PROV, PROV_R_INVALID_MODE);
00 /*
1 * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved.
22 * Copyright 2019 Red Hat, Inc.
33 *
44 * Licensed under the Apache License 2.0 (the "License"). You may not use
297297 }
298298
299299 p = OSSL_PARAM_locate_const(params, OSSL_KDF_PARAM_MODE);
300 if (p != NULL && strncasecmp("counter", p->data, p->data_size) == 0) {
300 if (p != NULL
301 && OPENSSL_strncasecmp("counter", p->data, p->data_size) == 0) {
301302 ctx->mode = COUNTER;
302303 } else if (p != NULL
303 && strncasecmp("feedback", p->data, p->data_size) == 0) {
304 && OPENSSL_strncasecmp("feedback", p->data, p->data_size) == 0) {
304305 ctx->mode = FEEDBACK;
305306 } else if (p != NULL) {
306307 ERR_raise(ERR_LIB_PROV, PROV_R_INVALID_MODE);
00 /*
1 * Copyright 2018-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2018-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
5858
5959 if ((ctx = OPENSSL_zalloc(sizeof(*ctx))) == NULL)
6060 ERR_raise(ERR_LIB_PROV, ERR_R_MALLOC_FAILURE);
61 ctx->provctx = provctx;
61 else
62 ctx->provctx = provctx;
6263 return ctx;
6364 }
6465
00 /*
1 * Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2016-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
171171 return 1;
172172
173173 if ((p = OSSL_PARAM_locate_const(params, OSSL_KDF_PARAM_DIGEST)) != NULL) {
174 if (strcasecmp(p->data, SN_md5_sha1) == 0) {
174 if (OPENSSL_strcasecmp(p->data, SN_md5_sha1) == 0) {
175175 if (!ossl_prov_macctx_load_from_params(&ctx->P_hash, params,
176176 OSSL_MAC_NAME_HMAC,
177177 NULL, SN_md5, libctx)
00 /*
1 * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2020-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
1111 * internal use.
1212 */
1313 #include "internal/deprecated.h"
14
15 #include "e_os.h" /* strcasecmp */
14 #include "internal/nelem.h"
15
1616 #include <openssl/crypto.h>
1717 #include <openssl/evp.h>
1818 #include <openssl/core_dispatch.h>
6868 return -1;
6969
7070 for (i = 0; i < sz; ++i) {
71 if (strcasecmp(map[i].ptr, name) == 0)
71 if (OPENSSL_strcasecmp(map[i].ptr, name) == 0)
7272 return map[i].id;
7373 }
7474 return -1;
1212 */
1313 #include "internal/deprecated.h"
1414
15 #include "e_os.h" /* strcasecmp */
1615 #include <openssl/core_dispatch.h>
1716 #include <openssl/core_names.h>
1817 #include <openssl/bn.h>
8988 size_t i;
9089
9190 for (i = 0; i < OSSL_NELEM(dsatype2id); ++i) {
92 if (strcasecmp(dsatype2id[i].name, name) == 0)
91 if (OPENSSL_strcasecmp(dsatype2id[i].name, name) == 0)
9392 return dsatype2id[i].id;
9493 }
9594 return -1;
00 /*
1 * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2020-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
1212 */
1313 #include "internal/deprecated.h"
1414
15 #include "e_os.h" /* strcasecmp */
1615 #include <string.h>
1716 #include <openssl/core_dispatch.h>
1817 #include <openssl/core_names.h>
469468 if ((selection & OSSL_KEYMGMT_SELECT_PRIVATE_KEY) != 0
470469 && (selection & OSSL_KEYMGMT_SELECT_PUBLIC_KEY) == 0)
471470 return 0;
472 if ((selection & OSSL_KEYMGMT_SELECT_OTHER_PARAMETERS) != 0
473 && (selection & OSSL_KEYMGMT_SELECT_KEYPAIR) == 0)
474 return 0;
475471
476472 tmpl = OSSL_PARAM_BLD_new();
477473 if (tmpl == NULL)
88
99 #include <assert.h>
1010 #include <string.h>
11 /* For strcasecmp on Windows */
12 #include "e_os.h"
1311 #include <openssl/core_dispatch.h>
1412 #include <openssl/core_names.h>
1513 #include <openssl/params.h>
545543 }
546544 if (p->data_type != OSSL_PARAM_UTF8_STRING
547545 || groupname == NULL
548 || strcasecmp(p->data, groupname) != 0) {
546 || OPENSSL_strcasecmp(p->data, groupname) != 0) {
549547 ERR_raise(ERR_LIB_PROV, ERR_R_PASSED_INVALID_ARGUMENT);
550548 return 0;
551549 }
00 /*
1 * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2020-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
2525 #include "prov/providercommon.h"
2626 #include "prov/provider_ctx.h"
2727 #include "prov/macsignature.h"
28 #include "e_os.h" /* strcasecmp */
2928
3029 static OSSL_FUNC_keymgmt_new_fn mac_new;
3130 static OSSL_FUNC_keymgmt_free_fn mac_free;
00 /*
1 * Copyright 2018-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2018-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
121121 return 0;
122122 if (key != NULL)
123123 return cmac_setkey(macctx, key, keylen);
124 return 1;
124 /* Reinitialize the CMAC context */
125 return CMAC_Init(macctx->ctx, NULL, 0, NULL, NULL);
125126 }
126127
127128 static int cmac_update(void *vmacctx, const unsigned char *data,
00 /*
1 * Copyright 2018-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2018-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
119119 return 0;
120120 if (key != NULL)
121121 return gmac_setkey(macctx, key, keylen);
122 return 1;
122 return EVP_EncryptInit_ex(macctx->ctx, NULL, NULL, NULL, NULL);
123123 }
124124
125125 static int gmac_update(void *vmacctx, const unsigned char *data,
208208
209209 if (params == NULL)
210210 return 1;
211 if (ctx == NULL
212 || !ossl_prov_cipher_load_from_params(&macctx->cipher, params, provctx))
213 return 0;
214
215 if (EVP_CIPHER_get_mode(ossl_prov_cipher_cipher(&macctx->cipher))
216 != EVP_CIPH_GCM_MODE) {
217 ERR_raise(ERR_LIB_PROV, PROV_R_INVALID_MODE);
218 return 0;
219 }
220 if (!EVP_EncryptInit_ex(ctx, ossl_prov_cipher_cipher(&macctx->cipher),
221 ossl_prov_cipher_engine(&macctx->cipher), NULL,
222 NULL))
223 return 0;
211 if (ctx == NULL)
212 return 0;
213
214 if ((p = OSSL_PARAM_locate_const(params, OSSL_MAC_PARAM_CIPHER)) != NULL) {
215 if (!ossl_prov_cipher_load_from_params(&macctx->cipher, params, provctx))
216 return 0;
217 if (EVP_CIPHER_get_mode(ossl_prov_cipher_cipher(&macctx->cipher))
218 != EVP_CIPH_GCM_MODE) {
219 ERR_raise(ERR_LIB_PROV, PROV_R_INVALID_MODE);
220 return 0;
221 }
222 if (!EVP_EncryptInit_ex(ctx, ossl_prov_cipher_cipher(&macctx->cipher),
223 ossl_prov_cipher_engine(&macctx->cipher), NULL,
224 NULL))
225 return 0;
226 }
224227
225228 if ((p = OSSL_PARAM_locate_const(params, OSSL_MAC_PARAM_KEY)) != NULL)
226229 if (p->data_type != OSSL_PARAM_OCTET_STRING
00 /*
1 * Copyright 2018-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2018-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
151151 {
152152 const EVP_MD *digest;
153153
154 if (macctx->keylen > 0)
154 if (macctx->key != NULL)
155155 OPENSSL_secure_clear_free(macctx->key, macctx->keylen);
156156 /* Keep a copy of the key in case we need it for TLS HMAC */
157157 macctx->key = OPENSSL_secure_malloc(keylen > 0 ? keylen : 1);
176176 if (!ossl_prov_is_running() || !hmac_set_ctx_params(macctx, params))
177177 return 0;
178178
179 if (key != NULL && !hmac_setkey(macctx, key, keylen))
180 return 0;
181 return 1;
179 if (key != NULL)
180 return hmac_setkey(macctx, key, keylen);
181
182 /* Just reinit the HMAC context */
183 return HMAC_Init_ex(macctx->ctx, NULL, 0, NULL, NULL);
182184 }
183185
184186 static int hmac_update(void *vmacctx, const unsigned char *data,
324326 if ((p = OSSL_PARAM_locate_const(params, OSSL_MAC_PARAM_KEY)) != NULL) {
325327 if (p->data_type != OSSL_PARAM_OCTET_STRING)
326328 return 0;
327
328 if (macctx->keylen > 0)
329 OPENSSL_secure_clear_free(macctx->key, macctx->keylen);
330 /* Keep a copy of the key if we need it for TLS HMAC */
331 macctx->key = OPENSSL_secure_malloc(p->data_size > 0 ? p->data_size : 1);
332 if (macctx->key == NULL)
333 return 0;
334 memcpy(macctx->key, p->data, p->data_size);
335 macctx->keylen = p->data_size;
336
337 if (!HMAC_Init_ex(macctx->ctx, p->data, p->data_size,
338 ossl_prov_digest_md(&macctx->digest),
339 NULL /* ENGINE */))
340 return 0;
341
342 }
329 if (!hmac_setkey(macctx, p->data, p->data_size))
330 return 0;
331 }
332
343333 if ((p = OSSL_PARAM_locate_const(params,
344334 OSSL_MAC_PARAM_TLS_DATA_SIZE)) != NULL) {
345335 if (!OSSL_PARAM_get_size_t(p, &macctx->tls_data_size))
00 /*
1 * Copyright 2018-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2018-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
3636
3737 struct poly1305_data_st {
3838 void *provctx;
39 int updated;
3940 POLY1305 poly1305; /* Poly1305 data */
4041 };
4142
6364
6465 if (!ossl_prov_is_running())
6566 return NULL;
66 dst = poly1305_new(src->provctx);
67 dst = OPENSSL_malloc(sizeof(*dst));
6768 if (dst == NULL)
6869 return NULL;
6970
70 dst->poly1305 = src->poly1305;
71 *dst = *src;
7172 return dst;
7273 }
7374
8485 return 0;
8586 }
8687 Poly1305_Init(&ctx->poly1305, key);
88 ctx->updated = 0;
8789 return 1;
8890 }
8991
9799 return 0;
98100 if (key != NULL)
99101 return poly1305_setkey(ctx, key, keylen);
100 return 1;
102 /* no reinitialization of context with the same key is allowed */
103 return ctx->updated == 0;
101104 }
102105
103106 static int poly1305_update(void *vmacctx, const unsigned char *data,
105108 {
106109 struct poly1305_data_st *ctx = vmacctx;
107110
111 ctx->updated = 1;
108112 if (datalen == 0)
109113 return 1;
110114
120124
121125 if (!ossl_prov_is_running())
122126 return 0;
127 ctx->updated = 1;
123128 Poly1305_Final(&ctx->poly1305, out);
124129 *outl = poly1305_size();
125130 return 1;
00 /*
1 * Copyright 2018-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2018-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
3838 struct siphash_data_st {
3939 void *provctx;
4040 SIPHASH siphash; /* Siphash data */
41 SIPHASH sipcopy; /* Siphash data copy for reinitialization */
4142 unsigned int crounds, drounds;
4243 };
4344
7576
7677 if (!ossl_prov_is_running())
7778 return NULL;
78 sdst = siphash_new(ssrc->provctx);
79 sdst = OPENSSL_malloc(sizeof(*sdst));
7980 if (sdst == NULL)
8081 return NULL;
8182
82 sdst->siphash = ssrc->siphash;
83 *sdst = *ssrc;
8384 return sdst;
8485 }
8586
9394 static int siphash_setkey(struct siphash_data_st *ctx,
9495 const unsigned char *key, size_t keylen)
9596 {
97 int ret;
98
9699 if (keylen != SIPHASH_KEY_SIZE)
97100 return 0;
98 return SipHash_Init(&ctx->siphash, key, crounds(ctx), drounds(ctx));
101 ret = SipHash_Init(&ctx->siphash, key, crounds(ctx), drounds(ctx));
102 if (ret)
103 ctx->sipcopy = ctx->siphash;
104 return ret;
99105 }
100106
101107 static int siphash_init(void *vmacctx, const unsigned char *key, size_t keylen,
105111
106112 if (!ossl_prov_is_running() || !siphash_set_params(ctx, params))
107113 return 0;
108 /* Without a key, there is not much to do here,
114 /*
115 * Without a key, there is not much to do here,
109116 * The actual initialization happens through controls.
110117 */
111 if (key == NULL)
118 if (key == NULL) {
119 ctx->siphash = ctx->sipcopy;
112120 return 1;
121 }
113122 return siphash_setkey(ctx, key, keylen);
114123 }
115124
193202
194203 if ((p = OSSL_PARAM_locate_const(params, OSSL_MAC_PARAM_SIZE)) != NULL) {
195204 if (!OSSL_PARAM_get_size_t(p, &size)
196 || !SipHash_set_hash_size(&ctx->siphash, size))
205 || !SipHash_set_hash_size(&ctx->siphash, size)
206 || !SipHash_set_hash_size(&ctx->sipcopy, size))
197207 return 0;
198208 }
199209 if ((p = OSSL_PARAM_locate_const(params, OSSL_MAC_PARAM_C_ROUNDS)) != NULL
00 /*
1 * Copyright 2011-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2011-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
1313 #include <openssl/rand.h>
1414 #include <openssl/aes.h>
1515 #include <openssl/proverr.h>
16 #include "e_os.h" /* strcasecmp */
1716 #include "crypto/modes.h"
1817 #include "internal/thread_once.h"
1918 #include "prov/implementations.h"
689688 if (p->data_type != OSSL_PARAM_UTF8_STRING
690689 || p->data_size < ctr_str_len)
691690 return 0;
692 if (strcasecmp("CTR", base + p->data_size - ctr_str_len) != 0) {
691 if (OPENSSL_strcasecmp("CTR", base + p->data_size - ctr_str_len) != 0) {
693692 ERR_raise(ERR_LIB_PROV, PROV_R_REQUIRE_CTR_MODE_CIPHER);
694693 return 0;
695694 }
00 /*
1 * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
1212 */
1313 #include "internal/deprecated.h"
1414
15 #include "e_os.h" /* strcasecmp */
1615 #include <string.h>
1716 #include <openssl/crypto.h>
1817 #include <openssl/core_dispatch.h>
853852
854853 if (mdname != NULL
855854 /* was rsa_setup_md already called in rsa_signverify_init()? */
856 && (mdname[0] == '\0' || strcasecmp(prsactx->mdname, mdname) != 0)
855 && (mdname[0] == '\0' || OPENSSL_strcasecmp(prsactx->mdname, mdname) != 0)
857856 && !rsa_setup_md(prsactx, mdname, prsactx->propq))
858857 return 0;
859858
00 /*
1 * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2020-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
429429 p = OSSL_PARAM_locate_const(params, OSSL_PKEY_PARAM_DIST_ID);
430430 if (p != NULL) {
431431 void *tmp_id = NULL;
432 size_t tmp_idlen;
432 size_t tmp_idlen = 0;
433433
434434 /*
435435 * If the 'z' digest has already been computed, the ID is set too late
437437 if (!psm2ctx->flag_compute_z_digest)
438438 return 0;
439439
440 if (!OSSL_PARAM_get_octet_string(p, &tmp_id, 0, &tmp_idlen))
440 if (p->data_size != 0
441 && !OSSL_PARAM_get_octet_string(p, &tmp_id, 0, &tmp_idlen))
441442 return 0;
442443 OPENSSL_free(psm2ctx->id);
443444 psm2ctx->id = tmp_id;
00 /*
1 * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2020-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
77 */
88
99 /* This file has quite some overlap with engines/e_loader_attic.c */
10
11 #include "e_os.h" /* To get strncasecmp() on Windows */
1210
1311 #include <string.h>
1412 #include <sys/stat.h>
219217 * There's a special case if the URI also contains an authority, then
220218 * the full URI shouldn't be used as a path anywhere.
221219 */
222 if (strncasecmp(uri, "file:", 5) == 0) {
220 if (OPENSSL_strncasecmp(uri, "file:", 5) == 0) {
223221 const char *p = &uri[5];
224222
225223 if (strncmp(&uri[5], "//", 2) == 0) {
226224 path_data_n--; /* Invalidate using the full URI */
227 if (strncasecmp(&uri[7], "localhost/", 10) == 0) {
225 if (OPENSSL_strncasecmp(&uri[7], "localhost/", 10) == 0) {
228226 p = &uri[16];
229227 } else if (uri[7] == '/') {
230228 p = &uri[7];
591589 /*
592590 * First, check the basename
593591 */
594 if (strncasecmp(name, ctx->_.dir.search_name, len) != 0 || name[len] != '.')
592 if (OPENSSL_strncasecmp(name, ctx->_.dir.search_name, len) != 0
593 || name[len] != '.')
595594 return 0;
596595 p = &name[len + 1];
597596
36843684
36853685 case SSL_CTRL_SET_CHAIN_CERT_STORE:
36863686 return ssl_cert_set_cert_store(s->cert, parg, 1, larg);
3687
3688 case SSL_CTRL_GET_VERIFY_CERT_STORE:
3689 return ssl_cert_get_cert_store(s->cert, parg, 0);
3690
3691 case SSL_CTRL_GET_CHAIN_CERT_STORE:
3692 return ssl_cert_get_cert_store(s->cert, parg, 1);
36873693
36883694 case SSL_CTRL_GET_PEER_SIGNATURE_NID:
36893695 if (s->s3.tmp.peer_sigalg == NULL)
39303936 case SSL_CTRL_SET_CHAIN_CERT_STORE:
39313937 return ssl_cert_set_cert_store(ctx->cert, parg, 1, larg);
39323938
3939 case SSL_CTRL_GET_VERIFY_CERT_STORE:
3940 return ssl_cert_get_cert_store(ctx->cert, parg, 0);
3941
3942 case SSL_CTRL_GET_CHAIN_CERT_STORE:
3943 return ssl_cert_get_cert_store(ctx->cert, parg, 1);
3944
39333945 /* A Thawte special :-) */
39343946 case SSL_CTRL_EXTRA_CHAIN_CERT:
39353947 if (ctx->extra_certs == NULL) {
967967 *pstore = store;
968968 if (ref && store)
969969 X509_STORE_up_ref(store);
970 return 1;
971 }
972
973 int ssl_cert_get_cert_store(CERT *c, X509_STORE **pstore, int chain)
974 {
975 *pstore = (chain ? c->chain_store : c->verify_store);
970976 return 1;
971977 }
972978
00 /*
1 * Copyright 2012-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2012-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
147147 if (namelen == -1) {
148148 if (strcmp(tbl->name, name))
149149 return 0;
150 } else if (tbl->namelen != namelen || strncasecmp(tbl->name, name, namelen))
150 } else if (tbl->namelen != namelen
151 || OPENSSL_strncasecmp(tbl->name, name, namelen))
151152 return 0;
152153 ssl_set_option(cctx, tbl->name_flags, tbl->option_value, onoff);
153154 return 1;
231232
232233 /* Ignore values supported by 1.0.2 for the automatic selection */
233234 if ((cctx->flags & SSL_CONF_FLAG_FILE)
234 && (strcasecmp(value, "+automatic") == 0
235 || strcasecmp(value, "automatic") == 0))
235 && (OPENSSL_strcasecmp(value, "+automatic") == 0
236 || OPENSSL_strcasecmp(value, "automatic") == 0))
236237 return 1;
237238 if ((cctx->flags & SSL_CONF_FLAG_CMDLINE) &&
238239 strcmp(value, "auto") == 0)
596597 = OSSL_DECODER_CTX_new_for_pkey(&dhpkey, "PEM", NULL, "DH",
597598 OSSL_KEYMGMT_SELECT_DOMAIN_PARAMETERS,
598599 sslctx->libctx, sslctx->propq);
599 if (decoderctx == NULL
600 || !OSSL_DECODER_from_bio(decoderctx, in)) {
601 OSSL_DECODER_CTX_free(decoderctx);
600 if (decoderctx == NULL)
601 goto end;
602 ERR_set_mark();
603 while (!OSSL_DECODER_from_bio(decoderctx, in)
604 && dhpkey == NULL
605 && !BIO_eof(in));
606 OSSL_DECODER_CTX_free(decoderctx);
607
608 if (dhpkey == NULL) {
609 ERR_clear_last_mark();
602610 goto end;
603611 }
604 OSSL_DECODER_CTX_free(decoderctx);
605
606 if (dhpkey == NULL)
607 goto end;
612 ERR_pop_to_mark();
608613 } else {
609614 return 1;
610615 }
807812 strncmp(*pcmd, cctx->prefix, cctx->prefixlen))
808813 return 0;
809814 if (cctx->flags & SSL_CONF_FLAG_FILE &&
810 strncasecmp(*pcmd, cctx->prefix, cctx->prefixlen))
815 OPENSSL_strncasecmp(*pcmd, cctx->prefix, cctx->prefixlen))
811816 return 0;
812817 *pcmd += cctx->prefixlen;
813818 } else if (cctx->flags & SSL_CONF_FLAG_CMDLINE) {
849854 return t;
850855 }
851856 if (cctx->flags & SSL_CONF_FLAG_FILE) {
852 if (t->str_file && strcasecmp(t->str_file, cmd) == 0)
857 if (t->str_file && OPENSSL_strcasecmp(t->str_file, cmd) == 0)
853858 return t;
854859 }
855860 }
22312231 if ((s->mode & SSL_MODE_ASYNC) && ASYNC_get_current_job() == NULL) {
22322232 struct ssl_async_args args;
22332233
2234 memset(&args, 0, sizeof(args));
22342235 args.s = s;
22352236 args.type = OTHERFUNC;
22362237 args.f.func_other = s->method->ssl_shutdown;
39133914 if ((s->mode & SSL_MODE_ASYNC) && ASYNC_get_current_job() == NULL) {
39143915 struct ssl_async_args args;
39153916
3917 memset(&args, 0, sizeof(args));
39163918 args.s = s;
39173919
39183920 ret = ssl_start_async_job(s, &args, ssl_do_handshake_intern);
24292429 __owur int ssl_build_cert_chain(SSL *s, SSL_CTX *ctx, int flags);
24302430 __owur int ssl_cert_set_cert_store(CERT *c, X509_STORE *store, int chain,
24312431 int ref);
2432 __owur int ssl_cert_get_cert_store(CERT *c, X509_STORE **pstore, int chain);
24322433
24332434 __owur int ssl_security(const SSL *s, int op, int bits, int nid, void *other);
24342435 __owur int ssl_ctx_security(const SSL_CTX *ctx, int op, int bits, int nid,
00 /*
1 * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
22 * Copyright 2005 Nokia. All rights reserved.
33 *
44 * Licensed under the Apache License 2.0 (the "License"). You may not use
128128 }
129129 #endif
130130 if (x->time != 0L) {
131 if (BIO_printf(bp, "\n Start Time: %ld", x->time) <= 0)
131 if (BIO_printf(bp, "\n Start Time: %lld", (long long)x->time) <= 0)
132132 goto err;
133133 }
134134 if (x->timeout != 0L) {
135 if (BIO_printf(bp, "\n Timeout : %ld (sec)", x->timeout) <= 0)
135 if (BIO_printf(bp, "\n Timeout : %lld (sec)", (long long)x->timeout) <= 0)
136136 goto err;
137137 }
138138 if (BIO_puts(bp, "\n") <= 0)
13941394 && sversion == TLS1_2_VERSION
13951395 && PACKET_remaining(pkt) >= SSL3_RANDOM_SIZE
13961396 && memcmp(hrrrandom, PACKET_data(pkt), SSL3_RANDOM_SIZE) == 0) {
1397 if (s->hello_retry_request != SSL_HRR_NONE) {
1398 SSLfatal(s, SSL_AD_UNEXPECTED_MESSAGE, SSL_R_UNEXPECTED_MESSAGE);
1399 goto err;
1400 }
13971401 s->hello_retry_request = SSL_HRR_PENDING;
13981402 hrr = 1;
13991403 if (!PACKET_forward(pkt, SSL3_RANDOM_SIZE)) {
00 /*
1 * Copyright 2005-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2005-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
217217 else
218218 len = s->init_num;
219219
220 if (len > s->max_send_fragment)
221 len = s->max_send_fragment;
220 if (len > ssl_get_max_send_fragment(s))
221 len = ssl_get_max_send_fragment(s);
222222
223223 /*
224224 * XDTLS: this function is too long. split out the CCS part
240240
241241 ret = dtls1_write_bytes(s, type, &s->init_buf->data[s->init_off], len,
242242 &written);
243 if (ret < 0) {
243 if (ret <= 0) {
244244 /*
245245 * might need to update MTU here, but we don't know which
246246 * previous packet caused the failure -- so can't really
36203620 static int create_ticket_prequel(SSL *s, WPACKET *pkt, uint32_t age_add,
36213621 unsigned char *tick_nonce)
36223622 {
3623 uint32_t timeout = (uint32_t)s->session->timeout;
3624
36233625 /*
3624 * Ticket lifetime hint: For TLSv1.2 this is advisory only and we leave this
3625 * unspecified for resumed session (for simplicity).
3626 * Ticket lifetime hint:
36263627 * In TLSv1.3 we reset the "time" field above, and always specify the
3627 * timeout.
3628 * timeout, limited to a 1 week period per RFC8446.
3629 * For TLSv1.2 this is advisory only and we leave this unspecified for
3630 * resumed session (for simplicity).
36283631 */
3629 if (!WPACKET_put_bytes_u32(pkt,
3630 (s->hit && !SSL_IS_TLS13(s))
3631 ? 0 : (uint32_t)s->session->timeout)) {
3632 #define ONE_WEEK_SEC (7 * 24 * 60 * 60)
3633
3634 if (SSL_IS_TLS13(s)) {
3635 if (s->session->timeout > ONE_WEEK_SEC)
3636 timeout = ONE_WEEK_SEC;
3637 } else if (s->hit)
3638 timeout = 0;
3639
3640 if (!WPACKET_put_bytes_u32(pkt, timeout)) {
36323641 SSLfatal(s, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR);
36333642 return 0;
36343643 }
99 #include <errno.h>
1010 #include <stdio.h>
1111 #include <string.h>
12 #ifdef __TANDEM
13 # include <strings.h> /* strcasecmp */
14 #endif
1512 #include <ctype.h>
1613
1714 #include <openssl/bn.h>
2219 #include "internal/numbers.h"
2320 #include "testutil.h"
2421
25 #ifdef OPENSSL_SYS_WINDOWS
26 # define strcasecmp _stricmp
27 #endif
28
2922 /*
3023 * Things in boring, not in openssl.
3124 */
6356 PAIR *pp = s->pairs;
6457
6558 for ( ; --i >= 0; pp++)
66 if (strcasecmp(pp->key, key) == 0)
59 if (OPENSSL_strcasecmp(pp->key, key) == 0)
6760 return pp->value;
6861 return NULL;
6962 }
3636 sanitytest rsa_complex exdatatest bntest \
3737 ecstresstest gmdifftest pbelutest \
3838 destest mdc2test sha_test \
39 exptest pbetest \
39 exptest pbetest localetest evp_pkey_ctx_new_from_name\
4040 evp_pkey_provided_test evp_test evp_extra_test evp_extra_test2 \
4141 evp_fetch_prov_test evp_libctx_test ossl_store_test \
4242 v3nametest v3ext \
134134 INCLUDE[exptest]=../include ../apps/include
135135 DEPEND[exptest]=../libcrypto libtestutil.a
136136
137 SOURCE[localetest]=localetest.c
138 INCLUDE[localetest]=../include ../apps/include
139 DEPEND[localetest]=../libcrypto libtestutil.a
140
141 SOURCE[evp_pkey_ctx_new_from_name]=evp_pkey_ctx_new_from_name.c
142 INCLUDE[evp_pkey_ctx_new_from_name]=../include ../apps/include
143 DEPEND[evp_pkey_ctx_new_from_name]=../libcrypto
144
137145 SOURCE[pbetest]=pbetest.c
138146 INCLUDE[pbetest]=../include ../apps/include
139147 DEPEND[pbetest]=../libcrypto libtestutil.a
00 /*
1 * Copyright 2018-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2018-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
1717
1818 static X509 *cert = NULL;
1919 static EVP_PKEY *privkey = NULL;
20 static char *derin = NULL;
2021
2122 static int test_encrypt_decrypt(const EVP_CIPHER *cipher)
2223 {
287288 return ret;
288289 }
289290
290 OPT_TEST_DECLARE_USAGE("certfile privkeyfile\n")
291 static int test_d2i_CMS_bio_file_encrypted_data(void)
292 {
293 BIO *bio = NULL;
294 CMS_ContentInfo *cms = NULL;
295 int ret = 0;
296
297 ERR_clear_error();
298
299 if (!TEST_ptr(bio = BIO_new_file(derin, "r"))
300 || !TEST_ptr(cms = d2i_CMS_bio(bio, NULL)))
301 goto end;
302
303 if (!TEST_int_eq(ERR_peek_error(), 0))
304 goto end;
305
306 ret = 1;
307 end:
308 CMS_ContentInfo_free(cms);
309 BIO_free(bio);
310
311 return ret;
312 }
313
314 OPT_TEST_DECLARE_USAGE("certfile privkeyfile derfile\n")
291315
292316 int setup_tests(void)
293317 {
300324 }
301325
302326 if (!TEST_ptr(certin = test_get_argument(0))
303 || !TEST_ptr(privkeyin = test_get_argument(1)))
327 || !TEST_ptr(privkeyin = test_get_argument(1))
328 || !TEST_ptr(derin = test_get_argument(2)))
304329 return 0;
305330
306331 certbio = BIO_new_file(certin, "r");
331356 ADD_TEST(test_encrypt_decrypt_aes_192_gcm);
332357 ADD_TEST(test_encrypt_decrypt_aes_256_gcm);
333358 ADD_TEST(test_d2i_CMS_bio_NULL);
359 ADD_TEST(test_d2i_CMS_bio_file_encrypted_data);
334360 return 1;
335361 }
336362
00 /*
1 * Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2016-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
184184
185185 end:
186186 SSL_CTX_free(ctx);
187 return ret;
188 }
189
190 static int test_server_mtu_larger_than_max_fragment_length(void)
191 {
192 SSL_CTX *ctx = NULL;
193 SSL *srvr_ssl = NULL, *clnt_ssl = NULL;
194 int rv = 0;
195
196 if (!TEST_ptr(ctx = SSL_CTX_new(DTLS_method())))
197 goto end;
198
199 SSL_CTX_set_psk_server_callback(ctx, srvr_psk_callback);
200 SSL_CTX_set_psk_client_callback(ctx, clnt_psk_callback);
201
202 #ifndef OPENSSL_NO_DH
203 if (!TEST_true(SSL_CTX_set_dh_auto(ctx, 1)))
204 goto end;
205 #endif
206
207 if (!TEST_true(create_ssl_objects(ctx, ctx, &srvr_ssl, &clnt_ssl,
208 NULL, NULL)))
209 goto end;
210
211 SSL_set_options(srvr_ssl, SSL_OP_NO_QUERY_MTU);
212 if (!TEST_true(DTLS_set_link_mtu(srvr_ssl, 1500)))
213 goto end;
214
215 SSL_set_tlsext_max_fragment_length(clnt_ssl,
216 TLSEXT_max_fragment_length_512);
217
218 if (!TEST_true(create_ssl_connection(srvr_ssl, clnt_ssl,
219 SSL_ERROR_NONE)))
220 goto end;
221
222 rv = 1;
223
224 end:
225 SSL_free(clnt_ssl);
226 SSL_free(srvr_ssl);
227 SSL_CTX_free(ctx);
228 return rv;
229 }
230
231 int setup_tests(void)
232 {
233 ADD_TEST(run_mtu_tests);
234 ADD_TEST(test_server_mtu_larger_than_max_fragment_length);
235 return 1;
236 }
237
238 void cleanup_tests(void)
239 {
187240 bio_s_mempacket_test_free();
188 return ret;
189 }
190
191 int setup_tests(void)
192 {
193 ADD_TEST(run_mtu_tests);
194 return 1;
195 }
241 }
00 /*
1 * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2020-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
142142 typedef void (dumper)(const char *label, const void *data, size_t data_len);
143143
144144 #define FLAG_DECODE_WITH_TYPE 0x0001
145 #define FLAG_FAIL_IF_FIPS 0x0002
145146
146147 static int test_encode_decode(const char *file, const int line,
147148 const char *type, EVP_PKEY *pkey,
165166 * dumping purposes.
166167 */
167168 if (!TEST_true(encode_cb(file, line, &encoded, &encoded_len, pkey, selection,
168 output_type, output_structure, pass, pcipher))
169 || !TEST_true(check_cb(file, line, type, encoded, encoded_len))
169 output_type, output_structure, pass, pcipher)))
170 goto end;
171
172 if ((flags & FLAG_FAIL_IF_FIPS) != 0 && is_fips) {
173 if (TEST_false(decode_cb(file, line, (void **)&pkey2, encoded,
174 encoded_len, output_type, output_structure,
175 (flags & FLAG_DECODE_WITH_TYPE ? type : NULL),
176 selection, pass)))
177 ok = 1;
178 goto end;
179 }
180
181 if (!TEST_true(check_cb(file, line, type, encoded, encoded_len))
170182 || !TEST_true(decode_cb(file, line, (void **)&pkey2, encoded, encoded_len,
171183 output_type, output_structure,
172184 (flags & FLAG_DECODE_WITH_TYPE ? type : NULL),
520532 return ok;
521533 }
522534
523 static int test_unprotected_via_DER(const char *type, EVP_PKEY *key)
535 static int test_unprotected_via_DER(const char *type, EVP_PKEY *key, int fips)
524536 {
525537 return test_encode_decode(__FILE__, __LINE__, type, key,
526538 OSSL_KEYMGMT_SELECT_KEYPAIR
528540 "DER", "PrivateKeyInfo", NULL, NULL,
529541 encode_EVP_PKEY_prov, decode_EVP_PKEY_prov,
530542 test_mem, check_unprotected_PKCS8_DER,
531 dump_der, 0);
543 dump_der, fips ? 0 : FLAG_FAIL_IF_FIPS);
532544 }
533545
534546 static int check_unprotected_PKCS8_PEM(const char *file, const int line,
542554 sizeof(expected_pem_header) - 1);
543555 }
544556
545 static int test_unprotected_via_PEM(const char *type, EVP_PKEY *key)
557 static int test_unprotected_via_PEM(const char *type, EVP_PKEY *key, int fips)
546558 {
547559 return test_encode_decode(__FILE__, __LINE__, type, key,
548560 OSSL_KEYMGMT_SELECT_KEYPAIR
550562 "PEM", "PrivateKeyInfo", NULL, NULL,
551563 encode_EVP_PKEY_prov, decode_EVP_PKEY_prov,
552564 test_text, check_unprotected_PKCS8_PEM,
553 dump_pem, 0);
565 dump_pem, fips ? 0 : FLAG_FAIL_IF_FIPS);
554566 }
555567
556568 #ifndef OPENSSL_NO_KEYPARAMS
697709 return ok;
698710 }
699711
700 static int test_protected_via_DER(const char *type, EVP_PKEY *key)
712 static int test_protected_via_DER(const char *type, EVP_PKEY *key, int fips)
701713 {
702714 return test_encode_decode(__FILE__, __LINE__, type, key,
703715 OSSL_KEYMGMT_SELECT_KEYPAIR
706718 pass, pass_cipher,
707719 encode_EVP_PKEY_prov, decode_EVP_PKEY_prov,
708720 test_mem, check_protected_PKCS8_DER,
709 dump_der, 0);
721 dump_der, fips ? 0 : FLAG_FAIL_IF_FIPS);
710722 }
711723
712724 static int check_protected_PKCS8_PEM(const char *file, const int line,
720732 sizeof(expected_pem_header) - 1);
721733 }
722734
723 static int test_protected_via_PEM(const char *type, EVP_PKEY *key)
735 static int test_protected_via_PEM(const char *type, EVP_PKEY *key, int fips)
724736 {
725737 return test_encode_decode(__FILE__, __LINE__, type, key,
726738 OSSL_KEYMGMT_SELECT_KEYPAIR
729741 pass, pass_cipher,
730742 encode_EVP_PKEY_prov, decode_EVP_PKEY_prov,
731743 test_text, check_protected_PKCS8_PEM,
732 dump_pem, 0);
744 dump_pem, fips ? 0 : FLAG_FAIL_IF_FIPS);
733745 }
734746
735747 static int check_protected_legacy_PEM(const char *file, const int line,
790802 return ok;
791803 }
792804
793 static int test_public_via_DER(const char *type, EVP_PKEY *key)
805 static int test_public_via_DER(const char *type, EVP_PKEY *key, int fips)
794806 {
795807 return test_encode_decode(__FILE__, __LINE__, type, key,
796808 OSSL_KEYMGMT_SELECT_PUBLIC_KEY
797809 | OSSL_KEYMGMT_SELECT_ALL_PARAMETERS,
798810 "DER", "SubjectPublicKeyInfo", NULL, NULL,
799811 encode_EVP_PKEY_prov, decode_EVP_PKEY_prov,
800 test_mem, check_public_DER, dump_der, 0);
812 test_mem, check_public_DER, dump_der,
813 fips ? 0 : FLAG_FAIL_IF_FIPS);
801814 }
802815
803816 static int check_public_PEM(const char *file, const int line,
811824 sizeof(expected_pem_header) - 1);
812825 }
813826
814 static int test_public_via_PEM(const char *type, EVP_PKEY *key)
827 static int test_public_via_PEM(const char *type, EVP_PKEY *key, int fips)
815828 {
816829 return test_encode_decode(__FILE__, __LINE__, type, key,
817830 OSSL_KEYMGMT_SELECT_PUBLIC_KEY
818831 | OSSL_KEYMGMT_SELECT_ALL_PARAMETERS,
819832 "PEM", "SubjectPublicKeyInfo", NULL, NULL,
820833 encode_EVP_PKEY_prov, decode_EVP_PKEY_prov,
821 test_text, check_public_PEM, dump_pem, 0);
834 test_text, check_public_PEM, dump_pem,
835 fips ? 0 : FLAG_FAIL_IF_FIPS);
822836 }
823837
824838 static int check_public_MSBLOB(const char *file, const int line,
863877 EVP_PKEY_free(template_##KEYTYPE); \
864878 EVP_PKEY_free(key_##KEYTYPE)
865879
866 #define IMPLEMENT_TEST_SUITE(KEYTYPE, KEYTYPEstr) \
880 #define IMPLEMENT_TEST_SUITE(KEYTYPE, KEYTYPEstr, fips) \
867881 static int test_unprotected_##KEYTYPE##_via_DER(void) \
868882 { \
869 return test_unprotected_via_DER(KEYTYPEstr, key_##KEYTYPE); \
883 return test_unprotected_via_DER(KEYTYPEstr, key_##KEYTYPE, fips); \
870884 } \
871885 static int test_unprotected_##KEYTYPE##_via_PEM(void) \
872886 { \
873 return test_unprotected_via_PEM(KEYTYPEstr, key_##KEYTYPE); \
887 return test_unprotected_via_PEM(KEYTYPEstr, key_##KEYTYPE, fips); \
874888 } \
875889 static int test_protected_##KEYTYPE##_via_DER(void) \
876890 { \
877 return test_protected_via_DER(KEYTYPEstr, key_##KEYTYPE); \
891 return test_protected_via_DER(KEYTYPEstr, key_##KEYTYPE, fips); \
878892 } \
879893 static int test_protected_##KEYTYPE##_via_PEM(void) \
880894 { \
881 return test_protected_via_PEM(KEYTYPEstr, key_##KEYTYPE); \
895 return test_protected_via_PEM(KEYTYPEstr, key_##KEYTYPE, fips); \
882896 } \
883897 static int test_public_##KEYTYPE##_via_DER(void) \
884898 { \
885 return test_public_via_DER(KEYTYPEstr, key_##KEYTYPE); \
899 return test_public_via_DER(KEYTYPEstr, key_##KEYTYPE, fips); \
886900 } \
887901 static int test_public_##KEYTYPE##_via_PEM(void) \
888902 { \
889 return test_public_via_PEM(KEYTYPEstr, key_##KEYTYPE); \
903 return test_public_via_PEM(KEYTYPEstr, key_##KEYTYPE, fips); \
890904 }
891905
892906 #define ADD_TEST_SUITE(KEYTYPE) \
960974
961975 #ifndef OPENSSL_NO_DH
962976 DOMAIN_KEYS(DH);
963 IMPLEMENT_TEST_SUITE(DH, "DH")
977 IMPLEMENT_TEST_SUITE(DH, "DH", 1)
964978 IMPLEMENT_TEST_SUITE_PARAMS(DH, "DH")
965979 DOMAIN_KEYS(DHX);
966 IMPLEMENT_TEST_SUITE(DHX, "X9.42 DH")
980 IMPLEMENT_TEST_SUITE(DHX, "X9.42 DH", 1)
967981 IMPLEMENT_TEST_SUITE_PARAMS(DHX, "X9.42 DH")
968982 /*
969983 * DH has no support for PEM_write_bio_PrivateKey_traditional(),
972986 #endif
973987 #ifndef OPENSSL_NO_DSA
974988 DOMAIN_KEYS(DSA);
975 IMPLEMENT_TEST_SUITE(DSA, "DSA")
989 IMPLEMENT_TEST_SUITE(DSA, "DSA", 1)
976990 IMPLEMENT_TEST_SUITE_PARAMS(DSA, "DSA")
977991 IMPLEMENT_TEST_SUITE_LEGACY(DSA, "DSA")
978992 IMPLEMENT_TEST_SUITE_MSBLOB(DSA, "DSA")
983997 #endif
984998 #ifndef OPENSSL_NO_EC
985999 DOMAIN_KEYS(EC);
986 IMPLEMENT_TEST_SUITE(EC, "EC")
1000 IMPLEMENT_TEST_SUITE(EC, "EC", 1)
9871001 IMPLEMENT_TEST_SUITE_PARAMS(EC, "EC")
9881002 IMPLEMENT_TEST_SUITE_LEGACY(EC, "EC")
9891003 DOMAIN_KEYS(ECExplicitPrimeNamedCurve);
990 IMPLEMENT_TEST_SUITE(ECExplicitPrimeNamedCurve, "EC")
1004 IMPLEMENT_TEST_SUITE(ECExplicitPrimeNamedCurve, "EC", 1)
9911005 IMPLEMENT_TEST_SUITE_LEGACY(ECExplicitPrimeNamedCurve, "EC")
9921006 DOMAIN_KEYS(ECExplicitPrime2G);
993 IMPLEMENT_TEST_SUITE(ECExplicitPrime2G, "EC")
1007 IMPLEMENT_TEST_SUITE(ECExplicitPrime2G, "EC", 0)
9941008 IMPLEMENT_TEST_SUITE_LEGACY(ECExplicitPrime2G, "EC")
9951009 # ifndef OPENSSL_NO_EC2M
9961010 DOMAIN_KEYS(ECExplicitTriNamedCurve);
997 IMPLEMENT_TEST_SUITE(ECExplicitTriNamedCurve, "EC")
1011 IMPLEMENT_TEST_SUITE(ECExplicitTriNamedCurve, "EC", 1)
9981012 IMPLEMENT_TEST_SUITE_LEGACY(ECExplicitTriNamedCurve, "EC")
9991013 DOMAIN_KEYS(ECExplicitTri2G);
1000 IMPLEMENT_TEST_SUITE(ECExplicitTri2G, "EC")
1014 IMPLEMENT_TEST_SUITE(ECExplicitTri2G, "EC", 0)
10011015 IMPLEMENT_TEST_SUITE_LEGACY(ECExplicitTri2G, "EC")
10021016 # endif
10031017 KEYS(ED25519);
1004 IMPLEMENT_TEST_SUITE(ED25519, "ED25519")
1018 IMPLEMENT_TEST_SUITE(ED25519, "ED25519", 1)
10051019 KEYS(ED448);
1006 IMPLEMENT_TEST_SUITE(ED448, "ED448")
1020 IMPLEMENT_TEST_SUITE(ED448, "ED448", 1)
10071021 KEYS(X25519);
1008 IMPLEMENT_TEST_SUITE(X25519, "X25519")
1022 IMPLEMENT_TEST_SUITE(X25519, "X25519", 1)
10091023 KEYS(X448);
1010 IMPLEMENT_TEST_SUITE(X448, "X448")
1024 IMPLEMENT_TEST_SUITE(X448, "X448", 1)
10111025 /*
10121026 * ED25519, ED448, X25519 and X448 have no support for
10131027 * PEM_write_bio_PrivateKey_traditional(), so no legacy tests.
10141028 */
10151029 #endif
10161030 KEYS(RSA);
1017 IMPLEMENT_TEST_SUITE(RSA, "RSA")
1031 IMPLEMENT_TEST_SUITE(RSA, "RSA", 1)
10181032 IMPLEMENT_TEST_SUITE_LEGACY(RSA, "RSA")
10191033 KEYS(RSA_PSS);
1020 IMPLEMENT_TEST_SUITE(RSA_PSS, "RSA-PSS")
1034 IMPLEMENT_TEST_SUITE(RSA_PSS, "RSA-PSS", 1)
10211035 /*
10221036 * RSA-PSS has no support for PEM_write_bio_PrivateKey_traditional(),
10231037 * so no legacy tests.
3434 #include "internal/nelem.h"
3535 #include "internal/sizes.h"
3636 #include "crypto/evp.h"
37 #include "../e_os.h" /* strcasecmp */
3837
3938 static OSSL_LIB_CTX *testctx = NULL;
4039 static char *testpropq = NULL;
17381737 return 0;
17391738
17401739 for (i = 0; i < OSSL_NELEM(ec_encodings); i++) {
1741 if (strcasecmp(enc_name, ec_encodings[i].encoding_name) == 0) {
1740 if (OPENSSL_strcasecmp(enc_name, ec_encodings[i].encoding_name) == 0) {
17421741 *enc = ec_encodings[i].encoding;
17431742 break;
17441743 }
19601959 goto done;
19611960
19621961 if (!TEST_int_gt(EVP_DigestVerifyFinal(md_ctx_verify, sig, sig_len), 0))
1962 goto done;
1963
1964 /*
1965 * Try verify again with non-matching 0 length id but ensure that it can
1966 * be set on the context and overrides the previous value.
1967 */
1968
1969 if (!TEST_true(EVP_DigestVerifyInit(md_ctx_verify, NULL, check_md, NULL,
1970 pkey)))
1971 goto done;
1972
1973 if (!TEST_int_gt(EVP_PKEY_CTX_set1_id(sctx, NULL, 0), 0))
1974 goto done;
1975
1976 if (!TEST_true(EVP_DigestVerifyUpdate(md_ctx_verify, kMsg, sizeof(kMsg))))
1977 goto done;
1978
1979 if (!TEST_int_eq(EVP_DigestVerifyFinal(md_ctx_verify, sig, sig_len), 0))
19631980 goto done;
19641981
19651982 /* now check encryption/decryption */
00 /*
1 * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2020-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
3232 #include "testutil.h"
3333 #include "internal/nelem.h"
3434 #include "crypto/bn_dh.h" /* _bignum_ffdhe2048_p */
35 #include "../e_os.h" /* strcasecmp */
3635
3736 static OSSL_LIB_CTX *libctx = NULL;
3837 static OSSL_PROVIDER *nullprov = NULL;
477476
478477 static int name_cmp(const char * const *a, const char * const *b)
479478 {
480 return strcasecmp(*a, *b);
479 return OPENSSL_strcasecmp(*a, *b);
481480 }
482481
483482 static void collect_cipher_names(EVP_CIPHER *cipher, void *cipher_names_list)
0 #include <stdio.h>
1 #include <openssl/ec.h>
2 #include <openssl/evp.h>
3 #include <openssl/err.h>
4
5 int main(int argc, char *argv[])
6 {
7 EVP_PKEY_CTX *pctx = NULL;
8
9 pctx = EVP_PKEY_CTX_new_from_name(NULL, "NO_SUCH_ALGORITHM", NULL);
10 EVP_PKEY_CTX_free(pctx);
11
12 return 0;
13 }
1111 #include <string.h>
1212 #include <stdlib.h>
1313 #include <ctype.h>
14 #include "../e_os.h" /* strcasecmp */
1514 #include <openssl/evp.h>
1615 #include <openssl/pem.h>
1716 #include <openssl/err.h>
11321131 size_t salt_len;
11331132 /* XOF mode? */
11341133 int xof;
1134 /* Reinitialization fails */
1135 int no_reinit;
11351136 /* Collection of controls */
11361137 STACK_OF(OPENSSL_STRING) *controls;
11371138 /* Output size */
12441245 return parse_bin(value, &mdata->output, &mdata->output_len);
12451246 if (strcmp(keyword, "XOF") == 0)
12461247 return mdata->xof = 1;
1248 if (strcmp(keyword, "NoReinit") == 0)
1249 return mdata->no_reinit = 1;
12471250 if (strcmp(keyword, "Ctrl") == 0)
12481251 return sk_OPENSSL_STRING_push(mdata->controls,
12491252 OPENSSL_strdup(value)) != 0;
14071410 const OSSL_PARAM *defined_params =
14081411 EVP_MAC_settable_ctx_params(expected->mac);
14091412 int xof;
1413 int reinit = 1;
14101414
14111415 if (expected->alg == NULL)
14121416 TEST_info("Trying the EVP_MAC %s test", expected->mac_name);
15171521 goto err;
15181522 }
15191523 }
1524 retry:
15201525 if (!EVP_MAC_update(ctx, expected->input, expected->input_len)) {
15211526 t->err = "MAC_UPDATE_ERROR";
15221527 goto err;
15501555 t->err = "TEST_MAC_ERR";
15511556 goto err;
15521557 }
1558 }
1559 if (reinit--) {
1560 OSSL_PARAM ivparams[2] = { OSSL_PARAM_END, OSSL_PARAM_END };
1561 int ret;
1562
1563 /* If the MAC uses IV, we have to set it again */
1564 if (expected->iv != NULL) {
1565 ivparams[0] =
1566 OSSL_PARAM_construct_octet_string(OSSL_MAC_PARAM_IV,
1567 expected->iv,
1568 expected->iv_len);
1569 ivparams[1] = OSSL_PARAM_construct_end();
1570 }
1571 ERR_set_mark();
1572 ret = EVP_MAC_init(ctx, NULL, 0, ivparams);
1573 if (expected->no_reinit) {
1574 if (ret) {
1575 ERR_clear_last_mark();
1576 t->err = "MAC_REINIT_SHOULD_FAIL";
1577 goto err;
1578 }
1579 } else if (ret) {
1580 ERR_clear_last_mark();
1581 OPENSSL_free(got);
1582 got = NULL;
1583 goto retry;
1584 } else {
1585 ERR_clear_last_mark();
1586 t->err = "MAC_REINIT_ERROR";
1587 goto err;
1588 }
1589 /* If reinitialization fails, it is unsupported by the algorithm */
1590 ERR_pop_to_mark();
15531591 }
15541592 t->err = NULL;
15551593
38853923 OSSL_LIB_CTX_free(libctx);
38863924 }
38873925
3888 #define STR_STARTS_WITH(str, pre) strncasecmp(pre, str, strlen(pre)) == 0
3926 #define STR_STARTS_WITH(str, pre) OPENSSL_strncasecmp(pre, str, strlen(pre)) == 0
38893927 #define STR_ENDS_WITH(str, pre) \
3890 strlen(str) < strlen(pre) ? 0 : (strcasecmp(pre, str + strlen(str) - strlen(pre)) == 0)
3928 strlen(str) < strlen(pre) ? 0 : (OPENSSL_strcasecmp(pre, str + strlen(str) - strlen(pre)) == 0)
38913929
38923930 static int is_digest_disabled(const char *name)
38933931 {
38963934 return 1;
38973935 #endif
38983936 #ifdef OPENSSL_NO_MD2
3899 if (strcasecmp(name, "MD2") == 0)
3937 if (OPENSSL_strcasecmp(name, "MD2") == 0)
39003938 return 1;
39013939 #endif
39023940 #ifdef OPENSSL_NO_MDC2
3903 if (strcasecmp(name, "MDC2") == 0)
3941 if (OPENSSL_strcasecmp(name, "MDC2") == 0)
39043942 return 1;
39053943 #endif
39063944 #ifdef OPENSSL_NO_MD4
3907 if (strcasecmp(name, "MD4") == 0)
3945 if (OPENSSL_strcasecmp(name, "MD4") == 0)
39083946 return 1;
39093947 #endif
39103948 #ifdef OPENSSL_NO_MD5
3911 if (strcasecmp(name, "MD5") == 0)
3949 if (OPENSSL_strcasecmp(name, "MD5") == 0)
39123950 return 1;
39133951 #endif
39143952 #ifdef OPENSSL_NO_RMD160
3915 if (strcasecmp(name, "RIPEMD160") == 0)
3953 if (OPENSSL_strcasecmp(name, "RIPEMD160") == 0)
39163954 return 1;
39173955 #endif
39183956 #ifdef OPENSSL_NO_SM3
3919 if (strcasecmp(name, "SM3") == 0)
3957 if (OPENSSL_strcasecmp(name, "SM3") == 0)
39203958 return 1;
39213959 #endif
39223960 #ifdef OPENSSL_NO_WHIRLPOOL
3923 if (strcasecmp(name, "WHIRLPOOL") == 0)
3961 if (OPENSSL_strcasecmp(name, "WHIRLPOOL") == 0)
39243962 return 1;
39253963 #endif
39263964 return 0;
14311431 test_ctx, extra, &server_ctx_data,
14321432 &server2_ctx_data, &client_ctx_data)) {
14331433 TEST_note("configure_handshake_ctx");
1434 HANDSHAKE_RESULT_free(ret);
14341435 return NULL;
14351436 }
14361437
00 /*
1 * Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2016-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
1515 #include "ssl_test_ctx.h"
1616 #include "../testutil.h"
1717
18 #ifdef OPENSSL_SYS_WINDOWS
19 # define strcasecmp _stricmp
20 #endif
21
2218 static const int default_app_data_size = 256;
2319 /* Default set to be as small as possible to exercise fragmentation. */
2420 static const int default_max_fragment_size = 512;
2521
2622 static int parse_boolean(const char *value, int *result)
2723 {
28 if (strcasecmp(value, "Yes") == 0) {
24 if (OPENSSL_strcasecmp(value, "Yes") == 0) {
2925 *result = 1;
3026 return 1;
3127 }
32 else if (strcasecmp(value, "No") == 0) {
28 else if (OPENSSL_strcasecmp(value, "No") == 0) {
3329 *result = 0;
3430 return 1;
3531 }
0
1 #include <stdio.h>
2 #include <string.h>
3 #include <openssl/x509.h>
4 #include "testutil.h"
5 #include "testutil/output.h"
6
7 #include <stdio.h>
8 #include <stdlib.h>
9 #include <locale.h>
10 #ifdef OPENSSL_SYS_WINDOWS
11 # define strcasecmp _stricmp
12 #else
13 # include <strings.h>
14 #endif
15
16 int setup_tests(void)
17 {
18 const unsigned char der_bytes[] = {
19 0x30, 0x82, 0x03, 0x09, 0x30, 0x82, 0x01, 0xf1, 0xa0, 0x03, 0x02, 0x01,
20 0x02, 0x02, 0x14, 0x08, 0xe0, 0x8c, 0xd3, 0xf3, 0xbf, 0x2c, 0xf2, 0x0d,
21 0x0a, 0x75, 0xd1, 0xe8, 0xea, 0xbe, 0x70, 0x61, 0xd9, 0x67, 0xf9, 0x30,
22 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b,
23 0x05, 0x00, 0x30, 0x14, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04,
24 0x03, 0x0c, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74,
25 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x32, 0x30, 0x34, 0x31, 0x31, 0x31, 0x34,
26 0x31, 0x39, 0x35, 0x37, 0x5a, 0x17, 0x0d, 0x32, 0x32, 0x30, 0x35, 0x31,
27 0x31, 0x31, 0x34, 0x31, 0x39, 0x35, 0x37, 0x5a, 0x30, 0x14, 0x31, 0x12,
28 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x09, 0x6c, 0x6f, 0x63,
29 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d,
30 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05,
31 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82,
32 0x01, 0x01, 0x00, 0xc3, 0x1f, 0x5c, 0x56, 0x46, 0x8d, 0x69, 0xb6, 0x48,
33 0x3c, 0xbf, 0xe2, 0x0f, 0xa7, 0x4a, 0x44, 0x72, 0x74, 0x36, 0xfe, 0xe8,
34 0x2f, 0x10, 0x4a, 0xe9, 0x46, 0x45, 0x72, 0x5e, 0x48, 0xdd, 0x75, 0xab,
35 0xd9, 0x63, 0x91, 0x37, 0x93, 0x46, 0x28, 0x7e, 0x45, 0x94, 0x4b, 0x8a,
36 0xd5, 0x05, 0x2b, 0x9a, 0x01, 0x96, 0x30, 0xde, 0xcc, 0x14, 0x2d, 0x06,
37 0x09, 0x1b, 0x7d, 0x50, 0x14, 0x99, 0x36, 0x6b, 0x97, 0x6e, 0xc9, 0xb1,
38 0x69, 0x70, 0xcd, 0x9b, 0x74, 0x24, 0x9a, 0xe2, 0xd4, 0xc0, 0x1e, 0xbc,
39 0xec, 0xf6, 0x7a, 0xbb, 0xa0, 0x53, 0x93, 0xf8, 0x68, 0x9a, 0x18, 0xa1,
40 0xa1, 0x5c, 0x47, 0x93, 0xd1, 0x4c, 0x36, 0x8c, 0x00, 0xb3, 0x66, 0xda,
41 0xf1, 0x05, 0xb2, 0x3a, 0xad, 0x7e, 0x4b, 0xf3, 0xd3, 0x93, 0xfa, 0x59,
42 0x09, 0x9c, 0x60, 0x37, 0x69, 0x61, 0xe8, 0x5a, 0x33, 0xc6, 0xb2, 0x1a,
43 0xba, 0x36, 0xe2, 0xb3, 0x58, 0xe9, 0x73, 0x01, 0x2d, 0x36, 0x48, 0x36,
44 0x94, 0xe4, 0xb2, 0xa4, 0x5b, 0xdf, 0x3d, 0x5f, 0x62, 0x9f, 0xd9, 0xf3,
45 0x24, 0x0c, 0xf0, 0x2f, 0x71, 0x44, 0x79, 0x13, 0x70, 0x95, 0xa7, 0xbe,
46 0xea, 0x0a, 0x08, 0x0a, 0xa6, 0x4b, 0xe9, 0x58, 0x6b, 0xa4, 0xc2, 0xed,
47 0x74, 0x1e, 0xb0, 0x3b, 0x59, 0xd5, 0xe6, 0xdb, 0x8f, 0x58, 0x6a, 0xa3,
48 0x7d, 0x52, 0x40, 0xec, 0x72, 0xb7, 0xba, 0x7e, 0x30, 0x9d, 0x12, 0x57,
49 0xf2, 0x48, 0xae, 0x80, 0x0d, 0x0a, 0xf4, 0xfd, 0x24, 0xed, 0xd8, 0x05,
50 0xb2, 0x96, 0x44, 0x02, 0x3e, 0x6e, 0x25, 0xb0, 0xc4, 0x93, 0xda, 0xfe,
51 0x78, 0xd9, 0xbb, 0xd2, 0x71, 0x69, 0x70, 0x7f, 0xba, 0xf7, 0xb0, 0x4f,
52 0x14, 0xf7, 0x98, 0x71, 0x01, 0x6c, 0xec, 0x6f, 0x76, 0x03, 0x59, 0xff,
53 0xe2, 0xba, 0x8d, 0xd9, 0x21, 0x08, 0xb3, 0x02, 0x03, 0x01, 0x00, 0x01,
54 0xa3, 0x53, 0x30, 0x51, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04,
55 0x16, 0x04, 0x14, 0x59, 0xb8, 0x6e, 0x1a, 0x72, 0xe9, 0x27, 0x1e, 0xbf,
56 0x80, 0x87, 0x0f, 0xa9, 0xd0, 0x06, 0x6a, 0x11, 0x30, 0x77, 0x8e, 0x30,
57 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14,
58 0x59, 0xb8, 0x6e, 0x1a, 0x72, 0xe9, 0x27, 0x1e, 0xbf, 0x80, 0x87, 0x0f,
59 0xa9, 0xd0, 0x06, 0x6a, 0x11, 0x30, 0x77, 0x8e, 0x30, 0x0f, 0x06, 0x03,
60 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01,
61 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
62 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x98, 0x76, 0x9e,
63 0x3c, 0xfc, 0x3f, 0x58, 0xe8, 0xf2, 0x1f, 0x2e, 0x11, 0xa2, 0x59, 0xfa,
64 0x27, 0xb5, 0xec, 0x9d, 0x97, 0x05, 0x06, 0x2c, 0x95, 0xa5, 0x28, 0x88,
65 0x86, 0xeb, 0x4e, 0x8a, 0x62, 0xe9, 0x87, 0x78, 0xd8, 0x18, 0x22, 0x4e,
66 0xb1, 0x8d, 0x46, 0x4a, 0x4c, 0x6e, 0x7c, 0x53, 0x62, 0x2c, 0xf2, 0x7a,
67 0x95, 0xa0, 0x1a, 0x30, 0x18, 0x6a, 0x31, 0x6f, 0x3f, 0x55, 0x25, 0x9f,
68 0x67, 0x60, 0x68, 0x99, 0x0f, 0x41, 0x09, 0xc8, 0xe2, 0x04, 0x33, 0x22,
69 0x1a, 0xe9, 0xf3, 0xae, 0xce, 0xb6, 0x83, 0x64, 0x78, 0x66, 0x14, 0xc9,
70 0x54, 0xc8, 0x34, 0x70, 0x96, 0xaf, 0x16, 0xcd, 0xb8, 0xdf, 0x81, 0x7e,
71 0xf0, 0xa6, 0x7d, 0xc1, 0x13, 0xb2, 0x76, 0x3a, 0xd5, 0x7e, 0x68, 0x8c,
72 0xd5, 0x00, 0x70, 0x82, 0x23, 0x7e, 0x5e, 0xc9, 0x31, 0x2f, 0x33, 0x54,
73 0xaa, 0xaf, 0xcd, 0xe9, 0x38, 0x9a, 0x23, 0x53, 0xad, 0x4e, 0x72, 0xa7,
74 0x6f, 0x47, 0x60, 0xc9, 0xd3, 0x06, 0x9b, 0x7a, 0x21, 0xc6, 0xe9, 0xdb,
75 0x3c, 0xaa, 0xc0, 0x21, 0x29, 0x5f, 0x44, 0x6a, 0x45, 0x90, 0x73, 0x5e,
76 0x6d, 0x78, 0x82, 0xcb, 0x42, 0xe6, 0xba, 0x67, 0xb2, 0xe6, 0xa2, 0x15,
77 0x04, 0xea, 0x69, 0xae, 0x3e, 0xc0, 0x0c, 0x10, 0x99, 0xec, 0xa9, 0xb0,
78 0x7e, 0xe8, 0x94, 0xe2, 0xf3, 0xaf, 0xf7, 0x9f, 0x65, 0xe7, 0xd7, 0xe2,
79 0x49, 0xfa, 0x52, 0x7d, 0xb5, 0xfd, 0xa0, 0xa5, 0xe0, 0x49, 0xa7, 0x3d,
80 0x94, 0x20, 0x2d, 0xec, 0x8c, 0x22, 0xa5, 0xa4, 0x43, 0xfa, 0x7e, 0xd0,
81 0x50, 0x21, 0xb8, 0x67, 0x18, 0x44, 0x69, 0x8f, 0xdd, 0x47, 0x41, 0xc6,
82 0x35, 0xe0, 0xe9, 0x2e, 0x41, 0xa9, 0x6f, 0x41, 0xee, 0xb9, 0xbd, 0x45,
83 0xf3, 0x88, 0xc1, 0x23, 0x35, 0x96, 0xba, 0xf8, 0xcd, 0x4b, 0x83, 0x73,
84 0x5f
85 };
86
87 char str1[] = "SubjectPublicKeyInfo", str2[] = "subjectpublickeyinfo";
88 int res;
89 X509 *cert = NULL;
90 X509_PUBKEY *cert_pubkey = NULL;
91 const unsigned char *p = der_bytes;
92
93 if (setlocale(LC_ALL, "") == NULL)
94 return TEST_skip("Cannot set the locale necessary for test");
95
96 res = strcasecmp(str1, str2);
97 TEST_note("Case-insensitive comparison via strcasecmp in current locale %s\n", res ? "failed" : "succeeded");
98
99 if (!TEST_false(OPENSSL_strcasecmp(str1, str2)))
100 return 0;
101
102 cert = d2i_X509(NULL, &p, sizeof(der_bytes));
103 if (!TEST_ptr(cert))
104 return 0;
105
106 cert_pubkey = X509_get_X509_PUBKEY(cert);
107 if (!TEST_ptr(cert_pubkey)) {
108 X509_free(cert);
109 return 0;
110 }
111
112 if (!TEST_ptr(X509_PUBKEY_get0(cert_pubkey))) {
113 X509_free(cert);
114 return 0;
115 }
116
117 X509_free(cert);
118 return 1;
119 }
120
121 void cleanup_tests(void)
122 {
123 }
00 /*
1 * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved.
22 * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
33 *
44 * Licensed under the Apache License 2.0 (the "License"). You may not use
1313
1414 /* On machines that dont support <inttypes.h> just disable the tests */
1515 #if !defined(OPENSSL_NO_INTTYPES_H)
16
17 # ifdef OPENSSL_SYS_WINDOWS
18 # define strcasecmp _stricmp
19 # endif
2016
2117 # ifdef OPENSSL_SYS_VMS
2218 # define strtoumax strtoull
6157
6258 for (i = 0; i < s->numpairs; i++, pp++) {
6359 p = "";
64 if (strcasecmp(pp->key, "type") == 0) {
60 if (OPENSSL_strcasecmp(pp->key, "type") == 0) {
6561 if (type != NULL) {
6662 TEST_info("Line %d: multiple type lines", s->curr);
6763 return 0;
7167 TEST_info("Line %d: unknown type line", s->curr);
7268 return 0;
7369 }
74 } else if (strcasecmp(pp->key, "int32") == 0) {
70 } else if (OPENSSL_strcasecmp(pp->key, "int32") == 0) {
7571 if (def_i32++) {
7672 TEST_info("Line %d: multiple int32 lines", s->curr);
7773 return 0;
7874 }
79 if (strcasecmp(pp->value, "invalid") != 0) {
75 if (OPENSSL_strcasecmp(pp->value, "invalid") != 0) {
8076 pc->valid_i32 = 1;
8177 pc->i32 = (int32_t)strtoimax(pp->value, &p, 10);
8278 }
83 } else if (strcasecmp(pp->key, "int64") == 0) {
79 } else if (OPENSSL_strcasecmp(pp->key, "int64") == 0) {
8480 if (def_i64++) {
8581 TEST_info("Line %d: multiple int64 lines", s->curr);
8682 return 0;
8783 }
88 if (strcasecmp(pp->value, "invalid") != 0) {
84 if (OPENSSL_strcasecmp(pp->value, "invalid") != 0) {
8985 pc->valid_i64 = 1;
9086 pc->i64 = (int64_t)strtoimax(pp->value, &p, 10);
9187 }
92 } else if (strcasecmp(pp->key, "uint32") == 0) {
88 } else if (OPENSSL_strcasecmp(pp->key, "uint32") == 0) {
9389 if (def_u32++) {
9490 TEST_info("Line %d: multiple uint32 lines", s->curr);
9591 return 0;
9692 }
97 if (strcasecmp(pp->value, "invalid") != 0) {
93 if (OPENSSL_strcasecmp(pp->value, "invalid") != 0) {
9894 pc->valid_u32 = 1;
9995 pc->u32 = (uint32_t)strtoumax(pp->value, &p, 10);
10096 }
101 } else if (strcasecmp(pp->key, "uint64") == 0) {
97 } else if (OPENSSL_strcasecmp(pp->key, "uint64") == 0) {
10298 if (def_u64++) {
10399 TEST_info("Line %d: multiple uint64 lines", s->curr);
104100 return 0;
105101 }
106 if (strcasecmp(pp->value, "invalid") != 0) {
102 if (OPENSSL_strcasecmp(pp->value, "invalid") != 0) {
107103 pc->valid_u64 = 1;
108104 pc->u64 = (uint64_t)strtoumax(pp->value, &p, 10);
109105 }
110 } else if (strcasecmp(pp->key, "double") == 0) {
106 } else if (OPENSSL_strcasecmp(pp->key, "double") == 0) {
111107 if (def_d++) {
112108 TEST_info("Line %d: multiple double lines", s->curr);
113109 return 0;
114110 }
115 if (strcasecmp(pp->value, "invalid") != 0) {
111 if (OPENSSL_strcasecmp(pp->value, "invalid") != 0) {
116112 pc->valid_d = 1;
117113 pc->d = strtod(pp->value, &p);
118114 }
132128 return 0;
133129 }
134130
135 if (strcasecmp(type, "int32") == 0) {
131 if (OPENSSL_strcasecmp(type, "int32") == 0) {
136132 if (!TEST_true(def_i32) || !TEST_true(pc->valid_i32)) {
137133 TEST_note("errant int32 on line %d", s->curr);
138134 return 0;
141137 pc->datum = &datum_i32;
142138 pc->ref = &ref_i32;
143139 pc->size = sizeof(ref_i32);
144 } else if (strcasecmp(type, "int64") == 0) {
140 } else if (OPENSSL_strcasecmp(type, "int64") == 0) {
145141 if (!TEST_true(def_i64) || !TEST_true(pc->valid_i64)) {
146142 TEST_note("errant int64 on line %d", s->curr);
147143 return 0;
150146 pc->datum = &datum_i64;
151147 pc->ref = &ref_i64;
152148 pc->size = sizeof(ref_i64);
153 } else if (strcasecmp(type, "uint32") == 0) {
149 } else if (OPENSSL_strcasecmp(type, "uint32") == 0) {
154150 if (!TEST_true(def_u32) || !TEST_true(pc->valid_u32)) {
155151 TEST_note("errant uint32 on line %d", s->curr);
156152 return 0;
159155 pc->datum = &datum_u32;
160156 pc->ref = &ref_u32;
161157 pc->size = sizeof(ref_u32);
162 } else if (strcasecmp(type, "uint64") == 0) {
158 } else if (OPENSSL_strcasecmp(type, "uint64") == 0) {
163159 if (!TEST_true(def_u64) || !TEST_true(pc->valid_u64)) {
164160 TEST_note("errant uint64 on line %d", s->curr);
165161 return 0;
168164 pc->datum = &datum_u64;
169165 pc->ref = &ref_u64;
170166 pc->size = sizeof(ref_u64);
171 } else if (strcasecmp(type, "double") == 0) {
167 } else if (OPENSSL_strcasecmp(type, "double") == 0) {
172168 if (!TEST_true(def_d) || !TEST_true(pc->valid_d)) {
173169 TEST_note("errant double on line %d", s->curr);
174170 return 0;
00 /*
1 * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
190190 * In this case we assume we've been built with "no-legacy" and skip
191191 * this test (there is no OPENSSL_NO_LEGACY)
192192 */
193 OSSL_LIB_CTX_free(libctx);
193194 return 1;
194195 }
195196
196197 if (!TEST_true(OSSL_PROVIDER_add_builtin(libctx, name,
197 PROVIDER_INIT_FUNCTION_NAME)))
198 PROVIDER_INIT_FUNCTION_NAME))) {
199 OSSL_LIB_CTX_free(libctx);
198200 return 0;
201 }
199202
200203 /* test_provider will free libctx and unload legacy as part of the test */
201204 return test_provider(&libctx, name, legacy);
0 #! /usr/bin/env perl
1 # Copyright 2017-2022 The OpenSSL Project Authors. All Rights Reserved.
2 # Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
3 #
4 # Licensed under the Apache License 2.0 (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 use OpenSSL::Test;
10 use OpenSSL::Test::Utils;
11
12 setup("locale tests");
13
14 plan skip_all => "Locale tests not available on Windows or VMS"
15 if $^O =~ /^(VMS|MSWin32)$/;
16
17 plan tests => 3;
18
19 ok(run(test(["evp_pkey_ctx_new_from_name"])), "running evp_pkey_ctx_new_from_name without explicit context init");
20
21 $ENV{LANG} = "C";
22 ok(run(test(["localetest"])), "running localetest");
23
24 $ENV{LANG} = "tr_TR.UTF-8";
25 ok(run(test(["localetest"])), "running localetest with Turkish locale");
00 #! /usr/bin/env perl
1 # Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved.
1 # Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved.
22 #
33 # Licensed under the Apache License 2.0 (the "License"). You may not use
44 # this file except in compliance with the License. You can obtain a copy
2626 plan tests => 29;
2727
2828 my $infile = bldtop_file('providers', platform->dso('fips'));
29 my $fipskey = $ENV{FIPSKEY} // '00';
29 my $fipskey = $ENV{FIPSKEY} // config('FIPSKEY') // '00';
3030
3131 # Read in a text $infile and replace the regular expression in $srch with the
3232 # value in $repl and output to a new file $outfile.
00 #! /usr/bin/env perl
1 # Copyright 2017-2021 The OpenSSL Project Authors. All Rights Reserved.
1 # Copyright 2017-2022 The OpenSSL Project Authors. All Rights Reserved.
22 #
33 # Licensed under the Apache License 2.0 (the "License"). You may not use
44 # this file except in compliance with the License. You can obtain a copy
1212 use File::Spec;
1313 use File::Compare qw/compare_text/;
1414 use OpenSSL::Glob;
15 use OpenSSL::Test qw/:DEFAULT data_file/;
15 use OpenSSL::Test qw/:DEFAULT data_file srctop_file bldtop_dir/;
1616 use OpenSSL::Test::Utils;
1717
1818 setup("test_ecparam");
2424 my @noncanon = glob(data_file("noncanon", "*.pem"));
2525 my @invalid = glob(data_file("invalid", "*.pem"));
2626
27 plan tests => 11;
27 plan tests => 12;
2828
2929 sub checkload {
3030 my $files = shift; # List of files
5757 $in1 ne $in2}), "Original file $_ is the same as new one");
5858 }
5959 }
60
61 my $no_fips = disabled('fips') || ($ENV{NO_FIPS} // 0);
6062
6163 subtest "Check loading valid parameters by ecparam with -check" => sub {
6264 plan tests => scalar(@valid);
112114 plan tests => 2 * scalar(@valid);
113115 checkcompare(\@valid, "pkeyparam");
114116 };
117
118 subtest "Check loading of fips and non-fips params" => sub {
119 plan skip_all => "FIPS is disabled"
120 if $no_fips;
121 plan tests => 3;
122
123 my $fipsconf = srctop_file("test", "fips-and-base.cnf");
124 my $defaultconf = srctop_file("test", "default.cnf");
125
126 $ENV{OPENSSL_CONF} = $fipsconf;
127
128 ok(run(app(['openssl', 'ecparam',
129 '-in', data_file('valid', 'secp384r1-explicit.pem'),
130 '-check'])),
131 "Loading explicitly encoded valid curve");
132
133 ok(run(app(['openssl', 'ecparam',
134 '-in', data_file('valid', 'secp384r1-named.pem'),
135 '-check'])),
136 "Loading named valid curve");
137
138 ok(!run(app(['openssl', 'ecparam',
139 '-in', data_file('valid', 'secp112r1-named.pem'),
140 '-check'])),
141 "Fail loading named non-fips curve");
142
143 $ENV{OPENSSL_CONF} = $defaultconf;
144 };
00 #! /usr/bin/env perl
1 # Copyright 2017-2021 The OpenSSL Project Authors. All Rights Reserved.
1 # Copyright 2017-2022 The OpenSSL Project Authors. All Rights Reserved.
22 #
33 # Licensed under the Apache License 2.0 (the "License"). You may not use
44 # this file except in compliance with the License. You can obtain a copy
1515
1616 setup("test_rsapss");
1717
18 plan tests => 7;
18 plan tests => 9;
1919
2020 #using test/testrsa.pem which happens to be a 512 bit RSA
2121 ok(run(app(['openssl', 'dgst', '-sign', srctop_file('test', 'testrsa.pem'), '-sha1',
6363 '-signature', 'testrsapss-unrestricted.sig',
6464 srctop_file('test', 'testrsa.pem')])),
6565 "openssl dgst -prverify [plain RSA key, PSS padding mode, no PSS restrictions]");
66
67 # Test that RSA-PSS keys are supported by genpkey and rsa commands.
68 {
69 my $rsapss = "rsapss.key";
70 ok(run(app(['openssl', 'genpkey', '-algorithm', 'RSA-PSS',
71 '-pkeyopt', 'rsa_keygen_bits:1024',
72 '--out', $rsapss])));
73 ok(run(app(['openssl', 'rsa', '-check',
74 '-in', $rsapss])));
75 }
123123 Plaintext = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f
124124 Ciphertext = 261cd0c88a4d4e6db7fc263257a9f6d0ce83c1ff5f2680dc57ffd8eefdbb9c00d3d507672d105a990b2b78509978625b9d93c2bd41e3fb721abd1496553c583c67dad9b662b3d58c8540e10ed9c5ed1a7f33ce9e9a41c30836651d73ee2c003af03a919eb41a6d70ef814e184e740f8a96221b924d9d025ef5e7150d4ca76921a025dd146fef87da738877313f11ec8f4c558b878c28ce6a9a5011d70f58c5dbd3412cf0a32154f5a4286958a5a50a86f15119835ceccf432601e4cc688cdd682ac9620500b60c0760bb93209859823778a7f2b5bab1af259bda13d84f952af9d2f07f500dadedc41a2b6a737a1296e0b2fb96ac4da4bf71fe2f0c4a1b6fc4dd251087e4c03d2e28c85a9b4a835ef166b48e5b7690f332a1d8db7bd9380221891f31ee82f4b8dd9ebf540cab583a0f33
125125 NextIV = 1f31ee82f4b8dd9ebf540cab583a0f33
126
127 Title = RC4-HMAC-MD5 test vectors
128
129 Availablein = legacy
130 Cipher = RC4-HMAC-MD5
131 Key = d48ecc0a163a06626bd1b7e172dfb5b3
132 MACKey = 5973581f63768353af37d3f51ec9f6ef
133 TLSAAD = 90a1b2c3e4f506172803010050
134 TLSVersion = 0x0301
135 Plaintext = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
136 Ciphertext = eea8eba927d9b16c640958f922b3ca43b197eea520674aa1d059156dfd4c12249e2890e8f3c72676e20fe4a30848c1cc6c12f4596d6e290b5f84745ac36959645ea4acabc84e748b2fd5e4228a2fe4f8d44460dfb9a0fce1faf00f1fc7159c3c
137 Operation = ENCRYPT
138
139 Availablein = legacy
140 Cipher = RC4-HMAC-MD5
141 Key = d48ecc0a163a06626bd1b7e172dfb5b3
142 MACKey = 5973581f63768353af37d3f51ec9f6ef
143 TLSAAD = 90a1b2c3e4f506172803010060
144 TLSVersion = 0x0301
145 Plaintext = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
146 Ciphertext = eea8eba927d9b16c640958f922b3ca43b197eea520674aa1d059156dfd4c12249e2890e8f3c72676e20fe4a30848c1cc6c12f4596d6e290b5f84745ac36959645ea4acabc84e748b2fd5e4228a2fe4f8d44460dfb9a0fce1faf00f1fc7159c3c
147 Operation = DECRYPT
66 TLSAAD = 90a1b2c3e4f506172803010050
77 TLSVersion = 0x0301
88 Plaintext = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
9 Ciphertext = eea8eba927d9b16c640958f922b3ca43b197eea520674aa1d059156dfd4c12249e2890e8f3c72676e20fe4a30848c1cc6c12f4596d6e290b5f84745ac36959645ea4acabc84e748b2fd5e4228a2fe4f8d44460dfb9a0fce1faf00f1fc7159c3c
9 Ciphertext = eea8eba927d9b16c640958f922b3ca43b197eea520674aa1d059156dfd4c12249e2890e8f3c72676e20fe4a30848c1cc6c12f4596d6e290b5f84745ac36959645ea4acabc84e748b2fd5e4228a2fe4f8c5792501fca9d8455160d626dc1a9716
1010 # DECRYPT must be a separate entry due to change in TLSAAD value
1111 Operation = ENCRYPT
1212
1717 TLSAAD = 90a1b2c3e4f506172803010060
1818 TLSVersion = 0x0301
1919 Plaintext = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
20 Ciphertext = eea8eba927d9b16c640958f922b3ca43b197eea520674aa1d059156dfd4c12249e2890e8f3c72676e20fe4a30848c1cc6c12f4596d6e290b5f84745ac36959645ea4acabc84e748b2fd5e4228a2fe4f8d44460dfb9a0fce1faf00f1fc7159c3c
20 Ciphertext = eea8eba927d9b16c640958f922b3ca43b197eea520674aa1d059156dfd4c12249e2890e8f3c72676e20fe4a30848c1cc6c12f4596d6e290b5f84745ac36959645ea4acabc84e748b2fd5e4228a2fe4f8c5792501fca9d8455160d626dc1a9716
2121 Operation = DECRYPT
00 #
1 # Copyright 2001-2020 The OpenSSL Project Authors. All Rights Reserved.
1 # Copyright 2001-2022 The OpenSSL Project Authors. All Rights Reserved.
22 #
33 # Licensed under the Apache License 2.0 (the "License"). You may not use
44 # this file except in compliance with the License. You can obtain a copy
1616 Key = 0000000000000000000000000000000000000000000000000000000000000000
1717 Input = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
1818 Output = 00000000000000000000000000000000
19 NoReinit = 1
1920
2021 MAC = Poly1305
2122 Key = 0000000000000000000000000000000036e5f6b5c5e06070f0efca96227a863e
2223 Input = 416e79207375626d697373696f6e20746f20746865204945544620696e74656e6465642062792074686520436f6e7472696275746f7220666f72207075626c69636174696f6e20617320616c6c206f722070617274206f6620616e204945544620496e7465726e65742d4472616674206f722052464320616e6420616e792073746174656d656e74206d6164652077697468696e2074686520636f6e74657874206f6620616e204945544620616374697669747920697320636f6e7369646572656420616e20224945544620436f6e747269627574696f6e222e20537563682073746174656d656e747320696e636c756465206f72616c2073746174656d656e747320696e20494554462073657373696f6e732c2061732077656c6c206173207772697474656e20616e6420656c656374726f6e696320636f6d6d756e69636174696f6e73206d61646520617420616e792074696d65206f7220706c6163652c207768696368206172652061646472657373656420746f
2324 Output = 36e5f6b5c5e06070f0efca96227a863e
25 NoReinit = 1
2426
2527 MAC = Poly1305
2628 Key = 36e5f6b5c5e06070f0efca96227a863e00000000000000000000000000000000
2729 Input = 416e79207375626d697373696f6e20746f20746865204945544620696e74656e6465642062792074686520436f6e7472696275746f7220666f72207075626c69636174696f6e20617320616c6c206f722070617274206f6620616e204945544620496e7465726e65742d4472616674206f722052464320616e6420616e792073746174656d656e74206d6164652077697468696e2074686520636f6e74657874206f6620616e204945544620616374697669747920697320636f6e7369646572656420616e20224945544620436f6e747269627574696f6e222e20537563682073746174656d656e747320696e636c756465206f72616c2073746174656d656e747320696e20494554462073657373696f6e732c2061732077656c6c206173207772697474656e20616e6420656c656374726f6e696320636f6d6d756e69636174696f6e73206d61646520617420616e792074696d65206f7220706c6163652c207768696368206172652061646472657373656420746f
2830 Output = f3477e7cd95417af89a6b8794c310cf0
31 NoReinit = 1
2932
3033 MAC = Poly1305
3134 Key = 1c9240a5eb55d38af333888604f6b5f0473917c1402b80099dca5cbc207075c0
3235 Input = 2754776173206272696c6c69672c20616e642074686520736c6974687920746f7665730a446964206779726520616e642067696d626c6520696e2074686520776162653a0a416c6c206d696d737920776572652074686520626f726f676f7665732c0a416e6420746865206d6f6d65207261746873206f757467726162652e
3336 Output = 4541669a7eaaee61e708dc7cbcc5eb62
37 NoReinit = 1
3438
3539 # If one uses 130-bit partial reduction, does the code handle the case where partially reduced final result is not fully reduced?
3640 MAC = Poly1305
3741 Key = 0200000000000000000000000000000000000000000000000000000000000000
3842 Input = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
3943 Output = 03000000000000000000000000000000
44 NoReinit = 1
4045
4146 # What happens if addition of s overflows modulo 2^128?
4247 MAC = Poly1305
4348 Key = 02000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
4449 Input = 02000000000000000000000000000000
4550 Output = 03000000000000000000000000000000
51 NoReinit = 1
4652
4753 # What happens if data limb is all ones and there is carry from lower limb?
4854 MAC = Poly1305
4955 Key = 0100000000000000000000000000000000000000000000000000000000000000
5056 Input = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11000000000000000000000000000000
5157 Output = 05000000000000000000000000000000
58 NoReinit = 1
5259
5360 # What happens if final result from polynomial part is exactly 2^130-5?
5461 MAC = Poly1305
5562 Key = 0100000000000000000000000000000000000000000000000000000000000000
5663 Input = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE01010101010101010101010101010101
5764 Output = 00000000000000000000000000000000
65 NoReinit = 1
5866
5967 # What happens if final result from polynomial part is exactly 2^130-6?
6068 MAC = Poly1305
6169 Key = 0200000000000000000000000000000000000000000000000000000000000000
6270 Input = FDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
6371 Output = FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
72 NoReinit = 1
6473
6574 # Taken from poly1305_internal_test.c
6675 # More RFC7539
6978 Input = 43727970746f6772617068696320466f72756d2052657365617263682047726f7570
7079 Key = 85d6be7857556d337f4452fe42d506a80103808afb0db2fd4abff6af4149f51b
7180 Output = a8061dc1305136c6c22b8baf0c0127a9
81 NoReinit = 1
7282
7383 # test vectors from "The Poly1305-AES message-authentication code"
7484
7686 Input = f3f6
7787 Key = 851fc40c3467ac0be05cc20404f3f700580b3b0f9447bb1e69d095b5928b6dbc
7888 Output = f4c633c3044fc145f84f335cb81953de
89 NoReinit = 1
7990
8091 # No input?
8192 # # MAC = Poly1305
8293 # Input =
8394 # Key = a0f3080000f46400d0c7e9076c834403dd3fab2251f11ac759f0887129cc2ee7
8495 # Output = dd3fab2251f11ac759f0887129cc2ee7
96 # NoReinit = 1
8597
8698 MAC = Poly1305
8799 Input = 663cea190ffb83d89593f3f476b6bc24d7e679107ea26adb8caf6652d0656136
88100 Key = 48443d0bb0d21109c89a100b5ce2c20883149c69b561dd88298a1798b10716ef
89101 Output = 0ee1c16bb73f0f4fd19881753c01cdbe
102 NoReinit = 1
90103
91104 MAC = Poly1305
92105 Input = ab0812724a7f1e342742cbed374d94d136c6b8795d45b3819830f2c04491faf0990c62e48b8018b2c3e4a0fa3134cb67fa83e158c994d961c4cb21095c1bf9
93106 Key = 12976a08c4426d0ce8a82407c4f4820780f8c20aa71202d1e29179cbcb555a57
94107 Output = 5154ad0d2cb26e01274fc51148491f1b
108 NoReinit = 1
95109
96110 # self-generated vectors exercise "significant" length such that* are handled by different code paths
97111
99113 Input = ab0812724a7f1e342742cbed374d94d136c6b8795d45b3819830f2c04491faf0990c62e48b8018b2c3e4a0fa3134cb67fa83e158c994d961c4cb21095c1bf9af
100114 Key = 12976a08c4426d0ce8a82407c4f4820780f8c20aa71202d1e29179cbcb555a57
101115 Output = 812059a5da198637cac7c4a631bee466
116 NoReinit = 1
102117
103118 MAC = Poly1305
104119 Input = ab0812724a7f1e342742cbed374d94d136c6b8795d45b3819830f2c04491faf0990c62e48b8018b2c3e4a0fa3134cb67
105120 Key = 12976a08c4426d0ce8a82407c4f4820780f8c20aa71202d1e29179cbcb555a57
106121 Output = 5b88d7f6228b11e2e28579a5c0c1f761
122 NoReinit = 1
107123
108124 MAC = Poly1305
109125 Input = ab0812724a7f1e342742cbed374d94d136c6b8795d45b3819830f2c04491faf0990c62e48b8018b2c3e4a0fa3134cb67fa83e158c994d961c4cb21095c1bf9af663cea190ffb83d89593f3f476b6bc24d7e679107ea26adb8caf6652d0656136
110126 Key = 12976a08c4426d0ce8a82407c4f4820780f8c20aa71202d1e29179cbcb555a57
111127 Output = bbb613b2b6d753ba07395b916aaece15
128 NoReinit = 1
112129
113130 MAC = Poly1305
114131 Input = ab0812724a7f1e342742cbed374d94d136c6b8795d45b3819830f2c04491faf0990c62e48b8018b2c3e4a0fa3134cb67fa83e158c994d961c4cb21095c1bf9af48443d0bb0d21109c89a100b5ce2c20883149c69b561dd88298a1798b10716ef663cea190ffb83d89593f3f476b6bc24
115132 Key = 12976a08c4426d0ce8a82407c4f4820780f8c20aa71202d1e29179cbcb555a57
116133 Output = c794d7057d1778c4bbee0a39b3d97342
134 NoReinit = 1
117135
118136 MAC = Poly1305
119137 Input = ab0812724a7f1e342742cbed374d94d136c6b8795d45b3819830f2c04491faf0990c62e48b8018b2c3e4a0fa3134cb67fa83e158c994d961c4cb21095c1bf9af48443d0bb0d21109c89a100b5ce2c20883149c69b561dd88298a1798b10716ef663cea190ffb83d89593f3f476b6bc24d7e679107ea26adb8caf6652d0656136
120138 Key = 12976a08c4426d0ce8a82407c4f4820780f8c20aa71202d1e29179cbcb555a57
121139 Output = ffbcb9b371423152d7fca5ad042fbaa9
140 NoReinit = 1
122141
123142 MAC = Poly1305
124143 Input = ab0812724a7f1e342742cbed374d94d136c6b8795d45b3819830f2c04491faf0990c62e48b8018b2c3e4a0fa3134cb67fa83e158c994d961c4cb21095c1bf9af48443d0bb0d21109c89a100b5ce2c20883149c69b561dd88298a1798b10716ef663cea190ffb83d89593f3f476b6bc24d7e679107ea26adb8caf6652d0656136812059a5da198637cac7c4a631bee466
125144 Key = 12976a08c4426d0ce8a82407c4f4820780f8c20aa71202d1e29179cbcb555a57
126145 Output = 069ed6b8ef0f207b3e243bb1019fe632
146 NoReinit = 1
127147
128148 MAC = Poly1305
129149 Input = ab0812724a7f1e342742cbed374d94d136c6b8795d45b3819830f2c04491faf0990c62e48b8018b2c3e4a0fa3134cb67fa83e158c994d961c4cb21095c1bf9af48443d0bb0d21109c89a100b5ce2c20883149c69b561dd88298a1798b10716ef663cea190ffb83d89593f3f476b6bc24d7e679107ea26adb8caf6652d0656136812059a5da198637cac7c4a631bee4665b88d7f6228b11e2e28579a5c0c1f761
130150 Key = 12976a08c4426d0ce8a82407c4f4820780f8c20aa71202d1e29179cbcb555a57
131151 Output = cca339d9a45fa2368c2c68b3a4179133
152 NoReinit = 1
132153
133154 MAC = Poly1305
134155 Input = ab0812724a7f1e342742cbed374d94d136c6b8795d45b3819830f2c04491faf0990c62e48b8018b2c3e4a0fa3134cb67fa83e158c994d961c4cb21095c1bf9af48443d0bb0d21109c89a100b5ce2c20883149c69b561dd88298a1798b10716ef663cea190ffb83d89593f3f476b6bc24d7e679107ea26adb8caf6652d0656136812059a5da198637cac7c4a631bee4665b88d7f6228b11e2e28579a5c0c1f761ab0812724a7f1e342742cbed374d94d136c6b8795d45b3819830f2c04491faf0990c62e48b8018b2c3e4a0fa3134cb67fa83e158c994d961c4cb21095c1bf9af48443d0bb0d21109c89a100b5ce2c20883149c69b561dd88298a1798b10716ef663cea190ffb83d89593f3f476b6bc24d7e679107ea26adb8caf6652d0656136
135156 Key = 12976a08c4426d0ce8a82407c4f4820780f8c20aa71202d1e29179cbcb555a57
136157 Output = 53f6e828a2f0fe0ee815bf0bd5841a34
158 NoReinit = 1
137159
138160 MAC = Poly1305
139161 Input = ab0812724a7f1e342742cbed374d94d136c6b8795d45b3819830f2c04491faf0990c62e48b8018b2c3e4a0fa3134cb67fa83e158c994d961c4cb21095c1bf9af48443d0bb0d21109c89a100b5ce2c20883149c69b561dd88298a1798b10716ef663cea190ffb83d89593f3f476b6bc24d7e679107ea26adb8caf6652d0656136812059a5da198637cac7c4a631bee4665b88d7f6228b11e2e28579a5c0c1f761ab0812724a7f1e342742cbed374d94d136c6b8795d45b3819830f2c04491faf0990c62e48b8018b2c3e4a0fa3134cb67fa83e158c994d961c4cb21095c1bf9af48443d0bb0d21109c89a100b5ce2c20883149c69b561dd88298a1798b10716ef663cea190ffb83d89593f3f476b6bc24d7e679107ea26adb8caf6652d0656136812059a5da198637cac7c4a631bee4665b88d7f6228b11e2e28579a5c0c1f761
140162 Key = 12976a08c4426d0ce8a82407c4f4820780f8c20aa71202d1e29179cbcb555a57
141163 Output = b846d44e9bbd53cedffbfbb6b7fa4933
164 NoReinit = 1
142165
143166 # 4th power of the key spills to 131th bit in SIMD key setup
144167
146169 Input = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
147170 Key = ad628107e8351d0f2c231a05dc4a410600000000000000000000000000000000
148171 Output = 07145a4c02fe5fa32036de68fabe9066
172 NoReinit = 1
149173
150174 # poly1305_ieee754.c failed this in final stage
151175
153177 Input = 842364e156336c0998b933a6237726180d9e3fdcbde4cd5d17080fc3beb49614d7122c037463ff104d73f19c12704628d417c4c54a3fe30d3c3d7714382d43b0382a50a5dee54be844b076e8df88201a1cd43b90eb21643fa96f39b518aa8340c942ff3c31baf7c9bdbf0f31ae3fa096bf8c63030609829fe72e179824890bc8e08c315c1cce2a83144dbbff09f74e3efc770b54d0984a8f19b14719e63635641d6b1eedf63efbf080e1783d32445412114c20de0b837a0dfa33d6b82825fff44c9a70ea54ce47f07df698e6b03323b53079364a5fc3e9dd034392bdde86dccdda94321c5e44060489336cb65bf3989c36f7282c2f5d2b882c171e74
154178 Key = 95d5c005503e510d8cd0aa072c4a4d066eabc52d11653df47fbf63ab198bcc26
155179 Output = f248312e578d9d58f8b7bb4d19105431
180 NoReinit = 1
156181
157182 # AVX2 in poly1305-x86.pl failed this with 176+32 split
158183
160185 Input = 248ac31085b6c2adaaa38259a0d7192c5c35d1bb4ef39ad94c38d1c82479e2dd2159a077024b0589bc8a20101b506f0a1ad0bbab76e83a83f1b94be6beae74e874cab692c5963a75436b776121ec9f62399a3e66b2d22707dae81933b6277f3c8516bcbe26dbbd86f373103d7cf4cad1888c952118fbfbd0d7b4bedc4ae4936aff91157e7aa47c54442ea78d6ac251d324a0fbe49d89cc3521b66d16e9c66a3709894e4eb0a4eedc4ae19468e66b81f271351b1d921ea551047abcc6b87a901fde7db79fa1818c11336dbc07244a40eb
161186 Key = 000102030405060708090a0b0c0d0e0f00000000000000000000000000000000
162187 Output = bc939bc5281480fa99c6d68c258ec42f
188 NoReinit = 1
163189
164190 # test vectors from Google
165191
168194 # Input =
169195 # Key = c8afaac331ee372cd6082de134943b174710130e9f6fea8d72293850a667d86c
170196 # Output = 4710130e9f6fea8d72293850a667d86c
197 # NoReinit = 1
171198
172199 MAC = Poly1305
173200 Input = 48656c6c6f20776f726c6421
174201 Key = 746869732069732033322d62797465206b657920666f7220506f6c7931333035
175202 Output = a6f745008f81c916a20dcc74eef2b2f0
203 NoReinit = 1
176204
177205 MAC = Poly1305
178206 Input = 0000000000000000000000000000000000000000000000000000000000000000
179207 Key = 746869732069732033322d62797465206b657920666f7220506f6c7931333035
180208 Output = 49ec78090e481ec6c26b33b91ccc0307
209 NoReinit = 1
181210
182211 MAC = Poly1305
183212 Input = 89dab80b7717c1db5db437860a3f70218e93e1b8f461fb677f16f35f6f87e2a91c99bc3a47ace47640cc95c345be5ecca5a3523c35cc01893af0b64a620334270372ec12482d1b1e363561698a578b359803495bb4e2ef1930b17a5190b580f141300df30adbeca28f6427a8bc1a999fd51c554a017d095d8c3e3127daf9f595
184213 Key = 2d773be37adb1e4d683bf0075e79c4ee037918535a7f99ccb7040fb5f5f43aea
185214 Output = c85d15ed44c378d6b00e23064c7bcd51
215 NoReinit = 1
186216
187217 MAC = Poly1305
188218 Input = 000000000000000b170303020000000006db1f1f368d696a810a349c0c714c9a5e7850c2407d721acded95e018d7a85266a6e1289cdb4aeb18da5ac8a2b0026d24a59ad485227f3eaedbb2e7e35e1c66cd60f9abf716dcc9ac42682dd7dab287a7024c4eefc321cc0574e16793e37cec03c5bda42b54c114a80b57af26416c7be742005e20855c73e21dc8e2edc9d435cb6f6059280011c270b71570051c1c9b3052126620bc1e2730fa066c7a509d53c60e5ae1b40aa6e39e49669228c90eecb4a50db32a50bc49e90b4f4b359a1dfd11749cd3867fcf2fb7bb6cd4738f6a4ad6f7ca5058f7618845af9f020f6c3b967b8f4cd4a91e2813b507ae66f2d35c18284f7292186062e10fd5510d18775351ef334e7634ab4743f5b68f49adcab384d3fd75f7390f4006ef2a295c8c7a076ad54546cd25d2107fbe1436c840924aaebe5b370893cd63d1325b8616fc4810886bc152c53221b6df373119393255ee72bcaa880174f1717f9184fa91646f17a24ac55d16bfddca9581a92eda479201f0edbf633600d6066d1ab36d5d2415d71351bbcd608a25108d25641992c1f26c531cf9f90203bc4cc19f5927d834b0a47116d3884bbb164b8ec883d1ac832e56b3918a98601a08d171881541d594db399c6ae6151221745aec814c45b0b05b565436fd6f137aa10a0c0b643761dbd6f9a9dcb99b1a6e690854ce0769cde39761d82fcdec15f0d92d7d8e94ade8eb83fbe0
189219 Key = 99e5822dd4173c995e3dae0ddefb97743fde3b080134b39f76e9bf8d0e88d546
190220 Output = 2637408fe13086ea73f971e3425e2820
221 NoReinit = 1
191222
192223 # test vectors from Hanno Bock
193224
195226 Input = cccccccccccccccccccccccccccccccccccccccccccccccccc80ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccceccccccccccccccccccccccccccccccccccccc5cccccccccccccccccccccccccccccccccccccccccce3ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccaccccccccccccccccccccce6cccccccccc000000afccccccccccccccccccfffffff5000000000000000000000000000000000000000000000000000000ffffffe70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000719205a8521dfc
196227 Key = 7f1b02640000000000000000000000000000000000000000cccccccccccccccc
197228 Output = 8559b876eceed66eb37798c0457baff9
229 NoReinit = 1
198230
199231 MAC = Poly1305
200232 Input = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa000000000000000000800264
201233 Key = e00016000000000000000000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaaaa
202234 Output = 00bd1258978e205444c9aaaa82006fed
235 NoReinit = 1
203236
204237 MAC = Poly1305
205238 Input = 02fc
206239 Key = 0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c
207240 Output = 06120c0c0c0c0c0c0c0c0c0c0c0c0c0c
241 NoReinit = 1
208242
209243 MAC = Poly1305
210244 Input = 7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7a7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b5c7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b6e7b007b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7a7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b5c7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b6e7b001300000000b300000000000000000000000000000000000000000000f20000000000000000000000000000000000002000efff0009000000000000000000000000100000000009000000640000000000000000000000001300000000b300000000000000000000000000000000000000000000f20000000000000000000000000000000000002000efff00090000000000000000007a000010000000000900000064000000000000000000000000000000000000000000000000fc
211245 Key = 00ff000000000000000000000000000000000000001e00000000000000007b7b
212246 Output = 33205bbf9e9f8f7212ab9e2ab9b7e4a5
247 NoReinit = 1
213248
214249 MAC = Poly1305
215250 Input = 77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777ffffffe9e9acacacacacacacacacacac0000acacec0100acacac2caca2acacacacacacacacacacac64f2
216251 Key = 0000007f0000007f01000020000000000000cf77777777777777777777777777
217252 Output = 02ee7c8c546ddeb1a467e4c3981158b9
253 NoReinit = 1
218254
219255 # test vectors from Andrew Moon - nacl
220256
222258 Input = 8e993b9f48681273c29650ba32fc76ce48332ea7164d96a4476fb8c531a1186ac0dfc17c98dce87b4da7f011ec48c97271d2c20f9b928fe2270d6fb863d51738b48eeee314a7cc8ab932164548e526ae90224368517acfeabd6bb3732bc0e9da99832b61ca01b6de56244a9e88d5f9b37973f622a43d14a6599b1f654cb45a74e355a5
223259 Key = eea6a7251c1e72916d11c2cb214d3c252539121d8e234e652d651fa4c8cff880
224260 Output = f3ffc7703f9400e52a7dfb4b3d3305d9
261 NoReinit = 1
225262
226263 # wrap 2^130-5
227264 MAC = Poly1305
228265 Input = ffffffffffffffffffffffffffffffff
229266 Key = 0200000000000000000000000000000000000000000000000000000000000000
230267 Output = 03000000000000000000000000000000
268 NoReinit = 1
231269
232270 # wrap 2^128
233271 MAC = Poly1305
234272 Input = 02000000000000000000000000000000
235273 Key = 02000000000000000000000000000000ffffffffffffffffffffffffffffffff
236274 Output = 03000000000000000000000000000000
275 NoReinit = 1
237276
238277 # limb carry
239278 MAC = Poly1305
240279 Input = fffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffffffff11000000000000000000000000000000
241280 Key = 0100000000000000000000000000000000000000000000000000000000000000
242281 Output = 05000000000000000000000000000000
282 NoReinit = 1
243283
244284 # 2^130-5
245285 MAC = Poly1305
246286 Input = fffffffffffffffffffffffffffffffffbfefefefefefefefefefefefefefefe01010101010101010101010101010101
247287 Key = 0100000000000000000000000000000000000000000000000000000000000000
248288 Output = 00000000000000000000000000000000
289 NoReinit = 1
249290
250291 # 2^130-6
251292 MAC = Poly1305
252293 Input = fdffffffffffffffffffffffffffffff
253294 Key = 0200000000000000000000000000000000000000000000000000000000000000
254295 Output = faffffffffffffffffffffffffffffff
296 NoReinit = 1
255297
256298 # 5*H+L reduction intermediate
257299 MAC = Poly1305
258300 Input = e33594d7505e43b900000000000000003394d7505e4379cd01000000000000000000000000000000000000000000000001000000000000000000000000000000
259301 Key = 0100000000000000040000000000000000000000000000000000000000000000
260302 Output = 14000000000000005500000000000000
303 NoReinit = 1
261304
262305 # 5*H+L reduction final
263306 MAC = Poly1305
264307 Input = e33594d7505e43b900000000000000003394d7505e4379cd010000000000000000000000000000000000000000000000
265308 Key = 0100000000000000040000000000000000000000000000000000000000000000
266309 Output = 13000000000000000000000000000000
310 NoReinit = 1
267311
268312 # Here are 4 duplicated cases for Poly1305 by EVP_PKEY
269313 MAC = Poly1305 by EVP_PKEY
00 #! /usr/bin/env perl
1 # Copyright 2017-2021 The OpenSSL Project Authors. All Rights Reserved.
1 # Copyright 2017-2022 The OpenSSL Project Authors. All Rights Reserved.
22 #
33 # Licensed under the Apache License 2.0 (the "License"). You may not use
44 # this file except in compliance with the License. You can obtain a copy
3636
3737 use constant {
3838 CHANGE_HRR_CIPHERSUITE => 0,
39 CHANGE_CH1_CIPHERSUITE => 1
39 CHANGE_CH1_CIPHERSUITE => 1,
40 DUPLICATE_HRR => 2
4041 };
4142
4243 #Test 1: A client should fail if the server changes the ciphersuite between the
4950 }
5051 my $testtype = CHANGE_HRR_CIPHERSUITE;
5152 $proxy->start() or plan skip_all => "Unable to start up Proxy for tests";
52 plan tests => 2;
53 plan tests => 3;
5354 ok(TLSProxy::Message->fail(), "Server ciphersuite changes");
5455
5556 #Test 2: It is an error if the client changes the offered ciphersuites so that
6465 $testtype = CHANGE_CH1_CIPHERSUITE;
6566 $proxy->start();
6667 ok(TLSProxy::Message->fail(), "Client ciphersuite changes");
68
69 #Test 3: A client should fail with unexpected_message alert if the server
70 # sends more than 1 HRR
71 my $fatal_alert = 0;
72 $proxy->clear();
73 if (disabled("ec")) {
74 $proxy->serverflags("-curves ffdhe3072");
75 } else {
76 $proxy->serverflags("-curves P-256");
77 }
78 $testtype = DUPLICATE_HRR;
79 $proxy->start();
80 ok($fatal_alert, "Server duplicated HRR");
6781
6882 sub hrr_filter
6983 {
8599 return;
86100 }
87101
102 if ($testtype == DUPLICATE_HRR) {
103 # We're only interested in the HRR
104 # and the unexpected_message alert from client
105 if ($proxy->flight == 4) {
106 $fatal_alert = 1
107 if @{$proxy->record_list}[-1]->is_fatal_alert(0) == 10;
108 return;
109 }
110 if ($proxy->flight != 3) {
111 return;
112 }
113
114 # Find ServerHello record (HRR actually) and insert after that
115 my $i;
116 for ($i = 0; ${$proxy->record_list}[$i]->flight() < 1; $i++) {
117 next;
118 }
119 my $hrr_record = ${$proxy->record_list}[$i];
120 my $dup_hrr = TLSProxy::Record->new(3,
121 $hrr_record->content_type(),
122 $hrr_record->version(),
123 $hrr_record->len(),
124 $hrr_record->sslv2(),
125 $hrr_record->len_real(),
126 $hrr_record->decrypt_len(),
127 $hrr_record->data(),
128 $hrr_record->decrypt_data());
129
130 $i++;
131 splice @{$proxy->record_list}, $i, 0, $dup_hrr;
132 return;
133 }
134
88135 # CHANGE_CH1_CIPHERSUITE
89136 if ($proxy->flight != 0) {
90137 return;
00 #! /usr/bin/env perl
1 # Copyright 2018 The OpenSSL Project Authors. All Rights Reserved.
1 # Copyright 2018-2022 The OpenSSL Project Authors. All Rights Reserved.
22 #
33 # Licensed under the Apache License 2.0 (the "License"). You may not use
44 # this file except in compliance with the License. You can obtain a copy
1616 plan tests => 1;
1717
1818 ok(run(test(["cmsapitest", srctop_file("test", "certs", "servercert.pem"),
19 srctop_file("test", "certs", "serverkey.pem")])),
19 srctop_file("test", "certs", "serverkey.pem"),
20 srctop_file("test", "recipes", "80-test_cmsapi_data", "encryptedData.der")])),
2021 "running cmsapitest");
00 #! /usr/bin/env perl
1 # Copyright 2015-2021 The OpenSSL Project Authors. All Rights Reserved.
1 # Copyright 2015-2022 The OpenSSL Project Authors. All Rights Reserved.
22 #
33 # Licensed under the Apache License 2.0 (the "License"). You may not use
44 # this file except in compliance with the License. You can obtain a copy
3434 $untrusted = $CAfile;
3535 }
3636 my $expected_exit = shift;
37 my $nochecks = shift;
3738 my $outputfile = basename($inputfile, '.ors') . '.dat';
3839
3940 run(app(["openssl", "base64", "-d",
4445 "-partial_chain", @check_time,
4546 "-CAfile", catfile($ocspdir, $CAfile),
4647 "-verify_other", catfile($ocspdir, $untrusted),
47 "-no-CApath", "-no-CAstore"])),
48 "-no-CApath", "-no-CAstore",
49 $nochecks ? "-no_cert_checks" : ()])),
4850 $title); });
4951 }
5052
5456 plan tests => 7;
5557
5658 test_ocsp("NON-DELEGATED; Intermediate CA -> EE",
57 "ND1.ors", "ND1_Issuer_ICA.pem", "", 0);
58 test_ocsp("NON-DELEGATED; Root CA -> Intermediate CA",
59 "ND2.ors", "ND2_Issuer_Root.pem", "", 0);
60 test_ocsp("NON-DELEGATED; Root CA -> EE",
61 "ND3.ors", "ND3_Issuer_Root.pem", "", 0);
59 "ND1.ors", "ND1_Issuer_ICA.pem", "", 0, 0);
60 test_ocsp("NON-DELEGATED; Root CA -> Intermediate CA",
61 "ND2.ors", "ND2_Issuer_Root.pem", "", 0, 0);
62 test_ocsp("NON-DELEGATED; Root CA -> EE",
63 "ND3.ors", "ND3_Issuer_Root.pem", "", 0, 0);
6264 test_ocsp("NON-DELEGATED; 3-level CA hierarchy",
63 "ND1.ors", "ND1_Cross_Root.pem", "ND1_Issuer_ICA-Cross.pem", 0);
64 test_ocsp("DELEGATED; Intermediate CA -> EE",
65 "D1.ors", "D1_Issuer_ICA.pem", "", 0);
66 test_ocsp("DELEGATED; Root CA -> Intermediate CA",
67 "D2.ors", "D2_Issuer_Root.pem", "", 0);
68 test_ocsp("DELEGATED; Root CA -> EE",
69 "D3.ors", "D3_Issuer_Root.pem", "", 0);
65 "ND1.ors", "ND1_Cross_Root.pem", "ND1_Issuer_ICA-Cross.pem", 0, 0);
66 test_ocsp("DELEGATED; Intermediate CA -> EE",
67 "D1.ors", "D1_Issuer_ICA.pem", "", 0, 0);
68 test_ocsp("DELEGATED; Root CA -> Intermediate CA",
69 "D2.ors", "D2_Issuer_Root.pem", "", 0, 0);
70 test_ocsp("DELEGATED; Root CA -> EE",
71 "D3.ors", "D3_Issuer_Root.pem", "", 0, 0);
7072 };
7173
7274 subtest "=== INVALID SIGNATURE on the OCSP RESPONSE ===" => sub {
7375 plan tests => 6;
7476
7577 test_ocsp("NON-DELEGATED; Intermediate CA -> EE",
76 "ISOP_ND1.ors", "ND1_Issuer_ICA.pem", "", 1);
77 test_ocsp("NON-DELEGATED; Root CA -> Intermediate CA",
78 "ISOP_ND2.ors", "ND2_Issuer_Root.pem", "", 1);
79 test_ocsp("NON-DELEGATED; Root CA -> EE",
80 "ISOP_ND3.ors", "ND3_Issuer_Root.pem", "", 1);
81 test_ocsp("DELEGATED; Intermediate CA -> EE",
82 "ISOP_D1.ors", "D1_Issuer_ICA.pem", "", 1);
83 test_ocsp("DELEGATED; Root CA -> Intermediate CA",
84 "ISOP_D2.ors", "D2_Issuer_Root.pem", "", 1);
85 test_ocsp("DELEGATED; Root CA -> EE",
86 "ISOP_D3.ors", "D3_Issuer_Root.pem", "", 1);
78 "ISOP_ND1.ors", "ND1_Issuer_ICA.pem", "", 1, 0);
79 test_ocsp("NON-DELEGATED; Root CA -> Intermediate CA",
80 "ISOP_ND2.ors", "ND2_Issuer_Root.pem", "", 1, 0);
81 test_ocsp("NON-DELEGATED; Root CA -> EE",
82 "ISOP_ND3.ors", "ND3_Issuer_Root.pem", "", 1, 0);
83 test_ocsp("DELEGATED; Intermediate CA -> EE",
84 "ISOP_D1.ors", "D1_Issuer_ICA.pem", "", 1, 0);
85 test_ocsp("DELEGATED; Root CA -> Intermediate CA",
86 "ISOP_D2.ors", "D2_Issuer_Root.pem", "", 1, 0);
87 test_ocsp("DELEGATED; Root CA -> EE",
88 "ISOP_D3.ors", "D3_Issuer_Root.pem", "", 1, 0);
8789 };
8890
8991 subtest "=== WRONG RESPONDERID in the OCSP RESPONSE ===" => sub {
9092 plan tests => 6;
9193
9294 test_ocsp("NON-DELEGATED; Intermediate CA -> EE",
93 "WRID_ND1.ors", "ND1_Issuer_ICA.pem", "", 1);
94 test_ocsp("NON-DELEGATED; Root CA -> Intermediate CA",
95 "WRID_ND2.ors", "ND2_Issuer_Root.pem", "", 1);
96 test_ocsp("NON-DELEGATED; Root CA -> EE",
97 "WRID_ND3.ors", "ND3_Issuer_Root.pem", "", 1);
98 test_ocsp("DELEGATED; Intermediate CA -> EE",
99 "WRID_D1.ors", "D1_Issuer_ICA.pem", "", 1);
100 test_ocsp("DELEGATED; Root CA -> Intermediate CA",
101 "WRID_D2.ors", "D2_Issuer_Root.pem", "", 1);
102 test_ocsp("DELEGATED; Root CA -> EE",
103 "WRID_D3.ors", "D3_Issuer_Root.pem", "", 1);
95 "WRID_ND1.ors", "ND1_Issuer_ICA.pem", "", 1, 0);
96 test_ocsp("NON-DELEGATED; Root CA -> Intermediate CA",
97 "WRID_ND2.ors", "ND2_Issuer_Root.pem", "", 1, 0);
98 test_ocsp("NON-DELEGATED; Root CA -> EE",
99 "WRID_ND3.ors", "ND3_Issuer_Root.pem", "", 1, 0);
100 test_ocsp("DELEGATED; Intermediate CA -> EE",
101 "WRID_D1.ors", "D1_Issuer_ICA.pem", "", 1, 0);
102 test_ocsp("DELEGATED; Root CA -> Intermediate CA",
103 "WRID_D2.ors", "D2_Issuer_Root.pem", "", 1, 0);
104 test_ocsp("DELEGATED; Root CA -> EE",
105 "WRID_D3.ors", "D3_Issuer_Root.pem", "", 1, 0);
104106 };
105107
106108 subtest "=== WRONG ISSUERNAMEHASH in the OCSP RESPONSE ===" => sub {
107109 plan tests => 6;
108110
109111 test_ocsp("NON-DELEGATED; Intermediate CA -> EE",
110 "WINH_ND1.ors", "ND1_Issuer_ICA.pem", "", 1);
111 test_ocsp("NON-DELEGATED; Root CA -> Intermediate CA",
112 "WINH_ND2.ors", "ND2_Issuer_Root.pem", "", 1);
113 test_ocsp("NON-DELEGATED; Root CA -> EE",
114 "WINH_ND3.ors", "ND3_Issuer_Root.pem", "", 1);
115 test_ocsp("DELEGATED; Intermediate CA -> EE",
116 "WINH_D1.ors", "D1_Issuer_ICA.pem", "", 1);
117 test_ocsp("DELEGATED; Root CA -> Intermediate CA",
118 "WINH_D2.ors", "D2_Issuer_Root.pem", "", 1);
119 test_ocsp("DELEGATED; Root CA -> EE",
120 "WINH_D3.ors", "D3_Issuer_Root.pem", "", 1);
112 "WINH_ND1.ors", "ND1_Issuer_ICA.pem", "", 1, 0);
113 test_ocsp("NON-DELEGATED; Root CA -> Intermediate CA",
114 "WINH_ND2.ors", "ND2_Issuer_Root.pem", "", 1, 0);
115 test_ocsp("NON-DELEGATED; Root CA -> EE",
116 "WINH_ND3.ors", "ND3_Issuer_Root.pem", "", 1, 0);
117 test_ocsp("DELEGATED; Intermediate CA -> EE",
118 "WINH_D1.ors", "D1_Issuer_ICA.pem", "", 1, 0);
119 test_ocsp("DELEGATED; Root CA -> Intermediate CA",
120 "WINH_D2.ors", "D2_Issuer_Root.pem", "", 1, 0);
121 test_ocsp("DELEGATED; Root CA -> EE",
122 "WINH_D3.ors", "D3_Issuer_Root.pem", "", 1, 0);
121123 };
122124
123125 subtest "=== WRONG ISSUERKEYHASH in the OCSP RESPONSE ===" => sub {
124126 plan tests => 6;
125127
126128 test_ocsp("NON-DELEGATED; Intermediate CA -> EE",
127 "WIKH_ND1.ors", "ND1_Issuer_ICA.pem", "", 1);
128 test_ocsp("NON-DELEGATED; Root CA -> Intermediate CA",
129 "WIKH_ND2.ors", "ND2_Issuer_Root.pem", "", 1);
130 test_ocsp("NON-DELEGATED; Root CA -> EE",
131 "WIKH_ND3.ors", "ND3_Issuer_Root.pem", "", 1);
132 test_ocsp("DELEGATED; Intermediate CA -> EE",
133 "WIKH_D1.ors", "D1_Issuer_ICA.pem", "", 1);
134 test_ocsp("DELEGATED; Root CA -> Intermediate CA",
135 "WIKH_D2.ors", "D2_Issuer_Root.pem", "", 1);
136 test_ocsp("DELEGATED; Root CA -> EE",
137 "WIKH_D3.ors", "D3_Issuer_Root.pem", "", 1);
129 "WIKH_ND1.ors", "ND1_Issuer_ICA.pem", "", 1, 0);
130 test_ocsp("NON-DELEGATED; Root CA -> Intermediate CA",
131 "WIKH_ND2.ors", "ND2_Issuer_Root.pem", "", 1, 0);
132 test_ocsp("NON-DELEGATED; Root CA -> EE",
133 "WIKH_ND3.ors", "ND3_Issuer_Root.pem", "", 1, 0);
134 test_ocsp("DELEGATED; Intermediate CA -> EE",
135 "WIKH_D1.ors", "D1_Issuer_ICA.pem", "", 1, 0);
136 test_ocsp("DELEGATED; Root CA -> Intermediate CA",
137 "WIKH_D2.ors", "D2_Issuer_Root.pem", "", 1, 0);
138 test_ocsp("DELEGATED; Root CA -> EE",
139 "WIKH_D3.ors", "D3_Issuer_Root.pem", "", 1, 0);
138140 };
139141
140142 subtest "=== WRONG KEY in the DELEGATED OCSP SIGNING CERTIFICATE ===" => sub {
141143 plan tests => 3;
142144
143145 test_ocsp("DELEGATED; Intermediate CA -> EE",
144 "WKDOSC_D1.ors", "D1_Issuer_ICA.pem", "", 1);
145 test_ocsp("DELEGATED; Root CA -> Intermediate CA",
146 "WKDOSC_D2.ors", "D2_Issuer_Root.pem", "", 1);
147 test_ocsp("DELEGATED; Root CA -> EE",
148 "WKDOSC_D3.ors", "D3_Issuer_Root.pem", "", 1);
146 "WKDOSC_D1.ors", "D1_Issuer_ICA.pem", "", 1, 0);
147 test_ocsp("DELEGATED; Root CA -> Intermediate CA",
148 "WKDOSC_D2.ors", "D2_Issuer_Root.pem", "", 1, 0);
149 test_ocsp("DELEGATED; Root CA -> EE",
150 "WKDOSC_D3.ors", "D3_Issuer_Root.pem", "", 1, 0);
149151 };
150152
151153 subtest "=== INVALID SIGNATURE on the DELEGATED OCSP SIGNING CERTIFICATE ===" => sub {
152 plan tests => 3;
153
154 test_ocsp("DELEGATED; Intermediate CA -> EE",
155 "ISDOSC_D1.ors", "D1_Issuer_ICA.pem", "", 1);
156 test_ocsp("DELEGATED; Root CA -> Intermediate CA",
157 "ISDOSC_D2.ors", "D2_Issuer_Root.pem", "", 1);
158 test_ocsp("DELEGATED; Root CA -> EE",
159 "ISDOSC_D3.ors", "D3_Issuer_Root.pem", "", 1);
154 plan tests => 6;
155
156 test_ocsp("DELEGATED; Intermediate CA -> EE",
157 "ISDOSC_D1.ors", "D1_Issuer_ICA.pem", "", 1, 0);
158 test_ocsp("DELEGATED; Root CA -> Intermediate CA",
159 "ISDOSC_D2.ors", "D2_Issuer_Root.pem", "", 1, 0);
160 test_ocsp("DELEGATED; Root CA -> EE",
161 "ISDOSC_D3.ors", "D3_Issuer_Root.pem", "", 1, 0);
162 test_ocsp("DELEGATED; Intermediate CA -> EE",
163 "ISDOSC_D1.ors", "D1_Issuer_ICA.pem", "", 1, 1);
164 test_ocsp("DELEGATED; Root CA -> Intermediate CA",
165 "ISDOSC_D2.ors", "D2_Issuer_Root.pem", "", 1, 1);
166 test_ocsp("DELEGATED; Root CA -> EE",
167 "ISDOSC_D3.ors", "D3_Issuer_Root.pem", "", 1, 1);
160168 };
161169
162170 subtest "=== WRONG SUBJECT NAME in the ISSUER CERTIFICATE ===" => sub {
163171 plan tests => 6;
164172
165173 test_ocsp("NON-DELEGATED; Intermediate CA -> EE",
166 "ND1.ors", "WSNIC_ND1_Issuer_ICA.pem", "", 1);
167 test_ocsp("NON-DELEGATED; Root CA -> Intermediate CA",
168 "ND2.ors", "WSNIC_ND2_Issuer_Root.pem", "", 1);
169 test_ocsp("NON-DELEGATED; Root CA -> EE",
170 "ND3.ors", "WSNIC_ND3_Issuer_Root.pem", "", 1);
171 test_ocsp("DELEGATED; Intermediate CA -> EE",
172 "D1.ors", "WSNIC_D1_Issuer_ICA.pem", "", 1);
173 test_ocsp("DELEGATED; Root CA -> Intermediate CA",
174 "D2.ors", "WSNIC_D2_Issuer_Root.pem", "", 1);
175 test_ocsp("DELEGATED; Root CA -> EE",
176 "D3.ors", "WSNIC_D3_Issuer_Root.pem", "", 1);
174 "ND1.ors", "WSNIC_ND1_Issuer_ICA.pem", "", 1, 0);
175 test_ocsp("NON-DELEGATED; Root CA -> Intermediate CA",
176 "ND2.ors", "WSNIC_ND2_Issuer_Root.pem", "", 1, 0);
177 test_ocsp("NON-DELEGATED; Root CA -> EE",
178 "ND3.ors", "WSNIC_ND3_Issuer_Root.pem", "", 1, 0);
179 test_ocsp("DELEGATED; Intermediate CA -> EE",
180 "D1.ors", "WSNIC_D1_Issuer_ICA.pem", "", 1, 0);
181 test_ocsp("DELEGATED; Root CA -> Intermediate CA",
182 "D2.ors", "WSNIC_D2_Issuer_Root.pem", "", 1, 0);
183 test_ocsp("DELEGATED; Root CA -> EE",
184 "D3.ors", "WSNIC_D3_Issuer_Root.pem", "", 1, 0);
177185 };
178186
179187 subtest "=== WRONG KEY in the ISSUER CERTIFICATE ===" => sub {
180188 plan tests => 6;
181189
182190 test_ocsp("NON-DELEGATED; Intermediate CA -> EE",
183 "ND1.ors", "WKIC_ND1_Issuer_ICA.pem", "", 1);
184 test_ocsp("NON-DELEGATED; Root CA -> Intermediate CA",
185 "ND2.ors", "WKIC_ND2_Issuer_Root.pem", "", 1);
186 test_ocsp("NON-DELEGATED; Root CA -> EE",
187 "ND3.ors", "WKIC_ND3_Issuer_Root.pem", "", 1);
188 test_ocsp("DELEGATED; Intermediate CA -> EE",
189 "D1.ors", "WKIC_D1_Issuer_ICA.pem", "", 1);
190 test_ocsp("DELEGATED; Root CA -> Intermediate CA",
191 "D2.ors", "WKIC_D2_Issuer_Root.pem", "", 1);
192 test_ocsp("DELEGATED; Root CA -> EE",
193 "D3.ors", "WKIC_D3_Issuer_Root.pem", "", 1);
191 "ND1.ors", "WKIC_ND1_Issuer_ICA.pem", "", 1, 0);
192 test_ocsp("NON-DELEGATED; Root CA -> Intermediate CA",
193 "ND2.ors", "WKIC_ND2_Issuer_Root.pem", "", 1, 0);
194 test_ocsp("NON-DELEGATED; Root CA -> EE",
195 "ND3.ors", "WKIC_ND3_Issuer_Root.pem", "", 1, 0);
196 test_ocsp("DELEGATED; Intermediate CA -> EE",
197 "D1.ors", "WKIC_D1_Issuer_ICA.pem", "", 1, 0);
198 test_ocsp("DELEGATED; Root CA -> Intermediate CA",
199 "D2.ors", "WKIC_D2_Issuer_Root.pem", "", 1, 0);
200 test_ocsp("DELEGATED; Root CA -> EE",
201 "D3.ors", "WKIC_D3_Issuer_Root.pem", "", 1, 0);
194202 };
195203
196204 subtest "=== INVALID SIGNATURE on the ISSUER CERTIFICATE ===" => sub {
198206
199207 # Expect success, because we're explicitly trusting the issuer certificate.
200208 test_ocsp("NON-DELEGATED; Intermediate CA -> EE",
201 "ND1.ors", "ISIC_ND1_Issuer_ICA.pem", "", 0);
202 test_ocsp("NON-DELEGATED; Root CA -> Intermediate CA",
203 "ND2.ors", "ISIC_ND2_Issuer_Root.pem", "", 0);
204 test_ocsp("NON-DELEGATED; Root CA -> EE",
205 "ND3.ors", "ISIC_ND3_Issuer_Root.pem", "", 0);
206 test_ocsp("DELEGATED; Intermediate CA -> EE",
207 "D1.ors", "ISIC_D1_Issuer_ICA.pem", "", 0);
208 test_ocsp("DELEGATED; Root CA -> Intermediate CA",
209 "D2.ors", "ISIC_D2_Issuer_Root.pem", "", 0);
210 test_ocsp("DELEGATED; Root CA -> EE",
211 "D3.ors", "ISIC_D3_Issuer_Root.pem", "", 0);
209 "ND1.ors", "ISIC_ND1_Issuer_ICA.pem", "", 0, 0);
210 test_ocsp("NON-DELEGATED; Root CA -> Intermediate CA",
211 "ND2.ors", "ISIC_ND2_Issuer_Root.pem", "", 0, 0);
212 test_ocsp("NON-DELEGATED; Root CA -> EE",
213 "ND3.ors", "ISIC_ND3_Issuer_Root.pem", "", 0, 0);
214 test_ocsp("DELEGATED; Intermediate CA -> EE",
215 "D1.ors", "ISIC_D1_Issuer_ICA.pem", "", 0, 0);
216 test_ocsp("DELEGATED; Root CA -> Intermediate CA",
217 "D2.ors", "ISIC_D2_Issuer_Root.pem", "", 0, 0);
218 test_ocsp("DELEGATED; Root CA -> EE",
219 "D3.ors", "ISIC_D3_Issuer_Root.pem", "", 0, 0);
212220 };
213221
214222 subtest "=== OCSP API TESTS===" => sub {
00 #! /usr/bin/env perl
1 # Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved.
1 # Copyright 2016-2022 The OpenSSL Project Authors. All Rights Reserved.
22 #
33 # Licensed under the Apache License 2.0 (the "License"). You may not use
44 # this file except in compliance with the License. You can obtain a copy
3131 ok(run(test(["sslapitest", srctop_dir("test", "certs"),
3232 srctop_file("test", "recipes", "90-test_sslapi_data",
3333 "passwd.txt"), $tmpfilename, "default",
34 srctop_file("test", "default.cnf")])),
34 srctop_file("test", "default.cnf"),
35 srctop_file("test",
36 "recipes",
37 "90-test_sslapi_data",
38 "dhparams.pem")])),
3539 "running sslapitest");
3640
3741 unless ($no_fips) {
3842 ok(run(test(["sslapitest", srctop_dir("test", "certs"),
3943 srctop_file("test", "recipes", "90-test_sslapi_data",
4044 "passwd.txt"), $tmpfilename, "fips",
41 srctop_file("test", "fips-and-base.cnf")])),
45 srctop_file("test", "fips-and-base.cnf"),
46 srctop_file("test",
47 "recipes",
48 "90-test_sslapi_data",
49 "dhparams.pem")])),
4250 "running sslapitest");
4351 }
4452
0 -----BEGIN PKCS7-----
1 MIIIGAYJKoZIhvcNAQcCoIIICTCCCAUCAQExADALBgkqhkiG9w0BBwGgggY8MIIE
2 cjCCBBygAwIBAgIQeS+OJfWJUZAx6cX0eAiMjzANBgkqhkiG9w0BAQQFADBiMREw
3 DwYDVQQHEwhJbnRlcm5ldDEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNDAyBgNV
4 BAsTK1ZlcmlTaWduIENsYXNzIDEgQ0EgLSBJbmRpdmlkdWFsIFN1YnNjcmliZXIw
5 HhcNOTYwNzE5MDAwMDAwWhcNOTcwMzMwMjM1OTU5WjCB1TERMA8GA1UEBxMISW50
6 ZXJuZXQxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTQwMgYDVQQLEytWZXJpU2ln
7 biBDbGFzcyAxIENBIC0gSW5kaXZpZHVhbCBTdWJzY3JpYmVyMSgwJgYDVQQLEx9E
8 aWdpdGFsIElEIENsYXNzIDEgLSBTTUlNRSBUZXN0MUcwRQYDVQQLEz53d3cudmVy
9 aXNpZ24uY29tL3JlcG9zaXRvcnkvQ1BTLTEuMCBJbmMuIGJ5IFJlZi4sTElBQi5M
10 VEQoYyk5NjBbMA0GCSqGSIb3DQEBAQUAA0oAMEcCQA7LvHEIAiQ5+4gDYvJGnGAq
11 UM5GXyG11diEXmIEZTHUZhorooX5sr8IIjSXiPY59YYUFSvAaharFM1xaBN8zNEC
12 AwEAAaOCAjkwggI1MAkGA1UdEwQCMAAwggImBgNVHQMEggIdMIICGTCCAhUwggIR
13 BgtghkgBhvhFAQcBATCCAgAWggGrVGhpcyBjZXJ0aWZpY2F0ZSBpbmNvcnBvcmF0
14 ZXMgYnkgcmVmZXJlbmNlLCBhbmQgaXRzIHVzZSBpcyBzdHJpY3RseSBzdWJqZWN0
15 IHRvLCB0aGUgVmVyaVNpZ24gQ2VydGlmaWNhdGlvbiBQcmFjdGljZSBTdGF0ZW1l
16 bnQgKENQUyksIGF2YWlsYWJsZSBhdDogaHR0cHM6Ly93d3cudmVyaXNpZ24uY29t
17 L0NQUy0xLjA7IGJ5IEUtbWFpbCBhdCBDUFMtcmVxdWVzdHNAdmVyaXNpZ24uY29t
18 OyBvciBieSBtYWlsIGF0IFZlcmlTaWduLCBJbmMuLCAyNTkzIENvYXN0IEF2ZS4s
19 IE1vdW50YWluIFZpZXcsIENBIDk0MDQzIFVTQSBUZWwuICsxICg0MTUpIDk2MS04
20 ODMwIENvcHlyaWdodCAoYykgMTk5NiBWZXJpU2lnbiwgSW5jLiAgQWxsIFJpZ2h0
21 cyBSZXNlcnZlZC4gQ0VSVEFJTiBXQVJSQU5USUVTIERJU0NMQUlNRUQgYW5kIExJ
22 QUJJTElUWSBMSU1JVEVELqAOBgxghkgBhvhFAQcBAQGhDgYMYIZIAYb4RQEHAQEC
23 MC8wLRYraHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JlcG9zaXRvcnkvQ1BTLTEu
24 AzANBgkqhkiG9w0BAQQFAANBAMCYDuSb/eIlYSxY31nZZTaCZkCSfHjlacMofExr
25 cF+A2yHoEuT+eCQkqM0pMNHXddUeoQ9RjV+VuMBNmm63DUYwggHCMIIBbKADAgEC
26 AhB8CYTq1bkRFJBYOd67cp9JMA0GCSqGSIb3DQEBAgUAMD4xCzAJBgNVBAYTAlVT
27 MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEWMBQGA1UECxMNVEVTVCBSb290IFBD
28 QTAeFw05NjA3MTcwMDAwMDBaFw05NzA3MTcyMzU5NTlaMGIxETAPBgNVBAcTCElu
29 dGVybmV0MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE0MDIGA1UECxMrVmVyaVNp
30 Z24gQ2xhc3MgMSBDQSAtIEluZGl2aWR1YWwgU3Vic2NyaWJlcjBcMA0GCSqGSIb3
31 DQEBAQUAA0sAMEgCQQDsVzrNgnDhbAJZrWeLd9g1vMZJA2W67D33TTbga6yMt+ES
32 TWEywhS6RNP+fzLGg7utinjH4tL60cXa0G27GDsLAgMBAAGjIjAgMAsGA1UdDwQE
33 AwIBBjARBglghkgBhvhCAQEEBAMCAgQwDQYJKoZIhvcNAQECBQADQQAUp6bRwkaD
34 2d1MBs/mjUcgTI2fXVmW8tTm/Ud6OzUwpC3vYgybiOOA4f6mOC5dbyUHrLOsrihU
35 47ZQ0Jo1DUfboYIBrTCBwTBtMA0GCSqGSIb3DQEBAgUAMD4xCzAJBgNVBAYTAlVT
36 MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEWMBQGA1UECxMNVEVTVCBSb290IFBD
37 QRcNOTYwNzE3MTc0NDA5WhcNOTgwNzE3MDAwMDAwWjANBgkqhkiG9w0BAQIFAANB
38 AHitA0/xAukCjHzeh1AMT/l2oC68N+yFb+aJPHBBMxc6gG2MaKjBNwb5hcXUllMl
39 ExONA3ju10f7owIq3s3wx10wgeYwgZEwDQYJKoZIhvcNAQECBQAwYjERMA8GA1UE
40 BxMISW50ZXJuZXQxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTQwMgYDVQQLEytW
41 ZXJpU2lnbiBDbGFzcyAxIENBIC0gSW5kaXZpZHVhbCBTdWJzY3JpYmVyFw05NjA3
42 MTcxNzU5MjlaFw05NzA3MTgwMDAwMDBaMA0GCSqGSIb3DQEBAgUAA0EAubVWYTsW
43 sQmste9f+UgMw8BkjDlM25fwQLrCfmmnLxjewey10kSROypUaJLb+r4oRALc0fG9
44 XfZsaiiIgotQHjEA
45 -----END PKCS7-----
46 -----BEGIN CERTIFICATE-----
47 MIIHBzCCBO+gAwIBAgIRAIx3oACP9NGwxj2fOkiDjWswDQYJKoZIhvcNAQEMBQAw
48 fTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
49 A1UEBxMHU2FsZm9yZDEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMSUwIwYDVQQD
50 ExxTZWN0aWdvIFJTQSBUaW1lIFN0YW1waW5nIENBMB4XDTIwMTAyMzAwMDAwMFoX
51 DTMyMDEyMjIzNTk1OVowgYQxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVy
52 IE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGDAWBgNVBAoTD1NlY3RpZ28g
53 TGltaXRlZDEsMCoGA1UEAwwjU2VjdGlnbyBSU0EgVGltZSBTdGFtcGluZyBTaWdu
54 ZXIgIzIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCRh0ssi8HxHqCe
55 0wfGAcpSsL55eV0JZgYtLzV9u8D7J9pCalkbJUzq70DWmn4yyGqBfbRcPlYQgTU6
56 IjaM+/ggKYesdNAbYrw/ZIcCX+/FgO8GHNxeTpOHuJreTAdOhcxwxQ177MPZ45fp
57 yxnbVkVs7ksgbMk+bP3wm/Eo+JGZqvxawZqCIDq37+fWuCVJwjkbh4E5y8O3Os2f
58 UAQfGpmkgAJNHQWoVdNtUoCD5m5IpV/BiVhgiu/xrM2HYxiOdMuEh0FpY4G89h+q
59 fNfBQc6tq3aLIIDULZUHjcf1CxcemuXWmWlRx06mnSlv53mTDTJjU67MximKIMFg
60 xvICLMT5yCLf+SeCoYNRwrzJghohhLKXvNSvRByWgiKVKoVUrvH9Pkl0dPyOrj+l
61 cvTDWgGqUKWLdpUbZuvv2t+ULtka60wnfUwF9/gjXcRXyCYFevyBI19UCTgqYtWq
62 yt/tz1OrH/ZEnNWZWcVWZFv3jlIPZvyYP0QGE2Ru6eEVYFClsezPuOjJC77FhPfd
63 Cp3avClsPVbtv3hntlvIXhQcua+ELXei9zmVN29OfxzGPATWMcV+7z3oUX5xrSR0
64 Gyzc+Xyq78J2SWhi1Yv1A9++fY4PNnVGW5N2xIPugr4srjcS8bxWw+StQ8O3ZpZe
65 lDL6oPariVD6zqDzCIEa0USnzPe4MQIDAQABo4IBeDCCAXQwHwYDVR0jBBgwFoAU
66 GqH4YRkgD8NBd0UojtE1XwYSBFUwHQYDVR0OBBYEFGl1N3u7nTVCTr9X05rbnwHR
67 rt7QMA4GA1UdDwEB/wQEAwIGwDAMBgNVHRMBAf8EAjAAMBYGA1UdJQEB/wQMMAoG
68 CCsGAQUFBwMIMEAGA1UdIAQ5MDcwNQYMKwYBBAGyMQECAQMIMCUwIwYIKwYBBQUH
69 AgEWF2h0dHBzOi8vc2VjdGlnby5jb20vQ1BTMEQGA1UdHwQ9MDswOaA3oDWGM2h0
70 dHA6Ly9jcmwuc2VjdGlnby5jb20vU2VjdGlnb1JTQVRpbWVTdGFtcGluZ0NBLmNy
71 bDB0BggrBgEFBQcBAQRoMGYwPwYIKwYBBQUHMAKGM2h0dHA6Ly9jcnQuc2VjdGln
72 by5jb20vU2VjdGlnb1JTQVRpbWVTdGFtcGluZ0NBLmNydDAjBggrBgEFBQcwAYYX
73 aHR0cDovL29jc3Auc2VjdGlnby5jb20wDQYJKoZIhvcNAQEMBQADggIBAEoDeJBC
74 M+x7GoMJNjOYVbudQAYwa0Vq8ZQOGVD/WyVeO+E5xFu66ZWQNze93/tk7OWCt5XM
75 V1VwS070qIfdIoWmV7u4ISfUoCoxlIoHIZ6Kvaca9QIVy0RQmYzsProDd6aCApDC
76 LpOpviE0dWO54C0PzwE3y42i+rhamq6hep4TkxlVjwmQLt/qiBcW62nW4SW9RQiX
77 gNdUIChPynuzs6XSALBgNGXE48XDpeS6hap6adt1pD55aJo2i0OuNtRhcjwOhWIN
78 oF5w22QvAcfBoccklKOyPG6yXqLQ+qjRuCUcFubA1X9oGsRlKTUqLYi86q501oLn
79 wIi44U948FzKwEBcwp/VMhws2jysNvcGUpqjQDAXsCkWmcmqt4hJ9+gLJTO1P22v
80 n18KVt8SscPuzpF36CAT6Vwkx+pEC0rmE4QcTesNtbiGoDCni6GftCzMwBYjyZHl
81 QgNLgM7kTeYqAT7AXoWgJKEXQNXb2+eYEKTx6hkbgFT6R4nomIGpdcAO39BolHmh
82 oJ6OtrdCZsvZ2WsvTdjePjIeIOTsnE1CjZ3HM5mCN0TUJikmQI54L7nu+i/x8Y/+
83 ULh43RSW3hwOcLAqhWqxbGjpKuQQK24h/dN8nTfkKgbWw/HXaONPB3mBCBP+smRe
84 6bE85tB4I7IJLOImYr87qZdRzMdEMoGyr8/f
85 -----END CERTIFICATE-----
86 -----BEGIN DH PARAMETERS-----
87 MIIBDAKCAQEA//////////+t+FRYortKmq/cViAnPTzx2LnFg84tNpWp4TZBFGQz
88 +8yTnc4kmz75fS/jY2MMddj2gbICrsRhetPfHtXV/WVhJDP1H18GbtCFY2VVPe0a
89 87VXE15/V8k1mE8McODmi3fipona8+/och3xWKE2rec1MKzKT0g6eXq8CrGCsyT7
90 YdEIqUuyyOP7uWrat2DX9GgdT0Kj3jlN9K5W7edjcrsZCwenyO4KbXCeAvzhzffi
91 7MA0BM0oNC9hkXL+nOmFg/+OTxIy7vKBg8P+OxtMb61zO7X8vC7CIAXFjvGDfRaD
92 ssbzSibBsu/6iGtCOGEoXJf//////////wIBAgICB/8=
93 -----END DH PARAMETERS-----
94 -----BEGIN PRIVATE KEY-----
95 MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDNAIHqeyrh6gbV
96 n3xz2f+5SglhXC5Lp8Y2zvCN01M+wxhVJbAVx2m5mnfWclv5w1Mqm25fZifV+4UW
97 B2jT3anL01l0URcX3D0wnS/EfuQfl+Mq23+d2GShxHZ6Zm7NcbwarPXnUX9LOFlP
98 6psF5C1a2pkSAIAT5FMWpNm7jtCGuI0odYusr5ItRqhotIXSOcm66w4rZFknEPQr
99 LR6gpLSALAvsqzKPimiwBzvbVG/uqYCdKEmRKzkMFTK8finHZY+BdfrkbzQzL/h7
100 yrPkBkm5hXeGnaDqcYNT8HInVIhpE2SHYNEivmduD8SD3SD/wxvalqMZZsmqLnWt
101 A95H4cRPAgMBAAECggEAYCl6x5kbFnoG1rJHWLjL4gi+ubLZ7Jc4vYD5Ci41AF3X
102 ziktnim6iFvTFv7x8gkTvArJDWsICLJBTYIQREHYYkozzgIzyPeApIs3Wv8C12cS
103 IopwJITbP56+zM+77hcJ26GCgA2Unp5CFuC/81WDiPi9kNo3Oh2CdD7D+90UJ/0W
104 glplejFpEuhpU2URfKL4RckJQF/KxV+JX8FdIDhsJu54yemQdQKaF4psHkzwwgDo
105 qc+yfp0Vb4bmwq3CKxqEoc1cpbJ5CHXXlAfISzUjlcuBzD/tW7BDtp7eDAcgRVAC
106 XO6MX0QBcLYSC7SOD3R7zY9SIRCFDfBDxCjf0YcFMQKBgQD2+WG0fLwDXTrt68fe
107 hQqVa2Xs25z2B2QGPxWqSFU8WNly/mZ1BW413f3De/O58vYi7icTNyVoScm+8hdv
108 6PfD+LuRujdN1TuvPeyBTSvewQwf3IjN0Wh28mse36PwlBl+301C/x+ylxEDuJjK
109 hZxCcocIaoQqtBC7ac8tNa9r4wKBgQDUfnJKf/QQSLJwwlJKQQGHi3MVm7c9PbwY
110 eyIOY1s1NPluJDoYTZP4YLa/u2txwe2aHh9FhYMCPDAelqaSwaCLU9DsnKkQEA2A
111 RR47fcagG6xK7O+N95iEa8I1oIy7os9MBoBMwRIZ6VYIxxTj8UMNSR+tu6MqV1Gg
112 T5d0WDTJpQKBgCHyRSu5uV39AoyRS/eZ8cp36JqV1Q08FtOE+EVfi9evnrPfo9WR
113 2YQt7yNfdjCo5IwIj/ZkLhAXlFNakz4el2+oUJ/HKLLaDEoaCNf883q6rh/zABrK
114 HcG7sF2d/7qhoJ9/se7zgjfZ68zHIrkzhDbd5xGREnmMJoCcGo3sQyBhAoGAH3UQ
115 qmLC2N5KPFMoJ4H0HgLQ6LQCrnhDLkScSBEBYaEUA/AtAYgKjcyTgVLXlyGkcRpg
116 esRHHr+WSBD5W+R6ReYEmeKfTJdzyDdzQE9gZjdyjC0DUbsDwybIu3OnIef6VEDq
117 IXK7oUZfzDDcsNn4mTDoFaoff5cpqFfgDgM43VkCgYBNHw11b+d+AQmaZS9QqIt7
118 aF3FvwCYHV0jdv0Mb+Kc1bY4c0R5MFpzrTwVmdOerjuuA1+9b+0Hwo3nBZM4eaBu
119 SOamA2hu2OJWCl9q8fLCT69KqWDjghhvFe7c6aJJGucwaA3Uz3eLcPqoaCarMiNH
120 fMkTd7GabVourqIZdgvu1Q==
121 -----END PRIVATE KEY-----
00 /*
1 * Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2016-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
261261
262262 /* Use invalid hash size */
263263 return TEST_int_eq(SipHash_set_hash_size(&siphash, 4), 0)
264 && TEST_false(SipHash_Final(&siphash, output, 0))
264265 /* Use hash size = 8 */
265266 && TEST_true(SipHash_set_hash_size(&siphash, 8))
267 && TEST_false(SipHash_Final(&siphash, output, 8))
266268 && TEST_true(SipHash_Init(&siphash, key, 0, 0))
267269 && TEST_true(SipHash_Final(&siphash, output, 8))
268270 && TEST_int_eq(SipHash_Final(&siphash, output, 16), 0)
215215
216216 if (servername) {
217217 if (s_ctx2 != NULL && sn_server2 != NULL &&
218 !strcasecmp(servername, sn_server2)) {
218 !OPENSSL_strcasecmp(servername, sn_server2)) {
219219 BIO_printf(bio_stdout, "Switching server context.\n");
220220 SSL_set_SSL_CTX(s, s_ctx2);
221221 }
9393 static char *privkey8192 = NULL;
9494 static char *srpvfile = NULL;
9595 static char *tmpfilename = NULL;
96 static char *dhfile = NULL;
9697
9798 static int is_fips = 0;
9899
93839384 SSL_CTX_free(cctx);
93849385 return testresult;
93859386 }
9387
9388 /*
9389 * Test that the lifetime hint of a TLSv1.3 ticket is no more than 1 week
9390 * 0 = TLSv1.2
9391 * 1 = TLSv1.3
9392 */
9393 static int test_ticket_lifetime(int idx)
9394 {
9395 SSL_CTX *cctx = NULL, *sctx = NULL;
9396 SSL *clientssl = NULL, *serverssl = NULL;
9397 int testresult = 0;
9398 int version = TLS1_3_VERSION;
9399
9400 #define ONE_WEEK_SEC (7 * 24 * 60 * 60)
9401 #define TWO_WEEK_SEC (2 * ONE_WEEK_SEC)
9402
9403 if (idx == 0) {
9404 #ifdef OPENSSL_NO_TLS1_2
9405 return TEST_skip("TLS 1.2 is disabled.");
9406 #else
9407 version = TLS1_2_VERSION;
9408 #endif
9409 }
9410
9411 if (!TEST_true(create_ssl_ctx_pair(libctx, TLS_server_method(),
9412 TLS_client_method(), version, version,
9413 &sctx, &cctx, cert, privkey)))
9414 goto end;
9415
9416 if (!TEST_true(create_ssl_objects(sctx, cctx, &serverssl,
9417 &clientssl, NULL, NULL)))
9418 goto end;
9419
9420 /*
9421 * Set the timeout to be more than 1 week
9422 * make sure the returned value is the default
9423 */
9424 if (!TEST_long_eq(SSL_CTX_set_timeout(sctx, TWO_WEEK_SEC),
9425 SSL_get_default_timeout(serverssl)))
9426 goto end;
9427
9428 if (!TEST_true(create_ssl_connection(serverssl, clientssl, SSL_ERROR_NONE)))
9429 goto end;
9430
9431 if (idx == 0) {
9432 /* TLSv1.2 uses the set value */
9433 if (!TEST_ulong_eq(SSL_SESSION_get_ticket_lifetime_hint(SSL_get_session(clientssl)), TWO_WEEK_SEC))
9434 goto end;
9435 } else {
9436 /* TLSv1.3 uses the limited value */
9437 if (!TEST_ulong_le(SSL_SESSION_get_ticket_lifetime_hint(SSL_get_session(clientssl)), ONE_WEEK_SEC))
9438 goto end;
9439 }
9440 testresult = 1;
9441
9442 end:
9443 SSL_free(serverssl);
9444 SSL_free(clientssl);
9445 SSL_CTX_free(sctx);
9446 SSL_CTX_free(cctx);
9447 return testresult;
9448 }
93869449 #endif
93879450 /*
93889451 * Test that setting an ALPN does not violate RFC
94569519 return testresult;
94579520 }
94589521
9522 /*
9523 * Test SSL_CTX_set1_verify/chain_cert_store and SSL_CTX_get_verify/chain_cert_store.
9524 */
9525 static int test_set_verify_cert_store_ssl_ctx(void)
9526 {
9527 SSL_CTX *ctx = NULL;
9528 int testresult = 0;
9529 X509_STORE *store = NULL, *new_store = NULL,
9530 *cstore = NULL, *new_cstore = NULL;
9531
9532 /* Create an initial SSL_CTX. */
9533 ctx = SSL_CTX_new_ex(libctx, NULL, TLS_server_method());
9534 if (!TEST_ptr(ctx))
9535 goto end;
9536
9537 /* Retrieve verify store pointer. */
9538 if (!TEST_true(SSL_CTX_get0_verify_cert_store(ctx, &store)))
9539 goto end;
9540
9541 /* Retrieve chain store pointer. */
9542 if (!TEST_true(SSL_CTX_get0_chain_cert_store(ctx, &cstore)))
9543 goto end;
9544
9545 /* We haven't set any yet, so this should be NULL. */
9546 if (!TEST_ptr_null(store) || !TEST_ptr_null(cstore))
9547 goto end;
9548
9549 /* Create stores. We use separate stores so pointers are different. */
9550 new_store = X509_STORE_new();
9551 if (!TEST_ptr(new_store))
9552 goto end;
9553
9554 new_cstore = X509_STORE_new();
9555 if (!TEST_ptr(new_cstore))
9556 goto end;
9557
9558 /* Set stores. */
9559 if (!TEST_true(SSL_CTX_set1_verify_cert_store(ctx, new_store)))
9560 goto end;
9561
9562 if (!TEST_true(SSL_CTX_set1_chain_cert_store(ctx, new_cstore)))
9563 goto end;
9564
9565 /* Should be able to retrieve the same pointer. */
9566 if (!TEST_true(SSL_CTX_get0_verify_cert_store(ctx, &store)))
9567 goto end;
9568
9569 if (!TEST_true(SSL_CTX_get0_chain_cert_store(ctx, &cstore)))
9570 goto end;
9571
9572 if (!TEST_ptr_eq(store, new_store) || !TEST_ptr_eq(cstore, new_cstore))
9573 goto end;
9574
9575 /* Should be able to unset again. */
9576 if (!TEST_true(SSL_CTX_set1_verify_cert_store(ctx, NULL)))
9577 goto end;
9578
9579 if (!TEST_true(SSL_CTX_set1_chain_cert_store(ctx, NULL)))
9580 goto end;
9581
9582 /* Should now be NULL. */
9583 if (!TEST_true(SSL_CTX_get0_verify_cert_store(ctx, &store)))
9584 goto end;
9585
9586 if (!TEST_true(SSL_CTX_get0_chain_cert_store(ctx, &cstore)))
9587 goto end;
9588
9589 if (!TEST_ptr_null(store) || !TEST_ptr_null(cstore))
9590 goto end;
9591
9592 testresult = 1;
9593
9594 end:
9595 X509_STORE_free(new_store);
9596 X509_STORE_free(new_cstore);
9597 SSL_CTX_free(ctx);
9598 return testresult;
9599 }
9600
9601 /*
9602 * Test SSL_set1_verify/chain_cert_store and SSL_get_verify/chain_cert_store.
9603 */
9604 static int test_set_verify_cert_store_ssl(void)
9605 {
9606 SSL_CTX *ctx = NULL;
9607 SSL *ssl = NULL;
9608 int testresult = 0;
9609 X509_STORE *store = NULL, *new_store = NULL,
9610 *cstore = NULL, *new_cstore = NULL;
9611
9612 /* Create an initial SSL_CTX. */
9613 ctx = SSL_CTX_new_ex(libctx, NULL, TLS_server_method());
9614 if (!TEST_ptr(ctx))
9615 goto end;
9616
9617 /* Create an SSL object. */
9618 ssl = SSL_new(ctx);
9619 if (!TEST_ptr(ssl))
9620 goto end;
9621
9622 /* Retrieve verify store pointer. */
9623 if (!TEST_true(SSL_get0_verify_cert_store(ssl, &store)))
9624 goto end;
9625
9626 /* Retrieve chain store pointer. */
9627 if (!TEST_true(SSL_get0_chain_cert_store(ssl, &cstore)))
9628 goto end;
9629
9630 /* We haven't set any yet, so this should be NULL. */
9631 if (!TEST_ptr_null(store) || !TEST_ptr_null(cstore))
9632 goto end;
9633
9634 /* Create stores. We use separate stores so pointers are different. */
9635 new_store = X509_STORE_new();
9636 if (!TEST_ptr(new_store))
9637 goto end;
9638
9639 new_cstore = X509_STORE_new();
9640 if (!TEST_ptr(new_cstore))
9641 goto end;
9642
9643 /* Set stores. */
9644 if (!TEST_true(SSL_set1_verify_cert_store(ssl, new_store)))
9645 goto end;
9646
9647 if (!TEST_true(SSL_set1_chain_cert_store(ssl, new_cstore)))
9648 goto end;
9649
9650 /* Should be able to retrieve the same pointer. */
9651 if (!TEST_true(SSL_get0_verify_cert_store(ssl, &store)))
9652 goto end;
9653
9654 if (!TEST_true(SSL_get0_chain_cert_store(ssl, &cstore)))
9655 goto end;
9656
9657 if (!TEST_ptr_eq(store, new_store) || !TEST_ptr_eq(cstore, new_cstore))
9658 goto end;
9659
9660 /* Should be able to unset again. */
9661 if (!TEST_true(SSL_set1_verify_cert_store(ssl, NULL)))
9662 goto end;
9663
9664 if (!TEST_true(SSL_set1_chain_cert_store(ssl, NULL)))
9665 goto end;
9666
9667 /* Should now be NULL. */
9668 if (!TEST_true(SSL_get0_verify_cert_store(ssl, &store)))
9669 goto end;
9670
9671 if (!TEST_true(SSL_get0_chain_cert_store(ssl, &cstore)))
9672 goto end;
9673
9674 if (!TEST_ptr_null(store) || !TEST_ptr_null(cstore))
9675 goto end;
9676
9677 testresult = 1;
9678
9679 end:
9680 X509_STORE_free(new_store);
9681 X509_STORE_free(new_cstore);
9682 SSL_free(ssl);
9683 SSL_CTX_free(ctx);
9684 return testresult;
9685 }
9686
9687
94599688 static int test_inherit_verify_param(void)
94609689 {
94619690 int testresult = 0;
94979726 return testresult;
94989727 }
94999728
9500 OPT_TEST_DECLARE_USAGE("certfile privkeyfile srpvfile tmpfile provider config\n")
9729 static int test_load_dhfile(void)
9730 {
9731 #ifndef OPENSSL_NO_DH
9732 int testresult = 0;
9733
9734 SSL_CTX *ctx = NULL;
9735 SSL_CONF_CTX *cctx = NULL;
9736
9737 if (dhfile == NULL)
9738 return 1;
9739
9740 if (!TEST_ptr(ctx = SSL_CTX_new_ex(libctx, NULL, TLS_client_method()))
9741 || !TEST_ptr(cctx = SSL_CONF_CTX_new()))
9742 goto end;
9743
9744 SSL_CONF_CTX_set_ssl_ctx(cctx, ctx);
9745 SSL_CONF_CTX_set_flags(cctx,
9746 SSL_CONF_FLAG_CERTIFICATE
9747 | SSL_CONF_FLAG_SERVER
9748 | SSL_CONF_FLAG_FILE);
9749
9750 if (!TEST_int_eq(SSL_CONF_cmd(cctx, "DHParameters", dhfile), 2))
9751 goto end;
9752
9753 testresult = 1;
9754 end:
9755 SSL_CONF_CTX_free(cctx);
9756 SSL_CTX_free(ctx);
9757
9758 return testresult;
9759 #else
9760 return TEST_skip("DH not supported by this build");
9761 #endif
9762 }
9763
9764 OPT_TEST_DECLARE_USAGE("certfile privkeyfile srpvfile tmpfile provider config dhfile\n")
95019765
95029766 int setup_tests(void)
95039767 {
95279791 || !TEST_ptr(srpvfile = test_get_argument(1))
95289792 || !TEST_ptr(tmpfilename = test_get_argument(2))
95299793 || !TEST_ptr(modulename = test_get_argument(3))
9530 || !TEST_ptr(configfile = test_get_argument(4)))
9794 || !TEST_ptr(configfile = test_get_argument(4))
9795 || !TEST_ptr(dhfile = test_get_argument(5)))
95319796 return 0;
95329797
95339798 if (!TEST_true(OSSL_LIB_CTX_load_config(libctx, configfile)))
975310018 #endif
975410019 #ifndef OSSL_NO_USABLE_TLS1_3
975510020 ADD_TEST(test_sni_tls13);
10021 ADD_ALL_TESTS(test_ticket_lifetime, 2);
975610022 #endif
975710023 ADD_TEST(test_inherit_verify_param);
975810024 ADD_TEST(test_set_alpn);
10025 ADD_TEST(test_set_verify_cert_store_ssl_ctx);
10026 ADD_TEST(test_set_verify_cert_store_ssl);
975910027 ADD_ALL_TESTS(test_session_timeout, 1);
10028 ADD_TEST(test_load_dhfile);
976010029 return 1;
976110030
976210031 err:
00 /*
1 * Copyright 2012-2021 The OpenSSL Project Authors. All Rights Reserved.
1 * Copyright 2012-2022 The OpenSSL Project Authors. All Rights Reserved.
22 *
33 * Licensed under the Apache License 2.0 (the "License"). You may not use
44 * this file except in compliance with the License. You can obtain a copy
1313 #include <openssl/x509v3.h>
1414 #include "internal/nelem.h"
1515 #include "testutil.h"
16
17 #ifdef OPENSSL_SYS_WINDOWS
18 # define strcasecmp _stricmp
19 #endif
2016
2117 static const char *const names[] = {
2218 "a", "b", ".", "*", "@",
286282 int failed = 0;
287283
288284 for (; *pname != NULL; ++pname) {
289 int samename = strcasecmp(nameincert, *pname) == 0;
285 int samename = OPENSSL_strcasecmp(nameincert, *pname) == 0;
290286 size_t namelen = strlen(*pname);
291287 char *name = OPENSSL_malloc(namelen + 1);
292288 int match, ret;
00 #!{- $config{HASHBANGPERL} -}
11 {- use OpenSSL::Util; -}
22 # {- join("\n# ", @autowarntext) -}
3 # Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved.
3 # Copyright 1999-2022 The OpenSSL Project Authors. All Rights Reserved.
44 #
55 # Licensed under the Apache License 2.0 (the "License"). You may not use
66 # this file except in compliance with the License. You can obtain a copy
151151 return ($is_cert, $is_crl);
152152 }
153153
154 sub compute_hash {
155 my $fh;
156 if ( $^O eq "VMS" ) {
157 # VMS uses the open through shell
158 # The file names are safe there and list form is unsupported
159 if (!open($fh, "-|", join(' ', @_))) {
160 print STDERR "Cannot compute hash on '$fname'\n";
161 return;
162 }
163 } else {
164 if (!open($fh, "-|", @_)) {
165 print STDERR "Cannot compute hash on '$fname'\n";
166 return;
167 }
168 }
169 return (<$fh>, <$fh>);
170 }
154171
155172 # Link a certificate to its subject name hash value, each hash is of
156173 # the form <hash>.<n> where n is an integer. If the hash value already exists
160177
161178 sub link_hash_cert {
162179 my $fname = $_[0];
163 $fname =~ s/\"/\\\"/g;
164 my ($hash, $fprint) = `"$openssl" x509 $x509hash -fingerprint -noout -in "$fname"`;
180 my ($hash, $fprint) = compute_hash($openssl, "x509", $x509hash,
181 "-fingerprint", "-noout",
182 "-in", $fname);
165183 chomp $hash;
166184 chomp $fprint;
185 return if !$hash;
167186 $fprint =~ s/^.*=//;
168187 $fprint =~ tr/://d;
169188 my $suffix = 0;
201220
202221 sub link_hash_crl {
203222 my $fname = $_[0];
204 $fname =~ s/'/'\\''/g;
205 my ($hash, $fprint) = `"$openssl" crl $crlhash -fingerprint -noout -in '$fname'`;
223 my ($hash, $fprint) = compute_hash($openssl, "crl", $crlhash,
224 "-fingerprint", "-noout",
225 "-in", $fname);
206226 chomp $hash;
207227 chomp $fprint;
228 return if !$hash;
208229 $fprint =~ s/^.*=//;
209230 $fprint =~ tr/://d;
210231 my $suffix = 0;
54245424 ASN1_TIME_print_ex 5553 3_0_0 EXIST::FUNCTION:
54255425 EVP_PKEY_get0_provider 5554 3_0_0 EXIST::FUNCTION:
54265426 EVP_PKEY_CTX_get0_provider 5555 3_0_0 EXIST::FUNCTION:
5427 OPENSSL_strcasecmp 5556 3_0_3 EXIST::FUNCTION:
5428 OPENSSL_strncasecmp 5557 3_0_3 EXIST::FUNCTION:
44
55 # Use --- and === for H1 and H2.
66 rule 'MD003', :style => :setext_with_atx
7 # Code blocks are indented
8 rule 'MD046', :style => :indented
7 # Code blocks may be fenced or indented, both are OK...
8 # but they must be consistent throughout each file.
9 rule 'MD046', :style => :consistent
910
1011 # Bug in mdl, https://github.com/markdownlint/markdownlint/issues/313
1112 exclude_rule 'MD007'
88 SSL_CTX_get0_certificate(3)
99 SSL_CTX_get0_ctlog_store(3)
1010 SSL_CTX_get0_privatekey(3)
11 SSL_CTX_get_ssl_method(3)
1211 SSL_CTX_set0_ctlog_store(3)
1312 SSL_CTX_set_client_cert_engine(3)
1413 SSL_CTX_set_not_resumable_session_callback(3)
15 SSL_CTX_set_purpose(3)
16 SSL_CTX_set_trust(3)
1714 SSL_SRP_CTX_free(3)
1815 SSL_SRP_CTX_init(3)
1916 SSL_add_ssl_module(3)
2825 SSL_set_SSL_CTX(3)
2926 SSL_set_debug(3)
3027 SSL_set_not_resumable_session_callback(3)
31 SSL_set_purpose(3)
3228 SSL_set_session_secret_cb(3)
3329 SSL_set_session_ticket_ext(3)
3430 SSL_set_session_ticket_ext_cb(3)
35 SSL_set_trust(3)
3631 SSL_srp_server_param_with_username(3)
3732 SSL_test_functions(3)
3833 SSL_trace(3)
458458 SSL_CTX_disable_ct define
459459 SSL_CTX_generate_session_ticket_fn define
460460 SSL_CTX_get0_chain_certs define
461 SSL_CTX_get0_chain_cert_store define
462 SSL_CTX_get0_verify_cert_store define
461463 SSL_CTX_get_default_read_ahead define
462464 SSL_CTX_get_extra_chain_certs define
463465 SSL_CTX_get_extra_chain_certs_only define
530532 SSL_disable_ct define
531533 SSL_get0_chain_certs define
532534 SSL_get0_session define
535 SSL_get0_chain_cert_store define
536 SSL_get0_verify_cert_store define
533537 SSL_get1_curves define
534538 SSL_get1_groups define
535539 SSL_get_cipher define