4. CMOX_ECDH

4.1. CMOX ECC ECDH PUBLIC METHODS

group CMOX_ECC_ECDH_PUBLIC_METHODS

Functions

cmox_ecc_retval_t cmox_ecdh ( cmox_ecc_handle_t * P_pEccCtx , const cmox_ecc_impl_t P_CurveParams , const uint8_t * P_pPrivKey , size_t P_PrivKeyLen , const uint8_t * P_pPubKey , size_t P_PubKeyLen , uint8_t * P_pSharedSecret , size_t * P_pSharedSecretLen )

Generate a shared secret from a private key and a public key.

Parameters :
  • P_pEccCtx[in] Context for ECC operations

  • P_CurveParams[in] Curve Parameters and point functions This parameter can be one of the following:

    • CMOX_ECC_CURVE25519

    • CMOX_ECC_CURVE448

    • CMOX_ECC_SECP224R1_LOWMEM

    • CMOX_ECC_SECP224R1_HIGHMEM

    • CMOX_ECC_SECP256R1_LOWMEM

    • CMOX_ECC_SECP256R1_HIGHMEM

    • CMOX_ECC_SECP384R1_LOWMEM

    • CMOX_ECC_SECP384R1_HIGHMEM

    • CMOX_ECC_SECP521R1_LOWMEM

    • CMOX_ECC_SECP521R1_HIGHMEM

    • CMOX_ECC_SECP256K1_LOWMEM

    • CMOX_ECC_SECP256K1_HIGHMEM

    • CMOX_ECC_BPP160R1_LOWMEM

    • CMOX_ECC_BPP160R1_HIGHMEM

    • CMOX_ECC_BPP192R1_LOWMEM

    • CMOX_ECC_BPP192R1_HIGHMEM

    • CMOX_ECC_BPP224R1_LOWMEM

    • CMOX_ECC_BPP224R1_HIGHMEM

    • CMOX_ECC_BPP256R1_LOWMEM

    • CMOX_ECC_BPP256R1_HIGHMEM

    • CMOX_ECC_BPP320R1_LOWMEM

    • CMOX_ECC_BPP320R1_HIGHMEM

    • CMOX_ECC_BPP384R1_LOWMEM

    • CMOX_ECC_BPP384R1_HIGHMEM

    • CMOX_ECC_BPP512R1_LOWMEM

    • CMOX_ECC_BPP512R1_HIGHMEM

    • CMOX_ECC_BPP160T1_LOWMEM

    • CMOX_ECC_BPP160T1_HIGHMEM

    • CMOX_ECC_BPP192T1_LOWMEM

    • CMOX_ECC_BPP192T1_HIGHMEM

    • CMOX_ECC_BPP224T1_LOWMEM

    • CMOX_ECC_BPP224T1_HIGHMEM

    • CMOX_ECC_BPP256T1_LOWMEM

    • CMOX_ECC_BPP256T1_HIGHMEM

    • CMOX_ECC_BPP320T1_LOWMEM

    • CMOX_ECC_BPP320T1_HIGHMEM

    • CMOX_ECC_BPP384T1_LOWMEM

    • CMOX_ECC_BPP384T1_HIGHMEM

    • CMOX_ECC_BPP512T1_LOWMEM

    • CMOX_ECC_BPP512T1_HIGHMEM

    • CMOX_ECC_FRP256V1_LOWMEM

    • CMOX_ECC_FRP256V1_HIGHMEM

  • P_pPrivKey[in] Buffer with the private key

  • P_PrivKeyLen[in] Private key length

  • P_pPubKey[in] Buffer with the public key

  • P_PubKeyLen[in] Public key length

  • P_pSharedSecret[out] Buffer for the shared secret

  • P_pSharedSecretLen[out] Shared secret length

Return values :
  • CMOX_ECC_SUCCESS – Everything OK

  • CMOX_ECC_ERR_MATHCURVE_MISMATCH – Mathematical function set is not compatible with current ECC curve

  • CMOX_ECC_ERR_ALGOCURVE_MISMATCH – Curve is not compatible with current functionality

  • CMOX_ECC_ERR_BAD_PARAMETERS – Some NULL/wrong/empty parameter or Construct API not called

  • CMOX_ECC_ERR_MEMORY_FAIL – Not enough memory

  • CMOX_ECC_ERR_INVALID_PUBKEY – Public key not in a valid format