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
CryptoKeyAgreementRTS_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
hAlgoRTS_IEC_HANDLEHandle of the used algorithm. Should be one of the RTSCRYPTOTYPE_KEYAGREEMENT algorithms.
privateKeyRtsCryptoKeyThe local private key to run the operation.
peerPublicKeyRtsCryptoKeyThe public key of the communication partner.
pSharedSecretPOINTER TO RtsByteString
The calculated shared secret key.