OpenPACE
Macros | Functions
Cryptographic Wrappers for Secure Messaging

Macros

#define EAC_ID_PACE   0
 Identifies the PACE context.
 
#define EAC_ID_CA   1
 Identifies the CA context.
 
#define EAC_ID_TA   2
 Identifies the TA context.
 
#define EAC_ID_EAC   3
 Identifies the currently used channel for encryption/decryption.
 

Functions

BUF_MEM * EAC_add_iso_pad (const EAC_CTX *ctx, const BUF_MEM *unpadded)
 Pad a buffer using ISO/IEC 9797-1 padding method 2. More...
 
BUF_MEM * EAC_remove_iso_pad (const BUF_MEM *padded)
 Remove ISO/IEC 9797-1 padding method 2 from a message. More...
 
int EAC_increment_ssc (const EAC_CTX *ctx)
 Increment the Send Sequence Counter. More...
 
int EAC_reset_ssc (const EAC_CTX *ctx)
 Reset the Send Sequence Counter. More...
 
int EAC_set_ssc (const EAC_CTX *ctx, unsigned long ssc)
 Set the Send Sequence Counter. More...
 
BUF_MEM * EAC_encrypt (const EAC_CTX *ctx, const BUF_MEM *data)
 Encrypts data according to TR-03110 F.2. More...
 
BUF_MEM * EAC_decrypt (const EAC_CTX *ctx, const BUF_MEM *data)
 Decrypt data according to TR-03110 F.2. More...
 
BUF_MEM * EAC_authenticate (const EAC_CTX *ctx, const BUF_MEM *data)
 Authenticate data according to TR-03110 F.2. More...
 
int EAC_verify_authentication (const EAC_CTX *ctx, const BUF_MEM *data, const BUF_MEM *mac)
 Verify authenticated data according to TR-03110 F.2. More...
 
BUF_MEM * EAC_Comp (const EAC_CTX *ctx, int id, const BUF_MEM *pub)
 Compresse a public key according to TR-03110 Table A.2. More...
 
BUF_MEM * EAC_hash_certificate_description (const unsigned char *cert_desc, size_t cert_desc_len)
 Compute the hash of a CV certificate description. More...
 
int EAC_CTX_set_encryption_ctx (EAC_CTX *ctx, int id)
 Set the SM context for encryption, decryption and authentication. More...
 

Detailed Description

Function Documentation

◆ EAC_add_iso_pad()

BUF_MEM* EAC_add_iso_pad ( const EAC_CTX ctx,
const BUF_MEM *  unpadded 
)

Pad a buffer using ISO/IEC 9797-1 padding method 2.

The block size is calculated from the currently selected SM context.

Parameters
[in]ctxEAC context
[in]unpaddedBuffer to pad
Returns
Padded input or NULL in case of an error

◆ EAC_authenticate()

BUF_MEM* EAC_authenticate ( const EAC_CTX ctx,
const BUF_MEM *  data 
)

Authenticate data according to TR-03110 F.2.

Parameters
[in]ctxEAC context
[in]dataData to authenticate
Returns
MAC or NULL in case of an error
Note
data must already be padded to block length

◆ EAC_Comp()

BUF_MEM* EAC_Comp ( const EAC_CTX ctx,
int  id,
const BUF_MEM *  pub 
)

Compresse a public key according to TR-03110 Table A.2.

Parameters
[in]ctxEAC context
[in]idaccepts EAC_ID_PACE, EAC_ID_CA, EAC_ID_TA
[in]pubRaw public key
Returns
Compressed public key or NULL in case of an error

◆ EAC_CTX_set_encryption_ctx()

int EAC_CTX_set_encryption_ctx ( EAC_CTX ctx,
int  id 
)

Set the SM context for encryption, decryption and authentication.

Calls EAC_reset_ssc()

Parameters
[in,out]ctxEAC context
[in]idaccepts EAC_ID_PACE, EAC_ID_CA, EAC_ID_EAC
Returns
1 on success or 0 in case of an error

◆ EAC_decrypt()

BUF_MEM* EAC_decrypt ( const EAC_CTX ctx,
const BUF_MEM *  data 
)

Decrypt data according to TR-03110 F.2.

Parameters
[in]ctxEAC context
[in]dataData to decrypt
Returns
Decrypted data or NULL in case of an error
Note
data must already be padded to block length

◆ EAC_encrypt()

BUF_MEM* EAC_encrypt ( const EAC_CTX ctx,
const BUF_MEM *  data 
)

Encrypts data according to TR-03110 F.2.

Parameters
[in]ctxEAC context
[in]dataData to encrypt
Returns
Encrypted data or NULL in case of an error
Note
data must already be padded to block length

◆ EAC_hash_certificate_description()

BUF_MEM* EAC_hash_certificate_description ( const unsigned char *  cert_desc,
size_t  cert_desc_len 
)

Compute the hash of a CV certificate description.

The hash can then be compared to the hash contained in the corresponding CV certificate.

Parameters
[in]cert_descASN1 encoded CV certificate description
[in]cert_desc_lenLength of cert_desc
Returns
Hash of cert_desc or NULL in case of an error

◆ EAC_increment_ssc()

int EAC_increment_ssc ( const EAC_CTX ctx)

Increment the Send Sequence Counter.

Parameters
ctx
Returns
1 on success or 0 in case of an error

◆ EAC_remove_iso_pad()

BUF_MEM* EAC_remove_iso_pad ( const BUF_MEM *  padded)

Remove ISO/IEC 9797-1 padding method 2 from a message.

Parameters
[in]paddedPadded message
Returns
Unpadded message or NULL in case of an error

◆ EAC_reset_ssc()

int EAC_reset_ssc ( const EAC_CTX ctx)

Reset the Send Sequence Counter.

Parameters
ctx
Returns
1 on success or 0 in case of an error

◆ EAC_set_ssc()

int EAC_set_ssc ( const EAC_CTX ctx,
unsigned long  ssc 
)

Set the Send Sequence Counter.

Parameters
ctx
ssc
Returns
1 on success or 0 in case of an error

◆ EAC_verify_authentication()

int EAC_verify_authentication ( const EAC_CTX ctx,
const BUF_MEM *  data,
const BUF_MEM *  mac 
)

Verify authenticated data according to TR-03110 F.2.

Parameters
[in]ctxEAC context
[in]dataData to authenticate
[in]macThe MAC that is going to be verified
Returns
1 if the MAC can be correctly verified, 0 otherwise