diff options
| author | tb <> | 2021-11-01 20:53:08 +0000 |
|---|---|---|
| committer | tb <> | 2021-11-01 20:53:08 +0000 |
| commit | f478d62658b61e2242dbf3575bf454f8c0f432b1 (patch) | |
| tree | cbf2de4e6ef2a9e9d9281e6e60c30149cd648fd1 /src | |
| parent | b5a22e689a6f2534ae4b6d7fe4bf885792892295 (diff) | |
| download | openbsd-f478d62658b61e2242dbf3575bf454f8c0f432b1.tar.gz openbsd-f478d62658b61e2242dbf3575bf454f8c0f432b1.tar.bz2 openbsd-f478d62658b61e2242dbf3575bf454f8c0f432b1.zip | |
Move the now internal X.509-related structs into x509_lcl.h.
Garbage collect the now unused LIBRESSL_CRYPTO_INTERNAL and
LIBRESSL_OPAQUE_X509. Include "x509_lcl.h" where needed and
fix a couple of unnecessary reacharounds.
ok jsing
Diffstat (limited to 'src')
72 files changed, 521 insertions, 451 deletions
diff --git a/src/lib/libcrypto/Makefile b/src/lib/libcrypto/Makefile index f626c16e91..3f4014409d 100644 --- a/src/lib/libcrypto/Makefile +++ b/src/lib/libcrypto/Makefile | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | # $OpenBSD: Makefile,v 1.48 2021/10/31 16:51:16 tb Exp $ | 1 | # $OpenBSD: Makefile,v 1.49 2021/11/01 20:53:08 tb Exp $ |
| 2 | 2 | ||
| 3 | LIB= crypto | 3 | LIB= crypto |
| 4 | LIBREBUILD=y | 4 | LIBREBUILD=y |
| @@ -18,7 +18,7 @@ CFLAGS+= -Wall -Wundef | |||
| 18 | .if ${COMPILER_VERSION:L} == "clang" | 18 | .if ${COMPILER_VERSION:L} == "clang" |
| 19 | CFLAGS+= -Werror | 19 | CFLAGS+= -Werror |
| 20 | .endif | 20 | .endif |
| 21 | CFLAGS+= -DLIBRESSL_INTERNAL -DLIBRESSL_CRYPTO_INTERNAL | 21 | CFLAGS+= -DLIBRESSL_INTERNAL |
| 22 | 22 | ||
| 23 | .if !defined(NOPIC) | 23 | .if !defined(NOPIC) |
| 24 | CFLAGS+= -DDSO_DLFCN -DHAVE_DLFCN_H -DHAVE_FUNOPEN | 24 | CFLAGS+= -DDSO_DLFCN -DHAVE_DLFCN_H -DHAVE_FUNOPEN |
| @@ -29,7 +29,7 @@ CFLAGS+= -DOPENSSL_NO_HW_PADLOCK # XXX enable this? | |||
| 29 | 29 | ||
| 30 | CFLAGS+= -I${LCRYPTO_SRC} | 30 | CFLAGS+= -I${LCRYPTO_SRC} |
| 31 | CFLAGS+= -I${LCRYPTO_SRC}/asn1 -I${LCRYPTO_SRC}/bn -I${LCRYPTO_SRC}/evp | 31 | CFLAGS+= -I${LCRYPTO_SRC}/asn1 -I${LCRYPTO_SRC}/bn -I${LCRYPTO_SRC}/evp |
| 32 | CFLAGS+= -I${LCRYPTO_SRC}/modes | 32 | CFLAGS+= -I${LCRYPTO_SRC}/modes -I${LCRYPTO_SRC}/x509 |
| 33 | 33 | ||
| 34 | # XXX FIXME ecdsa and ec should be merged | 34 | # XXX FIXME ecdsa and ec should be merged |
| 35 | CFLAGS+= -I${LCRYPTO_SRC}/ecdsa | 35 | CFLAGS+= -I${LCRYPTO_SRC}/ecdsa |
diff --git a/src/lib/libcrypto/asn1/a_strex.c b/src/lib/libcrypto/asn1/a_strex.c index 4e3deccfda..3b66ea8d36 100644 --- a/src/lib/libcrypto/asn1/a_strex.c +++ b/src/lib/libcrypto/asn1/a_strex.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: a_strex.c,v 1.28 2018/05/19 10:46:28 tb Exp $ */ | 1 | /* $OpenBSD: a_strex.c,v 1.29 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 3 | * project 2000. | 3 | * project 2000. |
| 4 | */ | 4 | */ |
| @@ -513,7 +513,7 @@ do_name_ex(char_io *io_ch, void *arg, const X509_NAME *n, int indent, | |||
| 513 | else | 513 | else |
| 514 | ent = X509_NAME_get_entry(n, i); | 514 | ent = X509_NAME_get_entry(n, i); |
| 515 | if (prev != -1) { | 515 | if (prev != -1) { |
| 516 | if (prev == ent->set) { | 516 | if (prev == X509_NAME_ENTRY_set(ent)) { |
| 517 | if (!io_ch(arg, sep_mv, sep_mv_len)) | 517 | if (!io_ch(arg, sep_mv, sep_mv_len)) |
| 518 | return -1; | 518 | return -1; |
| 519 | outlen += sep_mv_len; | 519 | outlen += sep_mv_len; |
| @@ -526,7 +526,7 @@ do_name_ex(char_io *io_ch, void *arg, const X509_NAME *n, int indent, | |||
| 526 | outlen += indent; | 526 | outlen += indent; |
| 527 | } | 527 | } |
| 528 | } | 528 | } |
| 529 | prev = ent->set; | 529 | prev = X509_NAME_ENTRY_set(ent); |
| 530 | fn = X509_NAME_ENTRY_get_object(ent); | 530 | fn = X509_NAME_ENTRY_get_object(ent); |
| 531 | val = X509_NAME_ENTRY_get_data(ent); | 531 | val = X509_NAME_ENTRY_get_data(ent); |
| 532 | fn_nid = OBJ_obj2nid(fn); | 532 | fn_nid = OBJ_obj2nid(fn); |
diff --git a/src/lib/libcrypto/asn1/n_pkey.c b/src/lib/libcrypto/asn1/n_pkey.c index 6c7031677d..89adcd5b11 100644 --- a/src/lib/libcrypto/asn1/n_pkey.c +++ b/src/lib/libcrypto/asn1/n_pkey.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: n_pkey.c,v 1.32 2018/08/05 13:35:45 bcook Exp $ */ | 1 | /* $OpenBSD: n_pkey.c,v 1.33 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -69,6 +69,8 @@ | |||
| 69 | #include <openssl/rsa.h> | 69 | #include <openssl/rsa.h> |
| 70 | #include <openssl/x509.h> | 70 | #include <openssl/x509.h> |
| 71 | 71 | ||
| 72 | #include "x509_lcl.h" | ||
| 73 | |||
| 72 | #ifndef OPENSSL_NO_RC4 | 74 | #ifndef OPENSSL_NO_RC4 |
| 73 | 75 | ||
| 74 | typedef struct netscape_pkey_st { | 76 | typedef struct netscape_pkey_st { |
diff --git a/src/lib/libcrypto/asn1/p8_pkey.c b/src/lib/libcrypto/asn1/p8_pkey.c index d2f8e6b055..18659a6f40 100644 --- a/src/lib/libcrypto/asn1/p8_pkey.c +++ b/src/lib/libcrypto/asn1/p8_pkey.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: p8_pkey.c,v 1.19 2018/08/24 20:17:33 tb Exp $ */ | 1 | /* $OpenBSD: p8_pkey.c,v 1.20 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 3 | * project 1999. | 3 | * project 1999. |
| 4 | */ | 4 | */ |
| @@ -62,6 +62,8 @@ | |||
| 62 | #include <openssl/asn1t.h> | 62 | #include <openssl/asn1t.h> |
| 63 | #include <openssl/x509.h> | 63 | #include <openssl/x509.h> |
| 64 | 64 | ||
| 65 | #include "x509_lcl.h" | ||
| 66 | |||
| 65 | /* Minor tweak to operation: zero private key data */ | 67 | /* Minor tweak to operation: zero private key data */ |
| 66 | static int | 68 | static int |
| 67 | pkey_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, void *exarg) | 69 | pkey_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, void *exarg) |
diff --git a/src/lib/libcrypto/asn1/t_crl.c b/src/lib/libcrypto/asn1/t_crl.c index 057b8fe311..b7f94a8644 100644 --- a/src/lib/libcrypto/asn1/t_crl.c +++ b/src/lib/libcrypto/asn1/t_crl.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: t_crl.c,v 1.18 2019/05/12 15:56:31 tb Exp $ */ | 1 | /* $OpenBSD: t_crl.c,v 1.19 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 3 | * project 1999. | 3 | * project 1999. |
| 4 | */ | 4 | */ |
| @@ -66,6 +66,8 @@ | |||
| 66 | #include <openssl/x509.h> | 66 | #include <openssl/x509.h> |
| 67 | #include <openssl/x509v3.h> | 67 | #include <openssl/x509v3.h> |
| 68 | 68 | ||
| 69 | #include "x509_lcl.h" | ||
| 70 | |||
| 69 | int | 71 | int |
| 70 | X509_CRL_print_fp(FILE *fp, X509_CRL *x) | 72 | X509_CRL_print_fp(FILE *fp, X509_CRL *x) |
| 71 | { | 73 | { |
diff --git a/src/lib/libcrypto/asn1/t_req.c b/src/lib/libcrypto/asn1/t_req.c index a9b14fed73..320eaff9c0 100644 --- a/src/lib/libcrypto/asn1/t_req.c +++ b/src/lib/libcrypto/asn1/t_req.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: t_req.c,v 1.19 2017/01/29 17:49:22 beck Exp $ */ | 1 | /* $OpenBSD: t_req.c,v 1.20 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -74,6 +74,8 @@ | |||
| 74 | #include <openssl/rsa.h> | 74 | #include <openssl/rsa.h> |
| 75 | #endif | 75 | #endif |
| 76 | 76 | ||
| 77 | #include "x509_lcl.h" | ||
| 78 | |||
| 77 | int | 79 | int |
| 78 | X509_REQ_print_fp(FILE *fp, X509_REQ *x) | 80 | X509_REQ_print_fp(FILE *fp, X509_REQ *x) |
| 79 | { | 81 | { |
diff --git a/src/lib/libcrypto/asn1/t_spki.c b/src/lib/libcrypto/asn1/t_spki.c index 7f1ed129cf..56c0956ceb 100644 --- a/src/lib/libcrypto/asn1/t_spki.c +++ b/src/lib/libcrypto/asn1/t_spki.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: t_spki.c,v 1.12 2021/08/24 15:23:03 tb Exp $ */ | 1 | /* $OpenBSD: t_spki.c,v 1.13 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 3 | * project 1999. | 3 | * project 1999. |
| 4 | */ | 4 | */ |
| @@ -71,6 +71,8 @@ | |||
| 71 | #include <openssl/rsa.h> | 71 | #include <openssl/rsa.h> |
| 72 | #endif | 72 | #endif |
| 73 | 73 | ||
| 74 | #include "x509_lcl.h" | ||
| 75 | |||
| 74 | /* Print out an SPKI */ | 76 | /* Print out an SPKI */ |
| 75 | 77 | ||
| 76 | int | 78 | int |
diff --git a/src/lib/libcrypto/asn1/t_x509.c b/src/lib/libcrypto/asn1/t_x509.c index 42b00a729a..d1655a1785 100644 --- a/src/lib/libcrypto/asn1/t_x509.c +++ b/src/lib/libcrypto/asn1/t_x509.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: t_x509.c,v 1.34 2021/07/26 16:54:20 tb Exp $ */ | 1 | /* $OpenBSD: t_x509.c,v 1.35 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -78,6 +78,7 @@ | |||
| 78 | #endif | 78 | #endif |
| 79 | 79 | ||
| 80 | #include "asn1_locl.h" | 80 | #include "asn1_locl.h" |
| 81 | #include "x509_lcl.h" | ||
| 81 | 82 | ||
| 82 | int | 83 | int |
| 83 | X509_print_fp(FILE *fp, X509 *x) | 84 | X509_print_fp(FILE *fp, X509 *x) |
diff --git a/src/lib/libcrypto/asn1/t_x509a.c b/src/lib/libcrypto/asn1/t_x509a.c index b0346fa681..6745318b9c 100644 --- a/src/lib/libcrypto/asn1/t_x509a.c +++ b/src/lib/libcrypto/asn1/t_x509a.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: t_x509a.c,v 1.9 2021/07/10 17:45:16 schwarze Exp $ */ | 1 | /* $OpenBSD: t_x509a.c,v 1.10 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 3 | * project 1999. | 3 | * project 1999. |
| 4 | */ | 4 | */ |
| @@ -62,8 +62,9 @@ | |||
| 62 | #include <openssl/evp.h> | 62 | #include <openssl/evp.h> |
| 63 | #include <openssl/x509.h> | 63 | #include <openssl/x509.h> |
| 64 | 64 | ||
| 65 | /* X509_CERT_AUX and string set routines | 65 | #include "x509_lcl.h" |
| 66 | */ | 66 | |
| 67 | /* X509_CERT_AUX and string set routines */ | ||
| 67 | 68 | ||
| 68 | int | 69 | int |
| 69 | X509_CERT_AUX_print(BIO *out, X509_CERT_AUX *aux, int indent) | 70 | X509_CERT_AUX_print(BIO *out, X509_CERT_AUX *aux, int indent) |
diff --git a/src/lib/libcrypto/asn1/x_attrib.c b/src/lib/libcrypto/asn1/x_attrib.c index 04816eab77..a40edc1f1d 100644 --- a/src/lib/libcrypto/asn1/x_attrib.c +++ b/src/lib/libcrypto/asn1/x_attrib.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: x_attrib.c,v 1.14 2020/06/04 21:21:03 schwarze Exp $ */ | 1 | /* $OpenBSD: x_attrib.c,v 1.15 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -62,6 +62,8 @@ | |||
| 62 | #include <openssl/objects.h> | 62 | #include <openssl/objects.h> |
| 63 | #include <openssl/x509.h> | 63 | #include <openssl/x509.h> |
| 64 | 64 | ||
| 65 | #include "x509_lcl.h" | ||
| 66 | |||
| 65 | /* X509_ATTRIBUTE: this has the following form: | 67 | /* X509_ATTRIBUTE: this has the following form: |
| 66 | * | 68 | * |
| 67 | * typedef struct x509_attributes_st | 69 | * typedef struct x509_attributes_st |
diff --git a/src/lib/libcrypto/asn1/x_crl.c b/src/lib/libcrypto/asn1/x_crl.c index bc1783dbfb..bfc01a2284 100644 --- a/src/lib/libcrypto/asn1/x_crl.c +++ b/src/lib/libcrypto/asn1/x_crl.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: x_crl.c,v 1.34 2019/03/13 20:34:00 tb Exp $ */ | 1 | /* $OpenBSD: x_crl.c,v 1.35 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -66,6 +66,7 @@ | |||
| 66 | #include <openssl/x509v3.h> | 66 | #include <openssl/x509v3.h> |
| 67 | 67 | ||
| 68 | #include "asn1_locl.h" | 68 | #include "asn1_locl.h" |
| 69 | #include "x509_lcl.h" | ||
| 69 | 70 | ||
| 70 | static int X509_REVOKED_cmp(const X509_REVOKED * const *a, | 71 | static int X509_REVOKED_cmp(const X509_REVOKED * const *a, |
| 71 | const X509_REVOKED * const *b); | 72 | const X509_REVOKED * const *b); |
diff --git a/src/lib/libcrypto/asn1/x_exten.c b/src/lib/libcrypto/asn1/x_exten.c index bb3dffc821..aba8973632 100644 --- a/src/lib/libcrypto/asn1/x_exten.c +++ b/src/lib/libcrypto/asn1/x_exten.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: x_exten.c,v 1.16 2015/07/24 15:09:52 jsing Exp $ */ | 1 | /* $OpenBSD: x_exten.c,v 1.17 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 3 | * project 2000. | 3 | * project 2000. |
| 4 | */ | 4 | */ |
| @@ -61,6 +61,8 @@ | |||
| 61 | #include <openssl/asn1.h> | 61 | #include <openssl/asn1.h> |
| 62 | #include <openssl/asn1t.h> | 62 | #include <openssl/asn1t.h> |
| 63 | 63 | ||
| 64 | #include "x509_lcl.h" | ||
| 65 | |||
| 64 | static const ASN1_TEMPLATE X509_EXTENSION_seq_tt[] = { | 66 | static const ASN1_TEMPLATE X509_EXTENSION_seq_tt[] = { |
| 65 | { | 67 | { |
| 66 | .offset = offsetof(X509_EXTENSION, object), | 68 | .offset = offsetof(X509_EXTENSION, object), |
diff --git a/src/lib/libcrypto/asn1/x_name.c b/src/lib/libcrypto/asn1/x_name.c index 0961ee33eb..4563a51348 100644 --- a/src/lib/libcrypto/asn1/x_name.c +++ b/src/lib/libcrypto/asn1/x_name.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: x_name.c,v 1.35 2021/07/04 11:38:37 schwarze Exp $ */ | 1 | /* $OpenBSD: x_name.c,v 1.36 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -65,6 +65,7 @@ | |||
| 65 | #include <openssl/x509.h> | 65 | #include <openssl/x509.h> |
| 66 | 66 | ||
| 67 | #include "asn1_locl.h" | 67 | #include "asn1_locl.h" |
| 68 | #include "x509_lcl.h" | ||
| 68 | 69 | ||
| 69 | typedef STACK_OF(X509_NAME_ENTRY) STACK_OF_X509_NAME_ENTRY; | 70 | typedef STACK_OF(X509_NAME_ENTRY) STACK_OF_X509_NAME_ENTRY; |
| 70 | DECLARE_STACK_OF(STACK_OF_X509_NAME_ENTRY) | 71 | DECLARE_STACK_OF(STACK_OF_X509_NAME_ENTRY) |
diff --git a/src/lib/libcrypto/asn1/x_pubkey.c b/src/lib/libcrypto/asn1/x_pubkey.c index ea67419cb2..cb16d03301 100644 --- a/src/lib/libcrypto/asn1/x_pubkey.c +++ b/src/lib/libcrypto/asn1/x_pubkey.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: x_pubkey.c,v 1.27 2018/03/17 14:55:39 jsing Exp $ */ | 1 | /* $OpenBSD: x_pubkey.c,v 1.28 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -72,6 +72,7 @@ | |||
| 72 | #endif | 72 | #endif |
| 73 | 73 | ||
| 74 | #include "asn1_locl.h" | 74 | #include "asn1_locl.h" |
| 75 | #include "x509_lcl.h" | ||
| 75 | 76 | ||
| 76 | /* Minor tweak to operation: free up EVP_PKEY */ | 77 | /* Minor tweak to operation: free up EVP_PKEY */ |
| 77 | static int | 78 | static int |
diff --git a/src/lib/libcrypto/asn1/x_req.c b/src/lib/libcrypto/asn1/x_req.c index eb5210aef6..38e3790bf4 100644 --- a/src/lib/libcrypto/asn1/x_req.c +++ b/src/lib/libcrypto/asn1/x_req.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: x_req.c,v 1.17 2018/02/22 16:50:30 jsing Exp $ */ | 1 | /* $OpenBSD: x_req.c,v 1.18 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -61,6 +61,8 @@ | |||
| 61 | #include <openssl/asn1t.h> | 61 | #include <openssl/asn1t.h> |
| 62 | #include <openssl/x509.h> | 62 | #include <openssl/x509.h> |
| 63 | 63 | ||
| 64 | #include "x509_lcl.h" | ||
| 65 | |||
| 64 | /* X509_REQ_INFO is handled in an unusual way to get round | 66 | /* X509_REQ_INFO is handled in an unusual way to get round |
| 65 | * invalid encodings. Some broken certificate requests don't | 67 | * invalid encodings. Some broken certificate requests don't |
| 66 | * encode the attributes field if it is empty. This is in | 68 | * encode the attributes field if it is empty. This is in |
diff --git a/src/lib/libcrypto/asn1/x_sig.c b/src/lib/libcrypto/asn1/x_sig.c index dc3af45f6d..6a842da5f0 100644 --- a/src/lib/libcrypto/asn1/x_sig.c +++ b/src/lib/libcrypto/asn1/x_sig.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: x_sig.c,v 1.12 2021/10/23 11:41:50 tb Exp $ */ | 1 | /* $OpenBSD: x_sig.c,v 1.13 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -61,6 +61,8 @@ | |||
| 61 | #include <openssl/asn1t.h> | 61 | #include <openssl/asn1t.h> |
| 62 | #include <openssl/x509.h> | 62 | #include <openssl/x509.h> |
| 63 | 63 | ||
| 64 | #include "x509_lcl.h" | ||
| 65 | |||
| 64 | static const ASN1_TEMPLATE X509_SIG_seq_tt[] = { | 66 | static const ASN1_TEMPLATE X509_SIG_seq_tt[] = { |
| 65 | { | 67 | { |
| 66 | .offset = offsetof(X509_SIG, algor), | 68 | .offset = offsetof(X509_SIG, algor), |
diff --git a/src/lib/libcrypto/asn1/x_x509.c b/src/lib/libcrypto/asn1/x_x509.c index ebe09a6099..713ffbbb11 100644 --- a/src/lib/libcrypto/asn1/x_x509.c +++ b/src/lib/libcrypto/asn1/x_x509.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: x_x509.c,v 1.28 2021/10/23 11:56:10 tb Exp $ */ | 1 | /* $OpenBSD: x_x509.c,v 1.29 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -65,6 +65,8 @@ | |||
| 65 | #include <openssl/x509.h> | 65 | #include <openssl/x509.h> |
| 66 | #include <openssl/x509v3.h> | 66 | #include <openssl/x509v3.h> |
| 67 | 67 | ||
| 68 | #include "x509_lcl.h" | ||
| 69 | |||
| 68 | static const ASN1_AUX X509_CINF_aux = { | 70 | static const ASN1_AUX X509_CINF_aux = { |
| 69 | .flags = ASN1_AFLG_ENCODING, | 71 | .flags = ASN1_AFLG_ENCODING, |
| 70 | .enc_offset = offsetof(X509_CINF, enc), | 72 | .enc_offset = offsetof(X509_CINF, enc), |
diff --git a/src/lib/libcrypto/asn1/x_x509a.c b/src/lib/libcrypto/asn1/x_x509a.c index d5364cb07b..572178157a 100644 --- a/src/lib/libcrypto/asn1/x_x509a.c +++ b/src/lib/libcrypto/asn1/x_x509a.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: x_x509a.c,v 1.16 2021/10/31 16:28:50 tb Exp $ */ | 1 | /* $OpenBSD: x_x509a.c,v 1.17 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 3 | * project 1999. | 3 | * project 1999. |
| 4 | */ | 4 | */ |
| @@ -62,6 +62,8 @@ | |||
| 62 | #include <openssl/evp.h> | 62 | #include <openssl/evp.h> |
| 63 | #include <openssl/x509.h> | 63 | #include <openssl/x509.h> |
| 64 | 64 | ||
| 65 | #include "x509_lcl.h" | ||
| 66 | |||
| 65 | /* X509_CERT_AUX routines. These are used to encode additional | 67 | /* X509_CERT_AUX routines. These are used to encode additional |
| 66 | * user modifiable data about a certificate. This data is | 68 | * user modifiable data about a certificate. This data is |
| 67 | * appended to the X509 encoding when the *_X509_AUX routines | 69 | * appended to the X509 encoding when the *_X509_AUX routines |
diff --git a/src/lib/libcrypto/cms/cms_lib.c b/src/lib/libcrypto/cms/cms_lib.c index b6580dd6f5..21adef7aec 100644 --- a/src/lib/libcrypto/cms/cms_lib.c +++ b/src/lib/libcrypto/cms/cms_lib.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: cms_lib.c,v 1.14 2019/08/12 18:13:13 jsing Exp $ */ | 1 | /* $OpenBSD: cms_lib.c,v 1.15 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 3 | * Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 4 | * project. | 4 | * project. |
| @@ -59,8 +59,9 @@ | |||
| 59 | #include <openssl/bio.h> | 59 | #include <openssl/bio.h> |
| 60 | #include <openssl/asn1.h> | 60 | #include <openssl/asn1.h> |
| 61 | #include <openssl/cms.h> | 61 | #include <openssl/cms.h> |
| 62 | #include "cms_lcl.h" | ||
| 63 | 62 | ||
| 63 | #include "cms_lcl.h" | ||
| 64 | #include "x509_lcl.h" | ||
| 64 | 65 | ||
| 65 | CMS_ContentInfo * | 66 | CMS_ContentInfo * |
| 66 | d2i_CMS_ContentInfo(CMS_ContentInfo **a, const unsigned char **in, long len) | 67 | d2i_CMS_ContentInfo(CMS_ContentInfo **a, const unsigned char **in, long len) |
diff --git a/src/lib/libcrypto/ocsp/ocsp_cl.c b/src/lib/libcrypto/ocsp/ocsp_cl.c index 677a1b35dd..da4b5ad04c 100644 --- a/src/lib/libcrypto/ocsp/ocsp_cl.c +++ b/src/lib/libcrypto/ocsp/ocsp_cl.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ocsp_cl.c,v 1.18 2021/10/24 13:50:14 tb Exp $ */ | 1 | /* $OpenBSD: ocsp_cl.c,v 1.19 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Written by Tom Titchener <Tom_Titchener@groove.net> for the OpenSSL | 2 | /* Written by Tom Titchener <Tom_Titchener@groove.net> for the OpenSSL |
| 3 | * project. */ | 3 | * project. */ |
| 4 | 4 | ||
| @@ -136,7 +136,7 @@ OCSP_request_add1_cert(OCSP_REQUEST *req, X509 *cert) | |||
| 136 | 136 | ||
| 137 | if (!sk_X509_push(sig->certs, cert)) | 137 | if (!sk_X509_push(sig->certs, cert)) |
| 138 | return 0; | 138 | return 0; |
| 139 | CRYPTO_add(&cert->references, 1, CRYPTO_LOCK_X509); | 139 | X509_up_ref(cert); |
| 140 | return 1; | 140 | return 1; |
| 141 | } | 141 | } |
| 142 | 142 | ||
diff --git a/src/lib/libcrypto/ocsp/ocsp_ext.c b/src/lib/libcrypto/ocsp/ocsp_ext.c index eb51cfbff5..c48843492d 100644 --- a/src/lib/libcrypto/ocsp/ocsp_ext.c +++ b/src/lib/libcrypto/ocsp/ocsp_ext.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ocsp_ext.c,v 1.18 2018/05/14 23:47:10 tb Exp $ */ | 1 | /* $OpenBSD: ocsp_ext.c,v 1.19 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Written by Tom Titchener <Tom_Titchener@groove.net> for the OpenSSL | 2 | /* Written by Tom Titchener <Tom_Titchener@groove.net> for the OpenSSL |
| 3 | * project. */ | 3 | * project. */ |
| 4 | 4 | ||
| @@ -70,6 +70,8 @@ | |||
| 70 | #include <openssl/x509.h> | 70 | #include <openssl/x509.h> |
| 71 | #include <openssl/x509v3.h> | 71 | #include <openssl/x509v3.h> |
| 72 | 72 | ||
| 73 | #include "x509_lcl.h" | ||
| 74 | |||
| 73 | /* Standard wrapper functions for extensions */ | 75 | /* Standard wrapper functions for extensions */ |
| 74 | 76 | ||
| 75 | /* OCSP request extensions */ | 77 | /* OCSP request extensions */ |
diff --git a/src/lib/libcrypto/ocsp/ocsp_srv.c b/src/lib/libcrypto/ocsp/ocsp_srv.c index a9e0aaab2f..5c9ac4d807 100644 --- a/src/lib/libcrypto/ocsp/ocsp_srv.c +++ b/src/lib/libcrypto/ocsp/ocsp_srv.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ocsp_srv.c,v 1.10 2017/01/29 17:49:23 beck Exp $ */ | 1 | /* $OpenBSD: ocsp_srv.c,v 1.11 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 3 | * project 2001. | 3 | * project 2001. |
| 4 | */ | 4 | */ |
| @@ -213,7 +213,7 @@ OCSP_basic_add1_cert(OCSP_BASICRESP *resp, X509 *cert) | |||
| 213 | 213 | ||
| 214 | if (!sk_X509_push(resp->certs, cert)) | 214 | if (!sk_X509_push(resp->certs, cert)) |
| 215 | return 0; | 215 | return 0; |
| 216 | CRYPTO_add(&cert->references, 1, CRYPTO_LOCK_X509); | 216 | X509_up_ref(cert); |
| 217 | return 1; | 217 | return 1; |
| 218 | } | 218 | } |
| 219 | 219 | ||
diff --git a/src/lib/libcrypto/ocsp/ocsp_vfy.c b/src/lib/libcrypto/ocsp/ocsp_vfy.c index e92b5d7326..67d45605ff 100644 --- a/src/lib/libcrypto/ocsp/ocsp_vfy.c +++ b/src/lib/libcrypto/ocsp/ocsp_vfy.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ocsp_vfy.c,v 1.16 2021/10/24 13:50:14 tb Exp $ */ | 1 | /* $OpenBSD: ocsp_vfy.c,v 1.17 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 3 | * project 2000. | 3 | * project 2000. |
| 4 | */ | 4 | */ |
| @@ -60,6 +60,8 @@ | |||
| 60 | #include <openssl/err.h> | 60 | #include <openssl/err.h> |
| 61 | #include <string.h> | 61 | #include <string.h> |
| 62 | 62 | ||
| 63 | #include "x509_lcl.h" | ||
| 64 | |||
| 63 | static int ocsp_find_signer(X509 **psigner, OCSP_BASICRESP *bs, | 65 | static int ocsp_find_signer(X509 **psigner, OCSP_BASICRESP *bs, |
| 64 | STACK_OF(X509) *certs, X509_STORE *st, unsigned long flags); | 66 | STACK_OF(X509) *certs, X509_STORE *st, unsigned long flags); |
| 65 | static X509 *ocsp_find_signer_sk(STACK_OF(X509) *certs, OCSP_RESPID *id); | 67 | static X509 *ocsp_find_signer_sk(STACK_OF(X509) *certs, OCSP_RESPID *id); |
diff --git a/src/lib/libcrypto/opensslfeatures.h b/src/lib/libcrypto/opensslfeatures.h index f16e25e782..49a5f15b59 100644 --- a/src/lib/libcrypto/opensslfeatures.h +++ b/src/lib/libcrypto/opensslfeatures.h | |||
| @@ -6,8 +6,6 @@ | |||
| 6 | #define LIBRESSL_HAS_TLS1_3 | 6 | #define LIBRESSL_HAS_TLS1_3 |
| 7 | #define LIBRESSL_HAS_DTLS1_2 | 7 | #define LIBRESSL_HAS_DTLS1_2 |
| 8 | 8 | ||
| 9 | #define LIBRESSL_OPAQUE_X509 | ||
| 10 | |||
| 11 | #define OPENSSL_THREADS | 9 | #define OPENSSL_THREADS |
| 12 | 10 | ||
| 13 | #define OPENSSL_NO_BUF_FREELISTS | 11 | #define OPENSSL_NO_BUF_FREELISTS |
diff --git a/src/lib/libcrypto/ossl_typ.h b/src/lib/libcrypto/ossl_typ.h index 234fdca1ea..99f120644f 100644 --- a/src/lib/libcrypto/ossl_typ.h +++ b/src/lib/libcrypto/ossl_typ.h | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ossl_typ.h,v 1.13 2015/09/30 04:10:07 doug Exp $ */ | 1 | /* $OpenBSD: ossl_typ.h,v 1.14 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* ==================================================================== | 2 | /* ==================================================================== |
| 3 | * Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved. | 3 | * Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved. |
| 4 | * | 4 | * |
| @@ -127,6 +127,11 @@ typedef struct X509_pubkey_st X509_PUBKEY; | |||
| 127 | typedef struct x509_store_st X509_STORE; | 127 | typedef struct x509_store_st X509_STORE; |
| 128 | typedef struct x509_store_ctx_st X509_STORE_CTX; | 128 | typedef struct x509_store_ctx_st X509_STORE_CTX; |
| 129 | 129 | ||
| 130 | typedef struct x509_object_st X509_OBJECT; | ||
| 131 | typedef struct x509_lookup_st X509_LOOKUP; | ||
| 132 | typedef struct x509_lookup_method_st X509_LOOKUP_METHOD; | ||
| 133 | typedef struct X509_VERIFY_PARAM_st X509_VERIFY_PARAM; | ||
| 134 | |||
| 130 | typedef struct pkcs8_priv_key_info_st PKCS8_PRIV_KEY_INFO; | 135 | typedef struct pkcs8_priv_key_info_st PKCS8_PRIV_KEY_INFO; |
| 131 | 136 | ||
| 132 | typedef struct v3_ext_ctx X509V3_CTX; | 137 | typedef struct v3_ext_ctx X509V3_CTX; |
diff --git a/src/lib/libcrypto/pkcs12/p12_attr.c b/src/lib/libcrypto/pkcs12/p12_attr.c index e8e340a2e2..dc38b7c897 100644 --- a/src/lib/libcrypto/pkcs12/p12_attr.c +++ b/src/lib/libcrypto/pkcs12/p12_attr.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: p12_attr.c,v 1.13 2021/07/09 14:07:59 tb Exp $ */ | 1 | /* $OpenBSD: p12_attr.c,v 1.14 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 3 | * project 1999. | 3 | * project 1999. |
| 4 | */ | 4 | */ |
| @@ -60,6 +60,8 @@ | |||
| 60 | 60 | ||
| 61 | #include <openssl/pkcs12.h> | 61 | #include <openssl/pkcs12.h> |
| 62 | 62 | ||
| 63 | #include "x509_lcl.h" | ||
| 64 | |||
| 63 | /* Add a local keyid to a safebag */ | 65 | /* Add a local keyid to a safebag */ |
| 64 | 66 | ||
| 65 | int | 67 | int |
diff --git a/src/lib/libcrypto/pkcs12/p12_mutl.c b/src/lib/libcrypto/pkcs12/p12_mutl.c index d45ab078fd..14ded8532d 100644 --- a/src/lib/libcrypto/pkcs12/p12_mutl.c +++ b/src/lib/libcrypto/pkcs12/p12_mutl.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: p12_mutl.c,v 1.24 2021/07/09 14:08:00 tb Exp $ */ | 1 | /* $OpenBSD: p12_mutl.c,v 1.25 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 3 | * project 1999. | 3 | * project 1999. |
| 4 | */ | 4 | */ |
| @@ -68,6 +68,8 @@ | |||
| 68 | #include <openssl/hmac.h> | 68 | #include <openssl/hmac.h> |
| 69 | #include <openssl/pkcs12.h> | 69 | #include <openssl/pkcs12.h> |
| 70 | 70 | ||
| 71 | #include "x509_lcl.h" | ||
| 72 | |||
| 71 | /* Generate a MAC */ | 73 | /* Generate a MAC */ |
| 72 | int | 74 | int |
| 73 | PKCS12_gen_mac(PKCS12 *p12, const char *pass, int passlen, | 75 | PKCS12_gen_mac(PKCS12 *p12, const char *pass, int passlen, |
diff --git a/src/lib/libcrypto/pkcs12/p12_npas.c b/src/lib/libcrypto/pkcs12/p12_npas.c index d6b12edab3..62ec368af7 100644 --- a/src/lib/libcrypto/pkcs12/p12_npas.c +++ b/src/lib/libcrypto/pkcs12/p12_npas.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: p12_npas.c,v 1.13 2018/05/13 14:22:34 tb Exp $ */ | 1 | /* $OpenBSD: p12_npas.c,v 1.14 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 3 | * project 1999. | 3 | * project 1999. |
| 4 | */ | 4 | */ |
| @@ -63,6 +63,8 @@ | |||
| 63 | #include <openssl/err.h> | 63 | #include <openssl/err.h> |
| 64 | #include <openssl/pkcs12.h> | 64 | #include <openssl/pkcs12.h> |
| 65 | 65 | ||
| 66 | #include "x509_lcl.h" | ||
| 67 | |||
| 66 | /* PKCS#12 password change routine */ | 68 | /* PKCS#12 password change routine */ |
| 67 | 69 | ||
| 68 | static int newpass_p12(PKCS12 *p12, const char *oldpass, const char *newpass); | 70 | static int newpass_p12(PKCS12 *p12, const char *oldpass, const char *newpass); |
diff --git a/src/lib/libcrypto/pkcs12/p12_p8d.c b/src/lib/libcrypto/pkcs12/p12_p8d.c index 0286d4acf5..ce1b28bc29 100644 --- a/src/lib/libcrypto/pkcs12/p12_p8d.c +++ b/src/lib/libcrypto/pkcs12/p12_p8d.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: p12_p8d.c,v 1.7 2018/05/13 14:28:14 tb Exp $ */ | 1 | /* $OpenBSD: p12_p8d.c,v 1.8 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 3 | * project 2001. | 3 | * project 2001. |
| 4 | */ | 4 | */ |
| @@ -60,6 +60,8 @@ | |||
| 60 | 60 | ||
| 61 | #include <openssl/pkcs12.h> | 61 | #include <openssl/pkcs12.h> |
| 62 | 62 | ||
| 63 | #include "x509_lcl.h" | ||
| 64 | |||
| 63 | PKCS8_PRIV_KEY_INFO * | 65 | PKCS8_PRIV_KEY_INFO * |
| 64 | PKCS8_decrypt(const X509_SIG *p8, const char *pass, int passlen) | 66 | PKCS8_decrypt(const X509_SIG *p8, const char *pass, int passlen) |
| 65 | { | 67 | { |
diff --git a/src/lib/libcrypto/pkcs12/p12_p8e.c b/src/lib/libcrypto/pkcs12/p12_p8e.c index 5e3fc6486a..7f5f61d69f 100644 --- a/src/lib/libcrypto/pkcs12/p12_p8e.c +++ b/src/lib/libcrypto/pkcs12/p12_p8e.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: p12_p8e.c,v 1.8 2017/01/29 17:49:23 beck Exp $ */ | 1 | /* $OpenBSD: p12_p8e.c,v 1.9 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 3 | * project 2001. | 3 | * project 2001. |
| 4 | */ | 4 | */ |
| @@ -61,6 +61,8 @@ | |||
| 61 | #include <openssl/err.h> | 61 | #include <openssl/err.h> |
| 62 | #include <openssl/pkcs12.h> | 62 | #include <openssl/pkcs12.h> |
| 63 | 63 | ||
| 64 | #include "x509_lcl.h" | ||
| 65 | |||
| 64 | X509_SIG * | 66 | X509_SIG * |
| 65 | PKCS8_encrypt(int pbe_nid, const EVP_CIPHER *cipher, const char *pass, | 67 | PKCS8_encrypt(int pbe_nid, const EVP_CIPHER *cipher, const char *pass, |
| 66 | int passlen, unsigned char *salt, int saltlen, int iter, | 68 | int passlen, unsigned char *salt, int saltlen, int iter, |
diff --git a/src/lib/libcrypto/pkcs7/pk7_doit.c b/src/lib/libcrypto/pkcs7/pk7_doit.c index 81a72f6815..6d921e5cff 100644 --- a/src/lib/libcrypto/pkcs7/pk7_doit.c +++ b/src/lib/libcrypto/pkcs7/pk7_doit.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: pk7_doit.c,v 1.44 2019/10/04 18:03:55 tb Exp $ */ | 1 | /* $OpenBSD: pk7_doit.c,v 1.45 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -65,6 +65,8 @@ | |||
| 65 | #include <openssl/x509.h> | 65 | #include <openssl/x509.h> |
| 66 | #include <openssl/x509v3.h> | 66 | #include <openssl/x509v3.h> |
| 67 | 67 | ||
| 68 | #include "x509_lcl.h" | ||
| 69 | |||
| 68 | static int add_attribute(STACK_OF(X509_ATTRIBUTE) **sk, int nid, int atrtype, | 70 | static int add_attribute(STACK_OF(X509_ATTRIBUTE) **sk, int nid, int atrtype, |
| 69 | void *value); | 71 | void *value); |
| 70 | static ASN1_TYPE *get_attribute(STACK_OF(X509_ATTRIBUTE) *sk, int nid); | 72 | static ASN1_TYPE *get_attribute(STACK_OF(X509_ATTRIBUTE) *sk, int nid); |
diff --git a/src/lib/libcrypto/pkcs7/pk7_lib.c b/src/lib/libcrypto/pkcs7/pk7_lib.c index afcc179240..24cb0fe4c6 100644 --- a/src/lib/libcrypto/pkcs7/pk7_lib.c +++ b/src/lib/libcrypto/pkcs7/pk7_lib.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: pk7_lib.c,v 1.21 2020/01/21 10:18:52 inoguchi Exp $ */ | 1 | /* $OpenBSD: pk7_lib.c,v 1.22 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -63,6 +63,7 @@ | |||
| 63 | #include <openssl/x509.h> | 63 | #include <openssl/x509.h> |
| 64 | 64 | ||
| 65 | #include "asn1_locl.h" | 65 | #include "asn1_locl.h" |
| 66 | #include "x509_lcl.h" | ||
| 66 | 67 | ||
| 67 | long | 68 | long |
| 68 | PKCS7_ctrl(PKCS7 *p7, int cmd, long larg, char *parg) | 69 | PKCS7_ctrl(PKCS7 *p7, int cmd, long larg, char *parg) |
diff --git a/src/lib/libcrypto/pkcs7/pk7_smime.c b/src/lib/libcrypto/pkcs7/pk7_smime.c index bf9f2dd82a..f11d23e30d 100644 --- a/src/lib/libcrypto/pkcs7/pk7_smime.c +++ b/src/lib/libcrypto/pkcs7/pk7_smime.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: pk7_smime.c,v 1.22 2017/01/29 17:49:23 beck Exp $ */ | 1 | /* $OpenBSD: pk7_smime.c,v 1.23 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 3 | * project. | 3 | * project. |
| 4 | */ | 4 | */ |
| @@ -64,6 +64,8 @@ | |||
| 64 | #include <openssl/x509.h> | 64 | #include <openssl/x509.h> |
| 65 | #include <openssl/x509v3.h> | 65 | #include <openssl/x509v3.h> |
| 66 | 66 | ||
| 67 | #include "x509_lcl.h" | ||
| 68 | |||
| 67 | static int pkcs7_copy_existing_digest(PKCS7 *p7, PKCS7_SIGNER_INFO *si); | 69 | static int pkcs7_copy_existing_digest(PKCS7 *p7, PKCS7_SIGNER_INFO *si); |
| 68 | 70 | ||
| 69 | PKCS7 * | 71 | PKCS7 * |
diff --git a/src/lib/libcrypto/rsa/rsa_sign.c b/src/lib/libcrypto/rsa/rsa_sign.c index d205046bd3..9ee61a381c 100644 --- a/src/lib/libcrypto/rsa/rsa_sign.c +++ b/src/lib/libcrypto/rsa/rsa_sign.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: rsa_sign.c,v 1.32 2021/05/14 18:03:42 tb Exp $ */ | 1 | /* $OpenBSD: rsa_sign.c,v 1.33 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -66,6 +66,7 @@ | |||
| 66 | #include <openssl/x509.h> | 66 | #include <openssl/x509.h> |
| 67 | 67 | ||
| 68 | #include "rsa_locl.h" | 68 | #include "rsa_locl.h" |
| 69 | #include "x509_lcl.h" | ||
| 69 | 70 | ||
| 70 | /* Size of an SSL signature: MD5+SHA1 */ | 71 | /* Size of an SSL signature: MD5+SHA1 */ |
| 71 | #define SSL_SIG_LENGTH 36 | 72 | #define SSL_SIG_LENGTH 36 |
diff --git a/src/lib/libcrypto/ts/ts_lib.c b/src/lib/libcrypto/ts/ts_lib.c index 293564118f..cdfa9db351 100644 --- a/src/lib/libcrypto/ts/ts_lib.c +++ b/src/lib/libcrypto/ts/ts_lib.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ts_lib.c,v 1.10 2015/09/10 14:29:22 jsing Exp $ */ | 1 | /* $OpenBSD: ts_lib.c,v 1.11 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Written by Zoltan Glozik (zglozik@stones.com) for the OpenSSL | 2 | /* Written by Zoltan Glozik (zglozik@stones.com) for the OpenSSL |
| 3 | * project 2002. | 3 | * project 2002. |
| 4 | */ | 4 | */ |
| @@ -64,6 +64,8 @@ | |||
| 64 | #include <openssl/ts.h> | 64 | #include <openssl/ts.h> |
| 65 | #include <openssl/x509v3.h> | 65 | #include <openssl/x509v3.h> |
| 66 | 66 | ||
| 67 | #include "x509_lcl.h" | ||
| 68 | |||
| 67 | /* Local function declarations. */ | 69 | /* Local function declarations. */ |
| 68 | 70 | ||
| 69 | /* Function definitions. */ | 71 | /* Function definitions. */ |
diff --git a/src/lib/libcrypto/ts/ts_rsp_sign.c b/src/lib/libcrypto/ts/ts_rsp_sign.c index 6125fdd4be..828407aa4b 100644 --- a/src/lib/libcrypto/ts/ts_rsp_sign.c +++ b/src/lib/libcrypto/ts/ts_rsp_sign.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ts_rsp_sign.c,v 1.23 2019/07/03 03:24:04 deraadt Exp $ */ | 1 | /* $OpenBSD: ts_rsp_sign.c,v 1.24 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Written by Zoltan Glozik (zglozik@stones.com) for the OpenSSL | 2 | /* Written by Zoltan Glozik (zglozik@stones.com) for the OpenSSL |
| 3 | * project 2002. | 3 | * project 2002. |
| 4 | */ | 4 | */ |
| @@ -65,6 +65,8 @@ | |||
| 65 | #include <openssl/pkcs7.h> | 65 | #include <openssl/pkcs7.h> |
| 66 | #include <openssl/ts.h> | 66 | #include <openssl/ts.h> |
| 67 | 67 | ||
| 68 | #include "x509_lcl.h" | ||
| 69 | |||
| 68 | /* Private function declarations. */ | 70 | /* Private function declarations. */ |
| 69 | 71 | ||
| 70 | static ASN1_INTEGER *def_serial_cb(struct TS_resp_ctx *, void *); | 72 | static ASN1_INTEGER *def_serial_cb(struct TS_resp_ctx *, void *); |
diff --git a/src/lib/libcrypto/ts/ts_rsp_verify.c b/src/lib/libcrypto/ts/ts_rsp_verify.c index 46704dfd2b..2e72ff47ae 100644 --- a/src/lib/libcrypto/ts/ts_rsp_verify.c +++ b/src/lib/libcrypto/ts/ts_rsp_verify.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ts_rsp_verify.c,v 1.21 2021/07/02 11:15:08 schwarze Exp $ */ | 1 | /* $OpenBSD: ts_rsp_verify.c,v 1.22 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Written by Zoltan Glozik (zglozik@stones.com) for the OpenSSL | 2 | /* Written by Zoltan Glozik (zglozik@stones.com) for the OpenSSL |
| 3 | * project 2002. | 3 | * project 2002. |
| 4 | */ | 4 | */ |
| @@ -64,6 +64,8 @@ | |||
| 64 | #include <openssl/pkcs7.h> | 64 | #include <openssl/pkcs7.h> |
| 65 | #include <openssl/ts.h> | 65 | #include <openssl/ts.h> |
| 66 | 66 | ||
| 67 | #include "x509_lcl.h" | ||
| 68 | |||
| 67 | /* Private function declarations. */ | 69 | /* Private function declarations. */ |
| 68 | 70 | ||
| 69 | static int TS_verify_cert(X509_STORE *store, STACK_OF(X509) *untrusted, | 71 | static int TS_verify_cert(X509_STORE *store, STACK_OF(X509) *untrusted, |
diff --git a/src/lib/libcrypto/x509/by_dir.c b/src/lib/libcrypto/x509/by_dir.c index 04eada8ad0..0ff60644f5 100644 --- a/src/lib/libcrypto/x509/by_dir.c +++ b/src/lib/libcrypto/x509/by_dir.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: by_dir.c,v 1.39 2018/08/05 14:17:12 bcook Exp $ */ | 1 | /* $OpenBSD: by_dir.c,v 1.40 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -56,6 +56,7 @@ | |||
| 56 | * [including the GNU Public Licence.] | 56 | * [including the GNU Public Licence.] |
| 57 | */ | 57 | */ |
| 58 | 58 | ||
| 59 | #include <sys/stat.h> | ||
| 59 | #include <sys/types.h> | 60 | #include <sys/types.h> |
| 60 | 61 | ||
| 61 | #include <errno.h> | 62 | #include <errno.h> |
| @@ -70,7 +71,7 @@ | |||
| 70 | #include <openssl/lhash.h> | 71 | #include <openssl/lhash.h> |
| 71 | #include <openssl/x509.h> | 72 | #include <openssl/x509.h> |
| 72 | 73 | ||
| 73 | # include <sys/stat.h> | 74 | #include "x509_lcl.h" |
| 74 | 75 | ||
| 75 | typedef struct lookup_dir_hashes_st { | 76 | typedef struct lookup_dir_hashes_st { |
| 76 | unsigned long hash; | 77 | unsigned long hash; |
diff --git a/src/lib/libcrypto/x509/by_file.c b/src/lib/libcrypto/x509/by_file.c index b2c8ef6cfa..f719636412 100644 --- a/src/lib/libcrypto/x509/by_file.c +++ b/src/lib/libcrypto/x509/by_file.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: by_file.c,v 1.21 2017/01/29 17:49:23 beck Exp $ */ | 1 | /* $OpenBSD: by_file.c,v 1.22 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -67,6 +67,8 @@ | |||
| 67 | #include <openssl/lhash.h> | 67 | #include <openssl/lhash.h> |
| 68 | #include <openssl/x509.h> | 68 | #include <openssl/x509.h> |
| 69 | 69 | ||
| 70 | #include "x509_lcl.h" | ||
| 71 | |||
| 70 | static int by_file_ctrl(X509_LOOKUP *ctx, int cmd, const char *argc, | 72 | static int by_file_ctrl(X509_LOOKUP *ctx, int cmd, const char *argc, |
| 71 | long argl, char **ret); | 73 | long argl, char **ret); |
| 72 | 74 | ||
diff --git a/src/lib/libcrypto/x509/by_mem.c b/src/lib/libcrypto/x509/by_mem.c index 34d4040d84..272877f843 100644 --- a/src/lib/libcrypto/x509/by_mem.c +++ b/src/lib/libcrypto/x509/by_mem.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: by_mem.c,v 1.4 2017/01/29 17:49:23 beck Exp $ */ | 1 | /* $OpenBSD: by_mem.c,v 1.5 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -68,6 +68,8 @@ | |||
| 68 | #include <openssl/lhash.h> | 68 | #include <openssl/lhash.h> |
| 69 | #include <openssl/x509.h> | 69 | #include <openssl/x509.h> |
| 70 | 70 | ||
| 71 | #include "x509_lcl.h" | ||
| 72 | |||
| 71 | static int by_mem_ctrl(X509_LOOKUP *, int, const char *, long, char **); | 73 | static int by_mem_ctrl(X509_LOOKUP *, int, const char *, long, char **); |
| 72 | 74 | ||
| 73 | static X509_LOOKUP_METHOD x509_mem_lookup = { | 75 | static X509_LOOKUP_METHOD x509_mem_lookup = { |
diff --git a/src/lib/libcrypto/x509/pcy_cache.c b/src/lib/libcrypto/x509/pcy_cache.c index 896ba7d59e..debca30286 100644 --- a/src/lib/libcrypto/x509/pcy_cache.c +++ b/src/lib/libcrypto/x509/pcy_cache.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: pcy_cache.c,v 1.1 2020/06/04 15:19:31 jsing Exp $ */ | 1 | /* $OpenBSD: pcy_cache.c,v 1.2 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 3 | * project 2004. | 3 | * project 2004. |
| 4 | */ | 4 | */ |
| @@ -60,6 +60,7 @@ | |||
| 60 | #include <openssl/x509v3.h> | 60 | #include <openssl/x509v3.h> |
| 61 | 61 | ||
| 62 | #include "pcy_int.h" | 62 | #include "pcy_int.h" |
| 63 | #include "x509_lcl.h" | ||
| 63 | 64 | ||
| 64 | static int policy_data_cmp(const X509_POLICY_DATA * const *a, | 65 | static int policy_data_cmp(const X509_POLICY_DATA * const *a, |
| 65 | const X509_POLICY_DATA * const *b); | 66 | const X509_POLICY_DATA * const *b); |
diff --git a/src/lib/libcrypto/x509/pcy_map.c b/src/lib/libcrypto/x509/pcy_map.c index 287a430c2c..f2e5d32552 100644 --- a/src/lib/libcrypto/x509/pcy_map.c +++ b/src/lib/libcrypto/x509/pcy_map.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: pcy_map.c,v 1.1 2020/06/04 15:19:31 jsing Exp $ */ | 1 | /* $OpenBSD: pcy_map.c,v 1.2 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 3 | * project 2004. | 3 | * project 2004. |
| 4 | */ | 4 | */ |
| @@ -60,6 +60,7 @@ | |||
| 60 | #include <openssl/x509v3.h> | 60 | #include <openssl/x509v3.h> |
| 61 | 61 | ||
| 62 | #include "pcy_int.h" | 62 | #include "pcy_int.h" |
| 63 | #include "x509_lcl.h" | ||
| 63 | 64 | ||
| 64 | /* Set policy mapping entries in cache. | 65 | /* Set policy mapping entries in cache. |
| 65 | * Note: this modifies the passed POLICY_MAPPINGS structure | 66 | * Note: this modifies the passed POLICY_MAPPINGS structure |
diff --git a/src/lib/libcrypto/x509/pcy_tree.c b/src/lib/libcrypto/x509/pcy_tree.c index d0f7cd1ada..284c08e66a 100644 --- a/src/lib/libcrypto/x509/pcy_tree.c +++ b/src/lib/libcrypto/x509/pcy_tree.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: pcy_tree.c,v 1.1 2020/06/04 15:19:31 jsing Exp $ */ | 1 | /* $OpenBSD: pcy_tree.c,v 1.2 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 3 | * project 2004. | 3 | * project 2004. |
| 4 | */ | 4 | */ |
| @@ -60,6 +60,7 @@ | |||
| 60 | #include <openssl/x509v3.h> | 60 | #include <openssl/x509v3.h> |
| 61 | 61 | ||
| 62 | #include "pcy_int.h" | 62 | #include "pcy_int.h" |
| 63 | #include "x509_lcl.h" | ||
| 63 | 64 | ||
| 64 | /* Enable this to print out the complete policy tree at various point during | 65 | /* Enable this to print out the complete policy tree at various point during |
| 65 | * evaluation. | 66 | * evaluation. |
diff --git a/src/lib/libcrypto/x509/x509.h b/src/lib/libcrypto/x509/x509.h index 9a44bf30aa..4624628bf8 100644 --- a/src/lib/libcrypto/x509/x509.h +++ b/src/lib/libcrypto/x509/x509.h | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: x509.h,v 1.86 2021/11/01 08:14:36 tb Exp $ */ | 1 | /* $OpenBSD: x509.h,v 1.87 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -139,171 +139,33 @@ typedef struct X509_val_st { | |||
| 139 | ASN1_TIME *notAfter; | 139 | ASN1_TIME *notAfter; |
| 140 | } X509_VAL; | 140 | } X509_VAL; |
| 141 | 141 | ||
| 142 | #if defined(LIBRESSL_CRYPTO_INTERNAL) || !defined(LIBRESSL_OPAQUE_X509) | ||
| 143 | struct X509_pubkey_st { | ||
| 144 | X509_ALGOR *algor; | ||
| 145 | ASN1_BIT_STRING *public_key; | ||
| 146 | EVP_PKEY *pkey; | ||
| 147 | }; | ||
| 148 | |||
| 149 | typedef struct X509_sig_st { | ||
| 150 | X509_ALGOR *algor; | ||
| 151 | ASN1_OCTET_STRING *digest; | ||
| 152 | } X509_SIG; | ||
| 153 | |||
| 154 | typedef struct X509_name_entry_st { | ||
| 155 | ASN1_OBJECT *object; | ||
| 156 | ASN1_STRING *value; | ||
| 157 | int set; | ||
| 158 | int size; /* temp variable */ | ||
| 159 | } X509_NAME_ENTRY; | ||
| 160 | #else | ||
| 161 | typedef struct X509_sig_st X509_SIG; | 142 | typedef struct X509_sig_st X509_SIG; |
| 143 | |||
| 162 | typedef struct X509_name_entry_st X509_NAME_ENTRY; | 144 | typedef struct X509_name_entry_st X509_NAME_ENTRY; |
| 163 | #endif | ||
| 164 | 145 | ||
| 165 | DECLARE_STACK_OF(X509_NAME_ENTRY) | 146 | DECLARE_STACK_OF(X509_NAME_ENTRY) |
| 166 | 147 | ||
| 167 | #if defined(LIBRESSL_CRYPTO_INTERNAL) || !defined(LIBRESSL_OPAQUE_X509) | ||
| 168 | /* we always keep X509_NAMEs in 2 forms. */ | ||
| 169 | struct X509_name_st { | ||
| 170 | STACK_OF(X509_NAME_ENTRY) *entries; | ||
| 171 | int modified; /* true if 'bytes' needs to be built */ | ||
| 172 | #ifndef OPENSSL_NO_BUFFER | ||
| 173 | BUF_MEM *bytes; | ||
| 174 | #else | ||
| 175 | char *bytes; | ||
| 176 | #endif | ||
| 177 | /* unsigned long hash; Keep the hash around for lookups */ | ||
| 178 | unsigned char *canon_enc; | ||
| 179 | int canon_enclen; | ||
| 180 | } /* X509_NAME */; | ||
| 181 | #endif | ||
| 182 | |||
| 183 | DECLARE_STACK_OF(X509_NAME) | 148 | DECLARE_STACK_OF(X509_NAME) |
| 184 | 149 | ||
| 185 | #define X509_EX_V_NETSCAPE_HACK 0x8000 | 150 | #define X509_EX_V_NETSCAPE_HACK 0x8000 |
| 186 | #define X509_EX_V_INIT 0x0001 | 151 | #define X509_EX_V_INIT 0x0001 |
| 187 | #if defined(LIBRESSL_CRYPTO_INTERNAL) || !defined(LIBRESSL_OPAQUE_X509) | ||
| 188 | typedef struct X509_extension_st { | ||
| 189 | ASN1_OBJECT *object; | ||
| 190 | ASN1_BOOLEAN critical; | ||
| 191 | ASN1_OCTET_STRING *value; | ||
| 192 | } X509_EXTENSION; | ||
| 193 | #else | ||
| 194 | typedef struct X509_extension_st X509_EXTENSION; | 152 | typedef struct X509_extension_st X509_EXTENSION; |
| 195 | #endif | ||
| 196 | 153 | ||
| 197 | typedef STACK_OF(X509_EXTENSION) X509_EXTENSIONS; | 154 | typedef STACK_OF(X509_EXTENSION) X509_EXTENSIONS; |
| 198 | 155 | ||
| 199 | DECLARE_STACK_OF(X509_EXTENSION) | 156 | DECLARE_STACK_OF(X509_EXTENSION) |
| 200 | 157 | ||
| 201 | /* a sequence of these are used */ | ||
| 202 | #if defined(LIBRESSL_CRYPTO_INTERNAL) || !defined(LIBRESSL_OPAQUE_X509) | ||
| 203 | typedef struct x509_attributes_st { | ||
| 204 | ASN1_OBJECT *object; | ||
| 205 | int single; /* 0 for a set, 1 for a single item (which is wrong) */ | ||
| 206 | union { | ||
| 207 | char *ptr; | ||
| 208 | /* 0 */ STACK_OF(ASN1_TYPE) *set; | ||
| 209 | /* 1 */ ASN1_TYPE *single; | ||
| 210 | } value; | ||
| 211 | } X509_ATTRIBUTE; | ||
| 212 | #else | ||
| 213 | typedef struct x509_attributes_st X509_ATTRIBUTE; | 158 | typedef struct x509_attributes_st X509_ATTRIBUTE; |
| 214 | #endif | ||
| 215 | 159 | ||
| 216 | DECLARE_STACK_OF(X509_ATTRIBUTE) | 160 | DECLARE_STACK_OF(X509_ATTRIBUTE) |
| 217 | 161 | ||
| 218 | |||
| 219 | #if defined(LIBRESSL_CRYPTO_INTERNAL) || !defined(LIBRESSL_OPAQUE_X509) | ||
| 220 | typedef struct X509_req_info_st { | ||
| 221 | ASN1_ENCODING enc; | ||
| 222 | ASN1_INTEGER *version; | ||
| 223 | X509_NAME *subject; | ||
| 224 | X509_PUBKEY *pubkey; | ||
| 225 | /* d=2 hl=2 l= 0 cons: cont: 00 */ | ||
| 226 | STACK_OF(X509_ATTRIBUTE) *attributes; /* [ 0 ] */ | ||
| 227 | } X509_REQ_INFO; | ||
| 228 | |||
| 229 | typedef struct X509_req_st { | ||
| 230 | X509_REQ_INFO *req_info; | ||
| 231 | X509_ALGOR *sig_alg; | ||
| 232 | ASN1_BIT_STRING *signature; | ||
| 233 | int references; | ||
| 234 | } X509_REQ; | ||
| 235 | |||
| 236 | typedef struct x509_cinf_st { | ||
| 237 | ASN1_INTEGER *version; /* [ 0 ] default of v1 */ | ||
| 238 | ASN1_INTEGER *serialNumber; | ||
| 239 | X509_ALGOR *signature; | ||
| 240 | X509_NAME *issuer; | ||
| 241 | X509_VAL *validity; | ||
| 242 | X509_NAME *subject; | ||
| 243 | X509_PUBKEY *key; | ||
| 244 | ASN1_BIT_STRING *issuerUID; /* [ 1 ] optional in v2 */ | ||
| 245 | ASN1_BIT_STRING *subjectUID; /* [ 2 ] optional in v2 */ | ||
| 246 | STACK_OF(X509_EXTENSION) *extensions; /* [ 3 ] optional in v3 */ | ||
| 247 | ASN1_ENCODING enc; | ||
| 248 | } X509_CINF; | ||
| 249 | #else | ||
| 250 | typedef struct X509_req_info_st X509_REQ_INFO; | 162 | typedef struct X509_req_info_st X509_REQ_INFO; |
| 251 | typedef struct X509_req_st X509_REQ; | ||
| 252 | typedef struct x509_cinf_st X509_CINF; | ||
| 253 | #endif | ||
| 254 | 163 | ||
| 255 | /* This stuff is certificate "auxiliary info" | 164 | typedef struct X509_req_st X509_REQ; |
| 256 | * it contains details which are useful in certificate | ||
| 257 | * stores and databases. When used this is tagged onto | ||
| 258 | * the end of the certificate itself | ||
| 259 | */ | ||
| 260 | 165 | ||
| 261 | #if defined(LIBRESSL_CRYPTO_INTERNAL) || !defined(LIBRESSL_OPAQUE_X509) | ||
| 262 | typedef struct x509_cert_aux_st { | ||
| 263 | STACK_OF(ASN1_OBJECT) *trust; /* trusted uses */ | ||
| 264 | STACK_OF(ASN1_OBJECT) *reject; /* rejected uses */ | ||
| 265 | ASN1_UTF8STRING *alias; /* "friendly name" */ | ||
| 266 | ASN1_OCTET_STRING *keyid; /* key id of private key */ | ||
| 267 | STACK_OF(X509_ALGOR) *other; /* other unspecified info */ | ||
| 268 | } X509_CERT_AUX; | ||
| 269 | #else | ||
| 270 | typedef struct x509_cert_aux_st X509_CERT_AUX; | 166 | typedef struct x509_cert_aux_st X509_CERT_AUX; |
| 271 | #endif | ||
| 272 | 167 | ||
| 273 | struct x509_st; | 168 | typedef struct x509_cinf_st X509_CINF; |
| 274 | |||
| 275 | #if defined(LIBRESSL_CRYPTO_INTERNAL) || !defined(LIBRESSL_OPAQUE_X509) | ||
| 276 | struct x509_st { | ||
| 277 | X509_CINF *cert_info; | ||
| 278 | X509_ALGOR *sig_alg; | ||
| 279 | ASN1_BIT_STRING *signature; | ||
| 280 | int valid; | ||
| 281 | int references; | ||
| 282 | char *name; | ||
| 283 | CRYPTO_EX_DATA ex_data; | ||
| 284 | /* These contain copies of various extension values */ | ||
| 285 | long ex_pathlen; | ||
| 286 | long ex_pcpathlen; | ||
| 287 | unsigned long ex_flags; | ||
| 288 | unsigned long ex_kusage; | ||
| 289 | unsigned long ex_xkusage; | ||
| 290 | unsigned long ex_nscert; | ||
| 291 | ASN1_OCTET_STRING *skid; | ||
| 292 | AUTHORITY_KEYID *akid; | ||
| 293 | X509_POLICY_CACHE *policy_cache; | ||
| 294 | STACK_OF(DIST_POINT) *crldp; | ||
| 295 | STACK_OF(GENERAL_NAME) *altname; | ||
| 296 | NAME_CONSTRAINTS *nc; | ||
| 297 | #ifndef OPENSSL_NO_RFC3779 | ||
| 298 | STACK_OF(IPAddressFamily) *rfc3779_addr; | ||
| 299 | struct ASIdentifiers_st *rfc3779_asid; | ||
| 300 | #endif | ||
| 301 | #ifndef OPENSSL_NO_SHA | ||
| 302 | unsigned char sha1_hash[SHA_DIGEST_LENGTH]; | ||
| 303 | #endif | ||
| 304 | X509_CERT_AUX *aux; | ||
| 305 | } /* X509 */; | ||
| 306 | #endif | ||
| 307 | 169 | ||
| 308 | DECLARE_STACK_OF(X509) | 170 | DECLARE_STACK_OF(X509) |
| 309 | 171 | ||
| @@ -322,6 +184,7 @@ DECLARE_STACK_OF(X509_TRUST) | |||
| 322 | 184 | ||
| 323 | /* standard trust ids */ | 185 | /* standard trust ids */ |
| 324 | 186 | ||
| 187 | /* OpenSSL changed this to 0 */ | ||
| 325 | #define X509_TRUST_DEFAULT -1 /* Only valid in purpose settings */ | 188 | #define X509_TRUST_DEFAULT -1 /* Only valid in purpose settings */ |
| 326 | 189 | ||
| 327 | #define X509_TRUST_COMPAT 1 | 190 | #define X509_TRUST_COMPAT 1 |
| @@ -422,66 +285,13 @@ DECLARE_STACK_OF(X509_TRUST) | |||
| 422 | XN_FLAG_FN_LN | \ | 285 | XN_FLAG_FN_LN | \ |
| 423 | XN_FLAG_FN_ALIGN) | 286 | XN_FLAG_FN_ALIGN) |
| 424 | 287 | ||
| 425 | #if defined(LIBRESSL_CRYPTO_INTERNAL) || !defined(LIBRESSL_OPAQUE_X509) | ||
| 426 | struct x509_revoked_st { | ||
| 427 | ASN1_INTEGER *serialNumber; | ||
| 428 | ASN1_TIME *revocationDate; | ||
| 429 | STACK_OF(X509_EXTENSION) /* optional */ *extensions; | ||
| 430 | /* Set up if indirect CRL */ | ||
| 431 | STACK_OF(GENERAL_NAME) *issuer; | ||
| 432 | /* Revocation reason */ | ||
| 433 | int reason; | ||
| 434 | int sequence; /* load sequence */ | ||
| 435 | }; | ||
| 436 | #endif | ||
| 437 | |||
| 438 | DECLARE_STACK_OF(X509_REVOKED) | 288 | DECLARE_STACK_OF(X509_REVOKED) |
| 439 | 289 | ||
| 440 | #if defined(LIBRESSL_CRYPTO_INTERNAL) || !defined(LIBRESSL_OPAQUE_X509) | ||
| 441 | typedef struct X509_crl_info_st { | ||
| 442 | ASN1_INTEGER *version; | ||
| 443 | X509_ALGOR *sig_alg; | ||
| 444 | X509_NAME *issuer; | ||
| 445 | ASN1_TIME *lastUpdate; | ||
| 446 | ASN1_TIME *nextUpdate; | ||
| 447 | STACK_OF(X509_REVOKED) *revoked; | ||
| 448 | STACK_OF(X509_EXTENSION) /* [0] */ *extensions; | ||
| 449 | ASN1_ENCODING enc; | ||
| 450 | } X509_CRL_INFO; | ||
| 451 | #else | ||
| 452 | typedef struct X509_crl_info_st X509_CRL_INFO; | 290 | typedef struct X509_crl_info_st X509_CRL_INFO; |
| 453 | #endif | ||
| 454 | |||
| 455 | #if defined(LIBRESSL_CRYPTO_INTERNAL) || !defined(LIBRESSL_OPAQUE_X509) | ||
| 456 | struct X509_crl_st { | ||
| 457 | /* actual signature */ | ||
| 458 | X509_CRL_INFO *crl; | ||
| 459 | X509_ALGOR *sig_alg; | ||
| 460 | ASN1_BIT_STRING *signature; | ||
| 461 | int references; | ||
| 462 | int flags; | ||
| 463 | /* Copies of various extensions */ | ||
| 464 | AUTHORITY_KEYID *akid; | ||
| 465 | ISSUING_DIST_POINT *idp; | ||
| 466 | /* Convenient breakdown of IDP */ | ||
| 467 | int idp_flags; | ||
| 468 | int idp_reasons; | ||
| 469 | /* CRL and base CRL numbers for delta processing */ | ||
| 470 | ASN1_INTEGER *crl_number; | ||
| 471 | ASN1_INTEGER *base_crl_number; | ||
| 472 | #ifndef OPENSSL_NO_SHA | ||
| 473 | unsigned char sha1_hash[SHA_DIGEST_LENGTH]; | ||
| 474 | #endif | ||
| 475 | STACK_OF(GENERAL_NAMES) *issuers; | ||
| 476 | const X509_CRL_METHOD *meth; | ||
| 477 | void *meth_data; | ||
| 478 | } /* X509_CRL */; | ||
| 479 | #endif | ||
| 480 | 291 | ||
| 481 | DECLARE_STACK_OF(X509_CRL) | 292 | DECLARE_STACK_OF(X509_CRL) |
| 482 | 293 | ||
| 483 | typedef struct private_key_st | 294 | typedef struct private_key_st { |
| 484 | { | ||
| 485 | int version; | 295 | int version; |
| 486 | /* The PKCS#8 data types */ | 296 | /* The PKCS#8 data types */ |
| 487 | X509_ALGOR *enc_algor; | 297 | X509_ALGOR *enc_algor; |
| @@ -499,7 +309,7 @@ typedef struct private_key_st | |||
| 499 | EVP_CIPHER_INFO cipher; | 309 | EVP_CIPHER_INFO cipher; |
| 500 | 310 | ||
| 501 | int references; | 311 | int references; |
| 502 | } X509_PKEY; | 312 | } X509_PKEY; |
| 503 | 313 | ||
| 504 | #ifndef OPENSSL_NO_EVP | 314 | #ifndef OPENSSL_NO_EVP |
| 505 | typedef struct X509_info_st { | 315 | typedef struct X509_info_st { |
| @@ -561,18 +371,6 @@ typedef struct PBKDF2PARAM_st { | |||
| 561 | X509_ALGOR *prf; | 371 | X509_ALGOR *prf; |
| 562 | } PBKDF2PARAM; | 372 | } PBKDF2PARAM; |
| 563 | 373 | ||
| 564 | |||
| 565 | /* PKCS#8 private key info structure */ | ||
| 566 | |||
| 567 | #if defined(LIBRESSL_CRYPTO_INTERNAL) || !defined(LIBRESSL_OPAQUE_X509) | ||
| 568 | struct pkcs8_priv_key_info_st { | ||
| 569 | ASN1_INTEGER *version; | ||
| 570 | X509_ALGOR *pkeyalg; | ||
| 571 | ASN1_OCTET_STRING *pkey; | ||
| 572 | STACK_OF(X509_ATTRIBUTE) *attributes; | ||
| 573 | }; | ||
| 574 | #endif | ||
| 575 | |||
| 576 | #ifdef __cplusplus | 374 | #ifdef __cplusplus |
| 577 | } | 375 | } |
| 578 | #endif | 376 | #endif |
diff --git a/src/lib/libcrypto/x509/x509_addr.c b/src/lib/libcrypto/x509/x509_addr.c index 313896167b..ddb0e4af12 100644 --- a/src/lib/libcrypto/x509/x509_addr.c +++ b/src/lib/libcrypto/x509/x509_addr.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: x509_addr.c,v 1.18 2021/10/25 11:55:27 tb Exp $ */ | 1 | /* $OpenBSD: x509_addr.c,v 1.19 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Copyright 2006-2016 The OpenSSL Project Authors. All Rights Reserved. | 3 | * Copyright 2006-2016 The OpenSSL Project Authors. All Rights Reserved. |
| 4 | * | 4 | * |
| @@ -24,6 +24,8 @@ | |||
| 24 | #include <openssl/x509.h> | 24 | #include <openssl/x509.h> |
| 25 | #include <openssl/x509v3.h> | 25 | #include <openssl/x509v3.h> |
| 26 | 26 | ||
| 27 | #include "x509_lcl.h" | ||
| 28 | |||
| 27 | #ifndef OPENSSL_NO_RFC3779 | 29 | #ifndef OPENSSL_NO_RFC3779 |
| 28 | 30 | ||
| 29 | /* | 31 | /* |
diff --git a/src/lib/libcrypto/x509/x509_asid.c b/src/lib/libcrypto/x509/x509_asid.c index d990bc0158..d2247e09c1 100644 --- a/src/lib/libcrypto/x509/x509_asid.c +++ b/src/lib/libcrypto/x509/x509_asid.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: x509_asid.c,v 1.18 2021/10/25 11:55:27 tb Exp $ */ | 1 | /* $OpenBSD: x509_asid.c,v 1.19 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Copyright 2006-2018 The OpenSSL Project Authors. All Rights Reserved. | 3 | * Copyright 2006-2018 The OpenSSL Project Authors. All Rights Reserved. |
| 4 | * | 4 | * |
| @@ -26,6 +26,8 @@ | |||
| 26 | #include <openssl/x509.h> | 26 | #include <openssl/x509.h> |
| 27 | #include <openssl/x509v3.h> | 27 | #include <openssl/x509v3.h> |
| 28 | 28 | ||
| 29 | #include "x509_lcl.h" | ||
| 30 | |||
| 29 | #ifndef OPENSSL_NO_RFC3779 | 31 | #ifndef OPENSSL_NO_RFC3779 |
| 30 | 32 | ||
| 31 | static const ASN1_TEMPLATE ASRange_seq_tt[] = { | 33 | static const ASN1_TEMPLATE ASRange_seq_tt[] = { |
diff --git a/src/lib/libcrypto/x509/x509_att.c b/src/lib/libcrypto/x509/x509_att.c index 1479b918c7..38aa063143 100644 --- a/src/lib/libcrypto/x509/x509_att.c +++ b/src/lib/libcrypto/x509/x509_att.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: x509_att.c,v 1.17 2018/05/18 19:21:33 tb Exp $ */ | 1 | /* $OpenBSD: x509_att.c,v 1.18 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -66,6 +66,8 @@ | |||
| 66 | #include <openssl/x509.h> | 66 | #include <openssl/x509.h> |
| 67 | #include <openssl/x509v3.h> | 67 | #include <openssl/x509v3.h> |
| 68 | 68 | ||
| 69 | #include "x509_lcl.h" | ||
| 70 | |||
| 69 | int | 71 | int |
| 70 | X509at_get_attr_count(const STACK_OF(X509_ATTRIBUTE) *x) | 72 | X509at_get_attr_count(const STACK_OF(X509_ATTRIBUTE) *x) |
| 71 | { | 73 | { |
diff --git a/src/lib/libcrypto/x509/x509_cmp.c b/src/lib/libcrypto/x509/x509_cmp.c index 6d6e840899..134a082730 100644 --- a/src/lib/libcrypto/x509/x509_cmp.c +++ b/src/lib/libcrypto/x509/x509_cmp.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: x509_cmp.c,v 1.35 2019/03/13 20:34:00 tb Exp $ */ | 1 | /* $OpenBSD: x509_cmp.c,v 1.36 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -68,6 +68,8 @@ | |||
| 68 | #include <openssl/x509.h> | 68 | #include <openssl/x509.h> |
| 69 | #include <openssl/x509v3.h> | 69 | #include <openssl/x509v3.h> |
| 70 | 70 | ||
| 71 | #include "x509_lcl.h" | ||
| 72 | |||
| 71 | int | 73 | int |
| 72 | X509_issuer_and_serial_cmp(const X509 *a, const X509 *b) | 74 | X509_issuer_and_serial_cmp(const X509 *a, const X509 *b) |
| 73 | { | 75 | { |
diff --git a/src/lib/libcrypto/x509/x509_conf.c b/src/lib/libcrypto/x509/x509_conf.c index 8bf2d10b9f..cd703fc156 100644 --- a/src/lib/libcrypto/x509/x509_conf.c +++ b/src/lib/libcrypto/x509/x509_conf.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: x509_conf.c,v 1.1 2020/06/04 15:19:31 jsing Exp $ */ | 1 | /* $OpenBSD: x509_conf.c,v 1.2 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 3 | * project 1999. | 3 | * project 1999. |
| 4 | */ | 4 | */ |
| @@ -66,6 +66,8 @@ | |||
| 66 | #include <openssl/x509.h> | 66 | #include <openssl/x509.h> |
| 67 | #include <openssl/x509v3.h> | 67 | #include <openssl/x509v3.h> |
| 68 | 68 | ||
| 69 | #include "x509_lcl.h" | ||
| 70 | |||
| 69 | static int v3_check_critical(const char **value); | 71 | static int v3_check_critical(const char **value); |
| 70 | static int v3_check_generic(const char **value); | 72 | static int v3_check_generic(const char **value); |
| 71 | static X509_EXTENSION *do_ext_nconf(CONF *conf, X509V3_CTX *ctx, int ext_nid, | 73 | static X509_EXTENSION *do_ext_nconf(CONF *conf, X509V3_CTX *ctx, int ext_nid, |
diff --git a/src/lib/libcrypto/x509/x509_crld.c b/src/lib/libcrypto/x509/x509_crld.c index ff60a880fa..6b6f795378 100644 --- a/src/lib/libcrypto/x509/x509_crld.c +++ b/src/lib/libcrypto/x509/x509_crld.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: x509_crld.c,v 1.1 2020/06/04 15:19:31 jsing Exp $ */ | 1 | /* $OpenBSD: x509_crld.c,v 1.2 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 3 | * project 1999. | 3 | * project 1999. |
| 4 | */ | 4 | */ |
| @@ -65,6 +65,8 @@ | |||
| 65 | #include <openssl/err.h> | 65 | #include <openssl/err.h> |
| 66 | #include <openssl/x509v3.h> | 66 | #include <openssl/x509v3.h> |
| 67 | 67 | ||
| 68 | #include "x509_lcl.h" | ||
| 69 | |||
| 68 | static void *v2i_crld(const X509V3_EXT_METHOD *method, | 70 | static void *v2i_crld(const X509V3_EXT_METHOD *method, |
| 69 | X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval); | 71 | X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval); |
| 70 | static int i2r_crldp(const X509V3_EXT_METHOD *method, void *pcrldp, BIO *out, | 72 | static int i2r_crldp(const X509V3_EXT_METHOD *method, void *pcrldp, BIO *out, |
diff --git a/src/lib/libcrypto/x509/x509_ext.c b/src/lib/libcrypto/x509/x509_ext.c index 21374a26e2..1445951199 100644 --- a/src/lib/libcrypto/x509/x509_ext.c +++ b/src/lib/libcrypto/x509/x509_ext.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: x509_ext.c,v 1.12 2018/05/18 19:28:27 tb Exp $ */ | 1 | /* $OpenBSD: x509_ext.c,v 1.13 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -65,6 +65,8 @@ | |||
| 65 | #include <openssl/x509.h> | 65 | #include <openssl/x509.h> |
| 66 | #include <openssl/x509v3.h> | 66 | #include <openssl/x509v3.h> |
| 67 | 67 | ||
| 68 | #include "x509_lcl.h" | ||
| 69 | |||
| 68 | int | 70 | int |
| 69 | X509_CRL_get_ext_count(const X509_CRL *x) | 71 | X509_CRL_get_ext_count(const X509_CRL *x) |
| 70 | { | 72 | { |
diff --git a/src/lib/libcrypto/x509/x509_internal.h b/src/lib/libcrypto/x509/x509_internal.h index 90fafccae0..7ca67a853b 100644 --- a/src/lib/libcrypto/x509/x509_internal.h +++ b/src/lib/libcrypto/x509/x509_internal.h | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: x509_internal.h,v 1.13 2021/10/26 09:09:53 beck Exp $ */ | 1 | /* $OpenBSD: x509_internal.h,v 1.14 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Copyright (c) 2020 Bob Beck <beck@openbsd.org> | 3 | * Copyright (c) 2020 Bob Beck <beck@openbsd.org> |
| 4 | * | 4 | * |
| @@ -22,6 +22,8 @@ | |||
| 22 | 22 | ||
| 23 | #include <openssl/x509_verify.h> | 23 | #include <openssl/x509_verify.h> |
| 24 | 24 | ||
| 25 | #include "x509_lcl.h" | ||
| 26 | |||
| 25 | /* Hard limits on structure size and number of signature checks. */ | 27 | /* Hard limits on structure size and number of signature checks. */ |
| 26 | #define X509_VERIFY_MAX_CHAINS 8 /* Max validated chains */ | 28 | #define X509_VERIFY_MAX_CHAINS 8 /* Max validated chains */ |
| 27 | #define X509_VERIFY_MAX_CHAIN_CERTS 32 /* Max depth of a chain */ | 29 | #define X509_VERIFY_MAX_CHAIN_CERTS 32 /* Max depth of a chain */ |
diff --git a/src/lib/libcrypto/x509/x509_lcl.h b/src/lib/libcrypto/x509/x509_lcl.h index 3e83b66dd6..1b352aee78 100644 --- a/src/lib/libcrypto/x509/x509_lcl.h +++ b/src/lib/libcrypto/x509/x509_lcl.h | |||
| @@ -56,8 +56,325 @@ | |||
| 56 | * | 56 | * |
| 57 | */ | 57 | */ |
| 58 | 58 | ||
| 59 | #ifndef HEADER_X509_LCL_H | ||
| 60 | #define HEADER_X509_LCL_H | ||
| 61 | |||
| 59 | __BEGIN_HIDDEN_DECLS | 62 | __BEGIN_HIDDEN_DECLS |
| 60 | 63 | ||
| 64 | struct X509_pubkey_st { | ||
| 65 | X509_ALGOR *algor; | ||
| 66 | ASN1_BIT_STRING *public_key; | ||
| 67 | EVP_PKEY *pkey; | ||
| 68 | }; | ||
| 69 | |||
| 70 | struct X509_sig_st { | ||
| 71 | X509_ALGOR *algor; | ||
| 72 | ASN1_OCTET_STRING *digest; | ||
| 73 | } /* X509_SIG */; | ||
| 74 | |||
| 75 | struct X509_name_entry_st { | ||
| 76 | ASN1_OBJECT *object; | ||
| 77 | ASN1_STRING *value; | ||
| 78 | int set; | ||
| 79 | int size; /* temp variable */ | ||
| 80 | } /* X509_NAME_ENTRY */; | ||
| 81 | |||
| 82 | /* we always keep X509_NAMEs in 2 forms. */ | ||
| 83 | struct X509_name_st { | ||
| 84 | STACK_OF(X509_NAME_ENTRY) *entries; | ||
| 85 | int modified; /* true if 'bytes' needs to be built */ | ||
| 86 | #ifndef OPENSSL_NO_BUFFER | ||
| 87 | BUF_MEM *bytes; | ||
| 88 | #else | ||
| 89 | char *bytes; | ||
| 90 | #endif | ||
| 91 | /* unsigned long hash; Keep the hash around for lookups */ | ||
| 92 | unsigned char *canon_enc; | ||
| 93 | int canon_enclen; | ||
| 94 | } /* X509_NAME */; | ||
| 95 | |||
| 96 | struct X509_extension_st { | ||
| 97 | ASN1_OBJECT *object; | ||
| 98 | ASN1_BOOLEAN critical; | ||
| 99 | ASN1_OCTET_STRING *value; | ||
| 100 | } /* X509_EXTENSION */; | ||
| 101 | |||
| 102 | struct x509_attributes_st { | ||
| 103 | ASN1_OBJECT *object; | ||
| 104 | int single; /* 0 for a set, 1 for a single item (which is wrong) */ | ||
| 105 | union { | ||
| 106 | char *ptr; | ||
| 107 | /* 0 */ STACK_OF(ASN1_TYPE) *set; | ||
| 108 | /* 1 */ ASN1_TYPE *single; | ||
| 109 | } value; | ||
| 110 | } /* X509_ATTRIBUTE */; | ||
| 111 | |||
| 112 | struct X509_req_info_st { | ||
| 113 | ASN1_ENCODING enc; | ||
| 114 | ASN1_INTEGER *version; | ||
| 115 | X509_NAME *subject; | ||
| 116 | X509_PUBKEY *pubkey; | ||
| 117 | /* d=2 hl=2 l= 0 cons: cont: 00 */ | ||
| 118 | STACK_OF(X509_ATTRIBUTE) *attributes; /* [ 0 ] */ | ||
| 119 | } /* X509_REQ_INFO */; | ||
| 120 | |||
| 121 | struct X509_req_st { | ||
| 122 | X509_REQ_INFO *req_info; | ||
| 123 | X509_ALGOR *sig_alg; | ||
| 124 | ASN1_BIT_STRING *signature; | ||
| 125 | int references; | ||
| 126 | } /* X509_REQ */; | ||
| 127 | |||
| 128 | /* | ||
| 129 | * This stuff is certificate "auxiliary info" it contains details which are | ||
| 130 | * useful in certificate stores and databases. When used this is tagged onto | ||
| 131 | * the end of the certificate itself. | ||
| 132 | */ | ||
| 133 | struct x509_cert_aux_st { | ||
| 134 | STACK_OF(ASN1_OBJECT) *trust; /* trusted uses */ | ||
| 135 | STACK_OF(ASN1_OBJECT) *reject; /* rejected uses */ | ||
| 136 | ASN1_UTF8STRING *alias; /* "friendly name" */ | ||
| 137 | ASN1_OCTET_STRING *keyid; /* key id of private key */ | ||
| 138 | STACK_OF(X509_ALGOR) *other; /* other unspecified info */ | ||
| 139 | } /* X509_CERT_AUX */; | ||
| 140 | |||
| 141 | struct x509_cinf_st { | ||
| 142 | ASN1_INTEGER *version; /* [ 0 ] default of v1 */ | ||
| 143 | ASN1_INTEGER *serialNumber; | ||
| 144 | X509_ALGOR *signature; | ||
| 145 | X509_NAME *issuer; | ||
| 146 | X509_VAL *validity; | ||
| 147 | X509_NAME *subject; | ||
| 148 | X509_PUBKEY *key; | ||
| 149 | ASN1_BIT_STRING *issuerUID; /* [ 1 ] optional in v2 */ | ||
| 150 | ASN1_BIT_STRING *subjectUID; /* [ 2 ] optional in v2 */ | ||
| 151 | STACK_OF(X509_EXTENSION) *extensions; /* [ 3 ] optional in v3 */ | ||
| 152 | ASN1_ENCODING enc; | ||
| 153 | } /* X509_CINF */; | ||
| 154 | |||
| 155 | struct x509_st { | ||
| 156 | X509_CINF *cert_info; | ||
| 157 | X509_ALGOR *sig_alg; | ||
| 158 | ASN1_BIT_STRING *signature; | ||
| 159 | int valid; | ||
| 160 | int references; | ||
| 161 | char *name; | ||
| 162 | CRYPTO_EX_DATA ex_data; | ||
| 163 | /* These contain copies of various extension values */ | ||
| 164 | long ex_pathlen; | ||
| 165 | long ex_pcpathlen; | ||
| 166 | unsigned long ex_flags; | ||
| 167 | unsigned long ex_kusage; | ||
| 168 | unsigned long ex_xkusage; | ||
| 169 | unsigned long ex_nscert; | ||
| 170 | ASN1_OCTET_STRING *skid; | ||
| 171 | AUTHORITY_KEYID *akid; | ||
| 172 | X509_POLICY_CACHE *policy_cache; | ||
| 173 | STACK_OF(DIST_POINT) *crldp; | ||
| 174 | STACK_OF(GENERAL_NAME) *altname; | ||
| 175 | NAME_CONSTRAINTS *nc; | ||
| 176 | #ifndef OPENSSL_NO_RFC3779 | ||
| 177 | STACK_OF(IPAddressFamily) *rfc3779_addr; | ||
| 178 | struct ASIdentifiers_st *rfc3779_asid; | ||
| 179 | #endif | ||
| 180 | #ifndef OPENSSL_NO_SHA | ||
| 181 | unsigned char sha1_hash[SHA_DIGEST_LENGTH]; | ||
| 182 | #endif | ||
| 183 | X509_CERT_AUX *aux; | ||
| 184 | } /* X509 */; | ||
| 185 | |||
| 186 | struct x509_revoked_st { | ||
| 187 | ASN1_INTEGER *serialNumber; | ||
| 188 | ASN1_TIME *revocationDate; | ||
| 189 | STACK_OF(X509_EXTENSION) /* optional */ *extensions; | ||
| 190 | /* Set up if indirect CRL */ | ||
| 191 | STACK_OF(GENERAL_NAME) *issuer; | ||
| 192 | /* Revocation reason */ | ||
| 193 | int reason; | ||
| 194 | int sequence; /* load sequence */ | ||
| 195 | }; | ||
| 196 | |||
| 197 | struct X509_crl_info_st { | ||
| 198 | ASN1_INTEGER *version; | ||
| 199 | X509_ALGOR *sig_alg; | ||
| 200 | X509_NAME *issuer; | ||
| 201 | ASN1_TIME *lastUpdate; | ||
| 202 | ASN1_TIME *nextUpdate; | ||
| 203 | STACK_OF(X509_REVOKED) *revoked; | ||
| 204 | STACK_OF(X509_EXTENSION) /* [0] */ *extensions; | ||
| 205 | ASN1_ENCODING enc; | ||
| 206 | } /* X509_CRL_INFO */; | ||
| 207 | |||
| 208 | struct X509_crl_st { | ||
| 209 | /* actual signature */ | ||
| 210 | X509_CRL_INFO *crl; | ||
| 211 | X509_ALGOR *sig_alg; | ||
| 212 | ASN1_BIT_STRING *signature; | ||
| 213 | int references; | ||
| 214 | int flags; | ||
| 215 | /* Copies of various extensions */ | ||
| 216 | AUTHORITY_KEYID *akid; | ||
| 217 | ISSUING_DIST_POINT *idp; | ||
| 218 | /* Convenient breakdown of IDP */ | ||
| 219 | int idp_flags; | ||
| 220 | int idp_reasons; | ||
| 221 | /* CRL and base CRL numbers for delta processing */ | ||
| 222 | ASN1_INTEGER *crl_number; | ||
| 223 | ASN1_INTEGER *base_crl_number; | ||
| 224 | #ifndef OPENSSL_NO_SHA | ||
| 225 | unsigned char sha1_hash[SHA_DIGEST_LENGTH]; | ||
| 226 | #endif | ||
| 227 | STACK_OF(GENERAL_NAMES) *issuers; | ||
| 228 | const X509_CRL_METHOD *meth; | ||
| 229 | void *meth_data; | ||
| 230 | } /* X509_CRL */; | ||
| 231 | |||
| 232 | struct pkcs8_priv_key_info_st { | ||
| 233 | ASN1_INTEGER *version; | ||
| 234 | X509_ALGOR *pkeyalg; | ||
| 235 | ASN1_OCTET_STRING *pkey; | ||
| 236 | STACK_OF(X509_ATTRIBUTE) *attributes; | ||
| 237 | }; | ||
| 238 | |||
| 239 | struct x509_object_st { | ||
| 240 | /* one of the above types */ | ||
| 241 | int type; | ||
| 242 | union { | ||
| 243 | char *ptr; | ||
| 244 | X509 *x509; | ||
| 245 | X509_CRL *crl; | ||
| 246 | EVP_PKEY *pkey; | ||
| 247 | } data; | ||
| 248 | } /* X509_OBJECT */; | ||
| 249 | |||
| 250 | struct x509_lookup_method_st { | ||
| 251 | const char *name; | ||
| 252 | int (*new_item)(X509_LOOKUP *ctx); | ||
| 253 | void (*free)(X509_LOOKUP *ctx); | ||
| 254 | int (*init)(X509_LOOKUP *ctx); | ||
| 255 | int (*shutdown)(X509_LOOKUP *ctx); | ||
| 256 | int (*ctrl)(X509_LOOKUP *ctx, int cmd, const char *argc, long argl, | ||
| 257 | char **ret); | ||
| 258 | int (*get_by_subject)(X509_LOOKUP *ctx, int type, X509_NAME *name, | ||
| 259 | X509_OBJECT *ret); | ||
| 260 | int (*get_by_issuer_serial)(X509_LOOKUP *ctx, int type, X509_NAME *name, | ||
| 261 | ASN1_INTEGER *serial,X509_OBJECT *ret); | ||
| 262 | int (*get_by_fingerprint)(X509_LOOKUP *ctx, int type, | ||
| 263 | const unsigned char *bytes, int len, X509_OBJECT *ret); | ||
| 264 | int (*get_by_alias)(X509_LOOKUP *ctx, int type, const char *str, | ||
| 265 | int len, X509_OBJECT *ret); | ||
| 266 | } /* X509_LOOKUP_METHOD */; | ||
| 267 | |||
| 268 | struct X509_VERIFY_PARAM_st { | ||
| 269 | char *name; | ||
| 270 | time_t check_time; /* Time to use */ | ||
| 271 | unsigned long inh_flags; /* Inheritance flags */ | ||
| 272 | unsigned long flags; /* Various verify flags */ | ||
| 273 | int purpose; /* purpose to check untrusted certificates */ | ||
| 274 | int trust; /* trust setting to check */ | ||
| 275 | int depth; /* Verify depth */ | ||
| 276 | STACK_OF(ASN1_OBJECT) *policies; /* Permissible policies */ | ||
| 277 | X509_VERIFY_PARAM_ID *id; /* opaque ID data */ | ||
| 278 | } /* X509_VERIFY_PARAM */; | ||
| 279 | |||
| 280 | /* | ||
| 281 | * This is used to hold everything. It is used for all certificate | ||
| 282 | * validation. Once we have a certificate chain, the 'verify' | ||
| 283 | * function is then called to actually check the cert chain. | ||
| 284 | */ | ||
| 285 | struct x509_store_st { | ||
| 286 | /* The following is a cache of trusted certs */ | ||
| 287 | int cache; /* if true, stash any hits */ | ||
| 288 | STACK_OF(X509_OBJECT) *objs; /* Cache of all objects */ | ||
| 289 | |||
| 290 | /* These are external lookup methods */ | ||
| 291 | STACK_OF(X509_LOOKUP) *get_cert_methods; | ||
| 292 | |||
| 293 | X509_VERIFY_PARAM *param; | ||
| 294 | |||
| 295 | /* Callbacks for various operations */ | ||
| 296 | int (*verify)(X509_STORE_CTX *ctx); /* called to verify a certificate */ | ||
| 297 | int (*verify_cb)(int ok,X509_STORE_CTX *ctx); /* error callback */ | ||
| 298 | int (*get_issuer)(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); /* get issuers cert from ctx */ | ||
| 299 | int (*check_issued)(X509_STORE_CTX *ctx, X509 *x, X509 *issuer); /* check issued */ | ||
| 300 | int (*check_revocation)(X509_STORE_CTX *ctx); /* Check revocation status of chain */ | ||
| 301 | int (*get_crl)(X509_STORE_CTX *ctx, X509_CRL **crl, X509 *x); /* retrieve CRL */ | ||
| 302 | int (*check_crl)(X509_STORE_CTX *ctx, X509_CRL *crl); /* Check CRL validity */ | ||
| 303 | int (*cert_crl)(X509_STORE_CTX *ctx, X509_CRL *crl, X509 *x); /* Check certificate against CRL */ | ||
| 304 | STACK_OF(X509) * (*lookup_certs)(X509_STORE_CTX *ctx, X509_NAME *nm); | ||
| 305 | STACK_OF(X509_CRL) * (*lookup_crls)(X509_STORE_CTX *ctx, X509_NAME *nm); | ||
| 306 | int (*cleanup)(X509_STORE_CTX *ctx); | ||
| 307 | |||
| 308 | CRYPTO_EX_DATA ex_data; | ||
| 309 | int references; | ||
| 310 | } /* X509_STORE */; | ||
| 311 | |||
| 312 | /* This is the functions plus an instance of the local variables. */ | ||
| 313 | struct x509_lookup_st { | ||
| 314 | int init; /* have we been started */ | ||
| 315 | int skip; /* don't use us. */ | ||
| 316 | X509_LOOKUP_METHOD *method; /* the functions */ | ||
| 317 | char *method_data; /* method data */ | ||
| 318 | |||
| 319 | X509_STORE *store_ctx; /* who owns us */ | ||
| 320 | } /* X509_LOOKUP */; | ||
| 321 | |||
| 322 | /* | ||
| 323 | * This is used when verifying cert chains. Since the gathering of the cert | ||
| 324 | * chain can take some time (and has to be 'retried'), this needs to be kept | ||
| 325 | * and passed around. | ||
| 326 | */ | ||
| 327 | struct x509_store_ctx_st { | ||
| 328 | X509_STORE *ctx; | ||
| 329 | int current_method; /* used when looking up certs */ | ||
| 330 | |||
| 331 | /* The following are set by the caller */ | ||
| 332 | X509 *cert; /* The cert to check */ | ||
| 333 | STACK_OF(X509) *untrusted; /* chain of X509s - untrusted - passed in */ | ||
| 334 | STACK_OF(X509_CRL) *crls; /* set of CRLs passed in */ | ||
| 335 | |||
| 336 | X509_VERIFY_PARAM *param; | ||
| 337 | void *other_ctx; /* Other info for use with get_issuer() */ | ||
| 338 | |||
| 339 | /* Callbacks for various operations */ | ||
| 340 | int (*verify)(X509_STORE_CTX *ctx); /* called to verify a certificate */ | ||
| 341 | int (*verify_cb)(int ok,X509_STORE_CTX *ctx); /* error callback */ | ||
| 342 | int (*get_issuer)(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); /* get issuers cert from ctx */ | ||
| 343 | int (*check_issued)(X509_STORE_CTX *ctx, X509 *x, X509 *issuer); /* check issued */ | ||
| 344 | int (*check_revocation)(X509_STORE_CTX *ctx); /* Check revocation status of chain */ | ||
| 345 | int (*get_crl)(X509_STORE_CTX *ctx, X509_CRL **crl, X509 *x); /* retrieve CRL */ | ||
| 346 | int (*check_crl)(X509_STORE_CTX *ctx, X509_CRL *crl); /* Check CRL validity */ | ||
| 347 | int (*cert_crl)(X509_STORE_CTX *ctx, X509_CRL *crl, X509 *x); /* Check certificate against CRL */ | ||
| 348 | int (*check_policy)(X509_STORE_CTX *ctx); | ||
| 349 | STACK_OF(X509) * (*lookup_certs)(X509_STORE_CTX *ctx, X509_NAME *nm); | ||
| 350 | STACK_OF(X509_CRL) * (*lookup_crls)(X509_STORE_CTX *ctx, X509_NAME *nm); | ||
| 351 | int (*cleanup)(X509_STORE_CTX *ctx); | ||
| 352 | |||
| 353 | /* The following is built up */ | ||
| 354 | int valid; /* if 0, rebuild chain */ | ||
| 355 | int last_untrusted; /* XXX: number of untrusted certs in chain!!! */ | ||
| 356 | STACK_OF(X509) *chain; /* chain of X509s - built up and trusted */ | ||
| 357 | X509_POLICY_TREE *tree; /* Valid policy tree */ | ||
| 358 | |||
| 359 | int explicit_policy; /* Require explicit policy value */ | ||
| 360 | |||
| 361 | /* When something goes wrong, this is why */ | ||
| 362 | int error_depth; | ||
| 363 | int error; | ||
| 364 | X509 *current_cert; | ||
| 365 | X509 *current_issuer; /* cert currently being tested as valid issuer */ | ||
| 366 | X509_CRL *current_crl; /* current CRL */ | ||
| 367 | |||
| 368 | int current_crl_score; /* score of current CRL */ | ||
| 369 | unsigned int current_reasons; /* Reason mask */ | ||
| 370 | |||
| 371 | X509_STORE_CTX *parent; /* For CRL path validation: parent context */ | ||
| 372 | |||
| 373 | CRYPTO_EX_DATA ex_data; | ||
| 374 | } /* X509_STORE_CTX */; | ||
| 375 | |||
| 61 | int x509_check_cert_time(X509_STORE_CTX *ctx, X509 *x, int quiet); | 376 | int x509_check_cert_time(X509_STORE_CTX *ctx, X509 *x, int quiet); |
| 62 | 377 | ||
| 63 | __END_HIDDEN_DECLS | 378 | __END_HIDDEN_DECLS |
| 379 | |||
| 380 | #endif /* !HEADER_X509_LCL_H */ | ||
diff --git a/src/lib/libcrypto/x509/x509_lib.c b/src/lib/libcrypto/x509/x509_lib.c index 211d0adfee..a518d5b950 100644 --- a/src/lib/libcrypto/x509/x509_lib.c +++ b/src/lib/libcrypto/x509/x509_lib.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: x509_lib.c,v 1.2 2020/09/14 11:35:32 beck Exp $ */ | 1 | /* $OpenBSD: x509_lib.c,v 1.3 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 3 | * project 1999. | 3 | * project 1999. |
| 4 | */ | 4 | */ |
| @@ -64,6 +64,7 @@ | |||
| 64 | #include <openssl/x509v3.h> | 64 | #include <openssl/x509v3.h> |
| 65 | 65 | ||
| 66 | #include "ext_dat.h" | 66 | #include "ext_dat.h" |
| 67 | #include "x509_lcl.h" | ||
| 67 | 68 | ||
| 68 | static STACK_OF(X509V3_EXT_METHOD) *ext_list = NULL; | 69 | static STACK_OF(X509V3_EXT_METHOD) *ext_list = NULL; |
| 69 | 70 | ||
diff --git a/src/lib/libcrypto/x509/x509_ncons.c b/src/lib/libcrypto/x509/x509_ncons.c index 1621f98617..613527005a 100644 --- a/src/lib/libcrypto/x509/x509_ncons.c +++ b/src/lib/libcrypto/x509/x509_ncons.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: x509_ncons.c,v 1.4 2020/09/16 18:12:06 beck Exp $ */ | 1 | /* $OpenBSD: x509_ncons.c,v 1.5 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 3 | * project. | 3 | * project. |
| 4 | */ | 4 | */ |
| @@ -64,6 +64,8 @@ | |||
| 64 | #include <openssl/err.h> | 64 | #include <openssl/err.h> |
| 65 | #include <openssl/x509v3.h> | 65 | #include <openssl/x509v3.h> |
| 66 | 66 | ||
| 67 | #include "x509_lcl.h" | ||
| 68 | |||
| 67 | static void *v2i_NAME_CONSTRAINTS(const X509V3_EXT_METHOD *method, | 69 | static void *v2i_NAME_CONSTRAINTS(const X509V3_EXT_METHOD *method, |
| 68 | X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval); | 70 | X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval); |
| 69 | static int i2r_NAME_CONSTRAINTS(const X509V3_EXT_METHOD *method, | 71 | static int i2r_NAME_CONSTRAINTS(const X509V3_EXT_METHOD *method, |
diff --git a/src/lib/libcrypto/x509/x509_obj.c b/src/lib/libcrypto/x509/x509_obj.c index 5c53799020..58ffa3a2f2 100644 --- a/src/lib/libcrypto/x509/x509_obj.c +++ b/src/lib/libcrypto/x509/x509_obj.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: x509_obj.c,v 1.18 2018/05/18 18:19:31 tb Exp $ */ | 1 | /* $OpenBSD: x509_obj.c,v 1.19 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -65,6 +65,8 @@ | |||
| 65 | #include <openssl/objects.h> | 65 | #include <openssl/objects.h> |
| 66 | #include <openssl/x509.h> | 66 | #include <openssl/x509.h> |
| 67 | 67 | ||
| 68 | #include "x509_lcl.h" | ||
| 69 | |||
| 68 | char * | 70 | char * |
| 69 | X509_NAME_oneline(const X509_NAME *a, char *buf, int len) | 71 | X509_NAME_oneline(const X509_NAME *a, char *buf, int len) |
| 70 | { | 72 | { |
diff --git a/src/lib/libcrypto/x509/x509_prn.c b/src/lib/libcrypto/x509/x509_prn.c index 5c15cc390f..4977051d4a 100644 --- a/src/lib/libcrypto/x509/x509_prn.c +++ b/src/lib/libcrypto/x509/x509_prn.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: x509_prn.c,v 1.1 2020/06/04 15:19:32 jsing Exp $ */ | 1 | /* $OpenBSD: x509_prn.c,v 1.2 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 3 | * project 1999. | 3 | * project 1999. |
| 4 | */ | 4 | */ |
| @@ -62,6 +62,8 @@ | |||
| 62 | #include <openssl/conf.h> | 62 | #include <openssl/conf.h> |
| 63 | #include <openssl/x509v3.h> | 63 | #include <openssl/x509v3.h> |
| 64 | 64 | ||
| 65 | #include "x509_lcl.h" | ||
| 66 | |||
| 65 | /* Extension printing routines */ | 67 | /* Extension printing routines */ |
| 66 | 68 | ||
| 67 | static int unknown_ext_print(BIO *out, X509_EXTENSION *ext, unsigned long flag, | 69 | static int unknown_ext_print(BIO *out, X509_EXTENSION *ext, unsigned long flag, |
diff --git a/src/lib/libcrypto/x509/x509_purp.c b/src/lib/libcrypto/x509/x509_purp.c index 8a5f6704a2..67a7b51fb1 100644 --- a/src/lib/libcrypto/x509/x509_purp.c +++ b/src/lib/libcrypto/x509/x509_purp.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: x509_purp.c,v 1.11 2021/10/29 12:11:13 tb Exp $ */ | 1 | /* $OpenBSD: x509_purp.c,v 1.12 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 3 | * project 2001. | 3 | * project 2001. |
| 4 | */ | 4 | */ |
| @@ -65,6 +65,8 @@ | |||
| 65 | #include <openssl/x509v3.h> | 65 | #include <openssl/x509v3.h> |
| 66 | #include <openssl/x509_vfy.h> | 66 | #include <openssl/x509_vfy.h> |
| 67 | 67 | ||
| 68 | #include "x509_lcl.h" | ||
| 69 | |||
| 68 | #define V1_ROOT (EXFLAG_V1|EXFLAG_SS) | 70 | #define V1_ROOT (EXFLAG_V1|EXFLAG_SS) |
| 69 | #define ku_reject(x, usage) \ | 71 | #define ku_reject(x, usage) \ |
| 70 | (((x)->ex_flags & EXFLAG_KUSAGE) && !((x)->ex_kusage & (usage))) | 72 | (((x)->ex_flags & EXFLAG_KUSAGE) && !((x)->ex_kusage & (usage))) |
diff --git a/src/lib/libcrypto/x509/x509_r2x.c b/src/lib/libcrypto/x509/x509_r2x.c index 525163bc3e..143d0f1aa0 100644 --- a/src/lib/libcrypto/x509/x509_r2x.c +++ b/src/lib/libcrypto/x509/x509_r2x.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: x509_r2x.c,v 1.11 2017/01/29 17:49:23 beck Exp $ */ | 1 | /* $OpenBSD: x509_r2x.c,v 1.12 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -66,6 +66,8 @@ | |||
| 66 | #include <openssl/objects.h> | 66 | #include <openssl/objects.h> |
| 67 | #include <openssl/x509.h> | 67 | #include <openssl/x509.h> |
| 68 | 68 | ||
| 69 | #include "x509_lcl.h" | ||
| 70 | |||
| 69 | X509 * | 71 | X509 * |
| 70 | X509_REQ_to_X509(X509_REQ *r, int days, EVP_PKEY *pkey) | 72 | X509_REQ_to_X509(X509_REQ *r, int days, EVP_PKEY *pkey) |
| 71 | { | 73 | { |
diff --git a/src/lib/libcrypto/x509/x509_req.c b/src/lib/libcrypto/x509/x509_req.c index c81fe4a3a9..556e32b317 100644 --- a/src/lib/libcrypto/x509/x509_req.c +++ b/src/lib/libcrypto/x509/x509_req.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: x509_req.c,v 1.23 2021/10/23 11:56:10 tb Exp $ */ | 1 | /* $OpenBSD: x509_req.c,v 1.24 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -70,6 +70,8 @@ | |||
| 70 | #include <openssl/pem.h> | 70 | #include <openssl/pem.h> |
| 71 | #include <openssl/x509.h> | 71 | #include <openssl/x509.h> |
| 72 | 72 | ||
| 73 | #include "x509_lcl.h" | ||
| 74 | |||
| 73 | X509_REQ * | 75 | X509_REQ * |
| 74 | X509_to_X509_REQ(X509 *x, EVP_PKEY *pkey, const EVP_MD *md) | 76 | X509_to_X509_REQ(X509 *x, EVP_PKEY *pkey, const EVP_MD *md) |
| 75 | { | 77 | { |
diff --git a/src/lib/libcrypto/x509/x509_set.c b/src/lib/libcrypto/x509/x509_set.c index c4ce8e5674..5784f2203e 100644 --- a/src/lib/libcrypto/x509/x509_set.c +++ b/src/lib/libcrypto/x509/x509_set.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: x509_set.c,v 1.19 2021/11/01 08:14:36 tb Exp $ */ | 1 | /* $OpenBSD: x509_set.c,v 1.20 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -63,6 +63,8 @@ | |||
| 63 | #include <openssl/objects.h> | 63 | #include <openssl/objects.h> |
| 64 | #include <openssl/x509.h> | 64 | #include <openssl/x509.h> |
| 65 | 65 | ||
| 66 | #include "x509_lcl.h" | ||
| 67 | |||
| 66 | const STACK_OF(X509_EXTENSION) * | 68 | const STACK_OF(X509_EXTENSION) * |
| 67 | X509_get0_extensions(const X509 *x) | 69 | X509_get0_extensions(const X509 *x) |
| 68 | { | 70 | { |
diff --git a/src/lib/libcrypto/x509/x509_skey.c b/src/lib/libcrypto/x509/x509_skey.c index a906427378..58bb66bc05 100644 --- a/src/lib/libcrypto/x509/x509_skey.c +++ b/src/lib/libcrypto/x509/x509_skey.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: x509_skey.c,v 1.1 2020/06/04 15:19:32 jsing Exp $ */ | 1 | /* $OpenBSD: x509_skey.c,v 1.2 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 3 | * project 1999. | 3 | * project 1999. |
| 4 | */ | 4 | */ |
| @@ -62,6 +62,8 @@ | |||
| 62 | #include <openssl/err.h> | 62 | #include <openssl/err.h> |
| 63 | #include <openssl/x509v3.h> | 63 | #include <openssl/x509v3.h> |
| 64 | 64 | ||
| 65 | #include "x509_lcl.h" | ||
| 66 | |||
| 65 | static ASN1_OCTET_STRING *s2i_skey_id(X509V3_EXT_METHOD *method, | 67 | static ASN1_OCTET_STRING *s2i_skey_id(X509V3_EXT_METHOD *method, |
| 66 | X509V3_CTX *ctx, char *str); | 68 | X509V3_CTX *ctx, char *str); |
| 67 | 69 | ||
diff --git a/src/lib/libcrypto/x509/x509_trs.c b/src/lib/libcrypto/x509/x509_trs.c index 1a60e5a3cf..72d616a106 100644 --- a/src/lib/libcrypto/x509/x509_trs.c +++ b/src/lib/libcrypto/x509/x509_trs.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: x509_trs.c,v 1.24 2021/07/23 20:50:28 schwarze Exp $ */ | 1 | /* $OpenBSD: x509_trs.c,v 1.25 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 3 | * project 1999. | 3 | * project 1999. |
| 4 | */ | 4 | */ |
| @@ -62,6 +62,8 @@ | |||
| 62 | #include <openssl/err.h> | 62 | #include <openssl/err.h> |
| 63 | #include <openssl/x509v3.h> | 63 | #include <openssl/x509v3.h> |
| 64 | 64 | ||
| 65 | #include "x509_lcl.h" | ||
| 66 | |||
| 65 | static int tr_cmp(const X509_TRUST * const *a, const X509_TRUST * const *b); | 67 | static int tr_cmp(const X509_TRUST * const *a, const X509_TRUST * const *b); |
| 66 | static void trtable_free(X509_TRUST *p); | 68 | static void trtable_free(X509_TRUST *p); |
| 67 | 69 | ||
diff --git a/src/lib/libcrypto/x509/x509_v3.c b/src/lib/libcrypto/x509/x509_v3.c index 524d5511ed..9aefb8d99d 100644 --- a/src/lib/libcrypto/x509/x509_v3.c +++ b/src/lib/libcrypto/x509/x509_v3.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: x509_v3.c,v 1.17 2018/05/19 10:54:40 tb Exp $ */ | 1 | /* $OpenBSD: x509_v3.c,v 1.18 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -66,6 +66,8 @@ | |||
| 66 | #include <openssl/x509.h> | 66 | #include <openssl/x509.h> |
| 67 | #include <openssl/x509v3.h> | 67 | #include <openssl/x509v3.h> |
| 68 | 68 | ||
| 69 | #include "x509_lcl.h" | ||
| 70 | |||
| 69 | int | 71 | int |
| 70 | X509v3_get_ext_count(const STACK_OF(X509_EXTENSION) *x) | 72 | X509v3_get_ext_count(const STACK_OF(X509_EXTENSION) *x) |
| 71 | { | 73 | { |
diff --git a/src/lib/libcrypto/x509/x509_vfy.c b/src/lib/libcrypto/x509/x509_vfy.c index 4c3fe7f3e3..664474139c 100644 --- a/src/lib/libcrypto/x509/x509_vfy.c +++ b/src/lib/libcrypto/x509/x509_vfy.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: x509_vfy.c,v 1.92 2021/10/26 15:14:18 job Exp $ */ | 1 | /* $OpenBSD: x509_vfy.c,v 1.93 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -76,8 +76,6 @@ | |||
| 76 | #include "asn1_locl.h" | 76 | #include "asn1_locl.h" |
| 77 | #include "vpm_int.h" | 77 | #include "vpm_int.h" |
| 78 | #include "x509_internal.h" | 78 | #include "x509_internal.h" |
| 79 | #include "x509_lcl.h" | ||
| 80 | #include "x509_internal.h" | ||
| 81 | 79 | ||
| 82 | /* CRL score values */ | 80 | /* CRL score values */ |
| 83 | 81 | ||
diff --git a/src/lib/libcrypto/x509/x509_vfy.h b/src/lib/libcrypto/x509/x509_vfy.h index 61ea11b71a..133ffda337 100644 --- a/src/lib/libcrypto/x509/x509_vfy.h +++ b/src/lib/libcrypto/x509/x509_vfy.h | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: x509_vfy.h,v 1.45 2021/11/01 08:14:36 tb Exp $ */ | 1 | /* $OpenBSD: x509_vfy.h,v 1.46 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -100,173 +100,17 @@ typedef enum { | |||
| 100 | X509_LU_CRL, | 100 | X509_LU_CRL, |
| 101 | } X509_LOOKUP_TYPE; | 101 | } X509_LOOKUP_TYPE; |
| 102 | 102 | ||
| 103 | #if defined(LIBRESSL_CRYPTO_INTERNAL) || !defined(LIBRESSL_OPAQUE_X509) | ||
| 104 | typedef struct x509_object_st { | ||
| 105 | /* one of the above types */ | ||
| 106 | int type; | ||
| 107 | union { | ||
| 108 | char *ptr; | ||
| 109 | X509 *x509; | ||
| 110 | X509_CRL *crl; | ||
| 111 | EVP_PKEY *pkey; | ||
| 112 | } data; | ||
| 113 | } X509_OBJECT; | ||
| 114 | #else | ||
| 115 | typedef struct x509_object_st X509_OBJECT; | ||
| 116 | #endif | ||
| 117 | |||
| 118 | typedef struct x509_lookup_st X509_LOOKUP; | ||
| 119 | 103 | ||
| 120 | DECLARE_STACK_OF(X509_LOOKUP) | 104 | DECLARE_STACK_OF(X509_LOOKUP) |
| 121 | DECLARE_STACK_OF(X509_OBJECT) | 105 | DECLARE_STACK_OF(X509_OBJECT) |
| 106 | DECLARE_STACK_OF(X509_VERIFY_PARAM) | ||
| 122 | 107 | ||
| 123 | #if defined(LIBRESSL_CRYPTO_INTERNAL) || !defined(LIBRESSL_OPAQUE_X509) | 108 | /* unused in OpenSSL */ |
| 124 | /* This is a static that defines the function interface */ | ||
| 125 | typedef struct x509_lookup_method_st { | ||
| 126 | const char *name; | ||
| 127 | int (*new_item)(X509_LOOKUP *ctx); | ||
| 128 | void (*free)(X509_LOOKUP *ctx); | ||
| 129 | int (*init)(X509_LOOKUP *ctx); | ||
| 130 | int (*shutdown)(X509_LOOKUP *ctx); | ||
| 131 | int (*ctrl)(X509_LOOKUP *ctx, int cmd, const char *argc, long argl, | ||
| 132 | char **ret); | ||
| 133 | int (*get_by_subject)(X509_LOOKUP *ctx, int type, X509_NAME *name, | ||
| 134 | X509_OBJECT *ret); | ||
| 135 | int (*get_by_issuer_serial)(X509_LOOKUP *ctx, int type, X509_NAME *name, | ||
| 136 | ASN1_INTEGER *serial,X509_OBJECT *ret); | ||
| 137 | int (*get_by_fingerprint)(X509_LOOKUP *ctx, int type, | ||
| 138 | const unsigned char *bytes, int len, X509_OBJECT *ret); | ||
| 139 | int (*get_by_alias)(X509_LOOKUP *ctx, int type, const char *str, | ||
| 140 | int len, X509_OBJECT *ret); | ||
| 141 | } X509_LOOKUP_METHOD; | ||
| 142 | |||
| 143 | typedef struct X509_VERIFY_PARAM_ID_st X509_VERIFY_PARAM_ID; | 109 | typedef struct X509_VERIFY_PARAM_ID_st X509_VERIFY_PARAM_ID; |
| 144 | 110 | ||
| 145 | /* This structure hold all parameters associated with a verify operation | ||
| 146 | * by including an X509_VERIFY_PARAM structure in related structures the | ||
| 147 | * parameters used can be customized | ||
| 148 | */ | ||
| 149 | |||
| 150 | typedef struct X509_VERIFY_PARAM_st { | ||
| 151 | char *name; | ||
| 152 | time_t check_time; /* Time to use */ | ||
| 153 | unsigned long inh_flags; /* Inheritance flags */ | ||
| 154 | unsigned long flags; /* Various verify flags */ | ||
| 155 | int purpose; /* purpose to check untrusted certificates */ | ||
| 156 | int trust; /* trust setting to check */ | ||
| 157 | int depth; /* Verify depth */ | ||
| 158 | STACK_OF(ASN1_OBJECT) *policies; /* Permissible policies */ | ||
| 159 | X509_VERIFY_PARAM_ID *id; /* opaque ID data */ | ||
| 160 | } X509_VERIFY_PARAM; | ||
| 161 | #else | ||
| 162 | typedef struct x509_lookup_method_st X509_LOOKUP_METHOD; | ||
| 163 | typedef struct X509_VERIFY_PARAM_st X509_VERIFY_PARAM; | ||
| 164 | #endif | ||
| 165 | |||
| 166 | DECLARE_STACK_OF(X509_VERIFY_PARAM) | ||
| 167 | |||
| 168 | #if defined(LIBRESSL_CRYPTO_INTERNAL) || !defined(LIBRESSL_OPAQUE_X509) | ||
| 169 | /* | ||
| 170 | * This is used to hold everything. It is used for all certificate | ||
| 171 | * validation. Once we have a certificate chain, the 'verify' | ||
| 172 | * function is then called to actually check the cert chain. | ||
| 173 | */ | ||
| 174 | struct x509_store_st { | ||
| 175 | /* The following is a cache of trusted certs */ | ||
| 176 | int cache; /* if true, stash any hits */ | ||
| 177 | STACK_OF(X509_OBJECT) *objs; /* Cache of all objects */ | ||
| 178 | |||
| 179 | /* These are external lookup methods */ | ||
| 180 | STACK_OF(X509_LOOKUP) *get_cert_methods; | ||
| 181 | |||
| 182 | X509_VERIFY_PARAM *param; | ||
| 183 | |||
| 184 | /* Callbacks for various operations */ | ||
| 185 | int (*verify)(X509_STORE_CTX *ctx); /* called to verify a certificate */ | ||
| 186 | int (*verify_cb)(int ok,X509_STORE_CTX *ctx); /* error callback */ | ||
| 187 | int (*get_issuer)(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); /* get issuers cert from ctx */ | ||
| 188 | int (*check_issued)(X509_STORE_CTX *ctx, X509 *x, X509 *issuer); /* check issued */ | ||
| 189 | int (*check_revocation)(X509_STORE_CTX *ctx); /* Check revocation status of chain */ | ||
| 190 | int (*get_crl)(X509_STORE_CTX *ctx, X509_CRL **crl, X509 *x); /* retrieve CRL */ | ||
| 191 | int (*check_crl)(X509_STORE_CTX *ctx, X509_CRL *crl); /* Check CRL validity */ | ||
| 192 | int (*cert_crl)(X509_STORE_CTX *ctx, X509_CRL *crl, X509 *x); /* Check certificate against CRL */ | ||
| 193 | STACK_OF(X509) * (*lookup_certs)(X509_STORE_CTX *ctx, X509_NAME *nm); | ||
| 194 | STACK_OF(X509_CRL) * (*lookup_crls)(X509_STORE_CTX *ctx, X509_NAME *nm); | ||
| 195 | int (*cleanup)(X509_STORE_CTX *ctx); | ||
| 196 | |||
| 197 | CRYPTO_EX_DATA ex_data; | ||
| 198 | int references; | ||
| 199 | } /* X509_STORE */; | ||
| 200 | #endif | ||
| 201 | 111 | ||
| 202 | int X509_STORE_set_depth(X509_STORE *store, int depth); | 112 | int X509_STORE_set_depth(X509_STORE *store, int depth); |
| 203 | 113 | ||
| 204 | #if defined(LIBRESSL_CRYPTO_INTERNAL) || !defined(LIBRESSL_OPAQUE_X509) | ||
| 205 | /* This is the functions plus an instance of the local variables. */ | ||
| 206 | struct x509_lookup_st { | ||
| 207 | int init; /* have we been started */ | ||
| 208 | int skip; /* don't use us. */ | ||
| 209 | X509_LOOKUP_METHOD *method; /* the functions */ | ||
| 210 | char *method_data; /* method data */ | ||
| 211 | |||
| 212 | X509_STORE *store_ctx; /* who owns us */ | ||
| 213 | } /* X509_LOOKUP */; | ||
| 214 | |||
| 215 | /* | ||
| 216 | * This is used when verifying cert chains. Since the gathering of the cert | ||
| 217 | * chain can take some time (and has to be 'retried'), this needs to be kept | ||
| 218 | * and passed around. | ||
| 219 | */ | ||
| 220 | struct x509_store_ctx_st { | ||
| 221 | X509_STORE *ctx; | ||
| 222 | int current_method; /* used when looking up certs */ | ||
| 223 | |||
| 224 | /* The following are set by the caller */ | ||
| 225 | X509 *cert; /* The cert to check */ | ||
| 226 | STACK_OF(X509) *untrusted; /* chain of X509s - untrusted - passed in */ | ||
| 227 | STACK_OF(X509_CRL) *crls; /* set of CRLs passed in */ | ||
| 228 | |||
| 229 | X509_VERIFY_PARAM *param; | ||
| 230 | void *other_ctx; /* Other info for use with get_issuer() */ | ||
| 231 | |||
| 232 | /* Callbacks for various operations */ | ||
| 233 | int (*verify)(X509_STORE_CTX *ctx); /* called to verify a certificate */ | ||
| 234 | int (*verify_cb)(int ok,X509_STORE_CTX *ctx); /* error callback */ | ||
| 235 | int (*get_issuer)(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); /* get issuers cert from ctx */ | ||
| 236 | int (*check_issued)(X509_STORE_CTX *ctx, X509 *x, X509 *issuer); /* check issued */ | ||
| 237 | int (*check_revocation)(X509_STORE_CTX *ctx); /* Check revocation status of chain */ | ||
| 238 | int (*get_crl)(X509_STORE_CTX *ctx, X509_CRL **crl, X509 *x); /* retrieve CRL */ | ||
| 239 | int (*check_crl)(X509_STORE_CTX *ctx, X509_CRL *crl); /* Check CRL validity */ | ||
| 240 | int (*cert_crl)(X509_STORE_CTX *ctx, X509_CRL *crl, X509 *x); /* Check certificate against CRL */ | ||
| 241 | int (*check_policy)(X509_STORE_CTX *ctx); | ||
| 242 | STACK_OF(X509) * (*lookup_certs)(X509_STORE_CTX *ctx, X509_NAME *nm); | ||
| 243 | STACK_OF(X509_CRL) * (*lookup_crls)(X509_STORE_CTX *ctx, X509_NAME *nm); | ||
| 244 | int (*cleanup)(X509_STORE_CTX *ctx); | ||
| 245 | |||
| 246 | /* The following is built up */ | ||
| 247 | int valid; /* if 0, rebuild chain */ | ||
| 248 | int last_untrusted; /* XXX: number of untrusted certs in chain!!! */ | ||
| 249 | STACK_OF(X509) *chain; /* chain of X509s - built up and trusted */ | ||
| 250 | X509_POLICY_TREE *tree; /* Valid policy tree */ | ||
| 251 | |||
| 252 | int explicit_policy; /* Require explicit policy value */ | ||
| 253 | |||
| 254 | /* When something goes wrong, this is why */ | ||
| 255 | int error_depth; | ||
| 256 | int error; | ||
| 257 | X509 *current_cert; | ||
| 258 | X509 *current_issuer; /* cert currently being tested as valid issuer */ | ||
| 259 | X509_CRL *current_crl; /* current CRL */ | ||
| 260 | |||
| 261 | int current_crl_score; /* score of current CRL */ | ||
| 262 | unsigned int current_reasons; /* Reason mask */ | ||
| 263 | |||
| 264 | X509_STORE_CTX *parent; /* For CRL path validation: parent context */ | ||
| 265 | |||
| 266 | CRYPTO_EX_DATA ex_data; | ||
| 267 | } /* X509_STORE_CTX */; | ||
| 268 | #endif | ||
| 269 | |||
| 270 | void X509_STORE_CTX_set_depth(X509_STORE_CTX *ctx, int depth); | 114 | void X509_STORE_CTX_set_depth(X509_STORE_CTX *ctx, int depth); |
| 271 | 115 | ||
| 272 | #define X509_STORE_CTX_set_app_data(ctx,data) \ | 116 | #define X509_STORE_CTX_set_app_data(ctx,data) \ |
diff --git a/src/lib/libcrypto/x509/x509_vpm.c b/src/lib/libcrypto/x509/x509_vpm.c index 42ea6e72c9..13171e40f5 100644 --- a/src/lib/libcrypto/x509/x509_vpm.c +++ b/src/lib/libcrypto/x509/x509_vpm.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: x509_vpm.c,v 1.27 2021/09/30 18:23:46 jsing Exp $ */ | 1 | /* $OpenBSD: x509_vpm.c,v 1.28 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 3 | * project 2004. | 3 | * project 2004. |
| 4 | */ | 4 | */ |
| @@ -67,6 +67,7 @@ | |||
| 67 | #include <openssl/x509v3.h> | 67 | #include <openssl/x509v3.h> |
| 68 | 68 | ||
| 69 | #include "vpm_int.h" | 69 | #include "vpm_int.h" |
| 70 | #include "x509_lcl.h" | ||
| 70 | 71 | ||
| 71 | /* X509_VERIFY_PARAM functions */ | 72 | /* X509_VERIFY_PARAM functions */ |
| 72 | 73 | ||
diff --git a/src/lib/libcrypto/x509/x509cset.c b/src/lib/libcrypto/x509/x509cset.c index 98fbdc2025..b3af77d90e 100644 --- a/src/lib/libcrypto/x509/x509cset.c +++ b/src/lib/libcrypto/x509/x509cset.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: x509cset.c,v 1.15 2021/10/23 11:56:10 tb Exp $ */ | 1 | /* $OpenBSD: x509cset.c,v 1.16 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 3 | * project 2001. | 3 | * project 2001. |
| 4 | */ | 4 | */ |
| @@ -63,8 +63,10 @@ | |||
| 63 | #include <openssl/objects.h> | 63 | #include <openssl/objects.h> |
| 64 | #include <openssl/x509.h> | 64 | #include <openssl/x509.h> |
| 65 | 65 | ||
| 66 | #include "x509_lcl.h" | ||
| 67 | |||
| 66 | int | 68 | int |
| 67 | X509_CRL_up_ref(X509_CRL *x) | 69 | X509_CRL_up_ref(X509_CRL *x) |
| 68 | { | 70 | { |
| 69 | int refs = CRYPTO_add(&x->references, 1, CRYPTO_LOCK_X509_CRL); | 71 | int refs = CRYPTO_add(&x->references, 1, CRYPTO_LOCK_X509_CRL); |
| 70 | return (refs > 1) ? 1 : 0; | 72 | return (refs > 1) ? 1 : 0; |
diff --git a/src/lib/libcrypto/x509/x509name.c b/src/lib/libcrypto/x509/x509name.c index 3649d6ab7c..878d787846 100644 --- a/src/lib/libcrypto/x509/x509name.c +++ b/src/lib/libcrypto/x509/x509name.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: x509name.c,v 1.26 2018/05/30 15:35:45 tb Exp $ */ | 1 | /* $OpenBSD: x509name.c,v 1.27 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -66,6 +66,8 @@ | |||
| 66 | #include <openssl/stack.h> | 66 | #include <openssl/stack.h> |
| 67 | #include <openssl/x509.h> | 67 | #include <openssl/x509.h> |
| 68 | 68 | ||
| 69 | #include "x509_lcl.h" | ||
| 70 | |||
| 69 | int | 71 | int |
| 70 | X509_NAME_get_text_by_NID(X509_NAME *name, int nid, char *buf, int len) | 72 | X509_NAME_get_text_by_NID(X509_NAME *name, int nid, char *buf, int len) |
| 71 | { | 73 | { |
diff --git a/src/lib/libcrypto/x509/x509rset.c b/src/lib/libcrypto/x509/x509rset.c index dabeda2a64..a2dd9e4cd2 100644 --- a/src/lib/libcrypto/x509/x509rset.c +++ b/src/lib/libcrypto/x509/x509rset.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: x509rset.c,v 1.8 2021/10/21 16:47:01 tb Exp $ */ | 1 | /* $OpenBSD: x509rset.c,v 1.9 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -63,6 +63,8 @@ | |||
| 63 | #include <openssl/objects.h> | 63 | #include <openssl/objects.h> |
| 64 | #include <openssl/x509.h> | 64 | #include <openssl/x509.h> |
| 65 | 65 | ||
| 66 | #include "x509_lcl.h" | ||
| 67 | |||
| 66 | int | 68 | int |
| 67 | X509_REQ_set_version(X509_REQ *x, long version) | 69 | X509_REQ_set_version(X509_REQ *x, long version) |
| 68 | { | 70 | { |
diff --git a/src/lib/libcrypto/x509/x509type.c b/src/lib/libcrypto/x509/x509type.c index 315a5c2326..1748ee5110 100644 --- a/src/lib/libcrypto/x509/x509type.c +++ b/src/lib/libcrypto/x509/x509type.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: x509type.c,v 1.13 2018/05/30 15:59:33 tb Exp $ */ | 1 | /* $OpenBSD: x509type.c,v 1.14 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -62,6 +62,8 @@ | |||
| 62 | #include <openssl/objects.h> | 62 | #include <openssl/objects.h> |
| 63 | #include <openssl/x509.h> | 63 | #include <openssl/x509.h> |
| 64 | 64 | ||
| 65 | #include "x509_lcl.h" | ||
| 66 | |||
| 65 | int | 67 | int |
| 66 | X509_certificate_type(const X509 *x, const EVP_PKEY *pkey) | 68 | X509_certificate_type(const X509 *x, const EVP_PKEY *pkey) |
| 67 | { | 69 | { |
diff --git a/src/lib/libcrypto/x509/x_all.c b/src/lib/libcrypto/x509/x_all.c index 36c12b80e5..c06e74c915 100644 --- a/src/lib/libcrypto/x509/x_all.c +++ b/src/lib/libcrypto/x509/x_all.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: x_all.c,v 1.23 2016/12/30 15:24:51 jsing Exp $ */ | 1 | /* $OpenBSD: x_all.c,v 1.24 2021/11/01 20:53:08 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -73,6 +73,8 @@ | |||
| 73 | #include <openssl/rsa.h> | 73 | #include <openssl/rsa.h> |
| 74 | #endif | 74 | #endif |
| 75 | 75 | ||
| 76 | #include "x509_lcl.h" | ||
| 77 | |||
| 76 | X509 * | 78 | X509 * |
| 77 | d2i_X509_bio(BIO *bp, X509 **x509) | 79 | d2i_X509_bio(BIO *bp, X509 **x509) |
| 78 | { | 80 | { |
