Expose x509 certificate API.
authorNIIBE Yutaka <gniibe@fsij.org>
Thu, 19 Jan 2017 05:04:10 +0000 (14:04 +0900)
committerNIIBE Yutaka <gniibe@fsij.org>
Thu, 19 Jan 2017 05:04:10 +0000 (14:04 +0900)
Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
src/libntbtls.def
src/libntbtls.vers
src/ntbtls.h.in
src/protocol.c
src/visibility.c
src/visibility.h

index c4aa2a7..065287c 100644 (file)
@@ -32,4 +32,8 @@ EXPORTS
 
     ntbtls_handshake                      @8
 
+    ntbtls_set_ca_chain                   @9
+    ntbtls_x509_cert_new                  @10
+    ntbtls_x509_cert_release              @11
+    ntbtls_x509_append_cert               @12
 ; END
index 32d7774..41c7eb5 100644 (file)
@@ -32,6 +32,10 @@ NTBTLS_1.0 {
 
     ntbtls_handshake;
 
+    ntbtls_set_ca_chain;
+    ntbtls_x509_cert_new;
+    ntbtls_x509_cert_release;
+    ntbtls_x509_append_cert;
 
   local:
     *;
index 63cb087..371b698 100644 (file)
@@ -81,6 +81,10 @@ gpg_error_t ntbtls_x509_cert_new (x509_cert_t *r_cert);
 /* Destroy a X509 certificate chain.  */
 gpg_error_t ntbtls_x509_cert_release (x509_cert_t cert);
 
+/* Parse a single DER formatted certificate and add it to the chained list.  */
+gpg_error_t ntbtls_x509_append_cert (x509_cert_t cert, const void *der,
+                                     size_t derlen);
+
 /* Setup the transport streams (usually connected to one socket).  */
 gpg_error_t ntbtls_set_transport (ntbtls_t tls,
                                   gpgrt_stream_t inbound,
index 3cf16c3..721f3f0 100644 (file)
@@ -3041,6 +3041,7 @@ _ntbtls_set_ca_chain (ntbtls_t tls, x509_cert_t ca_chain, x509_crl_t ca_crl)
 
   tls->ca_chain = ca_chain;
   tls->ca_crl = ca_crl;
+  return 0;
 }
 
 
index 19be6af..bc59fae 100644 (file)
@@ -69,6 +69,20 @@ ntbtls_get_stream (ntbtls_t tls,
 
 
 gpg_error_t
+ntbtls_set_hostname (ntbtls_t tls, const char *hostname)
+{
+  return _ntbtls_set_hostname (tls, hostname);
+}
+
+
+gpg_error_t
+ntbtls_handshake (ntbtls_t tls)
+{
+  return _ntbtls_handshake (tls);
+}
+
+
+gpg_error_t
 ntbtls_set_ca_chain (ntbtls_t tls, x509_cert_t ca_chain, x509_crl_t ca_crl)
 {
   return _ntbtls_set_ca_chain (tls, ca_chain, ca_crl);
@@ -76,13 +90,21 @@ ntbtls_set_ca_chain (ntbtls_t tls, x509_cert_t ca_chain, x509_crl_t ca_crl)
 
 
 gpg_error_t
-ntbtls_set_hostname (ntbtls_t tls, const char *hostname)
+ntbtls_x509_new (x509_cert_t *r_cert)
 {
-  return _ntbtls_set_hostname (tls, hostname);
+  return _ntbtls_x509_new (r_cert);
+}
+
+
+void
+ntbtls_x509_release (x509_cert_t cert)
+{
+  _ntbtls_x509_release (cert);
 }
 
+
 gpg_error_t
-ntbtls_handshake (ntbtls_t tls)
+ntbtls_x509_append_cert (x509_cert_t cert, const void *der, size_t derlen)
 {
-  return _ntbtls_handshake (tls);
+  return _ntbtls_x509_append_cert (cert, der, derlen);
 }
index bb6e5de..69249d3 100644 (file)
@@ -47,10 +47,13 @@ MARK_VISIBLE (ntbtls_new)
 MARK_VISIBLE (ntbtls_release)
 MARK_VISIBLE (ntbtls_set_transport)
 MARK_VISIBLE (ntbtls_get_stream)
-MARK_VISIBLE (ntbtls_set_ca_chain)
 MARK_VISIBLE (ntbtls_set_hostname)
 MARK_VISIBLE (ntbtls_handshake)
 
+MARK_VISIBLE (ntbtls_set_ca_chain)
+MARK_VISIBLE (ntbtls_x509_cert_new)
+MARK_VISIBLE (ntbtls_x509_cert_release)
+MARK_VISIBLE (ntbtls_x509_append_cert)
 
 
 #undef MARK_VISIBLE
@@ -69,6 +72,10 @@ MARK_VISIBLE (ntbtls_handshake)
 #define ntbtls_set_hostname          _ntbtls_USE_THE_UNDERSCORED_FUNCTION
 #define ntbtls_handshake             _ntbtls_USE_THE_UNDERSCORED_FUNCTION
 
+#define ntbtls_set_ca_chain          _ntbtls_USE_THE_UNDERSCORED_FUNCTION
+#define ntbtls_x509_cert_new         _ntbtls_USE_THE_UNDERSCORED_FUNCTION
+#define ntbtls_x509_cert_release     _ntbtls_USE_THE_UNDERSCORED_FUNCTION
+#define ntbtls_x509_append_cert      _ntbtls_USE_THE_UNDERSCORED_FUNCTION
 
 #endif /*!_NTBTLS_INCLUDED_BY_VISIBILITY_C*/
 #endif /*NTBTLS_VISIBILITY_H*/