compilable again

master
Marc Wäckerlin 15 years ago
parent 2d60d54967
commit 1c119eba6c
  1. 2
      doc/examples/makefile.am
  2. 1
      src/makefile.am
  3. 23
      src/openssl.hxx

@ -12,7 +12,7 @@ pcsc_demo_SOURCES = pcsc-demo.cxx
pcsc_demo_LDADD = -lpcsclite pcsc_demo_LDADD = -lpcsclite
cryptoki_demo_SOURCES = cryptoki-demo.cxx cryptoki_demo_SOURCES = cryptoki-demo.cxx
cryptoki_demo_LDADD = -ldl -lpthread -lcryptoki++ cryptoki_demo_LDADD = -ldl -lpthread -lssl -lcryptoki++
cryptoki_demo_LDFLAGS = -L${top_builddir}/src cryptoki_demo_LDFLAGS = -L${top_builddir}/src
MAINTAINERCLEANFILES = makefile.in MAINTAINERCLEANFILES = makefile.in

@ -12,6 +12,7 @@ pkcs11dir = ${includedir}/pkcs11
lib_LTLIBRARIES = libcryptoki++.la lib_LTLIBRARIES = libcryptoki++.la
libcryptoki___la_SOURCES = cryptoki.cxx cryptoki.hxx ${pkcs11_HEADERS} libcryptoki___la_SOURCES = cryptoki.cxx cryptoki.hxx ${pkcs11_HEADERS}
libcryptoki___la_LIBADD = -llibssl
if BUILD_WIN if BUILD_WIN
else else

@ -15,6 +15,7 @@
#include <openssl/err.h> #include <openssl/err.h>
#include <vector> #include <vector>
#include <openssl/x509v3.h> // BASIC_CONSTRAINTS
#include <cryptaux.hxx> #include <cryptaux.hxx>
#include <cstdio> #include <cstdio>
@ -338,19 +339,15 @@ namespace openssl {
return std::string((char*)M_ASN1_STRING_data(cn), return std::string((char*)M_ASN1_STRING_data(cn),
M_ASN1_STRING_length(cn)); M_ASN1_STRING_length(cn));
} }
//! Check for basic constraints. //! Check whether it's a CA certificate.
/*! e.g. check for CA certificate: bool isCa() {
@code
if (x509.basicConstraints() && x509.basicConstraints()->ca) [...]
@endcode
@return 0 if there are no basic constraints */
BASIC_CONSTRAINTS* basicConstraints() {
static BASIC_CONSTRAINTS* bc(0); static BASIC_CONSTRAINTS* bc(0);
if (!bc) { if (!bc) {
int pos(X509_get_ext_by_NID(_x509, NID_basic_constraints, -1)); int pos(X509_get_ext_by_NID(_x509, NID_basic_constraints, -1));
if (pos>=0) bc = X509V3_EXT_d2i(X509_get_ext(_x509, pos)); if (pos>=0)
bc = (BASIC_CONSTRAINTS*)X509V3_EXT_d2i(X509_get_ext(_x509, pos));
} }
return bc; return bc&&bc->ca;
} }
//! Get organizational unit name. //! Get organizational unit name.
std::string organizationalUnitName() const { std::string organizationalUnitName() const {
@ -367,11 +364,11 @@ namespace openssl {
std::string keyUsageFlags() const { std::string keyUsageFlags() const {
int pos(X509_get_ext_by_NID(_x509, NID_key_usage, -1)); int pos(X509_get_ext_by_NID(_x509, NID_key_usage, -1));
if (pos>=0) { if (pos>=0) {
ASN1_BIT_STRING ku(d2i(X509_get_ext(_x509, pos))); ASN1_BIT_STRING* ku((ASN1_BIT_STRING*)X509V3_EXT_d2i
(X509_get_ext(_x509, pos)));
return std::string((char*)M_ASN1_STRING_data(ku), return std::string((char*)M_ASN1_STRING_data(ku),
M_ASN1_STRING_lengthku)); M_ASN1_STRING_length(ku));
else } else return std::string(); //! @todo better throw exception?
return std::string(); //! @todo better throw exception?
} }
private: private:
::X509* _x509; ::X509* _x509;

Loading…
Cancel
Save