libzpc 1.5
IBM Z Protected-key Crypto library
Loading...
Searching...
No Matches
aes_key.h File Reference

AES key API. More...

Go to the source code of this file.

Macros

#define ZPC_AES_KEY_TYPE_CCA_DATA   1
#define ZPC_AES_KEY_TYPE_CCA_CIPHER   2
#define ZPC_AES_KEY_TYPE_EP11   3
#define ZPC_AES_KEY_TYPE_PVSECRET   9
#define ZPC_AES_KEY_REENCIPHER_OLD_TO_CURRENT   1
#define ZPC_AES_KEY_REENCIPHER_CURRENT_TO_NEW   2

Enumerations

enum  zpc_aessecret_type_t {
  ZPC_AES_SECRET_TYPE_NOT_SET = -2 , ZPC_AES_SECRET_TYPE_INVALID = -1 , ZPC_AES_SECRET_AES_128 = 0x04 , ZPC_AES_SECRET_AES_192 = 0x05 ,
  ZPC_AES_SECRET_AES_256 = 0x06
}

Functions

int zpc_aes_key_alloc (struct zpc_aes_key **key)
int zpc_aes_key_set_size (struct zpc_aes_key *key, int size)
int zpc_aes_key_set_type (struct zpc_aes_key *key, int type)
int zpc_aes_key_set_flags (struct zpc_aes_key *key, unsigned int flags)
int zpc_aes_key_set_mkvp (struct zpc_aes_key *key, const char *mkvp)
int zpc_aes_key_set_apqns (struct zpc_aes_key *key, const char *apqns[])
int zpc_aes_key_import (struct zpc_aes_key *key, const unsigned char *seckey, size_t seckeylen)
int zpc_aes_key_import_clear (struct zpc_aes_key *key, const unsigned char *clrkey)
int zpc_aes_key_export (struct zpc_aes_key *key, unsigned char *seckey, size_t *seckeylen)
int zpc_aes_key_generate (struct zpc_aes_key *key)
int zpc_aes_key_reencipher (struct zpc_aes_key *key, int reenc)
void zpc_aes_key_free (struct zpc_aes_key **key)

Detailed Description

AES key API.

Manage advanced Encryption Standard (AES) block cipher [1] keys.

Definition in file aes_key.h.

Macro Definition Documentation

◆ ZPC_AES_KEY_TYPE_CCA_DATA

#define ZPC_AES_KEY_TYPE_CCA_DATA   1

Definition at line 29 of file aes_key.h.

◆ ZPC_AES_KEY_TYPE_CCA_CIPHER

#define ZPC_AES_KEY_TYPE_CCA_CIPHER   2

Definition at line 30 of file aes_key.h.

◆ ZPC_AES_KEY_TYPE_EP11

#define ZPC_AES_KEY_TYPE_EP11   3

Definition at line 31 of file aes_key.h.

◆ ZPC_AES_KEY_TYPE_PVSECRET

#define ZPC_AES_KEY_TYPE_PVSECRET   9

Definition at line 32 of file aes_key.h.

◆ ZPC_AES_KEY_REENCIPHER_OLD_TO_CURRENT

#define ZPC_AES_KEY_REENCIPHER_OLD_TO_CURRENT   1

Definition at line 34 of file aes_key.h.

◆ ZPC_AES_KEY_REENCIPHER_CURRENT_TO_NEW

#define ZPC_AES_KEY_REENCIPHER_CURRENT_TO_NEW   2

Definition at line 35 of file aes_key.h.

Enumeration Type Documentation

◆ zpc_aessecret_type_t

enum zpc_aessecret_type_t

Definition at line 37 of file aes_key.h.

Function Documentation

◆ zpc_aes_key_alloc()

int zpc_aes_key_alloc ( struct zpc_aes_key ** key)

Allocate a new AES key object with reference count 1.

Parameters
[in,out]keyAES key
Returns
0 on success. Otherwise, a non-zero error code is returned.

◆ zpc_aes_key_set_size()

