CryptoKeyAgreement
(FUN)
FUNCTION CryptoKeyAgreement : RTS_IEC_RESULT
This function can be used to run asymmetric key agreement protocols like Diffie-Hellman (DH) or elliptic curve Diffie-Hellman (ECDH). These procols can be used to agree on secret keys via an insecure channel. The algorithm can not guarantee authenticity of the communication partner. Therefore, a man in the middle attack can not be detected or prevented during execution of the protocol. The strength of the new key depends on the chosen algorithm. It is recommended to derive a session key from this secret key.
- InOut:
Scope
Name
Type
Comment
Return
CryptoKeyAgreement
RTS_IEC_RESULT
- Operation result
ERR_OK: Key agreement was successful.
ERR_INVALID_STATE: The component is not in a valid state to do this operation.
RTS_INVALID_HANDLE: The hAlgo was not of type RTSCRYPTOTYPE_KEYAGREEMENT.
ERR_PARAMETER: The given keys where invalid or pSharedSecret was NULL.
ERR_SIZE_MISMATCH: The given bytestring is too small.
ERR_FAILED: The operation failed of some internal error.
ERR_NOT_SUPPORTED: The given algorithm or key does not support this operation.
Input
hAlgo
RTS_IEC_HANDLE
Handle of the used algorithm. Should be one of the RTSCRYPTOTYPE_KEYAGREEMENT algorithms.
privateKey
RtsCryptoKey
The local private key to run the operation.
peerPublicKey
RtsCryptoKey
The public key of the communication partner.
pSharedSecret
POINTER TO RtsByteString
The calculated shared secret key.