00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef CHIPCARD_CARD_STARCOS_H
00015 #define CHIPCARD_CARD_STARCOS_H
00016
00017 #include <chipcard/client/card.h>
00018 #include <chipcard/client/cards/starcos_keydescr.h>
00019
00020 #ifdef __cplusplus
00021 extern "C" {
00022 #endif
00023
00024
00025 #define LC_STARCOS_KEY_STATUS_ACTIVE 0x10
00026 #define LC_STARCOS_KEY_STATUS_INACTIVE_CERT 0x0a
00027 #define LC_STARCOS_KEY_STATUS_INACTIVE_FREE 0x08
00028 #define LC_STARCOS_KEY_STATUS_INACTIVE_NEW 0x07
00029 #define LC_STARCOS_KEY_STATUS_ACTIVE_NEW 0x02
00030 #define LC_STARCOS_KEY_STATUS_ACTIVE_INCOMPLETE 0x01
00031 #define LC_STARCOS_KEY_STATUS_ACTIVE_INILETTER 0x00
00032 #define LC_STARCOS_KEY_STATUS_INTERNAL_UNUSED 0xff
00033
00034
00035 CHIPCARD_API
00036 int LC_Starcos_ExtendCard(LC_CARD *card);
00037 CHIPCARD_API
00038 int LC_Starcos_UnextendCard(LC_CARD *card);
00039 CHIPCARD_API
00040 LC_CLIENT_RESULT LC_Starcos_Reopen(LC_CARD *card);
00041
00042
00043 CHIPCARD_API
00044 GWEN_DB_NODE *LC_Starcos_GetCardDataAsDb(const LC_CARD *card);
00045 CHIPCARD_API
00046 GWEN_BUFFER *LC_Starcos_GetCardDataAsBuffer(const LC_CARD *card);
00047
00048
00049
00054
00055
00061 CHIPCARD_API
00062 LC_CLIENT_RESULT LC_Starcos_GenerateKeyPair(LC_CARD *card,
00063 int kid,
00064 int bits);
00065
00066 CHIPCARD_API
00067 LC_CLIENT_RESULT LC_Starcos_ActivateKeyPair(LC_CARD *card,
00068 int srcKid,
00069 int dstKid,
00070 const LC_STARCOS_KEYDESCR *descr);
00071
00072 CHIPCARD_API
00073 LC_CLIENT_RESULT LC_Starcos_GetKeyDescr(LC_CARD *card, int kid,
00074 LC_STARCOS_KEYDESCR **pDescr);
00075
00076 CHIPCARD_API
00077 LC_CLIENT_RESULT LC_Starcos_SaveKeyDescr(LC_CARD *card,
00078 const LC_STARCOS_KEYDESCR *d);
00079
00080 CHIPCARD_API
00081 LC_CLIENT_RESULT LC_Starcos_WritePublicKey(LC_CARD *card, int kid,
00082 const uint8_t *pModulus,
00083 uint32_t lModulus,
00084 const uint8_t *pExponent,
00085 uint32_t lExponent);
00086
00087 CHIPCARD_API
00088 LC_CLIENT_RESULT LC_Starcos_ReadPublicKey(LC_CARD *card, int kid,
00089 GWEN_BUFFER *bModulus,
00090 GWEN_BUFFER *bExponent);
00091
00112 CHIPCARD_API
00113 LC_CLIENT_RESULT LC_Starcos_ReadInstituteData(LC_CARD *card,
00114 int idx,
00115 GWEN_DB_NODE *dbData);
00116
00117 CHIPCARD_API
00118 LC_CLIENT_RESULT LC_Starcos_WriteInstituteData(LC_CARD *card,
00119 int idx,
00120 GWEN_DB_NODE *dbData);
00129 CHIPCARD_API
00130 LC_CLIENT_RESULT LC_Starcos_ReadSigCounter(LC_CARD *card, int kid,
00131 uint32_t *pSeq);
00132
00136 CHIPCARD_API
00137 LC_CLIENT_RESULT LC_Starcos_GetChallenge(LC_CARD *card, GWEN_BUFFER *mbuf);
00138
00139
00142 #ifdef __cplusplus
00143 }
00144 #endif
00145
00146 #endif
00147
00148