Hi Mouse,
From ecccrpyto.h, around line 250:
//! Elliptic Curve Integrated Encryption Scheme, AKA <a href="
http://www.weidai.com/scan-mirror/ca.html#ECIES">ECIES</a>
/*! Default to (NoCofactorMultiplication and DHAES_MODE = false) for compatibilty with SEC1 and Crypto++ 4.2.
The combination of (IncompatibleCofactorMultiplication and DHAES_MODE = true) is recommended for best
efficiency and security. */
template <class EC, class COFACTOR_OPTION = NoCofactorMultiplication, bool DHAES_MODE = false>
struct ECIES
: public DL_ES<
DL_Keys_EC<EC>,
DL_KeyAgreementAlgorithm_DH<typename EC::Point, COFACTOR_OPTION>,
DL_KeyDerivationAlgorithm_P1363<typename EC::Point, DHAES_MODE, P1363_KDF2<SHA1> >,
DL_EncryptionAlgorithm_Xor<HMAC<SHA1>, DHAES_MODE>,
ECIES<EC> >
{
static std::string CRYPTOPP_API StaticAlgorithmName() {return "ECIES";} // TODO: fix this after name is standardized
};
In this case, SECG may not be the proper reference (its hard to tell sometimes). Alos, there's an interop bug between Crypto++ and Bouncy Castle, if I recall correctly. It has to do with the width of an integer (4 vs 8).
The cofactor can be 1, 2 or 4. I seem to recall a cofactor of 1 and DHAES = true has the best security properties.
Jeff