diff options
author | lloyd <[email protected]> | 2010-09-26 17:10:02 +0000 |
---|---|---|
committer | lloyd <[email protected]> | 2010-09-26 17:10:02 +0000 |
commit | 3181cda998fc96868efc17b9630fdd5dceff9404 (patch) | |
tree | 556cb4ef134b1ed34c26ea1a08ebb1aba605b988 /src/pubkey | |
parent | c820501357ac3acc81ddb8fad9fd9fd5fee9b32f (diff) |
Use BOTAN_ASSERT in various places
Diffstat (limited to 'src/pubkey')
-rw-r--r-- | src/pubkey/dl_group/dl_group.cpp | 18 | ||||
-rw-r--r-- | src/pubkey/ec_dompar/ec_dompar.cpp | 4 | ||||
-rw-r--r-- | src/pubkey/ecc_key/ecc_key.cpp | 9 | ||||
-rw-r--r-- | src/pubkey/ecdh/ecdh.cpp | 5 | ||||
-rw-r--r-- | src/pubkey/gost_3410/gost_3410.cpp | 9 | ||||
-rw-r--r-- | src/pubkey/pubkey.cpp | 8 | ||||
-rw-r--r-- | src/pubkey/rsa/rsa.cpp | 5 |
7 files changed, 33 insertions, 25 deletions
diff --git a/src/pubkey/dl_group/dl_group.cpp b/src/pubkey/dl_group/dl_group.cpp index d4e306ac3..d714bc154 100644 --- a/src/pubkey/dl_group/dl_group.cpp +++ b/src/pubkey/dl_group/dl_group.cpp @@ -14,6 +14,7 @@ #include <botan/pipe.h> #include <botan/pem.h> #include <botan/internal/workfactor.h> +#include <botan/internal/assert.h> namespace Botan { @@ -312,23 +313,22 @@ void DL_Group::PEM_decode(DataSource& source) } /* -* Create a random DSA-style generator +* Create generator of the q-sized subgroup (DSA style generator) */ BigInt DL_Group::make_dsa_generator(const BigInt& p, const BigInt& q) { BigInt g, e = (p - 1) / q; - for(u32bit j = 0; j != PRIME_TABLE_SIZE; ++j) + BOTAN_ASSERT(e > 0, "q does not divide p, invalid group"); + + for(u32bit i = 0; i != PRIME_TABLE_SIZE; ++i) { - g = power_mod(PRIMES[j], e, p); - if(g != 1) - break; + g = power_mod(PRIMES[i], e, p); + if(g > 1) + return g; } - if(g == 1) - throw Internal_Error("DL_Group: Couldn't create a suitable generator"); - - return g; + throw Internal_Error("DL_Group: Couldn't create a suitable generator"); } } diff --git a/src/pubkey/ec_dompar/ec_dompar.cpp b/src/pubkey/ec_dompar/ec_dompar.cpp index 512d8d769..c1b969103 100644 --- a/src/pubkey/ec_dompar/ec_dompar.cpp +++ b/src/pubkey/ec_dompar/ec_dompar.cpp @@ -124,8 +124,8 @@ EC_Domain_Params::DER_encode(EC_Domain_Params_Encoding form) const return DER_Encoder().encode(get_oid()).get_contents(); else if(form == EC_DOMPAR_ENC_IMPLICITCA) return DER_Encoder().encode_null().get_contents(); - - throw Internal_Error("EC_Domain_Params::encode_DER: Unknown encoding"); + else + throw Internal_Error("EC_Domain_Params::DER_encode: Unknown encoding"); } std::string EC_Domain_Params::PEM_encode() const diff --git a/src/pubkey/ecc_key/ecc_key.cpp b/src/pubkey/ecc_key/ecc_key.cpp index 4f90fa321..bf221aad0 100644 --- a/src/pubkey/ecc_key/ecc_key.cpp +++ b/src/pubkey/ecc_key/ecc_key.cpp @@ -14,6 +14,7 @@ #include <botan/ber_dec.h> #include <botan/secmem.h> #include <botan/point_gfp.h> +#include <botan/internal/assert.h> namespace Botan { @@ -99,8 +100,8 @@ EC_PrivateKey::EC_PrivateKey(RandomNumberGenerator& rng, private_key = BigInt::random_integer(rng, 1, domain().get_order()); public_key = domain().get_base_point() * private_key; - if(!public_key.on_the_curve()) - throw Internal_Error("ECC private key generation failed"); + BOTAN_ASSERT(public_key.on_the_curve(), + "generated ECC private key was not on the curve"); } MemoryVector<byte> EC_PrivateKey::pkcs8_private_key() const @@ -129,8 +130,8 @@ EC_PrivateKey::EC_PrivateKey(const AlgorithmIdentifier& alg_id, public_key = domain().get_base_point() * private_key; - if(!public_key.on_the_curve()) - throw Internal_Error("Loaded ECC private key failed self test"); + BOTAN_ASSERT(public_key.on_the_curve(), + "Loaded ECC private key not on the curve"); } } diff --git a/src/pubkey/ecdh/ecdh.cpp b/src/pubkey/ecdh/ecdh.cpp index 8d13e7f65..2c78b65a6 100644 --- a/src/pubkey/ecdh/ecdh.cpp +++ b/src/pubkey/ecdh/ecdh.cpp @@ -8,6 +8,7 @@ */ #include <botan/ecdh.h> +#include <botan/internal/assert.h> namespace Botan { @@ -25,8 +26,8 @@ SecureVector<byte> ECDH_KA_Operation::agree(const byte w[], u32bit w_len) PointGFp S = (cofactor * point) * l_times_priv; - if(!S.on_the_curve()) - throw Internal_Error("ECDH: Agreed value was not on the curve"); + BOTAN_ASSERT(S.on_the_curve(), + "ECDH agreed value not on the curve"); return BigInt::encode_1363(S.get_affine_x(), curve.get_p().bytes()); diff --git a/src/pubkey/gost_3410/gost_3410.cpp b/src/pubkey/gost_3410/gost_3410.cpp index 1cff9e081..50878634b 100644 --- a/src/pubkey/gost_3410/gost_3410.cpp +++ b/src/pubkey/gost_3410/gost_3410.cpp @@ -10,6 +10,7 @@ #include <botan/gost_3410.h> #include <botan/der_enc.h> #include <botan/ber_dec.h> +#include <botan/internal/assert.h> namespace Botan { @@ -74,8 +75,8 @@ GOST_3410_PublicKey::GOST_3410_PublicKey(const AlgorithmIdentifier& alg_id, public_key = PointGFp(domain().get_curve(), x, y); - if(!public_key.on_the_curve()) - throw Internal_Error("Loaded GOST 34.10 public key failed self test"); + BOTAN_ASSERT(public_key.on_the_curve(), + "Loaded GOST 34.10 public key not on the curve"); } namespace { @@ -118,8 +119,8 @@ GOST_3410_Signature_Operation::sign(const byte msg[], u32bit msg_len, PointGFp k_times_P = base_point * k; - if(!k_times_P.on_the_curve()) - throw Internal_Error("GOST 34.10 k*g not on the curve"); + BOTAN_ASSERT(k_times_P.on_the_curve(), + "GOST 34.10 k*g not on the curve"); BigInt r = k_times_P.get_affine_x() % order; diff --git a/src/pubkey/pubkey.cpp b/src/pubkey/pubkey.cpp index 725cdacf7..3b7d81fb2 100644 --- a/src/pubkey/pubkey.cpp +++ b/src/pubkey/pubkey.cpp @@ -14,6 +14,7 @@ #include <botan/engine.h> #include <botan/lookup.h> #include <botan/internal/bit_ops.h> +#include <botan/internal/assert.h> #include <memory> namespace Botan { @@ -169,6 +170,9 @@ void PK_Signer::update(const byte in[], u32bit length) bool PK_Signer::self_test_signature(const MemoryRegion<byte>& msg, const MemoryRegion<byte>& sig) const { + if(!verify_op) + return true; // checking disabled, assume ok + if(verify_op->with_recovery()) { SecureVector<byte> recovered = @@ -203,8 +207,8 @@ SecureVector<byte> PK_Signer::signature(RandomNumberGenerator& rng) SecureVector<byte> plain_sig = op->sign(&encoded[0], encoded.size(), rng); - if(verify_op && !self_test_signature(encoded, plain_sig)) - throw Internal_Error("PK_Signer consistency check failed"); + BOTAN_ASSERT(self_test_signature(encoded, plain_sig), + "PK_Signer consistency check failed"); if(op->message_parts() == 1 || sig_format == IEEE_1363) return plain_sig; diff --git a/src/pubkey/rsa/rsa.cpp b/src/pubkey/rsa/rsa.cpp index 84048fa2e..54c8fed0b 100644 --- a/src/pubkey/rsa/rsa.cpp +++ b/src/pubkey/rsa/rsa.cpp @@ -10,6 +10,7 @@ #include <botan/parsing.h> #include <botan/numthry.h> #include <botan/keypair.h> +#include <botan/internal/assert.h> namespace Botan { @@ -108,8 +109,8 @@ RSA_Private_Operation::decrypt(const byte msg[], u32bit msg_len) BigInt m(msg, msg_len); BigInt x = blinder.unblind(private_op(blinder.blind(m))); - if(m != powermod_e_n(x)) - throw Internal_Error("RSA private op failed consistency check"); + BOTAN_ASSERT(m == powermod_e_n(x), + "RSA private op failed consistency check"); return BigInt::encode(x); } |