diff options
author | Keith Isdale <keith.isdale@nokia.com> | 2010-07-26 14:56:53 +1000 |
---|---|---|
committer | Keith Isdale <keith.isdale@nokia.com> | 2010-07-26 14:56:53 +1000 |
commit | 9f034793bcfc51c2b7c1dd14db806f7258f9a9eb (patch) | |
tree | 63bd0f50ce5b77828ad8205eafd7b9412810499e /botan/src/pubkey/eckaeg/eckaeg_op.cpp | |
parent | 619d92cfef29e653bfdf852e83888e50cfc4348f (diff) | |
parent | 65271649dbc90f3af1184ad1b23bdb64c0c07d07 (diff) |
Merge branch 'master' of git://git-nokia.trolltech.com.au/qtsoftware/research/qtuitest
Diffstat (limited to 'botan/src/pubkey/eckaeg/eckaeg_op.cpp')
-rw-r--r-- | botan/src/pubkey/eckaeg/eckaeg_op.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/botan/src/pubkey/eckaeg/eckaeg_op.cpp b/botan/src/pubkey/eckaeg/eckaeg_op.cpp new file mode 100644 index 0000000..0cb5c3d --- /dev/null +++ b/botan/src/pubkey/eckaeg/eckaeg_op.cpp @@ -0,0 +1,36 @@ +/* +* ECKAEG Operation +* (C) 2007 FlexSecure GmbH +* 2008 Jack Lloyd +* +* Distributed under the terms of the Botan license +*/ + +#include <botan/eckaeg_op.h> +#include <botan/numthry.h> + +namespace Botan { + +Default_ECKAEG_Op::Default_ECKAEG_Op(const EC_Domain_Params& dom_pars, + const BigInt& priv_key, + const PointGFp& pub_key) + : m_dom_pars(dom_pars), + m_pub_key(pub_key), + m_priv_key(priv_key) + { + } + +SecureVector<byte> Default_ECKAEG_Op::agree(const PointGFp& i) const + { + BigInt cofactor(m_dom_pars.get_cofactor()); + BigInt n = m_dom_pars.get_order(); + BigInt l(inverse_mod(cofactor,n)); // l=h^-1 mod n + PointGFp Q(cofactor*i); // q = h*Pb + PointGFp S(Q); + BigInt group_order = m_dom_pars.get_cofactor() * n; + S.mult_this_secure((m_priv_key*l)%n, group_order, n-1); + S.check_invariants(); + return FE2OSP(S.get_affine_x()); // fe2os(xs) + } + +} |