1 | Clear data | Input | Char(*) |
2 | Length of clear data | Input | Binary(4) |
3 | Clear data format name | Input | Char(8) |
4 | Algorithm description | Input | Char(*) |
5 | Algorithm description format name | Input | Char(8) |
6 | Key description | Input | Char(*) |
7 | Key description format name | Input | Char(8) |
8 | Cryptographic service provider | Input | Char(1) |
9 | Cryptographic device name | Input | Char(10) |
10 | Encrypted data | Output | Char(*) |
11 | Length of area provided for encrypted data | Input | Binary(4) |
12 | Length of encrypted data returned | Output | Binary(4) |
13 | Error code | I/O | Char(*) |
The Encrypt Data (OPM, QC3ENCDT; ILE, Qc3EncryptData) API protects data privacy by scrambling clear data into an unintelligible form. To recover the clear data from the encrypted data, use the Decrypt Data (OPM, QC3DECDT; ILE, Qc3DecryptData) API.
Information on cryptographic standards can be found in the Create Algorithm Context (OPM, QC3CRTAX; ILE, Qc3CreateAlgorithmContext) API documentation.
The data to encrypt.
The format of the clear data is specified in the clear data format name
parameter
For clear data format DATA0100, this is the length of the data to encrypt.
For restrictions on the length of clear data, refer to the clear data length
field below.
For clear data format DATA0200, this is the number of entries in the array.
The format of the clear data parameter.
The possible format names follow.
The algorithm and associated parameters for encrypting the data.
The format of the algorithm description is specified in the algorithm
description format name parameter.
The format of the algorithm description.
The possible format names follow.
See Algorithm Description Formats for a description of these formats.
The key to use for encrypting the data.
The format of the key description is specified in the key description format
name parameter.
If the encrypt operation extends over multiple calls (see ALGD0100 description above), only the key description from the first call will be used. Therefore, on subsequent calls, you may set the pointer to this parameter to NULL.
The format of the key description.
If the pointer to the key description parameter is NULL, this parameter will be ignored.
The possible format names follow.
See Key Description Formats for a description of these formats.
The cryptographic service provider (CSP) that will perform the encryption operation.
0 | Any CSP. The system will choose an appropriate CSP to perform the encryption operation. |
1 | Software CSP. The system will perform the encryption operation using software. If the requested algorithm is not available in software, an error is returned. |
2 | Hardware CSP. The system will perform the encryption operation using cryptographic hardware. If the requested algorithm is not available in hardware, an error is returned. A specific cryptographic device can be specified using the cryptographic device name parameter. If the cryptographic device is not specified, the system will choose an appropriate one. |
The name of a cryptographic device description.
This parameter is valid when the cryptographic service provider parameter
specifies 2 (hardware CSP). Otherwise, this parameter must be blanks or the
pointer to this parameter set to NULL.
The area to store the encrypted data.
The length of the encrypted data parameter.
If the mode of operation is CFB 1-bit, this length must be specified in bits.
If the length of area provided for encrypted data is too small, an error will
be generated and no data will be returned in the encrypted data parameter.
Block ciphers | The encrypted data parameter must be greater than or equal to the length of clear data. If padding and performing final processing, the encrypted data parameter must be large enough to include the pad characters. For more information, refer to the pad option description. |
Stream ciphers | The encrypted data parameter must be greater than or equal to the length of clear data. |
PKA ciphers | The encrypted data parameter must be greater than or equal to the key size. |
The length of encrypted data returned in the encrypted data parameter.
If the mode of operation is CFB 1-bit, this length will be returned in bits.
The structure in which to return error information.
For the format of the structure, see Error Code
Parameter.
Offset | Type | Field | |
---|---|---|---|
Dec | Hex | ||
These fields repeat. | PTR(SPP) | Clear data pointer | |
BINARY(4) | Clear data length | ||
CHAR(12) | Reserved |
Offset | Type | Field | |
---|---|---|---|
Dec | Hex | ||
0 | 0 | CHAR(8) | Algorithm context token |
8 | 8 | CHAR(1) | Final operation flag |
Offset | Type | Field | |
---|---|---|---|
Dec | Hex | ||
0 | 0 | BINARY(4) | Block cipher algorithm |
4 | 4 | BINARY(4) | Block length |
8 | 8 | CHAR(1) | Mode |
9 | 9 | CHAR(1) | Pad option |
10 | A | CHAR(1) | Pad character |
11 | B | CHAR(1) | Reserved |
12 | C | BINARY(4) | MAC length |
16 | 10 | BINARY(4) | Effective key size |
20 | 14 | CHAR(32) | Initialization vector |
Offset | Type | Field | |
---|---|---|---|
Dec | Hex | ||
0 | 0 | BINARY(4) | Stream cipher algorithm |
Offset | Type | Field | |
---|---|---|---|
Dec | Hex | ||
0 | 0 | BINARY(4) | Public key cipher algorithm |
4 | 4 | CHAR(1) | PKA block format |
5 | 5 | CHAR(3) | Reserved |
8 | 8 | BINARY(4) | Signing hash algorithm |
20 | DES |
21 | Triple DES |
22 | AES |
23 | RC2 |
0 | Continue. The system will not perform final processing and the algorithm context will maintain the state of the operation. The algorithm context can be used on future calls to this API to continue the encryption operation. |
1 | Final. The system will perform final processing (e.g. padding) and the algorithm context will reset to its initial state. The algorithm context can then be used to begin a new cryptographic operation (encrypt, decrypt, etc.). When performing a final operation, the pointer to the clear data parameter may be set to NULL and the length of clear data parameter set to 0. This option must be specified if performing RSA encryption. |
0 | ECB |
1 | CBC |
2 | OFB. Not valid with AES or RC2. |
3 | CFB 1-bit. Not valid with AES or RC2. |
4 | CFB 8-bit. Not valid with AES or RC2. |
5 | CFB 64-bit. Not valid with AES or RC2. |
0 | No padding is performed. |
1 | Use the character specified in the pad character field for padding. |
2 | The pad counter is used as the pad character. This is equivalent to PKCS #5 padding. |
0 | PKCS #1 block type 00 |
1 | PKCS #1 block type 01 |
2 | PKCS #1 block type 02 This format is recommended when encrypting non-hash items (such as keys). The other formats are normally used in sign and verify functions. |
4 | Zero pad The clear data is placed in the low-order bit positions of a string of the same bit-length as the key modulus. All leading bits are set to zero. |
6 | OAEP |
50 | RSA |
30 | RC4-compatible |
Offset | Type | Field | |
---|---|---|---|
Dec | Hex | ||
0 | 0 | CHAR(8) | Key context token |
Offset | Type | Field | |
---|---|---|---|
Dec | Hex | ||
0 | 0 | BINARY(4) | Key type |
4 | 4 | BINARY(4) | Key string length |
8 | 8 | CHAR(1) | Key format |
9 | 9 | CHAR(3) | Reserved |
12 | C | CHAR(*) | Key string |
Offset | Type | Field | |
---|---|---|---|
Dec | Hex | ||
0 | 0 | CHAR(20) | Qualified key store file name |
20 | 14 | CHAR(32) | Record label |
52 | 34 | CHAR(4) | Reserved |
Offset | Type | Field | |
---|---|---|---|
Dec | Hex | ||
0 | 0 | BINARY(4) | Key type |
4 | 4 | BINARY(4) | Derived key length |
8 | 8 | BINARY(4) | Iteration count |
12 | C | BINARY(4) | Salt length |
16 | 10 | CHAR(16) | Salt |
32 | 20 | BINARY(4) | Passphrase CCSID |
36 | 24 | BINARY(4) | Passphrase length |
40 | 28 | CHAR(*) | Passphrase |
Offset | Type | Field | |
---|---|---|---|
Dec | Hex | ||
0 | 0 | BINARY(4) | PEM certificate length |
4 | 4 | CHAR(4) | Reserved |
8 | 8 | CHAR(*) | PEM certificate |
Offset | Type | Field | |
---|---|---|---|
Dec | Hex | ||
0 | 0 | BINARY(4) | Certificate label length |
4 | 4 | CHAR(4) | Reserved |
8 | 8 | CHAR(*) | Certificate label |
Offset | Type | Field | |
---|---|---|---|
Dec | Hex | ||
0 | 0 | BINARY(4) | Distinguished name length |
4 | 4 | CHAR(4) | Reserved |
8 | 8 | CHAR(*) | Distinguished name |
Offset | Type | Field | |
---|---|---|---|
Dec | Hex | ||
0 | 0 | BINARY(4) | Application identifier length |
4 | 4 | CHAR(4) | Reserved |
8 | 8 | CHAR(*) | Application identifier |
0 | Binary string. The key is specified as a binary value. To obtain a good random key value, use the Generate Symmetric Key (OPM, QC3GENSK; ILE, Qc3GenSymmetricKey), or Generate Pseudorandom Numbers (OPM, QC3GENRN; ILE, Qc3GenPRNs) API. |
1 | BER string If the key type field specifies 50 (RSA public), the key must be specified in BER encoded X.509 Certificate or SubjectPublicKeyInfo format. For specifications of this format, refer to RFC 3280. If the key type field specifies 51 (RSA private), the key must be specified in BER encoded PKCS #8 format. For specifications of this format, refer to RSA Security Inc. Public-Key Cryptography Standards. To generate a PKA key pair, use the Generate PKA Key Pair (OPM, QC3GENPK; ILE, Qc3GenPKAKeyPair) API. |
20 | DES The key string length or derived key string length must be 8 bytes. For key description KEYD0200, the key format must be 0. Only 7 bits of each byte are used as the actual key. The rightmost bit of each byte is used to set parity. Some cryptographic service providers require that a DES key have odd parity in every byte. Others ignore parity. |
21 | Triple DES The key string length or the derived key length can be 8, 16, or 24. For key description KEYD0200, the key format must be 0. Triple DES operates on an encryption block by doing a DES encrypt, followed by a DES decrypt, and then another DES encrypt. Therefore, it actually uses three 8-byte DES keys. If 24 bytes are supplied in the key string, the first 8 bytes are used for key 1, the second 8 bytes for key 2, and the third 8 bytes for key 3. If 16 bytes are supplied, the first 8 bytes are used for key 1 and key 3, and the second 8 bytes for key 2. If only 8 bytes are supplied, it will be used for all 3 keys (essentially making the operation equivalent to a single DES operation). Only 7 bits of each byte are used as the actual key. The rightmost bit of each byte is used to set parity. Some cryptographic service providers require that a Triple DES key have odd parity in every byte. Others ignore parity. |
22 | AES The key string length or derived key length can be 16, 24, or 32. For key description KEYD0200, the key format must be 0. |
23 | RC2 The key string length or derived key length can be from 1 to 128. For key description KEYD0200, the key format must be 0. |
30 | RC4-compatible The key string length or derived key length can be from 1 to 256. For key description KEYD0200, the key format must be 0. Because of the nature of the RC4-compatible algorithm, using the same key for more than one message will severely compromise security. |
50 | RSA public Valid only for key description KEYD0200. The key format must be 1. Encryption with a public key and decryption with a private key is used for data privacy. |
51 | RSA private Valid only for key description KEYD0200. The key format must be 1. Encryption with a private key and decryption with a public key is used for data authentication (e.g. signing). |
The CCSID of the passphrase. The passphrase will be converted from the specified CCSID to Unicode before calling the PKCS5 algorithm.
0 | The CCSID of the job is used to determine the CCSID of the data to be converted. If the job CCSID is 65535, the CCSID from the default CCSID (DFTCCSID) job attribute is used. |
1-65533 | A valid CCSID in this range is used. For a list of valid CCSIDs, see the Globalization topic in the iSeries Information Center. |
*CURLIB | The job's current library is used to locate the key store file. If no library is specified as the current library for the job, the QGPL library is used. |
*LIBL | The job's library list is searched for the first occurence of the specified file name. |
Message ID | Error Message Text |
---|---|
CPF24B4 E | Severe error while addressing parameter list. |
CPF3C1E E | Required parameter &1 omitted. |
CPF3CF1 E | Error code parameter not valid. |
CPF3CF2 E | Error(s) occurred during running of &1 API. |
CPF9872 E | Program or service program &1 in library &2 ended. Reason code &3. |
CPF9D99 E | Error openning certificate store. |
CPF9D9A E | Key is protected by a cryptographic coprocessor. |
CPF9D9B E | Internal error occured retrieving key from system certificate store. |
CPF9D9C E | Function is disallowed with specified key context. |
CPF9D9F E | Not authorized to key store file. |
CPF9DA0 E | Error occured opening key store file. |
CPF9DA1 E | Key record not found. |
CPF9DA2 E | Option 34 is not installed. |
CPF9DA3 E | Not authorized to use APPIDs. |
CPF9DA4 E | APPID is not valid. |
CPF9DA5 E | Key store file not found. |
CPF9DA6 E | The key store file is not available. |
CPF9DA7 E | File is corrupt or not a valid key store file. |
CPF9DA8 D | The application identifier length is not valid. |
CPF9DA9 D | The format of the PEM certificate is not valid. |
CPF9DAA D | A key requires translation. |
CPF9DAB E | A key can not be decrypted. |
CPF9DB1 E | The CCSID is not valid. |
CPF9DB3 E | Qualified key store file name not valid. |
CPF9DB6 E | Record label not valid. |
CPF9DB8 E | Error occured retrieving key record from key store. |
CPF9DBA E | Derived key length not valid. |
CPF9DBB E | Iteration count not valid. |
CPF9DBC E | Salt length not valid. |
CPF9DBD E | Passphrase length not valid. |
CPF9DBE E | PEM certificate length not valid. |
CPF9DBF E | Certificate label length not valid. |
CPF9DC0 E | Distinghished name length not valid. |
CPF9DC2 E | Key-encrypting algorithm context not compatible with key-encrypting key context. |
CPF9DC3 E | Unable to decrypt data or key. |
CPF9DC6 E | Algorithm not valid for encrypting or decrypting a key. |
CPF9DC8 E | The input data parameter specifies a NULL pointer. |
CPF9DC9 E | The total length of data in the input data array is not valid. |
CPF9DCE E | A data length is not valid. |
CPF9DCF E | A data pointer is not valid. |
CPF9DD0 E | Clear data format name not valid. |
CPF9DD2 E | Algorithm description format name not valid. |
CPF9DD3 E | Key description format name not valid. |
CPF9DD4 E | Length of clear data not valid. |
CPF9DD6 E | Length of area provided for output data is too small. |
CPF9DD7 E | The key-encrypting key context for the specified key is not valid or was previously destroyed. |
CPF9DD8 E | The key-encrypting algorithm context for the specified key is not valid or was previously destroyed. |
CPF9DD9 E | Effective key size not valid. |
CPF9DDA E | Unexpected return code &1. |
CPF9DDB E | The key string or Diffie-Hellman parameter string is not valid. |
CPF9DDD E | The key string length is not valid. |
CPF9DDE E | Cipher algorithm not valid. |
CPF9DDF E | Block length not valid. |
CPF9DE0 E | Hash algorithm not valid. |
CPF9DE1 E | Initialization vector not valid. |
CPF9DE2 E | MAC (message authentication code) length not valid. |
CPF9DE3 E | Mode not valid. |
CPF9DE4 E | Pad option not valid. |
CPF9DE5 E | PKA (public key algorithm) block format not valid. |
CPF9DE6 E | Public key algorithm not valid. |
CPF9DE7 E | Key type not valid. |
CPF9DE9 E | Key format not valid. |
CPF9DEC E | Cryptographic service provider not valid. |
CPF9DED E | Final operation flag not valid. |
CPF9DEE E | Reserved field not null. |
CPF9DF0 E | Operation, algorithm, or mode not available on the requested CSP (cryptographic service provider). |
CPF9DF1 E | The algorithm context token does not reference a valid algorithm context. |
CPF9DF2 E | The algorithm context is not found or was previously destroyed. |
CPF9DF3 E | Algorithm in algorithm context not valid for requested operation. |
CPF9DF4 E | The key context token does not reference a valid key context. |
CPF9DF5 E | The key context is not found or was previously destroyed. |
CPF9DF7 E | Algorithm context not compatible with key context. |
CPF9DF8 E | Cryptographic device name not valid. |
CPF9DF9 E | Cryptographic device not found. |
CPF9DFA E | Multiple-block encryption not valid with the requested mode. |
CPF9DFB E | Cryptographic service provider (CSP) conflicts with the key context CSP. |
CPF9DFD E | Not authorized to device. |
CPF9DFE E | Cryptographic device not available. |
Top | Cryptographic Services APIs | APIs by category |