aboutsummaryrefslogtreecommitdiffstats
path: root/src/cms
diff options
context:
space:
mode:
Diffstat (limited to 'src/cms')
-rw-r--r--src/cms/cms_dalg.cpp1
-rw-r--r--src/cms/cms_ealg.cpp30
-rw-r--r--src/cms/cms_enc.h2
-rw-r--r--src/cms/info.txt2
4 files changed, 14 insertions, 21 deletions
diff --git a/src/cms/cms_dalg.cpp b/src/cms/cms_dalg.cpp
index 8d559f9a9..2a380b596 100644
--- a/src/cms/cms_dalg.cpp
+++ b/src/cms/cms_dalg.cpp
@@ -10,7 +10,6 @@
#include <botan/ber_dec.h>
#include <botan/oids.h>
#include <botan/hash.h>
-#include <botan/look_pk.h>
#include <botan/bigint.h>
#include <botan/libstate.h>
#include <memory>
diff --git a/src/cms/cms_ealg.cpp b/src/cms/cms_ealg.cpp
index 60479a820..3ddf8a39e 100644
--- a/src/cms/cms_ealg.cpp
+++ b/src/cms/cms_ealg.cpp
@@ -6,15 +6,15 @@
*/
#include <botan/cms_enc.h>
-#include <botan/der_enc.h>
-#include <botan/x509find.h>
#include <botan/bigint.h>
-#include <botan/oids.h>
#include <botan/cbc.h>
+#include <botan/der_enc.h>
#include <botan/hash.h>
-#include <botan/look_pk.h>
#include <botan/libstate.h>
+#include <botan/oids.h>
#include <botan/pipe.h>
+#include <botan/pubkey.h>
+#include <botan/x509find.h>
#include <memory>
namespace Botan {
@@ -107,12 +107,7 @@ void CMS_Encoder::encrypt(RandomNumberGenerator& rng,
if(constraints != NO_CONSTRAINTS && !(constraints & KEY_ENCIPHERMENT))
throw Invalid_Argument("CMS: Constraints not set for encryption");
- PK_Encrypting_Key* enc_key = dynamic_cast<PK_Encrypting_Key*>(key.get());
- if(enc_key == 0)
- throw Internal_Error("CMS_Encoder::encrypt: " + algo +
- " can't encrypt");
-
- encrypt_ktri(rng, to, enc_key, cipher);
+ encrypt_ktri(rng, to, key.get(), cipher);
}
else if(algo == "DH")
{
@@ -130,12 +125,13 @@ void CMS_Encoder::encrypt(RandomNumberGenerator& rng,
*/
void CMS_Encoder::encrypt_ktri(RandomNumberGenerator& rng,
const X509_Certificate& to,
- PK_Encrypting_Key* pub_key,
+ Public_Key* pub_key,
const std::string& cipher)
{
const std::string padding = "EME-PKCS1-v1_5";
const std::string pk_algo = pub_key->algo_name();
- std::auto_ptr<PK_Encryptor> enc(get_pk_encryptor(*pub_key, padding));
+
+ PK_Encryptor_EME encryptor(*pub_key, padding);
SymmetricKey cek = setup_key(rng, cipher);
@@ -151,7 +147,7 @@ void CMS_Encoder::encrypt_ktri(RandomNumberGenerator& rng,
.encode((u32bit)0);
encode_si(encoder, to)
.encode(alg_id)
- .encode(enc->encrypt(cek.bits_of(), rng), OCTET_STRING)
+ .encode(encryptor.encrypt(cek.bits_of(), rng), OCTET_STRING)
.end_cons()
.end_cons()
.raw_bytes(do_encrypt(rng, cek, cipher))
@@ -295,18 +291,16 @@ void CMS_Encoder::sign(const X509_Certificate& cert,
{
std::string padding = pad_algo + "(" + hash + ")";
- // FIXME: Add new get_format() func to PK_Signing_Key, PK_Verifying_*_Key
Signature_Format format = IEEE_1363;
- const PK_Signing_Key& sig_key = dynamic_cast<const PK_Signing_Key&>(key);
- std::auto_ptr<PK_Signer> signer(get_pk_signer(sig_key, padding, format));
+ PK_Signer signer(key, padding, format);
AlgorithmIdentifier sig_algo(OIDS::lookup(key.algo_name() + "/" + padding),
AlgorithmIdentifier::USE_NULL_PARAM);
SecureVector<byte> signed_attr = encode_attr(data, type, hash);
- signer->update(signed_attr);
- SecureVector<byte> signature = signer->signature(rng);
+ signer.update(signed_attr);
+ SecureVector<byte> signature = signer.signature(rng);
signed_attr[0] = 0xA0;
const u32bit SI_VERSION = cert.subject_key_id().size() ? 3 : 1;
diff --git a/src/cms/cms_enc.h b/src/cms/cms_enc.h
index b1e18ef7d..ec2fdf3b3 100644
--- a/src/cms/cms_enc.h
+++ b/src/cms/cms_enc.h
@@ -59,7 +59,7 @@ class BOTAN_DLL CMS_Encoder
void add_layer(const std::string&, DER_Encoder&);
void encrypt_ktri(RandomNumberGenerator&,
- const X509_Certificate&, PK_Encrypting_Key*,
+ const X509_Certificate&, Public_Key*,
const std::string&);
void encrypt_kari(RandomNumberGenerator&,
const X509_Certificate&, Public_Key*,
diff --git a/src/cms/info.txt b/src/cms/info.txt
index 44c5811f8..b863a9a26 100644
--- a/src/cms/info.txt
+++ b/src/cms/info.txt
@@ -9,7 +9,7 @@ hash
libstate
oid_lookup
pem
-pk_codecs
+pubkey
sha1
sym_algo
x509