int zpc_aes_key_set_size ( struct zpc_aes_key * key,
int size )

Set the AES key size.

Parameters
[in,out]keyAES key
[in]size128, 192 or 256 bit key size
Returns
0 on success. Otherwise, a non-zero error code is returned.

◆ zpc_aes_key_set_type()

int zpc_aes_key_set_type ( struct zpc_aes_key * key,
int type )

Set the AES key type.

Parameters
[in,out]keyAES key
[in]typeZPC_AES_KEY_TYPE_CCA_DATA, ZPC_AES_KEY_TYPE_CCA_CIPHER, ZPC_AES_KEY_TYPE_EP11, or ZPC_AES_KEY_TYPE_PVSECRET
Returns
0 on success. Otherwise, a non-zero error code is returned.

◆ zpc_aes_key_set_flags()

int zpc_aes_key_set_flags ( struct zpc_aes_key * key,
unsigned int flags )

Set the AES key flags.

Parameters
[in,out]keyAES key
[in]flagskey flags
Returns
0 on success. Otherwise, a non-zero error code is returned.

◆ zpc_aes_key_set_mkvp()

int zpc_aes_key_set_mkvp ( struct zpc_aes_key * key,
const char * mkvp )

Set the AES key Master Key Verification Pattern.

Parameters
[in,out]keyAES key
[in]mkvpmaster key verification pattern This function has no effect for keys of type PVSECRET.
Returns
0 on success. Otherwise, a non-zero error code is returned.

◆ zpc_aes_key_set_apqns()

int zpc_aes_key_set_apqns ( struct zpc_aes_key * key,
const char * apqns[] )

Set the AES key APQNs

Parameters
[in,out]keyAES key
[in]apqnsNULL-terminated APQN list This function has no effect for keys of type PVSECRET.
Returns
0 on success. Otherwise, a non-zero error code is returned.

◆ zpc_aes_key_import()

int zpc_aes_key_import ( struct zpc_aes_key * key,
const unsigned char * seckey,
size_t seckeylen )

Import an AES secure-key.

Parameters
[in,out]keyAES key
[in]seckeyAES secure-key
[in]seckeylenAES key secure-length [bytes]
Returns
0 on success. Otherwise, a non-zero error code is returned.

◆ zpc_aes_key_import_clear()

int zpc_aes_key_import_clear ( struct zpc_aes_key * key,
const unsigned char * clrkey )

Import an AES clear-key.

Parameters
[in,out]keyAES key
[in]clrkeyAES clear-key
Returns
0 on success. Otherwise, a non-zero error code is returned.

◆ zpc_aes_key_export()

int zpc_aes_key_export ( struct zpc_aes_key * key,
unsigned char * seckey,
size_t * seckeylen )

Export an AES secure-key.

Parameters
[in,out]keyAES key
[out]seckeyAES secure-key
[in,out]seckeylensecure AES secure-key length [bytes]
Returns
0 on success. Otherwise, a non-zero error code is returned.

◆ zpc_aes_key_generate()

int zpc_aes_key_generate ( struct zpc_aes_key * key)

Generate an AES secure-key.

Parameters
[in,out]keyAES key
Returns
0 on success. Otherwise, a non-zero error code is returned.

◆ zpc_aes_key_reencipher()

int zpc_aes_key_reencipher ( struct zpc_aes_key * key,
int reenc )

Reencipher an AES secure-key.

Parameters
[in,out]keyAES key
[in]reencZPC_AES_KEY_REENCIPHER_OLD_TO_CURRENT or ZPC_AES_KEY_REENCIPHER_CURRENT_TO_NEW This function is not applicable for keys of type PVSECRET and returns ZPC_ERROR_KEYTYPE when called for such keys.
Returns
0 on success. Otherwise, a non-zero error code is returned.

◆ zpc_aes_key_free()

void zpc_aes_key_free ( struct zpc_aes_key ** key)

Decrease the reference count of an AES key object and free it the count reaches 0.

Parameters
[in,out]keyAES key