summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjsing <>2018-02-22 17:17:09 +0000
committerjsing <>2018-02-22 17:17:09 +0000
commit9bb8b88ba75274cdfc424822a5a98bff2c8788bd (patch)
tree5955fc3176564b42fce86c77f77227f7987038fd
parent025b01ee745f943fc9de80a0e0f9499ce3a5c982 (diff)
downloadopenbsd-9bb8b88ba75274cdfc424822a5a98bff2c8788bd.tar.gz
openbsd-9bb8b88ba75274cdfc424822a5a98bff2c8788bd.tar.bz2
openbsd-9bb8b88ba75274cdfc424822a5a98bff2c8788bd.zip
Provide X509_OBJECT_get0_X509() and X509_OBJECT_get0_X509_CRL().
-rw-r--r--src/lib/libcrypto/Symbols.list2
-rw-r--r--src/lib/libcrypto/x509/x509_lu.c19
-rw-r--r--src/lib/libcrypto/x509/x509_vfy.h4
3 files changed, 22 insertions, 3 deletions
diff --git a/src/lib/libcrypto/Symbols.list b/src/lib/libcrypto/Symbols.list
index 9396056f6e..ac0f39918e 100644
--- a/src/lib/libcrypto/Symbols.list
+++ b/src/lib/libcrypto/Symbols.list
@@ -2747,6 +2747,8 @@ X509_NAME_print_ex
2747X509_NAME_print_ex_fp 2747X509_NAME_print_ex_fp
2748X509_NAME_set 2748X509_NAME_set
2749X509_OBJECT_free_contents 2749X509_OBJECT_free_contents
2750X509_OBJECT_get0_X509
2751X509_OBJECT_get0_X509_CRL
2750X509_OBJECT_idx_by_subject 2752X509_OBJECT_idx_by_subject
2751X509_OBJECT_retrieve_by_subject 2753X509_OBJECT_retrieve_by_subject
2752X509_OBJECT_retrieve_match 2754X509_OBJECT_retrieve_match
diff --git a/src/lib/libcrypto/x509/x509_lu.c b/src/lib/libcrypto/x509/x509_lu.c
index 175b8b6c05..3a28c06d20 100644
--- a/src/lib/libcrypto/x509/x509_lu.c
+++ b/src/lib/libcrypto/x509/x509_lu.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x509_lu.c,v 1.24 2018/02/22 17:15:09 jsing Exp $ */ 1/* $OpenBSD: x509_lu.c,v 1.25 2018/02/22 17:17:09 jsing 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 *
@@ -533,6 +533,22 @@ X509_OBJECT_retrieve_by_subject(STACK_OF(X509_OBJECT) *h, int type,
533 return sk_X509_OBJECT_value(h, idx); 533 return sk_X509_OBJECT_value(h, idx);
534} 534}
535 535
536X509 *
537X509_OBJECT_get0_X509(const X509_OBJECT *xo)
538{
539 if (xo != NULL && xo->type == X509_LU_X509)
540 return xo->data.x509;
541 return NULL;
542}
543
544X509_CRL *
545X509_OBJECT_get0_X509_CRL(X509_OBJECT *xo)
546{
547 if (xo != NULL && xo->type == X509_LU_CRL)
548 return xo->data.crl;
549 return NULL;
550}
551
536STACK_OF(X509) * 552STACK_OF(X509) *
537X509_STORE_get1_certs(X509_STORE_CTX *ctx, X509_NAME *nm) 553X509_STORE_get1_certs(X509_STORE_CTX *ctx, X509_NAME *nm)
538{ 554{
@@ -656,7 +672,6 @@ X509_OBJECT_retrieve_match(STACK_OF(X509_OBJECT) *h, X509_OBJECT *x)
656 return NULL; 672 return NULL;
657} 673}
658 674
659
660/* Try to get issuer certificate from store. Due to limitations 675/* Try to get issuer certificate from store. Due to limitations
661 * of the API this can only retrieve a single certificate matching 676 * of the API this can only retrieve a single certificate matching
662 * a given subject name. However it will fill the cache with all 677 * a given subject name. However it will fill the cache with all
diff --git a/src/lib/libcrypto/x509/x509_vfy.h b/src/lib/libcrypto/x509/x509_vfy.h
index 57c19acd18..a62f89a64e 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.22 2018/02/22 17:15:09 jsing Exp $ */ 1/* $OpenBSD: x509_vfy.h,v 1.23 2018/02/22 17:17:09 jsing 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 *
@@ -426,6 +426,8 @@ X509_OBJECT *X509_OBJECT_retrieve_by_subject(STACK_OF(X509_OBJECT) *h,int type,X
426X509_OBJECT *X509_OBJECT_retrieve_match(STACK_OF(X509_OBJECT) *h, X509_OBJECT *x); 426X509_OBJECT *X509_OBJECT_retrieve_match(STACK_OF(X509_OBJECT) *h, X509_OBJECT *x);
427void X509_OBJECT_up_ref_count(X509_OBJECT *a); 427void X509_OBJECT_up_ref_count(X509_OBJECT *a);
428void X509_OBJECT_free_contents(X509_OBJECT *a); 428void X509_OBJECT_free_contents(X509_OBJECT *a);
429X509 *X509_OBJECT_get0_X509(const X509_OBJECT *xo);
430X509_CRL *X509_OBJECT_get0_X509_CRL(X509_OBJECT *xo);
429 431
430X509_STORE *X509_STORE_new(void); 432X509_STORE *X509_STORE_new(void);
431void X509_STORE_free(X509_STORE *v); 433void X509_STORE_free(X509_STORE *v);