aboutsummaryrefslogtreecommitdiffstats
path: root/src/cert/cvc/ecdsa_sig.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/cert/cvc/ecdsa_sig.h')
-rw-r--r--src/cert/cvc/ecdsa_sig.h64
1 files changed, 14 insertions, 50 deletions
diff --git a/src/cert/cvc/ecdsa_sig.h b/src/cert/cvc/ecdsa_sig.h
index 3e202d703..1397a92b1 100644
--- a/src/cert/cvc/ecdsa_sig.h
+++ b/src/cert/cvc/ecdsa_sig.h
@@ -1,5 +1,5 @@
/*
-* ECDSA
+* ECDSA Signature
* (C) 2007 Falko Strenzke, FlexSecure GmbH
* (C) 2008-2010 Jack Lloyd
*
@@ -21,9 +21,10 @@ class BOTAN_DLL ECDSA_Signature
friend class ECDSA_Signature_Decoder;
ECDSA_Signature() {}
- ECDSA_Signature(const BigInt& r, const BigInt& s);
- ECDSA_Signature(const ECDSA_Signature& other);
- ECDSA_Signature& operator=(const ECDSA_Signature& other);
+ ECDSA_Signature(const BigInt& r, const BigInt& s) :
+ m_r(r), m_s(s) {}
+
+ ECDSA_Signature(const MemoryRegion<byte>& ber);
const BigInt& get_r() const { return m_r; }
const BigInt& get_s() const { return m_s; }
@@ -31,62 +32,25 @@ class BOTAN_DLL ECDSA_Signature
/**
* return the r||s
*/
- SecureVector<byte> get_concatenation() const;
- private:
- BigInt m_r;
- BigInt m_s;
- };
+ MemoryVector<byte> get_concatenation() const;
-/* Equality of ECDSA_Signature */
-bool operator==(const ECDSA_Signature& lhs, const ECDSA_Signature& rhs);
-inline bool operator!=(const ECDSA_Signature& lhs, const ECDSA_Signature& rhs)
- {
- return !(lhs == rhs);
- }
+ MemoryVector<byte> DER_encode() const;
-class BOTAN_DLL ECDSA_Signature_Decoder
- {
- public:
- void signature_bits(const MemoryRegion<byte>& bits)
+ bool operator==(const ECDSA_Signature& other) const
{
- BER_Decoder(bits)
- .start_cons(SEQUENCE)
- .decode(m_signature->m_r)
- .decode(m_signature->m_s)
- .verify_end()
- .end_cons();
+ return (get_r() == other.get_r() && get_s() == other.get_s());
}
- ECDSA_Signature_Decoder(ECDSA_Signature* signature) :
- m_signature(signature)
- {}
-
private:
- ECDSA_Signature* m_signature;
+ BigInt m_r;
+ BigInt m_s;
};
-class BOTAN_DLL ECDSA_Signature_Encoder
+inline bool operator!=(const ECDSA_Signature& lhs, const ECDSA_Signature& rhs)
{
- public:
- MemoryVector<byte> signature_bits() const
- {
- return DER_Encoder()
- .start_cons(SEQUENCE)
- .encode(m_signature->get_r())
- .encode(m_signature->get_s())
- .end_cons()
- .get_contents();
- }
-
- ECDSA_Signature_Encoder(const ECDSA_Signature* signature) :
- m_signature(signature)
- {}
-
- private:
- const ECDSA_Signature* m_signature;
- };
+ return !(lhs == rhs);
+ }
-ECDSA_Signature decode_seq(const MemoryRegion<byte>& seq);
ECDSA_Signature decode_concatenation(const MemoryRegion<byte>& concatenation);
}