diff options
author | lloyd <[email protected]> | 2014-01-10 03:41:59 +0000 |
---|---|---|
committer | lloyd <[email protected]> | 2014-01-10 03:41:59 +0000 |
commit | 6894dca64c04936d07048c0e8cbf7e25858548c3 (patch) | |
tree | 5d572bfde9fe667dab14e3f04b5285a85d8acd95 /src/lib/pk_pad/emsa_raw | |
parent | 9efa3be92442afb3d0b69890a36c7f122df18eda (diff) |
Move lib into src
Diffstat (limited to 'src/lib/pk_pad/emsa_raw')
-rw-r--r-- | src/lib/pk_pad/emsa_raw/emsa_raw.cpp | 68 | ||||
-rw-r--r-- | src/lib/pk_pad/emsa_raw/emsa_raw.h | 35 | ||||
-rw-r--r-- | src/lib/pk_pad/emsa_raw/info.txt | 1 |
3 files changed, 104 insertions, 0 deletions
diff --git a/src/lib/pk_pad/emsa_raw/emsa_raw.cpp b/src/lib/pk_pad/emsa_raw/emsa_raw.cpp new file mode 100644 index 000000000..cb0f99e9c --- /dev/null +++ b/src/lib/pk_pad/emsa_raw/emsa_raw.cpp @@ -0,0 +1,68 @@ +/* +* EMSA-Raw +* (C) 1999-2007 Jack Lloyd +* +* Distributed under the terms of the Botan license +*/ + +#include <botan/emsa_raw.h> + +namespace Botan { + +/* +* EMSA-Raw Encode Operation +*/ +void EMSA_Raw::update(const byte input[], size_t length) + { + message += std::make_pair(input, length); + } + +/* +* Return the raw (unencoded) data +*/ +secure_vector<byte> EMSA_Raw::raw_data() + { + secure_vector<byte> output; + std::swap(message, output); + return output; + } + +/* +* EMSA-Raw Encode Operation +*/ +secure_vector<byte> EMSA_Raw::encoding_of(const secure_vector<byte>& msg, + size_t, + RandomNumberGenerator&) + { + return msg; + } + +/* +* EMSA-Raw Verify Operation +*/ +bool EMSA_Raw::verify(const secure_vector<byte>& coded, + const secure_vector<byte>& raw, + size_t) + { + if(coded.size() == raw.size()) + return (coded == raw); + + if(coded.size() > raw.size()) + return false; + + // handle zero padding differences + const size_t leading_zeros_expected = raw.size() - coded.size(); + + bool same_modulo_leading_zeros = true; + + for(size_t i = 0; i != leading_zeros_expected; ++i) + if(raw[i]) + same_modulo_leading_zeros = false; + + if(!same_mem(&coded[0], &raw[leading_zeros_expected], coded.size())) + same_modulo_leading_zeros = false; + + return same_modulo_leading_zeros; + } + +} diff --git a/src/lib/pk_pad/emsa_raw/emsa_raw.h b/src/lib/pk_pad/emsa_raw/emsa_raw.h new file mode 100644 index 000000000..8ab763575 --- /dev/null +++ b/src/lib/pk_pad/emsa_raw/emsa_raw.h @@ -0,0 +1,35 @@ +/* +* EMSA-Raw +* (C) 1999-2007 Jack Lloyd +* +* Distributed under the terms of the Botan license +*/ + +#ifndef BOTAN_EMSA_RAW_H__ +#define BOTAN_EMSA_RAW_H__ + +#include <botan/emsa.h> + +namespace Botan { + +/** +* EMSA-Raw - sign inputs directly +* Don't use this unless you know what you are doing. +*/ +class BOTAN_DLL EMSA_Raw : public EMSA + { + private: + void update(const byte[], size_t); + secure_vector<byte> raw_data(); + + secure_vector<byte> encoding_of(const secure_vector<byte>&, size_t, + RandomNumberGenerator&); + bool verify(const secure_vector<byte>&, const secure_vector<byte>&, + size_t); + + secure_vector<byte> message; + }; + +} + +#endif diff --git a/src/lib/pk_pad/emsa_raw/info.txt b/src/lib/pk_pad/emsa_raw/info.txt new file mode 100644 index 000000000..f01d1bfa2 --- /dev/null +++ b/src/lib/pk_pad/emsa_raw/info.txt @@ -0,0 +1 @@ +define EMSA_RAW 20131128 |