gwenhywfar  5.6.0
Macros | Typedefs | Enumerations | Functions
Cryptographic Object Manager

Framework for Signing, Verifying, Encrypting and Decrypting of data objects. More...

Macros

#define GWEN_CRYPTMGR_TLV_ENCRYPTEDOBJECT   0x22
 
#define GWEN_CRYPTMGR_TLV_SIGNEDOBJECT   0x21
 

Typedefs

typedef struct GWEN_CRYPTMGR GWEN_CRYPTMGR
 

Enumerations

enum  GWEN_CRYPT_PROFILE { GWEN_CryptProfile_None =0, GWEN_CryptProfile_1 =1 }
 
enum  GWEN_SIGNATURE_PROFILE { GWEN_SignatureProfile_None =0, GWEN_SignatureProfile_1 =1 }
 

Functions

GWENHYWFAR_API void GWEN_CryptMgr_free (GWEN_CRYPTMGR *cm)
 

Information About the Local Key

GWENHYWFAR_API const char * GWEN_CryptMgr_GetLocalKeyName (const GWEN_CRYPTMGR *cm)
 
GWENHYWFAR_API int GWEN_CryptMgr_GetLocalKeyNumber (const GWEN_CRYPTMGR *cm)
 
GWENHYWFAR_API int GWEN_CryptMgr_GetLocalKeyVersion (const GWEN_CRYPTMGR *cm)
 

Information About the Peer Key

GWENHYWFAR_API const char * GWEN_CryptMgr_GetPeerKeyName (const GWEN_CRYPTMGR *cm)
 
GWENHYWFAR_API int GWEN_CryptMgr_GetPeerKeyNumber (const GWEN_CRYPTMGR *cm)
 
GWENHYWFAR_API int GWEN_CryptMgr_GetPeerKeyVersion (const GWEN_CRYPTMGR *cm)
 

Information About the Algorithms for Signing and Encrypting

GWENHYWFAR_API int GWEN_CryptMgr_GetCryptProfile (const GWEN_CRYPTMGR *cm)
 
GWENHYWFAR_API void GWEN_CryptMgr_SetCryptProfile (GWEN_CRYPTMGR *cm, int i)
 
GWENHYWFAR_API int GWEN_CryptMgr_GetSignatureProfile (const GWEN_CRYPTMGR *cm)
 
GWENHYWFAR_API void GWEN_CryptMgr_SetSignatureProfile (GWEN_CRYPTMGR *cm, int i)
 

Basic Cryptographic Functions

GWENHYWFAR_API int GWEN_CryptMgr_Sign (GWEN_CRYPTMGR *cm, const uint8_t *pData, uint32_t lData, GWEN_BUFFER *dbuf)
 
GWENHYWFAR_API int GWEN_CryptMgr_Encrypt (GWEN_CRYPTMGR *cm, const uint8_t *pData, uint32_t lData, GWEN_BUFFER *dbuf)
 
GWENHYWFAR_API int GWEN_CryptMgr_Verify (GWEN_CRYPTMGR *cm, const uint8_t *pData, uint32_t lData, GWEN_BUFFER *dbuf)
 
GWENHYWFAR_API int GWEN_CryptMgr_Decrypt (GWEN_CRYPTMGR *cm, const uint8_t *pData, uint32_t lData, GWEN_BUFFER *dbuf)
 

Complex Cryptographic Functions

Functions of this group perform multiple operations in one setting (e.g. signing and encrypting or decrypting and verifying a signature).

GWENHYWFAR_API int GWEN_CryptMgr_Encode (GWEN_CRYPTMGR *cm, const uint8_t *pData, uint32_t lData, GWEN_BUFFER *dbuf)
 
GWENHYWFAR_API int GWEN_CryptMgr_Decode (GWEN_CRYPTMGR *cm, const uint8_t *pData, uint32_t lData, GWEN_BUFFER *dbuf)
 

Detailed Description

Framework for Signing, Verifying, Encrypting and Decrypting of data objects.

This group contains functions which operate on cryptographic objects. These objects are signed objects and encrypted objects. Data can be wrapped in those objects for secure transmission.

Keys used by this group are identified by a name, number and version. There is a local key (used for signing and decryption) and a peer key (used for signature verification and encryption).

This module handles the adminstration of signed objects and encrypted objects. The cryptographic functions are performed using callbacks. Therefore you can't instantiate an object of this group directly. You must call the constructor of one of the implementations (like GWEN_CryptMgrKeys_new).

Signed objects and encrypted objects consist of modified TLV (Tag, Length, Value) objects with the following structure:

PositionLengthDescription
01Type
12Length of the following value (or 0)
2nValue

A signed object is such a TLV object consisting of:

Encrypted objects are another kind of TLVs containing:

Macro Definition Documentation

◆ GWEN_CRYPTMGR_TLV_ENCRYPTEDOBJECT

#define GWEN_CRYPTMGR_TLV_ENCRYPTEDOBJECT   0x22

Definition at line 61 of file cryptmgr.h.

◆ GWEN_CRYPTMGR_TLV_SIGNEDOBJECT

#define GWEN_CRYPTMGR_TLV_SIGNEDOBJECT   0x21

Definition at line 60 of file cryptmgr.h.

