Intel EP80579 User Manual

Page of 76
Intel
®
 EP80579 Software for Security Applications on Intel
®
 QuickAssist Technology
August 2009
PG
Order Number: 320183-004US
69
Using the Intel
®
 QuickAssist Technology Cryptographic API—Security Software
1. Populate the symmetric operation data structure
2. Call the symmetric operation perform API
With the following steps which are used for partial packets:
1. Populate the symmetric operation data structure and set packet type to partial
2. Call the symmetric operation perform API
3. Repeat steps 1 & 2 above for each partial packet which needs to be processed
4. For the final partial packet initialize the symmetric operation data structure and set 
the packet type to last partial
5. Perform the operation
Note:
Steps 1) and 2) may be repeated according to number of partial packets requiring 
Cipher/Hash/Authentication.
Note:
The size of the data to be Hashed or Ciphered must be a multiple of the block size of 
the algorithm for all partial packets except the last partial.
Note:
For Hash/Authentication the digest pointer and the digest verify flag are only used for 
the last partial.
12.8.2.5
Algorithm Chaining and Authenticated-Encryption
Algorithm chaining involves performing a cipher followed by a hash or a hash followed 
by a cipher in one operation. Authenticated-encryption involves performing a 
authenticate followed by a cipher in one operation.
Sample code is provided for algorithm chaining operations; see 
the API manual. The basic steps involved in performing an operation are detailed 
below.
1. Initialize a session, see 
2. Allocate memory for the source and destination buffer lists
• For an in-place operation, only memory for the source buffer list needs to be 
allocated
3. Allocate memory for the symmetric operation data
4. Populate the appropriate symmetric operation data structures, see the API manual
5. Call the symmetric operation perform API one or more times
6. Completion of operation, see 
7. Remove session, see 
12.8.2.6
SSL, TLS Key and MGF Mask Generation
Refer to the API manual for full details of Key and Mask Generation operations.
1. Define a Flat Buffer callback function as per the API prototype, see the API manual. 
If synchronous operation is preferred, instead simply pass NULL to the API for the 
callback parameter.
2. Allocate memory for the operation 
3. Populate data for the appropriate operation data structure, see the API manual
• Fill in the Flat Buffers; pointer to data and length
• Fill in the options for the operation required
4. Call the appropriate Key or Mask Generation API