diff options
| author | Carl Hetherington <cth@carlh.net> | 2013-01-11 00:25:11 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2013-01-11 00:25:11 +0000 |
| commit | 67cf9c95d190b1f2a67d73c0a7f712e213b6e71a (patch) | |
| tree | 5330aa403ea22459ed257ee577aaeec84053c0a4 /src/certificates.cc | |
| parent | 5265670cb158bee669e62a2953b41a624d324a36 (diff) | |
Tweaks to management of crypto information.
Diffstat (limited to 'src/certificates.cc')
| -rw-r--r-- | src/certificates.cc | 44 |
1 files changed, 18 insertions, 26 deletions
diff --git a/src/certificates.cc b/src/certificates.cc index 6ed32dca..c1b15c51 100644 --- a/src/certificates.cc +++ b/src/certificates.cc @@ -42,6 +42,19 @@ Certificate::Certificate (X509* c) } +Certificate::Certificate (string const & filename) + : _certificate (0) +{ + FILE* f = fopen (filename.c_str(), "r"); + if (!f) { + throw FileError ("could not open file", filename); + } + + if (!PEM_read_X509 (f, &_certificate, 0, 0)) { + throw MiscError ("could not read X509 certificate"); + } +} + Certificate::~Certificate () { X509_free (_certificate); @@ -147,32 +160,6 @@ Certificate::thumbprint () const return Kumu::base64encode (digest, 20, digest_base64, 64); } -/** @param filename Text file of PEM-format certificates, - * in the order: - * - * 1. self-signed root certificate - * 2. intermediate certificate signed by root certificate - * ... - * n. leaf certificate signed by previous intermediate. - */ - -CertificateChain::CertificateChain (string const & filename) -{ - FILE* f = fopen (filename.c_str(), "r"); - if (!f) { - throw FileError ("could not open file", filename); - } - - while (1) { - X509* c = 0; - if (!PEM_read_X509 (f, &c, 0, 0)) { - break; - } - - _certificates.push_back (shared_ptr<Certificate> (new Certificate (c))); - } -} - shared_ptr<Certificate> CertificateChain::root () const { @@ -195,3 +182,8 @@ CertificateChain::leaf_to_root () const return c; } +void +CertificateChain::add (shared_ptr<Certificate> c) +{ + _certificates.push_back (c); +} |