Typedef Documentation

◆ GWEN_CRYPTMGR

typedef struct GWEN_CRYPTMGR GWEN_CRYPTMGR

Definition at line 64 of file cryptmgr.h.

Enumeration Type Documentation

◆ GWEN_CRYPT_PROFILE

Enumerator
GWEN_CryptProfile_None 
GWEN_CryptProfile_1 

Padding for key : ISO 9796-2 Encryption for key : RSA 2048 Padding for data : ANSIX9_23 Encryption for data: BLOWFISH-256

Definition at line 67 of file cryptmgr.h.

◆ GWEN_SIGNATURE_PROFILE

Enumerator
GWEN_SignatureProfile_None 
GWEN_SignatureProfile_1 

Hash: RMD-160 Padd: ISO 9796-2 Sign: RSA 2048

Definition at line 79 of file cryptmgr.h.

Function Documentation

◆ GWEN_CryptMgr_Decode()

GWENHYWFAR_API int GWEN_CryptMgr_Decode ( GWEN_CRYPTMGR cm,
const uint8_t *  pData,
uint32_t  lData,
GWEN_BUFFER dbuf 
)

Decrypt the given data which is expected to be an encrypted object containing a signed object which actually contains the data. The signature of the contained signed object is verified.

◆ GWEN_CryptMgr_Decrypt()

GWENHYWFAR_API int GWEN_CryptMgr_Decrypt ( GWEN_CRYPTMGR cm,
const uint8_t *  pData,
uint32_t  lData,
GWEN_BUFFER dbuf 
)

Extracts the data from an encrypted object and decrypts it.

◆ GWEN_CryptMgr_Encode()

GWENHYWFAR_API int GWEN_CryptMgr_Encode ( GWEN_CRYPTMGR cm,
const uint8_t *  pData,
uint32_t  lData,
GWEN_BUFFER dbuf 
)

Sign the given data (thus creating a signed object) and encrypt the result of that operation (i.e. creating an encrypted object containing a signed object which actually contains the data).

◆ GWEN_CryptMgr_Encrypt()

GWENHYWFAR_API int GWEN_CryptMgr_Encrypt ( GWEN_CRYPTMGR cm,
const uint8_t *  pData,
uint32_t  lData,
GWEN_BUFFER dbuf 
)

Encrypt the given data and create an encrypted object containing the encrypted data.

◆ GWEN_CryptMgr_free()

GWENHYWFAR_API void GWEN_CryptMgr_free ( GWEN_CRYPTMGR cm)

◆ GWEN_CryptMgr_GetCryptProfile()

GWENHYWFAR_API int GWEN_CryptMgr_GetCryptProfile ( const GWEN_CRYPTMGR cm)

◆ GWEN_CryptMgr_GetLocalKeyName()

GWENHYWFAR_API const char* GWEN_CryptMgr_GetLocalKeyName ( const GWEN_CRYPTMGR cm)

◆ GWEN_CryptMgr_GetLocalKeyNumber()

GWENHYWFAR_API int GWEN_CryptMgr_GetLocalKeyNumber ( const GWEN_CRYPTMGR cm)

◆ GWEN_CryptMgr_GetLocalKeyVersion()

GWENHYWFAR_API int GWEN_CryptMgr_GetLocalKeyVersion ( const GWEN_CRYPTMGR cm)

◆ GWEN_CryptMgr_GetPeerKeyName()

GWENHYWFAR_API const char* GWEN_CryptMgr_GetPeerKeyName ( const GWEN_CRYPTMGR cm)

◆ GWEN_CryptMgr_GetPeerKeyNumber()

GWENHYWFAR_API int GWEN_CryptMgr_GetPeerKeyNumber ( const GWEN_CRYPTMGR cm)

◆ GWEN_CryptMgr_GetPeerKeyVersion()

GWENHYWFAR_API int GWEN_CryptMgr_GetPeerKeyVersion ( const GWEN_CRYPTMGR cm)

◆ GWEN_CryptMgr_GetSignatureProfile()

GWENHYWFAR_API int GWEN_CryptMgr_GetSignatureProfile ( const GWEN_CRYPTMGR cm)

◆ GWEN_CryptMgr_SetCryptProfile()

GWENHYWFAR_API void GWEN_CryptMgr_SetCryptProfile ( GWEN_CRYPTMGR cm,
int  i 
)

◆ GWEN_CryptMgr_SetSignatureProfile()

GWENHYWFAR_API void GWEN_CryptMgr_SetSignatureProfile ( GWEN_CRYPTMGR cm,
int  i 
)

◆ GWEN_CryptMgr_Sign()

GWENHYWFAR_API int GWEN_CryptMgr_Sign ( GWEN_CRYPTMGR cm,
const uint8_t *  pData,
uint32_t  lData,
GWEN_BUFFER dbuf 
)

Sign the given data and create a signed object containing the signature and the given data.

◆ GWEN_CryptMgr_Verify()

GWENHYWFAR_API int GWEN_CryptMgr_Verify ( GWEN_CRYPTMGR cm,
const uint8_t *  pData,
uint32_t  lData,
GWEN_BUFFER dbuf 
)

Extract the data from a signed object and verify the signature.