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.