aboutsummaryrefslogtreecommitdiffstats
path: root/src/cms/cms_algo.cpp
diff options
context:
space:
mode:
authorlloyd <[email protected]>2008-09-30 14:54:19 +0000
committerlloyd <[email protected]>2008-09-30 14:54:19 +0000
commitd16a30f7cd0e8866a401a36ef4319f9b03274642 (patch)
tree7c5738ced56097c5ddbe170779067220ed59c61b /src/cms/cms_algo.cpp
parentc7a6315f9c46f22219b30802621eba2ca3f368fb (diff)
Fixes to not require RC2 for CMS to compile
Diffstat (limited to 'src/cms/cms_algo.cpp')
-rw-r--r--src/cms/cms_algo.cpp22
1 files changed, 17 insertions, 5 deletions
diff --git a/src/cms/cms_algo.cpp b/src/cms/cms_algo.cpp
index fadc68da5..13b794352 100644
--- a/src/cms/cms_algo.cpp
+++ b/src/cms/cms_algo.cpp
@@ -8,7 +8,10 @@
#include <botan/lookup.h>
#include <botan/filters.h>
#include <botan/libstate.h>
-#include <botan/rc2.h>
+
+#if defined(BOTAN_HAS_RC2)
+ #include <botan/rc2.h>
+#endif
namespace Botan {
@@ -71,13 +74,17 @@ SecureVector<byte> CMS_Encoder::wrap_key(RandomNumberGenerator& rng,
const SymmetricKey& cek,
const SymmetricKey& kek)
{
+#if defined(BOTAN_HAS_DES)
if(cipher == "TripleDES")
{
SymmetricKey cek_parity = cek;
cek_parity.set_odd_parity();
return do_rfc3217_wrap(rng, cipher, kek, cek_parity.bits_of());
}
- else if(cipher == "RC2" || cipher == "CAST-128")
+#endif
+
+#if defined(BOTAN_HAS_RC2) || defined(BOTAN_HAS_CAST)
+ if(cipher == "RC2" || cipher == "CAST-128")
{
if(kek.length() != 16)
throw Encoding_Error("CMS: 128-bit KEKs must be used with " + cipher);
@@ -89,8 +96,9 @@ SecureVector<byte> CMS_Encoder::wrap_key(RandomNumberGenerator& rng,
lcekpad.append(rng.next_byte());
return do_rfc3217_wrap(rng, cipher, kek, lcekpad);
}
- else
- throw Invalid_Argument("CMS_Encoder::wrap: Unknown cipher " + cipher);
+#endif
+
+ throw Invalid_Argument("CMS_Encoder::wrap: Unknown cipher " + cipher);
}
/*************************************************
@@ -102,14 +110,18 @@ SecureVector<byte> CMS_Encoder::encode_params(const std::string& cipher,
{
DER_Encoder encoder;
+#if defined(BOTAN_HAS_RC2)
if(cipher == "RC2")
{
encoder.start_cons(SEQUENCE).
encode((u32bit)RC2::EKB_code(8*key.length())).
encode(iv.bits_of(), OCTET_STRING).
end_cons();
+ return encoder.get_contents();
}
- else if(cipher == "CAST-128")
+#endif
+
+ if(cipher == "CAST-128")
{
encoder.start_cons(SEQUENCE).
encode(iv.bits_of(), OCTET_STRING).