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 <chipcard2-client/client/card.h>
00018 #include <gwenhywfar/keyspec.h>
00019 #include <gwenhywfar/crypt.h>
00020
00021 #ifdef __cplusplus
00022 extern "C" {
00023 #endif
00024
00025
00026 #define LC_STARCOS_KEY_STATUS_ACTIVE 0x10
00027 #define LC_STARCOS_KEY_STATUS_INACTIVE_CERT 0x0a
00028 #define LC_STARCOS_KEY_STATUS_INACTIVE_FREE 0x08
00029 #define LC_STARCOS_KEY_STATUS_INACTIVE_NEW 0x07
00030 #define LC_STARCOS_KEY_STATUS_ACTIVE_NEW 0x02
00031 #define LC_STARCOS_KEY_STATUS_ACTIVE_INCOMPLETE 0x01
00032 #define LC_STARCOS_KEY_STATUS_ACTIVE_INILETTER 0x00
00033 #define LC_STARCOS_KEY_STATUS_INTERNAL_UNUSED 0xff
00034
00035
00036 CHIPCARD_API
00037 int LC_Starcos_ExtendCard(LC_CARD *card);
00038 CHIPCARD_API
00039 int LC_Starcos_UnextendCard(LC_CARD *card);
00040 CHIPCARD_API
00041 LC_CLIENT_RESULT LC_Starcos_Reopen(LC_CARD *card);
00042
00043
00044 CHIPCARD_API
00045 GWEN_DB_NODE *LC_Starcos_GetCardDataAsDb(const LC_CARD *card);
00046 CHIPCARD_API
00047 GWEN_BUFFER *LC_Starcos_GetCardDataAsBuffer(const LC_CARD *card);
00048
00049
00050 void LC_Starcos_SetAppName(LC_CARD *card, const char *s);
00051
00052
00053
00058 CHIPCARD_API
00059 LC_CLIENT_RESULT LC_Starcos_GetPinStatus(LC_CARD *card,
00060 unsigned int pid,
00061 int *maxErrors,
00062 int *currentErrors);
00075 CHIPCARD_API
00076 GWEN_KEYSPEC *LC_Starcos_GetKeySpec(LC_CARD *card, int kid);
00077
00078 CHIPCARD_API
00079 LC_CLIENT_RESULT LC_Starcos_SetKeySpec(LC_CARD *card,
00080 int kid,
00081 const GWEN_KEYSPEC *ks);
00082
00083
00089 CHIPCARD_API
00090 LC_CLIENT_RESULT LC_Starcos_GenerateKeyPair(LC_CARD *card,
00091 int kid,
00092 int bits);
00093
00094 CHIPCARD_API
00095 LC_CLIENT_RESULT LC_Starcos_ActivateKeyPair(LC_CARD *card,
00096 int srcKid,
00097 int dstKid,
00098 const GWEN_KEYSPEC *ks);
00099
00100 CHIPCARD_API
00101 LC_CLIENT_RESULT LC_Starcos_WritePublicKey(LC_CARD *card, int kid,
00102 const GWEN_CRYPTKEY *key);
00103
00104 CHIPCARD_API
00105 GWEN_CRYPTKEY *LC_Starcos_ReadPublicKey(LC_CARD *card, int kid);
00126 CHIPCARD_API
00127 LC_CLIENT_RESULT LC_Starcos_ReadInstituteData(LC_CARD *card,
00128 int idx,
00129 GWEN_DB_NODE *dbData);
00130
00131 CHIPCARD_API
00132 LC_CLIENT_RESULT LC_Starcos_WriteInstituteData(LC_CARD *card,
00133 int idx,
00134 GWEN_DB_NODE *dbData);
00143 CHIPCARD_API
00144 GWEN_TYPE_UINT32 LC_Starcos_ReadSigCounter(LC_CARD *card, int kid);
00145
00149 CHIPCARD_API
00150 LC_CLIENT_RESULT LC_Starcos_GetChallenge(LC_CARD *card, GWEN_BUFFER *mbuf);
00151
00152
00155 #ifdef __cplusplus
00156 }
00157 #endif
00158
00159 #endif
00160
00161