From 5bdabb7a681b047e2304c693a764cfb6c08a95d5 Mon Sep 17 00:00:00 2001 From: Mouse Date: Mon, 4 Jul 2016 13:05:38 -0400 Subject: Add HMQV and merge untracked FHMQV --- eccrypto.h | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'eccrypto.h') diff --git a/eccrypto.h b/eccrypto.h index a3d15e95..96b2817b 100644 --- a/eccrypto.h +++ b/eccrypto.h @@ -16,6 +16,8 @@ #include "gfpcrypt.h" #include "dh.h" #include "mqv.h" +#include "hmqv.h" +#include "fhmqv.h" #include "ecp.h" #include "ec2n.h" @@ -213,6 +215,44 @@ struct ECMQV #endif }; +//! Hashed Menezes-Qu-Vanstone in GF(p) with key validation, +/*! HMQV: A High-Performance Secure Diffie-Hellman Protocol + Note: this implements HMQV only. HMQV-C (with Key Confirmation) will be provided separately. +*/ +template ::DefaultCofactorOption, class HASH = SHA256> +struct HMQV +{ + typedef HMQV_Domain, COFACTOR_OPTION, HASH> Domain; + +#ifndef CRYPTOPP_MAINTAIN_BACKWARDS_COMPATIBILITY_562 + virtual ~HMQV() {} +#endif +}; + +typedef HMQV< ECP, DL_GroupParameters_EC< ECP >::DefaultCofactorOption, SHA1 >::Domain HMQV160; +typedef HMQV< ECP, DL_GroupParameters_EC< ECP >::DefaultCofactorOption, SHA256 >::Domain HMQV256; +typedef HMQV< ECP, DL_GroupParameters_EC< ECP >::DefaultCofactorOption, SHA384 >::Domain HMQV384; +typedef HMQV< ECP, DL_GroupParameters_EC< ECP >::DefaultCofactorOption, SHA512 >::Domain HMQV512; + +//! Fully Hashed Menezes-Qu-Vanstone in GF(p) with key validation, +/*! A Secure and Efficient Authenticated Diffie–Hellman Protocol + Note: this is FHMQV, Protocol 5, from page 11; and not FHMQV-C. +*/ +template ::DefaultCofactorOption, class HASH = SHA256> +struct FHMQV +{ + typedef FHMQV_Domain, COFACTOR_OPTION, HASH> Domain; + +#ifndef CRYPTOPP_MAINTAIN_BACKWARDS_COMPATIBILITY_562 + virtual ~FHMQV() {} +#endif +}; + +typedef FHMQV< ECP, DL_GroupParameters_EC< ECP >::DefaultCofactorOption, SHA1 >::Domain FHMQV160; +typedef FHMQV< ECP, DL_GroupParameters_EC< ECP >::DefaultCofactorOption, SHA256 >::Domain FHMQV256; +typedef FHMQV< ECP, DL_GroupParameters_EC< ECP >::DefaultCofactorOption, SHA384 >::Domain FHMQV384; +typedef FHMQV< ECP, DL_GroupParameters_EC< ECP >::DefaultCofactorOption, SHA512 >::Domain FHMQV512; + //! EC keys template struct DL_Keys_EC -- cgit v1.2.1