/*
* COPYRIGHT (c) International Business Machines Corp. 1997-2017
*
* This program is provided under the terms of the Common Public License,
* version 1.0 (CPL-1.0). Any use, reproduction or distribution for this
* software constitutes recipient's acceptance of CPL-1.0 terms which can be
* found in the file LICENSE file or at
* https://opensource.org/licenses/cpl1.0.php
*/
/******************************************************************************/
/* US Government Users Restricted Rights - Use, duplication or disclosure */
/* restricted by GSA ADP Schedule Contract with IBM Corp. */
/******************************************************************************/
/* */
/* This header file contains the Security API C language */
/* prototypes. See the user publications for more information. */
/* */
/******************************************************************************/
/* Clear Key Import */
typedef void (**CSNBCKI_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
unsigned char *clear_key,
unsigned char *target_key_identifier);
/* Clear Key Import Multiple */
typedef void (*CSNBCKM_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
long *clear_key_length,
unsigned char *clear_key,
unsigned char *target_key_identifier);
/* Data Key Export */
typedef void (*CSNBDKX_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
unsigned char *source_key_identifier,
unsigned char *exporter_key_identifier,
unsigned char *target_key_token);
/* Data Key Import */
typedef void (*CSNBDKM_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
unsigned char *source_key_token,
unsigned char *importer_key_identifier,
unsigned char *target_key_identifier);
/* DES Master Key Process */
typedef void (*CSNBMKP_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array, unsigned char *key_part);
/* Key Export */
typedef void (*CSNBKEX_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
unsigned char *key_type,
unsigned char *source_key_identifier,
unsigned char *exporter_key_identifier,
unsigned char *target_key_token);
/* Key Generate */
typedef void (*CSNBKGN_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
unsigned char *key_form,
unsigned char *key_length,
unsigned char *key_type_1,
unsigned char *key_type_2,
unsigned char *KEK_key_identifier_1,
unsigned char *KEK_key_identifier_2,
unsigned char *generated_key_identifier_1,
unsigned char *generated_key_identifier_2);
/* Key Generate2 */
typedef void (*CSNBKGN2_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
long *clear_key_bit_length,
unsigned char *key_type_1,
unsigned char *key_type_2,
long *key_name_1_length,
unsigned char *key_name_1,
long *key_name_2_length,
unsigned char *key_name_2,
long *user_associated_data_1_length,
unsigned char *user_associated_data_1,
long *user_associated_data_2_length,
unsigned char *user_associated_data_2,
long *key_encrypting_key_identifier_1_length,
unsigned char *key_encrypting_key_identifier_1,
long *key_encrypting_key_identifier_2_length,
unsigned char *key_encrypting_key_identifier_2,
long *generated_key_identifier_1_length,
unsigned char *generated_key_identifier_1,
long *generated_key_identifier_2_length,
unsigned char *generated_key_identifier_2);
/* Key Import */
typedef void (*CSNBKIM_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
unsigned char *key_type,
unsigned char *source_key_token,
unsigned char *importer_key_identifier,
unsigned char *target_key_identifier);
/* Key Part Import */
typedef void (*CSNBKPI_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
unsigned char *key_part,
unsigned char *key_identifier);
/* Key Part Import2 */
typedef void (*CSNBKPI2_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
long *clear_key_part_length,
unsigned char *clear_key_part,
long *key_identifier_length,
unsigned char *key_identifier);
/* Key Storage Initialization */
typedef void (*CSNBKSI_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
long *file_name_length,
unsigned char *file_name,
long *description_length,
unsigned char *description,
unsigned char *clear_master_key);
/* Key Record Create */
typedef void (*CSNBKRC_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data, unsigned char *key_label);
/* AES Key Record Create */
typedef void (*CSNBAKRC_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
unsigned char *key_label,
long *key_token_length, unsigned char *key_token);
/* Key Record Delete */
typedef void (*CSNBKRD_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
unsigned char *key_identifier);
/* Key Record List */
typedef void (*CSNBKRL_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
unsigned char *key_label,
long *data_set_name_length,
unsigned char *data_set_name,
unsigned char *security_server_name);
/* Key Record Read */
typedef void (*CSNBKRR_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
unsigned char *key_label, unsigned char *key_token);
/* Key Record Write */
typedef void (*CSNBKRW_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
unsigned char *key_token, unsigned char *key_label);
/* PKA Key Record Create */
typedef void (*CSNDKRC_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
unsigned char *key_label,
long *key_token_length, unsigned char *key_token);
/* PKA Key Record Delete */
typedef void (*CSNDKRD_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
unsigned char *key_identifier);
/* PKA Key Record List */
typedef void (*CSNDKRL_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
unsigned char *key_label,
long *data_set_name_length,
unsigned char *data_set_name,
unsigned char *security_server_name);
/* PKA Key Record Read */
typedef void (*CSNDKRR_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
unsigned char *key_label,
long *key_token_length, unsigned char *key_token);
/* PKA Key Record Write */
typedef void (*CSNDKRW_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
unsigned char *key_label,
long *key_token_length, unsigned char *key_token);
/* Key Test */
typedef void (*CSNBKYT_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
unsigned char *key_identifier,
unsigned char *random_number,
unsigned char *verification_pattern);
/* Key Test Extended @b3a*/
typedef void (*CSNBKYTX_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
unsigned char *key_identifier,
unsigned char *random_number,
unsigned char *verification_pattern,
unsigned char *kek_key_identifier);
/* Des Key Token Change */
typedef void (*CSNBKTC_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
unsigned char *key_identifier);
/* Key Translate */
typedef void (*CSNBKTR_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
unsigned char *input_key_token,
unsigned char *input_KEK_key_identifier,
unsigned char *output_KEK_key_identifier,
unsigned char *output_key_token);
/* Random Number Generate */
typedef void (*CSNBRNG_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
unsigned char *form, unsigned char *random_number);
/* Random Number Generate Long */
typedef void (*CSNBRNGL_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
long *seed_length,
unsigned char *seed,
long *random_number_length,
unsigned char *random_number);
typedef void (*CSNBSAE_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
long *key_identifier_length,
unsigned char *key_identifier,
long *key_params_length,
unsigned char *key_params,
long *block_size,
long *initialization_vector_length,
unsigned char *initialization_vector,
long *chaining_vector_length,
unsigned char *chaining_vector,
long *text_length,
unsigned char *text,
long *ciphertext_length,
unsigned char *ciphertext,
long *optional_data_length,
unsigned char *optional_data);
typedef void (*CSNBSAD_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
long *key_identifier_length,
unsigned char *key_identifier,
long *key_params_length,
unsigned char *key_params,
long *block_size,
long *initialization_vector_length,
unsigned char *initialization_vector,
long *chaining_vector_length,
unsigned char *chaining_vector,
long *ciphertext_length,
unsigned char *ciphertext,
long *text_length,
unsigned char *text,
long *optional_data_length,
unsigned char *optional_data);
/* Decipher */
typedef void (*CSNBDEC_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
unsigned char *key_identifier,
long *text_length,
unsigned char *ciphertext,
unsigned char *initialization_vector,
long *rule_array_count,
unsigned char *rule_array,
unsigned char *chaining_vector,
unsigned char *plaintext);
/* Encipher */
typedef void (*CSNBENC_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
unsigned char *key_identifier,
long *text_length,
unsigned char *plaintext,
unsigned char *initialization_vector,
long *rule_array_count,
unsigned char *rule_array,
long *pad_character,
unsigned char *chaining_vector,
unsigned char *ciphertext);
/* MAC Generate */
typedef void (*CSNBMGN_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
unsigned char *key_identifier,
long *text_length,
unsigned char *text,
long *rule_array_count,
unsigned char *rule_array,
unsigned char *chaining_vector, unsigned char *MAC);
/* MAC Verify */
typedef void (*CSNBMVR_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
unsigned char *key_identifier,
long *text_length,
unsigned char *text,
long *rule_array_count,
unsigned char *rule_array,
unsigned char *chaining_vector, unsigned char *MAC);
/* Key Token Build */
typedef void (*CSNBKTB_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
unsigned char *key_token,
unsigned char *key_type,
long *rule_array_count,
unsigned char *rule_array,
unsigned char *key_value,
void *reserved_field_1,
long *reserved_field_2,
unsigned char *reserved_field_3,
unsigned char *control_vector,
unsigned char *reserved_field_4,
long *reserved_field_5,
unsigned char *reserved_field_6,
unsigned char *master_key_verification_number);
/* Key Token Build2 */
typedef void (*CSNBKTB2_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
long *clear_key_bit_length,
unsigned char *clear_key_value,
long *key_name_length,
unsigned char *key_name,
long *user_associated_data_length,
unsigned char *user_associated_data,
long *token_data_length,
unsigned char *token_data,
long *reserved_length,
unsigned char *reserved,
long *target_key_token_length,
unsigned char *target_key_token);
/* PKA Key Generate */
typedef void (*CSNDPKG_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
long *regeneration_data_length,
unsigned char *regeneration_data,
long *skeleton_key_token_length,
unsigned char *skeleton_key_token,
unsigned char *transport_key_identifier,
long *generated_key_identifier_length,
unsigned char *generated_key_identifier);
/* PKA Key Token Build */
typedef void (*CSNDPKB_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
long *key_values_structure_length,
unsigned char *key_values_structure,
long *key_name_ln,
unsigned char *key_name,
long *reserved_1_length,
unsigned char *reserved_1,
long *reserved_2_length,
unsigned char *reserved_2,
long *reserved_3_length,
unsigned char *reserved_3,
long *reserved_4_length,
unsigned char *reserved_4,
long *reserved_5_length,
unsigned char *reserved_5,
long *token_length, unsigned char *token);
/* One Way Hash */
typedef void (*CSNBOWH_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
long *text_length,
unsigned char *text,
long *chaining_vector_length,
unsigned char *chaining_vector,
long *hash_length, unsigned char *hash);
/* PKA Key Import */
typedef void (*CSNDPKI_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
long *source_key_token_length,
unsigned char *source_key_token,
unsigned char *importer_key_identifier,
long *target_key_identifier_length,
unsigned char *target_key_identifier);
/* Digital Signature Generate */
typedef void (*CSNDDSG_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
long *PKA_private_key_id_length,
unsigned char *PKA_private_key_id,
long *hash_length,
unsigned char *hash,
long *signature_field_length,
long *signature_bit_length,
unsigned char *signature_field);
/* Digital Signature Verify */
typedef void (*CSNDDSV_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
long *PKA_public_key_id_length,
unsigned char *PKA_public_key_id,
long *hash_length,
unsigned char *hash,
long *signature_field_length,
unsigned char *signature_field);
/* PKA Key Token Change */
typedef void (*CSNDKTC_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
long *key_id_length, unsigned char *key_id);
/* PKA Public Key Extract */
typedef void (*CSNDPKX_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
long *source_key_identifier_length,
unsigned char *source_key_identifier,
long *target_key_token_length,
unsigned char *target_key_token);
/* PKA Symmetric Key Import */
typedef void (*CSNDSYI_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
long *RSA_enciphered_key_length,
unsigned char *RSA_enciphered_key,
long *RSA_private_key_identifier_len,
unsigned char *RSA_private_key_identifier,
long *target_key_identifier_length,
unsigned char *target_key_identifier);
/* PKA Symmetric Key Export */
typedef void (*CSNDSYX_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
long *source_key_identifier_length,
unsigned char *source_key_identifier,
long *RSA_public_key_identifier_len,
unsigned char *RSA_public_key_identifier,
long *RSA_enciphered_key_length,
unsigned char *RSA_enciphered_key);
/* Crypto Facility Query */
typedef void (*CSUACFQ_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
long *verb_data_length, unsigned char *verb_data);
/* Crypto Facility Control */
typedef void (*CSUACFC_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
long *verb_data_length, unsigned char *verb_data);
/* Compose SET Block */
typedef void (*CSNDSBC_t) (long *ReturnCode,
long *ReasonCode,
long *ExitDataLength,
unsigned char *ExitData,
long *RuleArrayCount,
unsigned char *RuleArray,
unsigned char *BlockContentsIdentifier,
long *XDataStringLength,
unsigned char *XDataString,
long *DataToEncryptLength,
unsigned char *DataToEncrypt,
long *DataToHashLength,
unsigned char *DataToHash,
unsigned char *InitializationVector,
long *RSAPublicKeyIdentifierLength,
unsigned char *RSAPublicKeyIdentifier,
long *DESKeyBLockLength,
unsigned char *DESKeyBlock,
long *RSAOAEPBlockLength,
unsigned char *RSAOAEPBlock,
unsigned char *ChainingVector,
unsigned char *DESEncryptedDataBlock);
/* Decompose SET Block */
typedef void (*CSNDSBD_t) (long *ReturnCode,
long *ReasonCode,
long *ExitDataLength,
unsigned char *ExitData,
long *RuleArrayCount,
unsigned char *RuleArray,
long *RSAOAEPBlockLength,
unsigned char *RSAOAEPBlock,
long *DESEncryptedDataBlockLength,
unsigned char *DESEncryptedDataBlock,
unsigned char *InitializationVector,
long *RSAPrivateKeyIdentifierLength,
unsigned char *RSAPrivateKeyIdentifier,
long *DESKeyBLockLength,
unsigned char *DESKeyBlock,
unsigned char *BlockContentsIdentifier,
long *XDataStringLength,
unsigned char *XDataString,
unsigned char *ChainingVector,
unsigned char *DataBlock,
long *HashBlockLength, unsigned char *HashBlock);
/* Access Control Logon */
typedef void (*CSUALCT_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
unsigned char *user_id,
long *auth_parm_length,
unsigned char *auth_parm,
long *auth_data_length, unsigned char *auth_data);
/* Access Control Maintenance */
typedef void (*CSUAACM_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
unsigned char *name,
long *output_data_length,
unsigned char *output_data);
/* Access Control Initialization */
typedef void (*CSUAACI_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
long *verb_data_1_length,
unsigned char *verb_data_1,
long *verb_data_2_length,
unsigned char *verb_data_2);
/* PKA Public Key Hash Register */
typedef void (*CSNDPKH_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
unsigned char *public_key_name,
long *hash_data_length, unsigned char *hash_data);
/* PKA Public Key Register */
typedef void (*CSNDPKR_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
unsigned char *public_key_name,
long *public_key_certificate_length,
unsigned char *public_key_certificate);
/* Master Key Distribution */
typedef void (*CSUAMKD_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
long *share_index,
unsigned char *private_key_name,
unsigned char *certifying_key_name,
long *certificate_length,
unsigned char *certificate,
long *clone_info_encrypting_key_length,
unsigned char *clone_info_encrypting_key,
long *clone_info_length, unsigned char *clone_info);
/* Retained Key Delete */
typedef void (*CSNDRKD_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array, unsigned char *key_label);
/* Retained Key List */
typedef void (*CSNDRKL_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
unsigned char *key_label_mask,
long *retained_keys_count,
long *key_labels_count, unsigned char *key_labels);
/* Symmetric Key Generate */
typedef void (*CSNDSYG_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
unsigned char *key_encrypting_key,
long *rsapub_key_length,
unsigned char *rsapub_key,
long *locenc_key_length,
unsigned char *locenc_key,
long *rsaenc_key_length, unsigned char *rsaenc_key);
/* Encrypted PIN Translate */
typedef void (*CSNBPTR_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
unsigned char *in_PIN_enc_key_id,
unsigned char *out_PIN_enc_key_id,
unsigned char *in_PIN_profile,
unsigned char *in_PAN_data,
unsigned char *in_PIN_blk,
long *rule_array_count,
unsigned char *rule_array,
unsigned char *out_PIN_profile,
unsigned char *out_PAN_data,
long *sequence_number, unsigned char *put_PIN_blk);
/* Clear PIN Encrypt */
typedef void (*CSNBCPE_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
unsigned char *PIN_enc_key_id,
long *rule_array_count,
unsigned char *rule_array,
unsigned char *clear_PIN,
unsigned char *PIN_profile,
unsigned char *PAN_data,
long *sequence_number,
unsigned char *encrypted_PIN_blk);
/* Clear PIN Generate Alternate */
typedef void (*CSNBCPA_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
unsigned char *PIN_enc_key_id,
unsigned char *PIN_gen_key_id,
unsigned char *PIN_profile,
unsigned char *PAN_data,
unsigned char *encrypted_PIN_blk,
long *rule_array_count,
unsigned char *rule_array,
long *PIN_check_length,
unsigned char *data_array,
unsigned char *returned_result);
/* Clear PIN Generate */
typedef void (*CSNBPGN_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
unsigned char *PIN_gen_key_id,
long *rule_array_count,
unsigned char *rule_array,
long *PIN_length,
long *PIN_check_length,
unsigned char *data_array,
unsigned char *returned_result);
/* Encrypted PIN Verify */
typedef void (*CSNBPVR_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
unsigned char *PIN_enc_key_id,
unsigned char *PIN_ver_key_id,
unsigned char *PIN_profile,
unsigned char *PAN_data,
unsigned char *encrypted_PIN_blk,
long *rule_array_count,
unsigned char *rule_array,
long *PIN_check_length, unsigned char *data_array);
/* Diversified Key Generate */
typedef void (*CSNBDKG_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
unsigned char *generating_key_id,
long *data_length,
unsigned char *data,
unsigned char *decrypting_key_id,
unsigned char *generated_key_id);
/* Encrypted PIN Generate */
typedef void (*CSNBEPG_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
unsigned char *PIN_gen_key_id,
unsigned char *outPIN_enc_key_id,
long *rule_array_count,
unsigned char *rule_array,
long *PIN_length,
unsigned char *data_array,
unsigned char *outPIN_profile,
unsigned char *PAN_data,
long *sequence_number,
unsigned char *encrypted_PIN_blk);
/* Cryptographic Variable Encipher */
typedef void (*CSNBCVE_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
unsigned char *cvarenc_key_id,
long *text_length,
unsigned char *plain_text,
unsigned char *init_vector,
unsigned char *cipher_text);
/* CVV Generate */
typedef void (*CSNBCSG_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
unsigned char *PAN_data,
unsigned char *expiration_date,
unsigned char *service_code,
unsigned char *key_a_id,
unsigned char *key_b_id,
unsigned char *generated_cvv);
/* CVV Verify */
typedef void (*CSNBCSV_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
unsigned char *PAN_data,
unsigned char *expiration_date,
unsigned char *service_code,
unsigned char *key_a_id,
unsigned char *key_b_id,
unsigned char *generated_cvv);
/* Control Vector Generate */
typedef void (*CSNBCVG_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
unsigned char *key_type,
long *rule_array_count,
unsigned char *rule_array,
unsigned char *reserved_field_1,
unsigned char *control_vector);
/* Key Token Parse */
typedef void (*CSNBKTP_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
unsigned char *key_token,
unsigned char *key_type,
long *rule_array_count,
unsigned char *rule_array,
unsigned char *key_value,
void *master_key_verification_pattern_v03,
long *reserved_field_1,
unsigned char *reserved_field_2,
unsigned char *control_vector,
unsigned char *reserved_field_3,
long *reserved_field_4,
unsigned char *reserved_field_5,
unsigned char *master_key_verification_pattern_v00);
/* PKA Encrypt */
typedef void (*CSNDPKE_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
long *key_value_length,
unsigned char *key_value,
long *data_struct_length,
unsigned char *data_struct,
long *RSA_public_key_length,
unsigned char *RSA_public_key,
long *RSA_encipher_length,
unsigned char *RSA_encipher);
/* PKA Decrypt */
typedef void (*CSNDPKD_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
long *enciphered_key_length,
unsigned char *enciphered_key,
long *data_struct_length,
unsigned char *data_struct,
long *RSA_private_key_length,
unsigned char *RSA_private_key,
long *key_value_length, unsigned char *key_value);
/* Prohibit Export */
typedef void (*CSNBPEX_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
unsigned char *key_identifier);
/* Prohibit Export Extended */
typedef void (*CSNBPEXX_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
unsigned char *Source_key_token,
unsigned char *Kek_key_identifier);
/* Random Number/Known Answer Test */
typedef void (*CSUARNT_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count, unsigned char *rule_array);
/* Control Vector Translate */
typedef void (*CSNBCVT_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
unsigned char *kek_key_identifier,
unsigned char *source_key_token,
unsigned char *array_key_left,
unsigned char *mask_array_left,
unsigned char *array_key_right,
unsigned char *mask_array_right,
long *rule_array_count,
unsigned char *rule_array,
unsigned char *target_key_token);
/* MDC Generate */
typedef void (*CSNBMDG_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *text_length,
unsigned char *text_data,
long *rule_array_count,
unsigned char *rule_array,
unsigned char *chaining_vector, unsigned char *MDC);
/* Cryptographic Resource Allocate */
typedef void (*CSUACRA_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
long *resource_name_length,
unsigned char *resource_name);
/* Cryptographic Resource Deallocate */
typedef void (*CSUACRD_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
long *resource_name_length,
unsigned char *resource_name);
/* Transaction Validation */
typedef void (*CSNBTRV_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
long *transaction_key_length,
unsigned char *transaction_key,
long *transaction_info_length,
unsigned char *transaction_info,
long *validation_values_length,
unsigned char *validation_values);
/* Secure Messaging for Keys */
typedef void (*CSNBSKY_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
unsigned char *input_key_indentifier,
unsigned char *key_encrypting_key,
unsigned char *session_key,
long *text_length,
unsigned char *clear_text,
unsigned char *initialization_vector,
long *key_offset,
long *key_offset_field_length,
unsigned char *cipher_text,
unsigned char *output_chaining_value);
/* Secure Messaging for PINs */
typedef void (*CSNBSPN_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
unsigned char *in_PIN_blk,
unsigned char *in_PIN_enc_key_id,
unsigned char *in_PIN_profile,
unsigned char *in_PAN_data,
unsigned char *secmsg_key,
unsigned char *out_PIN_profile,
unsigned char *out_PAN_data,
long *text_length,
unsigned char *clear_text,
unsigned char *initialization_vector,
long *PIN_offset,
long *PIN_offset_field_length,
unsigned char *cipher_text,
unsigned char *output_chaining_value);
/* PIN Change/Unblock */
typedef void (*CSNBPCU_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
long *authenticationMasterKeyLength,
unsigned char *authenticationMasterKey,
long *issuerMasterKeyLength,
unsigned char *issuerMasterKey,
long *keyGenerationDataLength,
unsigned char *keyGenerationData,
long *newRefPinKeyLength,
unsigned char *newRefPinKey,
unsigned char *newRefPinBlock,
unsigned char *newRefPinProfile,
unsigned char *newRefPanData,
long *currentRefPinKeyLength,
unsigned char *currentRefPinKey,
unsigned char *currentRefPinBlock,
unsigned char *currentRefPinProfile,
unsigned char *currentRefPanData,
long *outputPinDataLength,
unsigned char *outputPinData,
unsigned char *outputPinProfile,
long *outputPinMessageLength,
unsigned char *outputPinMessage);
/* PCF/CUSP Key Conversion */
typedef void (*CSUAPCV_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
long *KEK_key_identifier_length,
unsigned char *KEK_key_identifier,
long *PCF_key_list_length,
unsigned char *PCF_key_list,
long *output_key_list_length,
unsigned char *output_key_list);
/*Process Request Block*/
typedef void (*CSUAPRB_t) (long *pReturnCode,
long *pReasonCode,
long *pExitDataLength,
unsigned char *pExitData,
long *pRuleArrayCount,
unsigned char *pRuleArray,
long *pSourceLength,
unsigned char *pSource,
long *pOutFileNameLength,
unsigned char *pOutFileName,
long *pReplyLength, unsigned char *pReply);
/* Diffie-Hellman Key Load */
typedef void (*CSUADHK_t) (long *ReturnCode,
long *ReasonCode,
long *ExitDataLength,
unsigned char *ExitData,
long *RuleArrayCount,
unsigned char *RuleArray,
unsigned char *DHModulus,
unsigned char *DHGenerator,
unsigned char *DHKeyPart,
long *TransportKeyHashLength,
unsigned char *TransportKeyHash,
unsigned char *Reserved1,
unsigned char *Reserved2,
unsigned char *Reserved3, unsigned char *Reserved4);
/* Diffie-Hellman Key Query */
typedef void (*CSUADHQ_t) (long *ReturnCode,
long *ReasonCode,
long *ExitDataLength,
unsigned char *ExitData,
long *RuleArrayCount,
unsigned char *RuleArray,
unsigned char *DHModulus,
unsigned char *DHGenerator,
unsigned char *DHKeyPart,
long *TransportKeyHashLength,
unsigned char *TransportKeyHash,
unsigned char *Reserved1,
unsigned char *Reserved2,
unsigned char *Reserved3, unsigned char *Reserved4);
/* Trusted Block Create */
typedef void (*CSNDTBC_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
long *input_block_length,
unsigned char *input_block_identifier,
unsigned char *transport_key_identifier,
long *trusted_blokc_length,
unsigned char *trusted_blokc_identifier);
/* Remote Key Export */
typedef void (*CSNDRKX_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
long *trusted_block_length,
unsigned char *trusted_block_identifier,
long *certificate_length,
unsigned char *certificate,
long *certificate_parms_length,
unsigned char *certificate_parms,
long *transport_key_length,
unsigned char *transport_key_identifier,
long *rule_id_length,
unsigned char *rule_id,
long *export_key_kek_length,
unsigned char *export_key_kek_identifier,
long *export_key_length,
unsigned char *export_key_identifier,
long *asym_encrypted_key_length,
unsigned char *asym_encrypted_key,
long *sym_encrypted_key_length,
unsigned char *sym_encrypted_key,
long *extra_data_length,
unsigned char *extra_data,
long *key_check_parameters_length,
unsigned char *key_check_parameters,
long *key_check_length,
unsigned char *key_check_value);
/* Key Encryption Translate */
typedef void (*CSNBKET_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
long *kek_identifier_length,
unsigned char *kek_identifier,
long *key_in_length,
unsigned char *key_in,
long *key_out_length, unsigned char *key_out);
/* HMAC Generate */
typedef void (*CSNBHMG_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
long *key_identifier_length,
unsigned char *key_identifier,
long *message_text_length,
unsigned char *message_text,
long *chaining_vector_length,
unsigned char *chaining_vector,
long *MAC_length, unsigned char *MAC_text);
/* HMAC Verify */
typedef void (*CSNBHMV_t) (long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
long *key_identifier_length,
unsigned char *key_identifier,
long *message_text_length,
unsigned char *message_text,
long *chaining_vector_length,
unsigned char *chaining_vector,
long *MAC_length, unsigned char *MAC_text);
/* Cipher Text Translate 2 */
typedef void (*CSNBCTT2_t)(long *return_code,
long *reason_code,
long *exit_data_length,
unsigned char *exit_data,
long *rule_array_count,
unsigned char *rule_array,
long *key_identifier_in_length,
unsigned char *key_identifier_in,
long *init_vector_in_length,
unsigned char *init_vector_in,
long *cipher_text_in_length,
unsigned char *cipher_text_in,
long *chaining_vector_length,
unsigned char *chaining_vector,
long *key_identifier_out_length,
unsigned char *key_identifier_out,
long *init_vector_out_length,
unsigned char *init_vector_out,
long *cipher_text_out_length,
unsigned char *cipher_text_out,
long *reserved1_length,
unsigned long *reserved1,
long *reserved2_length,
unsigned char *reserved2);