.. _functions-based-on-gf-p: Functions Based on GF(*p*) ========================== This section describes functions designed to specify the elliptic curve cryptosystem and perform various operations on the elliptic curve defined over a prime finite field. The examples of the operations are shown below: - Setting up operations: `ECCPSet `__ sets up elliptic curve domain parameters. `ECCPSetKeyPair `__ sets a pair of public and private keys for the given cryptosystem. - Computation operations: `ECCPAddPoint `__ adds two points on the elliptic curve. `ECCPMulPointScalar `__ performs the scalar multiplication of a point on the elliptic curve. `ECCPSignDSA `__ computes the digital signature of a message. - Validation operations: `ECCPValidate `__ checks validity of the elliptic curve domain parameters. `ECCPValidateKeyPair `__ validates correctness of the public and private keys. - Generation operations: `ECCPGenKeyPair `__ generates a private key and computes a public key for the given elliptic cryptosystem. - Retrieval operations: `ECCPGet `__ retrieves elliptic curve domain parameters. `ECCPGetOrderBitSize `__ retrieves the size of a base point in bytes. All functions described in this section employ a context IppsECCPState that catches several auxiliary components specifying operations performed on the elliptic curve or entire elliptic cryptosystem. ECCP stands for Elliptic Curve Cryptography Prime and means that all functions whose name include this abbreviation perform operations over a prime finite field GF( *p*). The IppECCType enumerator lists standard elliptic curves supported. You can select a particular type in a call to `ECCPSetStd `__. The table below associates each value of IppECCType with parameters of the elliptic curve and provides a reference to the appropriate specification. .. list-table:: Standard Elliptic Curves :header-rows: 1 * - Value of IppECCType - Name of the Curve - Reference * - ippECarbitrary - Not applicable - No reference because of arbitrary parameters. * - ippECstd112r1 - secp112r1 - [`SEC2 `__] * - ippECstd112r2 - secp112r2 - [SEC2] * - ippECstd128r1 - secp128r1 - [SEC2] * - ippECstd128r2 - secp128r2 - [SEC2] * - ippECstd160r1 - secp160r1 - [SEC2] * - ippECstd160r2 - secp160r2 - [SEC2] * - ippECstd192r1 - secp192r1 - [SEC2] * - ippECstd224r1 - secp224r1 - [SEC2] * - ippECstd256r1 - secp256r1 - [SEC2] * - ippECstd384r1 - secp384r1 - [SEC2] * - ippECstd521r1 - secp521r1 - [SEC2] * - ippECstdSM2 - SM2 - [`SM2 `__] For more information on parameters recommended for the functions, see [`SEC2 `__] and [`SM2 `__]. .. note:: .. rubric:: Important :class: NoteTipHead To provide minimum security of the elliptic curve cryptosystem over a prime finite field, the length of the underlying prime must be equal to or greater than 160 bits. .. toctree:: :maxdepth: 1 eccpgetsize eccpgetsizestd eccpinit eccpinitstd eccpbindgxytblstd eccpset eccpsetstd eccpget eccpgetorderbitsize eccpvalidate eccppointgetsize eccppointinit eccpsetpoint eccpsetpointatinfinity eccpgetpoint eccpcheckpoint eccpcomparepoint eccpnegativepoint eccpaddpoint eccpmulpointscalar eccpgenkeypair eccppublickey eccpvalidatekeypair eccpsetkeypair eccpsharedsecretdh eccpsharedsecretdhc eccpsigndsa eccpverifydsa eccpsignnr eccpverifynr eccpsignsm2 eccpverifysm2 signing-verification-using-the-elliptic-curve-cryptography-functions-over-a-prime-finite-field