summaryrefslogtreecommitdiff
path: root/src/lib/libtls/tls_peer.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/lib/libtls/tls_peer.c50
1 files changed, 49 insertions, 1 deletions
diff --git a/src/lib/libtls/tls_peer.c b/src/lib/libtls/tls_peer.c
index e2a2c7b141..39a9d90cab 100644
--- a/src/lib/libtls/tls_peer.c
+++ b/src/lib/libtls/tls_peer.c
@@ -1,6 +1,7 @@
1/* $OpenBSD: tls_peer.c,v 1.1 2015/09/11 11:28:01 jsing Exp $ */ 1/* $OpenBSD: tls_peer.c,v 1.2 2015/09/11 12:56:55 beck Exp $ */
2/* 2/*
3 * Copyright (c) 2015 Joel Sing <jsing@openbsd.org> 3 * Copyright (c) 2015 Joel Sing <jsing@openbsd.org>
4 * Copyright (c) 2015 Bob Beck <beck@openbsd.org>
4 * 5 *
5 * Permission to use, copy, modify, and distribute this software for any 6 * Permission to use, copy, modify, and distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above 7 * purpose with or without fee is hereby granted, provided that the above
@@ -85,3 +86,50 @@ err:
85 86
86 return (rv); 87 return (rv);
87} 88}
89
90int
91tls_peer_cert_provided(struct tls *ctx)
92{
93 return (ctx->ssl_peer_cert != NULL);
94}
95
96int
97tls_peer_cert_contains_name(struct tls *ctx, const char *name)
98{
99 if (ctx->ssl_peer_cert == NULL)
100 return (0);
101
102 return (tls_check_name(ctx, ctx->ssl_peer_cert, name) == 0);
103}
104
105int
106tls_peer_cert_issuer(struct tls *ctx, char **issuer)
107{
108 X509_NAME *name = NULL;
109
110 *issuer = NULL;
111 if (ctx->ssl_peer_cert != NULL)
112 return (-1);
113 if ((name = X509_get_issuer_name(ctx->ssl_peer_cert)) == NULL)
114 return (-1);
115 *issuer = X509_NAME_oneline(name, 0, 0);
116 if (*issuer == NULL)
117 return (-1);
118 return (0);
119}
120
121int
122tls_peer_cert_subject(struct tls *ctx, char **subject)
123{
124 X509_NAME *name = NULL;
125
126 *subject = NULL;
127 if (ctx->ssl_peer_cert == NULL)
128 return (-1);
129 if ((name = X509_get_subject_name(ctx->ssl_peer_cert)) == NULL)
130 return (-1);
131 *subject = X509_NAME_oneline(name, 0, 0);
132 if (*subject == NULL)
133 return (-1);
134 return (0);
135}