diff options
Diffstat (limited to 'src/fuzzer/divide.cpp')
-rw-r--r-- | src/fuzzer/divide.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/fuzzer/divide.cpp b/src/fuzzer/divide.cpp new file mode 100644 index 000000000..01ec14e28 --- /dev/null +++ b/src/fuzzer/divide.cpp @@ -0,0 +1,29 @@ +/* +* (C) 2015,2016 Jack Lloyd +* +* Botan is released under the Simplified BSD License (see license.txt) +*/ +#include "fuzzers.h" +#include <botan/divide.h> + +void fuzz(const uint8_t in[], size_t len) + { + if(len % 2 == 1 || len > 2*4096/8) + return; + + const Botan::BigInt x = Botan::BigInt::decode(in, len / 2); + const Botan::BigInt y = Botan::BigInt::decode(in + len / 2, len / 2); + + if(y == 0) + return; + + Botan::BigInt q, r; + Botan::divide(x, y, q, r); + + FUZZER_ASSERT_TRUE(r < y); + + Botan::BigInt z = q*y + r; + + FUZZER_ASSERT_EQUAL(z, x); + } + |