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; }

}

Reply via email to