Developer Guide and Reference for Intel® Integrated Performance Primitives Cryptography
Discrete-Logarithm-Based Cryptography Functions
This section introduces Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography) functions allowing for different operations with Discrete Logarithm (DL) based cryptosystem over a prime finite field GF(p). The functions are mainly based on the IEEE P1363A standard. Implementation of the Digital Signature operations is based on FIPS PUB 186-2. The Diffie-Hellman (DH) Agreement scheme is based on X9.42.
All functions described in this section employ the IppsDLPState context as operational vehicle that carries domain parameters of the DL cryptosystem, a pair of keys, and working buffers.
The application code intended for executing typical operations should perform the following sequence of operations:
- Call the function DLPGetSize to get the size required to configure the IppsDLPState context. 
- Ensure that the required memory space is properly allocated. With the allocated memory, call the DLPInit function to initialize the context of the DL-based cryptosystem. 
- Set domain parameters of the DL-based cryptosystem by calling the DLPSet function, or generate domain parameters by calling the DLPGenerateDSA or DLPGenerateDH. 
- Call one of the functions DLPSignDSA, DLPVerifyDSA, and DLPSharedSecretDH to compute digital signature, to verify authenticity of the digital signature, and to compute the shared element accordingly. 
- Clean up secret data stored in the context. 
- Free the memory allocated for the IppsDLPState context by calling the operating system memory free service function unless the context is no longer needed. 
The IppsDLPState context is position-dependent. The DLPPack/DLPUnpack functions transform the position-dependent context to a position-independent form and vice versa.
Related Information
- DLPGetSize
- DLPInit
- DLPPack, DLPUnpack
- DLPSet
- DLPGet
- DLPSetDP
- DLPGetDP
- DLPGenKeyPair
- DLPPublicKey
- DLPValidateKeyPair
- DLPSetKeyPair
- DLPGenerateDSA
- DLPValidateDSA
- DLPSignDSA
- DLPVerifyDSA
- Example of Using Discrete-logarithm Based Primitive Functions
- DLPGenerateDH
- DLPValidateDH
- DLPSharedSecretDH
- DLGetResultString