A key agreement protocol is a means by which two parties engage in an
exchange of incoming/outgoing messages, at the end of which, both
participants would share a common secret. Such a shared secret can then
be used to provide different security services such as replay detection,
integrity protection, and confidentiality protection.
Figure 12: Key agreement class diagram
Four key agreement protocols are implemented in this library. They are:
- Diffie-Hellman basic version, also known as the Static-Static Mode
in RFC-2631. [RFC2631]
- ElGamal version, knwon as half-certified Diffie-Hellman key agreement,
as well as Ephemeral-Static Mode in RFC-2631. [RFC2631]
- Secure Remote Password protocol known as SRP-6. [Wu02]
- The version of SRP-6 as used in the SASL-SRP proposed mechanism.
The following sequence diagram shows a possible use of the key agreement
API classes to negotiate a Diffie-Hellman protocol:
Figure 13: Key agreement sequence diagram