|
|
|
@ -17,6 +17,17 @@ |
|
|
|
|
#include <openssl/err.h> |
|
|
|
|
#include <vector> |
|
|
|
|
|
|
|
|
|
#include <openssl/opensslv.h> |
|
|
|
|
#ifndef OPENSSL_VERSION_NUMBER |
|
|
|
|
# error OpenSSL Version Number not Found |
|
|
|
|
#elif OPENSSL_VERSION_NUMBER < 0x01000000L |
|
|
|
|
# define OPENSSL_0 |
|
|
|
|
# define V0_CONST const |
|
|
|
|
#else |
|
|
|
|
# define OPENSSL_1 |
|
|
|
|
# define V0_CONST /* no const in openssl 1.0.0 */ |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
#include <openssl/x509v3.h> // BASIC_CONSTRAINTS |
|
|
|
|
#include <openssl/bn.h> |
|
|
|
|
#include <cryptaux.hxx> |
|
|
|
@ -724,7 +735,7 @@ namespace openssl { |
|
|
|
|
//! Initialize from DER encoded cerificate.
|
|
|
|
|
X509(const std::string& der): _x509(0) { |
|
|
|
|
OPENSSL_LOG("log"); |
|
|
|
|
unsigned char* c((unsigned char*)der.begin().operator->()); |
|
|
|
|
V0_CONST unsigned char* c((unsigned char*)der.begin().operator->()); |
|
|
|
|
if (!(_x509=d2i_X509(0, &c, der.size())) || |
|
|
|
|
(const char*)c!=der.begin().operator->()+der.size()) |
|
|
|
|
throw x509_decoding_failed(der); |
|
|
|
@ -734,7 +745,7 @@ namespace openssl { |
|
|
|
|
unsigned char* d(0); |
|
|
|
|
int len(i2d_X509(o._x509, &d)); |
|
|
|
|
if (!len) throw x509_copy_failed(); |
|
|
|
|
unsigned char* d2(d); |
|
|
|
|
V0_CONST unsigned char* d2(d); |
|
|
|
|
_x509 = d2i_X509(0, &d2, len); |
|
|
|
|
OPENSSL_free(d); |
|
|
|
|
if (!_x509) throw x509_copy_failed(); |
|
|
|
@ -755,7 +766,7 @@ namespace openssl { |
|
|
|
|
unsigned char* d(0); |
|
|
|
|
int len(i2d_X509(o._x509, &d)); |
|
|
|
|
if (!len) throw x509_copy_failed(); |
|
|
|
|
unsigned char* d2(d); |
|
|
|
|
V0_CONST unsigned char* d2(d); |
|
|
|
|
_x509 = d2i_X509(0, &d2, len); |
|
|
|
|
OPENSSL_free(d); |
|
|
|
|
if (!_x509) throw x509_copy_failed(); |
|
|
|
|