libchipcard 5.1.6
starcos.h File Reference
#include <chipcard/card.h>
#include <chipcard/cards/starcos_keydescr.h>
Include dependency graph for starcos.h:

Go to the source code of this file.

Macros

#define LC_STARCOS_KEY_STATUS_ACTIVE   0x10
 
#define LC_STARCOS_KEY_STATUS_INACTIVE_CERT   0x0a
 
#define LC_STARCOS_KEY_STATUS_INACTIVE_FREE   0x08
 
#define LC_STARCOS_KEY_STATUS_INACTIVE_NEW   0x07
 
#define LC_STARCOS_KEY_STATUS_ACTIVE_NEW   0x02
 
#define LC_STARCOS_KEY_STATUS_ACTIVE_INCOMPLETE   0x01
 
#define LC_STARCOS_KEY_STATUS_ACTIVE_INILETTER   0x00
 
#define LC_STARCOS_KEY_STATUS_INTERNAL_UNUSED   0xff
 

Functions

CHIPCARD_API int LC_Starcos_ExtendCard (LC_CARD *card)
 
CHIPCARD_API int LC_Starcos_UnextendCard (LC_CARD *card)
 
CHIPCARD_API LC_CLIENT_RESULT LC_Starcos_Reopen (LC_CARD *card)
 
CHIPCARD_API GWEN_DB_NODE * LC_Starcos_GetCardDataAsDb (const LC_CARD *card)
 
CHIPCARD_API GWEN_BUFFER * LC_Starcos_GetCardDataAsBuffer (const LC_CARD *card)
 
Key Management Functions
CHIPCARD_API LC_CLIENT_RESULT LC_Starcos_GenerateKeyPair (LC_CARD *card, int kid, int bits)
 
CHIPCARD_API LC_CLIENT_RESULT LC_Starcos_ActivateKeyPair (LC_CARD *card, int srcKid, int dstKid, const LC_STARCOS_KEYDESCR *descr)
 
CHIPCARD_API LC_CLIENT_RESULT LC_Starcos_GetKeyDescr (LC_CARD *card, int kid, LC_STARCOS_KEYDESCR **pDescr)
 
CHIPCARD_API LC_CLIENT_RESULT LC_Starcos_SaveKeyDescr (LC_CARD *card, const LC_STARCOS_KEYDESCR *d)
 
CHIPCARD_API LC_CLIENT_RESULT LC_Starcos_WritePublicKey (LC_CARD *card, int kid, const uint8_t *pModulus, uint32_t lModulus, const uint8_t *pExponent, uint32_t lExponent)
 
CHIPCARD_API LC_CLIENT_RESULT LC_Starcos_ReadPublicKey (LC_CARD *card, int kid, GWEN_BUFFER *bModulus, GWEN_BUFFER *bExponent)
 
Bank Information Functions
CHIPCARD_API LC_CLIENT_RESULT LC_Starcos_ReadInstituteData (LC_CARD *card, int idx, GWEN_DB_NODE *dbData)
 
CHIPCARD_API LC_CLIENT_RESULT LC_Starcos_WriteInstituteData (LC_CARD *card, int idx, GWEN_DB_NODE *dbData)
 
Cryptographic Functions
CHIPCARD_API LC_CLIENT_RESULT LC_Starcos_ReadSigCounter (LC_CARD *card, int kid, uint32_t *pSeq)
 
CHIPCARD_API LC_CLIENT_RESULT LC_Starcos_GetChallenge (LC_CARD *card, GWEN_BUFFER *mbuf)
 

Macro Definition Documentation

◆ LC_STARCOS_KEY_STATUS_ACTIVE

#define LC_STARCOS_KEY_STATUS_ACTIVE   0x10

◆ LC_STARCOS_KEY_STATUS_INACTIVE_CERT

#define LC_STARCOS_KEY_STATUS_INACTIVE_CERT   0x0a

◆ LC_STARCOS_KEY_STATUS_INACTIVE_FREE

#define LC_STARCOS_KEY_STATUS_INACTIVE_FREE   0x08

◆ LC_STARCOS_KEY_STATUS_INACTIVE_NEW

#define LC_STARCOS_KEY_STATUS_INACTIVE_NEW   0x07

◆ LC_STARCOS_KEY_STATUS_ACTIVE_NEW

#define LC_STARCOS_KEY_STATUS_ACTIVE_NEW   0x02

