Hi All,
I'm trying to get to p, a, and b of an ECP curve to verify parameters.
Below is the code. As usual, any help will be greatly appreciated.
const CryptoPP::ECP& curve = PrivateKey.GetAbstractGroupParameters().GetCurve();
const CryptoPP::ECP& curve = PrivateKey.GetCurve();
For some reason, the IDE is complaining that GetCurve() is neither a member of:
DL_PrivateKey_EC<class CryptoPP::ECP> or DL_GroupParameters<struct
CryptoPP::ECPPoint>.
This is even though I see it in the documentation (i.e., source code).
See DL_GroupParameters_EC. Functions such as GetCofactor() don't have
a problem...
Jeff
void DumpPrivateKey( const CryptoPP::ECIES< CryptoPP::ECP
::PrivateKey& PrivateKey )
{
// const CryptoPP::ECP curve =
PrivateKey.GetAbstractGroupParameters().GetCurve();
// const CryptoPP::ECP curve =
PrivateKey.AccessAbstractGroupParameters().GetCurve();
// CryptoPP::DL_GroupParameters< CryptoPP::ECP > params =
PrivateKey.GetAbstractGroupParameters();
const CryptoPP::ECP& curve =
PrivateKey.GetAbstractGroupParameters().GetCurve();
// = PrivateKey.GetAbstractGroupParameters().GetCurve().GetKey();
CryptoPP::Integer p;
std::cout << "EC Parameter p: " << p << std::endl;
CryptoPP::Integer a;
std::cout << "EC Parameter a: " << a << std::endl;
CryptoPP::Integer b;
std::cout << "EC Parameter b: " << b << std::endl;
CryptoPP::Integer n =
PrivateKey.GetAbstractGroupParameters().GetSubgroupOrder();
std::cout << "Sub Group Order (n): " << n << std::endl;
CryptoPP::Integer k = PrivateKey.GetAbstractGroupParameters().GetCofactor();
std::cout << "Cofactor (k): " << k << std::endl;
if( CryptoPP::Integer::One() == CryptoPP::GCD( n, k ) )
{ std::cout << "n and k are relatively prime" << std::endl; }
else
{ std::cout << "n and k are not relatively prime" << std::endl; }
CryptoPP::Integer m =
PrivateKey.GetAbstractGroupParameters().GetMaxExponent();
std::cout << "Max Exponent (m): " << m << std::endl;
CryptoPP::Integer e = PrivateKey.GetPrivateExponent();
std::cout << "Private Exponent (e): " << e << std::endl;
if( e < m )
{ std::cout << "Private Exponent is less than Max Exponent" <<
std::endl; }
else
{ std::cout << "Private Exponent is not less than Max
Exponent" << std::endl; }
}