diff options
author | lloyd <[email protected]> | 2006-09-06 06:15:20 +0000 |
---|---|---|
committer | lloyd <[email protected]> | 2006-09-06 06:15:20 +0000 |
commit | 219aa8f6b449f7dc81ddae48c4b01328ffe69cd3 (patch) | |
tree | 5758eb3c0439d63ed0fa6f1405527bb361045d10 /src/x509_ca.cpp | |
parent | e5e05aef45ab376c605ecd585aa48efe3b14ddc1 (diff) |
Merge a formerly duplicate function (one in an anonymous namespace in
x509self.cpp, the other a block of code in X509_CA's constructor).
Diffstat (limited to 'src/x509_ca.cpp')
-rw-r--r-- | src/x509_ca.cpp | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/src/x509_ca.cpp b/src/x509_ca.cpp index 7e556f164..e7a463e18 100644 --- a/src/x509_ca.cpp +++ b/src/x509_ca.cpp @@ -33,16 +33,7 @@ X509_CA::X509_CA(const X509_Certificate& c, if(!cert.is_CA_cert()) throw Invalid_Argument("X509_CA: This certificate is not for a CA"); - std::string padding; - Signature_Format format; - - Config::choose_sig_format(key.algo_name(), padding, format); - - ca_sig_algo.oid = OIDS::lookup(key.algo_name() + "/" + padding); - ca_sig_algo.parameters = key.DER_encode_params(); - - const PK_Signing_Key& sig_key = dynamic_cast<const PK_Signing_Key&>(key); - signer = get_pk_signer(sig_key, padding, format); + signer = choose_sig_format(key, ca_sig_algo); } /************************************************* @@ -249,4 +240,22 @@ X509_CA::~X509_CA() delete signer; } +/************************************************* +* Choose a signing format for the key * +*************************************************/ +PK_Signer* choose_sig_format(const PKCS8_PrivateKey& key, + AlgorithmIdentifier& sig_algo) + { + std::string padding; + Signature_Format format; + Config::choose_sig_format(key.algo_name(), padding, format); + + sig_algo.oid = OIDS::lookup(key.algo_name() + "/" + padding); + sig_algo.parameters = key.DER_encode_params(); + + const PK_Signing_Key& sig_key = dynamic_cast<const PK_Signing_Key&>(key); + + return get_pk_signer(sig_key, padding, format); + } + } |