◆ LC_STARCOS_KEY_STATUS_ACTIVE_INCOMPLETE

#define LC_STARCOS_KEY_STATUS_ACTIVE_INCOMPLETE   0x01

◆ LC_STARCOS_KEY_STATUS_ACTIVE_INILETTER

#define LC_STARCOS_KEY_STATUS_ACTIVE_INILETTER   0x00

◆ LC_STARCOS_KEY_STATUS_INTERNAL_UNUSED

#define LC_STARCOS_KEY_STATUS_INTERNAL_UNUSED   0xff

Function Documentation

◆ LC_Starcos_ExtendCard()

CHIPCARD_API int LC_Starcos_ExtendCard ( LC_CARD * card)

◆ LC_Starcos_UnextendCard()

CHIPCARD_API int LC_Starcos_UnextendCard ( LC_CARD * card)

◆ LC_Starcos_Reopen()

CHIPCARD_API LC_CLIENT_RESULT LC_Starcos_Reopen ( LC_CARD * card)

◆ LC_Starcos_GetCardDataAsDb()

CHIPCARD_API GWEN_DB_NODE * LC_Starcos_GetCardDataAsDb ( const LC_CARD * card)

◆ LC_Starcos_GetCardDataAsBuffer()

CHIPCARD_API GWEN_BUFFER * LC_Starcos_GetCardDataAsBuffer ( const LC_CARD * card)

◆ LC_Starcos_GenerateKeyPair()

CHIPCARD_API LC_CLIENT_RESULT LC_Starcos_GenerateKeyPair ( LC_CARD * card,
int kid,
int bits )

Generates a temporary key pair. To use the newly created key pair you need to call LC_Starcos_ActivateKeyPair.

Parameters
kiduse 0x8e for crypt keys and 0x8f for sign keys

◆ LC_Starcos_ActivateKeyPair()

CHIPCARD_API LC_CLIENT_RESULT LC_Starcos_ActivateKeyPair ( LC_CARD * card,
int srcKid,
int dstKid,
const LC_STARCOS_KEYDESCR * descr )

◆ LC_Starcos_GetKeyDescr()

CHIPCARD_API LC_CLIENT_RESULT LC_Starcos_GetKeyDescr ( LC_CARD * card,
int kid,
LC_STARCOS_KEYDESCR ** pDescr )

◆ LC_Starcos_SaveKeyDescr()

CHIPCARD_API LC_CLIENT_RESULT LC_Starcos_SaveKeyDescr ( LC_CARD * card,
const LC_STARCOS_KEYDESCR * d )

◆ LC_Starcos_WritePublicKey()

CHIPCARD_API LC_CLIENT_RESULT LC_Starcos_WritePublicKey ( LC_CARD * card,
int kid,
const uint8_t * pModulus,
uint32_t lModulus,
const uint8_t * pExponent,
uint32_t lExponent )

◆ LC_Starcos_ReadPublicKey()

CHIPCARD_API LC_CLIENT_RESULT LC_Starcos_ReadPublicKey ( LC_CARD * card,
int kid,
GWEN_BUFFER * bModulus,
GWEN_BUFFER * bExponent )

◆ LC_Starcos_ReadInstituteData()

CHIPCARD_API LC_CLIENT_RESULT LC_Starcos_ReadInstituteData ( LC_CARD * card,
int idx,
GWEN_DB_NODE * dbData )

This function reads institute data from the card. You need to verify the pin prior to using this function. Please note that this function always returns contexts if there was no error. However, if the context is empty the corresponding context group returned will be empty, too.

Parameters
idxif 0 then all 5 entries are read, if 1 then entry 1 is read etc
dbDataif idx==0 then every context read will be added as a new group called "context" to this given group. Otherwise the specified context is directly stored within this given group.

◆ LC_Starcos_WriteInstituteData()

CHIPCARD_API LC_CLIENT_RESULT LC_Starcos_WriteInstituteData ( LC_CARD * card,
int idx,
GWEN_DB_NODE * dbData )

◆ LC_Starcos_ReadSigCounter()

CHIPCARD_API LC_CLIENT_RESULT LC_Starcos_ReadSigCounter ( LC_CARD * card,
int kid,
uint32_t * pSeq )

◆ LC_Starcos_GetChallenge()

CHIPCARD_API LC_CLIENT_RESULT LC_Starcos_GetChallenge ( LC_CARD * card,
GWEN_BUFFER * mbuf )

returns 8 random bytes