Use recipient rather than responder in authenticated key agreement

The recipient may not respond (though they do in the case of these key agreement schemes)
pull/873/head
Jeffrey Walton 2019-08-03 23:52:50 -04:00
parent 0b42a18cde
commit 5aac8506bd
No known key found for this signature in database
GPG Key ID: B36AB348921B1838
2 changed files with 30 additions and 22 deletions

View File

@ -117,9 +117,13 @@ bool AuthenticatedKeyAgreementValidate(AuthenticatedKeyAgreementDomain &d)
memset(val1.begin(), 0x10, val1.size()); memset(val1.begin(), 0x10, val1.size());
memset(val2.begin(), 0x11, val2.size()); memset(val2.begin(), 0x11, val2.size());
if (!(d.Agree(val1, spriv1, epriv1, spub2, epub2) && d.Agree(val2, spriv2, epriv2, spub1, epub1))) if (d.Agree(val1, spriv1, epriv1, spub2, epub2) && d.Agree(val2, spriv2, epriv2, spub1, epub1))
{ {
std::cout << "FAILED authenticated key agreement failed" << std::endl; std::cout << "passed authenticated key agreement protocol execution" << std::endl;
}
else
{
std::cout << "FAILED authenticated key agreement protocol execution" << std::endl;
return false; return false;
} }
@ -133,29 +137,29 @@ bool AuthenticatedKeyAgreementValidate(AuthenticatedKeyAgreementDomain &d)
return true; return true;
} }
bool AuthenticatedKeyAgreementWithRolesValidate(AuthenticatedKeyAgreementDomain &initiator, AuthenticatedKeyAgreementDomain &responder) bool AuthenticatedKeyAgreementWithRolesValidate(AuthenticatedKeyAgreementDomain &initiator, AuthenticatedKeyAgreementDomain &recipient)
{ {
if (initiator.GetCryptoParameters().Validate(GlobalRNG(), 3)) if (initiator.GetCryptoParameters().Validate(GlobalRNG(), 3))
std::cout << "passed authenticated key agreement domain parameters validation (initiator)" << std::endl; std::cout << "passed authenticated key agreement domain parameters validation (initiator)" << std::endl;
else else
{ {
std::cout << "FAILED authenticated key agreement domain parameters invalid (initiator)" << std::endl; std::cout << "FAILED authenticated key agreement domain parameters invalid (recipient)" << std::endl;
return false; return false;
} }
if (responder.GetCryptoParameters().Validate(GlobalRNG(), 3)) if (recipient.GetCryptoParameters().Validate(GlobalRNG(), 3))
std::cout << "passed authenticated key agreement domain parameters validation (responder)" << std::endl; std::cout << "passed authenticated key agreement domain parameters validation (initiator)" << std::endl;
else else
{ {
std::cout << "FAILED authenticated key agreement domain parameters invalid (responder)" << std::endl; std::cout << "FAILED authenticated key agreement domain parameters invalid (recipient)" << std::endl;
return false; return false;
} }
if (initiator.StaticPrivateKeyLength() != responder.StaticPrivateKeyLength() || if (initiator.StaticPrivateKeyLength() != recipient.StaticPrivateKeyLength() ||
initiator.EphemeralPrivateKeyLength() != responder.EphemeralPrivateKeyLength() || initiator.EphemeralPrivateKeyLength() != recipient.EphemeralPrivateKeyLength() ||
initiator.StaticPublicKeyLength() != responder.StaticPublicKeyLength() || initiator.StaticPublicKeyLength() != recipient.StaticPublicKeyLength() ||
initiator.EphemeralPublicKeyLength() != responder.EphemeralPublicKeyLength() || initiator.EphemeralPublicKeyLength() != recipient.EphemeralPublicKeyLength() ||
initiator.AgreedValueLength() != responder.AgreedValueLength()) initiator.AgreedValueLength() != recipient.AgreedValueLength())
{ {
std::cout << "FAILED authenticated key agreement domain parameter consistency" << std::endl; std::cout << "FAILED authenticated key agreement domain parameter consistency" << std::endl;
return false; return false;
@ -165,23 +169,27 @@ bool AuthenticatedKeyAgreementWithRolesValidate(AuthenticatedKeyAgreementDomain
std::cout << "passed authenticated key agreement domain parameter consistency" << std::endl; std::cout << "passed authenticated key agreement domain parameter consistency" << std::endl;
} }
SecByteBlock spriv1(initiator.StaticPrivateKeyLength()), spriv2(responder.StaticPrivateKeyLength()); SecByteBlock spriv1(initiator.StaticPrivateKeyLength()), spriv2(recipient.StaticPrivateKeyLength());
SecByteBlock epriv1(initiator.EphemeralPrivateKeyLength()), epriv2(responder.EphemeralPrivateKeyLength()); SecByteBlock epriv1(initiator.EphemeralPrivateKeyLength()), epriv2(recipient.EphemeralPrivateKeyLength());
SecByteBlock spub1(initiator.StaticPublicKeyLength()), spub2(responder.StaticPublicKeyLength()); SecByteBlock spub1(initiator.StaticPublicKeyLength()), spub2(recipient.StaticPublicKeyLength());
SecByteBlock epub1(initiator.EphemeralPublicKeyLength()), epub2(responder.EphemeralPublicKeyLength()); SecByteBlock epub1(initiator.EphemeralPublicKeyLength()), epub2(recipient.EphemeralPublicKeyLength());
SecByteBlock val1(initiator.AgreedValueLength()), val2(responder.AgreedValueLength()); SecByteBlock val1(initiator.AgreedValueLength()), val2(recipient.AgreedValueLength());
initiator.GenerateStaticKeyPair(GlobalRNG(), spriv1, spub1); initiator.GenerateStaticKeyPair(GlobalRNG(), spriv1, spub1);
responder.GenerateStaticKeyPair(GlobalRNG(), spriv2, spub2); recipient.GenerateStaticKeyPair(GlobalRNG(), spriv2, spub2);
initiator.GenerateEphemeralKeyPair(GlobalRNG(), epriv1, epub1); initiator.GenerateEphemeralKeyPair(GlobalRNG(), epriv1, epub1);
responder.GenerateEphemeralKeyPair(GlobalRNG(), epriv2, epub2); recipient.GenerateEphemeralKeyPair(GlobalRNG(), epriv2, epub2);
memset(val1.begin(), 0x10, val1.size()); memset(val1.begin(), 0x10, val1.size());
memset(val2.begin(), 0x11, val2.size()); memset(val2.begin(), 0x11, val2.size());
if (!(initiator.Agree(val1, spriv1, epriv1, spub2, epub2) && responder.Agree(val2, spriv2, epriv2, spub1, epub1))) if (initiator.Agree(val1, spriv1, epriv1, spub2, epub2) && recipient.Agree(val2, spriv2, epriv2, spub1, epub1))
{ {
std::cout << "FAILED authenticated key agreement failed" << std::endl; std::cout << "passed authenticated key agreement protocol execution" << std::endl;
}
else
{
std::cout << "FAILED authenticated key agreement protocol execution" << std::endl;
return false; return false;
} }

View File

@ -344,7 +344,7 @@ bool RunTestDataFile(const char *filename, const NameValuePairs &overrideParamet
// Definitions in validat6.cpp // Definitions in validat6.cpp
bool CryptoSystemValidate(PK_Decryptor &priv, PK_Encryptor &pub, bool thorough = false); bool CryptoSystemValidate(PK_Decryptor &priv, PK_Encryptor &pub, bool thorough = false);
bool SimpleKeyAgreementValidate(SimpleKeyAgreementDomain &d); bool SimpleKeyAgreementValidate(SimpleKeyAgreementDomain &d);
bool AuthenticatedKeyAgreementWithRolesValidate(AuthenticatedKeyAgreementDomain &initiator, AuthenticatedKeyAgreementDomain &responder); bool AuthenticatedKeyAgreementWithRolesValidate(AuthenticatedKeyAgreementDomain &initiator, AuthenticatedKeyAgreementDomain &recipient);
bool AuthenticatedKeyAgreementValidate(AuthenticatedKeyAgreementDomain &d); bool AuthenticatedKeyAgreementValidate(AuthenticatedKeyAgreementDomain &d);
bool SignatureValidate(PK_Signer &priv, PK_Verifier &pub, bool thorough = false); bool SignatureValidate(PK_Signer &priv, PK_Verifier &pub, bool thorough = false);