summaryrefslogtreecommitdiffstats
path: root/pkcs11_openssl.c
diff options
context:
space:
mode:
authorAlon Bar-Lev <alon.barlev@gmail.com>2012-02-29 22:11:59 +0200
committerDavid Sommerseth <davids@redhat.com>2012-03-22 22:07:08 +0100
commit34cb9132ef2dae08f91a66015ea5437539a4b557 (patch)
treeedd69bb83cc490a47692cb847d066231cd6146fd /pkcs11_openssl.c
parentfcff80aac1f71ebf881fbc269fb3c4df0789de6b (diff)
downloadopenvpn-34cb9132ef2dae08f91a66015ea5437539a4b557.tar.gz
openvpn-34cb9132ef2dae08f91a66015ea5437539a4b557.tar.xz
openvpn-34cb9132ef2dae08f91a66015ea5437539a4b557.zip
build: standard directory layout
Suitable for mature project. root - administrative stuff doc - documents src - sources tests - tests distro - distro specific files sample - samples SIDE EFFECT: many changes to rpm spec. Signed-off-by: Alon Bar-Lev <alon.barlev@gmail.com> Acked-by: Adriaan de Jong <dejong@fox-it.com> Signed-off-by: David Sommerseth <davids@redhat.com>
Diffstat (limited to 'pkcs11_openssl.c')
-rw-r--r--pkcs11_openssl.c188
1 files changed, 0 insertions, 188 deletions
diff --git a/pkcs11_openssl.c b/pkcs11_openssl.c
deleted file mode 100644
index aa1eccc..0000000
--- a/pkcs11_openssl.c
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- * OpenVPN -- An application to securely tunnel IP networks
- * over a single TCP/UDP port, with support for SSL/TLS-based
- * session authentication and key exchange,
- * packet encryption, packet authentication, and
- * packet compression.
- *
- * Copyright (C) 2002-2010 OpenVPN Technologies, Inc. <sales@openvpn.net>
- * Copyright (C) 2010 Fox Crypto B.V. <openvpn@fox-it.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program (see the file COPYING included with this
- * distribution); if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-/**
- * @file PKCS #11 OpenSSL backend
- */
-
-#include "syshead.h"
-
-#if defined(ENABLE_PKCS11) && defined(USE_OPENSSL)
-
-#include "errlevel.h"
-#include "pkcs11_backend.h"
-#include <pkcs11-helper-1.0/pkcs11h-openssl.h>
-
-int
-pkcs11_init_tls_session(pkcs11h_certificate_t certificate,
- struct tls_root_ctx * const ssl_ctx)
-{
- int ret = 1;
-
- X509 *x509 = NULL;
- RSA *rsa = NULL;
- pkcs11h_openssl_session_t openssl_session = NULL;
-
- if ((openssl_session = pkcs11h_openssl_createSession (certificate)) == NULL)
- {
- msg (M_WARN, "PKCS#11: Cannot initialize openssl session");
- goto cleanup;
- }
-
- /*
- * Will be released by openssl_session
- */
- certificate = NULL;
-
- if ((rsa = pkcs11h_openssl_session_getRSA (openssl_session)) == NULL)
- {
- msg (M_WARN, "PKCS#11: Unable get rsa object");
- goto cleanup;
- }
-
- if ((x509 = pkcs11h_openssl_session_getX509 (openssl_session)) == NULL)
- {
- msg (M_WARN, "PKCS#11: Unable get certificate object");
- goto cleanup;
- }
-
- if (!SSL_CTX_use_RSAPrivateKey (ssl_ctx->ctx, rsa))
- {
- msg (M_WARN, "PKCS#11: Cannot set private key for openssl");
- goto cleanup;
- }
-
- if (!SSL_CTX_use_certificate (ssl_ctx->ctx, x509))
- {
- msg (M_WARN, "PKCS#11: Cannot set certificate for openssl");
- goto cleanup;
- }
- ret = 0;
-
-cleanup:
- /*
- * Certificate freeing is usually handled by openssl_session.
- * If something went wrong, creating the session we have to do it manually.
- */
- if (certificate != NULL) {
- pkcs11h_certificate_freeCertificate (certificate);
- certificate = NULL;
- }
-
- /*
- * openssl objects have reference
- * count, so release them
- */
- if (x509 != NULL)
- {
- X509_free (x509);
- x509 = NULL;
- }
-
- if (rsa != NULL)
- {
- RSA_free (rsa);
- rsa = NULL;
- }
-
- if (openssl_session != NULL)
- {
- pkcs11h_openssl_freeSession (openssl_session);
- openssl_session = NULL;
- }
- return ret;
-}
-
-int
-pkcs11_certificate_dn (pkcs11h_certificate_t certificate, char *dn,
- size_t dn_len)
-{
- X509 *x509 = NULL;
- int ret = 1;
-
- if ((x509 = pkcs11h_openssl_getX509 (certificate)) == NULL)
- {
- msg (M_FATAL, "PKCS#11: Cannot get X509");
- ret = 1;
- goto cleanup;
- }
-
- _openssl_get_subject (x509, dn, dn_len);
-
- ret = 0;
-
-cleanup:
- if (x509 != NULL)
- {
- X509_free (x509);
- x509 = NULL;
- }
-
- return ret;
-}
-
-int
-pkcs11_certificate_serial (pkcs11h_certificate_t certificate, char *serial,
- size_t serial_len)
-{
- X509 *x509 = NULL;
- BIO *bio = NULL;
- int ret = 1;
- int n;
-
- if ((x509 = pkcs11h_openssl_getX509 (certificate)) == NULL)
- {
- msg (M_FATAL, "PKCS#11: Cannot get X509");
- goto cleanup;
- }
-
- if ((bio = BIO_new (BIO_s_mem ())) == NULL)
- {
- msg (M_FATAL, "PKCS#11: Cannot create BIO");
- goto cleanup;
- }
-
- i2a_ASN1_INTEGER(bio, X509_get_serialNumber (x509));
- n = BIO_read (bio, serial, serial_len-1);
-
- if (n<0) {
- serial[0] = '\x0';
- }
- else {
- serial[n] = 0;
- }
-
- ret = 0;
-
-cleanup:
-
- if (x509 != NULL)
- {
- X509_free (x509);
- x509 = NULL;
- }
- return ret;
-}
-#endif /* defined(ENABLE_PKCS11) && defined(ENABLE_OPENSSL) */