00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef AH_MEDIUM_H
00015 #define AH_MEDIUM_H
00016
00017 #include <gwenhywfar/misc.h>
00018 #include <gwenhywfar/inherit.h>
00019 #include <gwenhywfar/libloader.h>
00020 #include <gwenhywfar/buffer.h>
00021 #include <gwenhywfar/plugin.h>
00022
00023 #include <aqbanking/banking.h>
00024 #include <aqhbci/objectref.h>
00025
00030 #define AH_MEDIUM_FLAGS_DISABLE_SMALLER_SIGNATURE 0x00000001
00031
00032
00033 #ifdef __cplusplus
00034 extern "C" {
00035 #endif
00036 typedef struct AH_MEDIUM AH_MEDIUM;
00037
00038 typedef enum {
00039 AH_MediumTypeDDV=0,
00040 AH_MediumTypeRDH,
00041 AH_MediumTypePINTAN
00042 } AH_MEDIUMTYPE;
00043
00044
00045 typedef enum {
00046 AH_MediumResultOk=0,
00047 AH_MediumResultNoKey,
00048 AH_MediumResultBadKey,
00049 AH_MediumResultSignSeq,
00050 AH_MediumResultInvalidSignature,
00051 AH_MediumResultGenericError,
00052 AH_MediumResultNotSupported
00053 } AH_MEDIUM_RESULT;
00054
00055
00056 GWEN_LIST_FUNCTION_LIB_DEFS(AH_MEDIUM, AH_Medium, AQHBCI_API);
00057
00058 #ifdef __cplusplus
00059 }
00060 #endif
00061
00062
00063 #include <gwenhywfar/buffer.h>
00064 #include <gwenhywfar/crypt.h>
00065 #include <aqhbci/hbci.h>
00066
00067 #include <aqhbci/mediumctx.h>
00068
00069 #ifdef __cplusplus
00070 extern "C" {
00071 #endif
00072
00073
00081
00082
00092 AQHBCI_API
00093 AH_MEDIUM *AH_Medium_new(AH_HBCI *hbci,
00094 const char *typeName,
00095 const char *subTypeName,
00096 const char *mediumName);
00097
00103 AQHBCI_API
00104 void AH_Medium_free(AH_MEDIUM *m);
00105
00116 AQHBCI_API
00117 void AH_Medium_Attach(AH_MEDIUM *m);
00118
00126
00127 AQHBCI_API
00128 AH_HBCI *AH_Medium_GetHBCI(const AH_MEDIUM *m);
00129 AQHBCI_API
00130 AB_BANKING *AH_Medium_GetBankingApi(const AH_MEDIUM *m);
00131
00132 AQHBCI_API
00133 const char *AH_Medium_GetMediumTypeName(const AH_MEDIUM *m);
00134
00135 AQHBCI_API
00136 const char *AH_Medium_GetMediumSubTypeName(const AH_MEDIUM *m);
00137
00138 AQHBCI_API
00139 const char *AH_Medium_GetMediumName(const AH_MEDIUM *m);
00140
00141 AQHBCI_API
00142 void AH_Medium_SetMediumName(AH_MEDIUM *m, const char *s);
00143
00150 AQHBCI_API
00151 const char *AH_Medium_GetDescriptiveName(const AH_MEDIUM *m);
00152 AQHBCI_API
00153 void AH_Medium_SetDescriptiveName(AH_MEDIUM *m, const char *s);
00154
00155
00156 AQHBCI_API
00157 GWEN_TYPE_UINT32 AH_Medium_GetFlags(const AH_MEDIUM *m);
00158 AQHBCI_API
00159 void AH_Medium_SetFlags(AH_MEDIUM *m, GWEN_TYPE_UINT32 fl);
00160 AQHBCI_API
00161 void AH_Medium_AddFlags(AH_MEDIUM *m, GWEN_TYPE_UINT32 fl);
00162 AQHBCI_API
00163 void AH_Medium_SubFlags(AH_MEDIUM *m, GWEN_TYPE_UINT32 fl);
00164
00165 AQHBCI_API
00166 int AH_Medium_IsMounted(AH_MEDIUM *m);
00167
00168 AQHBCI_API
00169 int AH_Medium_GetTokenIdData(AH_MEDIUM *m, GWEN_BUFFER *buf);
00170
00171
00179
00180 AQHBCI_API
00181 int AH_Medium_SelectContext(AH_MEDIUM *m, int idx);
00182
00183 AH_MEDIUM_CTX *AH_Medium_GetCurrentContext(AH_MEDIUM *m);
00184
00185 AQHBCI_API
00186 int AH_Medium_ReadContext(AH_MEDIUM *m,
00187 int idx,
00188 int *country,
00189 GWEN_BUFFER *bankId,
00190 GWEN_BUFFER *userId,
00191 GWEN_BUFFER *server,
00192 int *port);
00193
00194 AQHBCI_API
00195 int AH_Medium_WriteContext(AH_MEDIUM *m,
00196 int idx,
00197 int country,
00198 const char *bankId,
00199 const char *userId,
00200 const char *server,
00201 int port);
00202
00203
00214 AQHBCI_API
00215 AH_MEDIUM_RESULT AH_Medium_Encrypt(AH_MEDIUM *m,
00216 GWEN_BUFFER *msgbuf,
00217 GWEN_BUFFER *encryptbuf,
00218 GWEN_BUFFER *msgKeyBuffer);
00219
00222 AQHBCI_API
00223 AH_MEDIUM_RESULT AH_Medium_Decrypt(AH_MEDIUM *m,
00224 GWEN_BUFFER *msgbuf,
00225 GWEN_BUFFER *decryptbuf,
00226 GWEN_BUFFER *msgKeyBuffer);
00257 AQHBCI_API
00258 int AH_Medium_Mount(AH_MEDIUM *m);
00259
00265 AQHBCI_API
00266 int AH_Medium_Create(AH_MEDIUM *m);
00267
00275 AQHBCI_API
00276 int AH_Medium_Unmount(AH_MEDIUM *m, int force);
00277
00278
00279
00283 AQHBCI_API
00284 int AH_Medium_ChangePin(AH_MEDIUM *m);
00285
00286
00294 AQHBCI_API
00295 int AH_Medium_ToDB(const AH_MEDIUM *m, GWEN_DB_NODE *db);
00296
00302 AQHBCI_API
00303 int AH_Medium_FromDB(AH_MEDIUM *m, GWEN_DB_NODE *db);
00304
00307 AQHBCI_API
00308 AH_MEDIUM_RESULT AH_Medium_Sign(AH_MEDIUM *m,
00309 GWEN_BUFFER *msgbuf,
00310 GWEN_BUFFER *signbuf);
00313 AQHBCI_API
00314 int AH_Medium_GetNextSignSeq(AH_MEDIUM *m);
00315
00316
00319 AQHBCI_API
00320 AH_MEDIUM_RESULT AH_Medium_EncryptKey(AH_MEDIUM *m,
00321 GWEN_BUFFER *srckey,
00322 GWEN_BUFFER *encKey);
00323
00326 AQHBCI_API
00327 AH_MEDIUM_RESULT AH_Medium_DecryptKey(AH_MEDIUM *m,
00328 GWEN_BUFFER *srckey,
00329 GWEN_BUFFER *decKey);
00330
00331 AQHBCI_API
00332 GWEN_BUFFER *AH_Medium_GenerateMsgKey(AH_MEDIUM *m);
00333
00334
00340 AQHBCI_API
00341 AH_MEDIUM_RESULT AH_Medium_Verify(AH_MEDIUM *m,
00342 GWEN_BUFFER *msgbuf,
00343 GWEN_BUFFER *signbuf,
00344 int signseq);
00345
00354
00355 AQHBCI_API
00356 int AH_Medium_InputPin(AH_MEDIUM *m,
00357 char *buffer,
00358 int minLen,
00359 int maxLen,
00360 int flags);
00361
00362 AQHBCI_API
00363 int AH_Medium_SetPinStatus(AH_MEDIUM *m,
00364 const char *pin,
00365 AB_BANKING_PINSTATUS status);
00366
00367 AQHBCI_API
00368 int AH_Medium_InputTan(AH_MEDIUM *m,
00369 char *buffer,
00370 int minLen,
00371 int maxLen);
00372
00373 AQHBCI_API
00374 int AH_Medium_SetTanStatus(AH_MEDIUM *m,
00375 const char *tan,
00376 AB_BANKING_TANSTATUS status);
00377
00378
00383
00384
00385
00386 int AH_Medium_CreateKeys(AH_MEDIUM *m);
00387
00388 GWEN_CRYPTKEY *AH_Medium_GetLocalPubSignKey(AH_MEDIUM *m);
00389 GWEN_CRYPTKEY *AH_Medium_GetLocalPubCryptKey(AH_MEDIUM *m);
00390 GWEN_CRYPTKEY *AH_Medium_GetPubSignKey(AH_MEDIUM *m);
00391 GWEN_CRYPTKEY *AH_Medium_GetPubCryptKey(AH_MEDIUM *m);
00392 int AH_Medium_SetPubSignKey(AH_MEDIUM *m, const GWEN_CRYPTKEY *key);
00393 int AH_Medium_SetPubCryptKey(AH_MEDIUM *m, const GWEN_CRYPTKEY *key);
00394
00395 int AH_Medium_ResetServerKeys(AH_MEDIUM *m);
00396 int AH_Medium_ResetUserKeys(AH_MEDIUM *m);
00397
00398
00399
00400
00401 #ifdef __cplusplus
00402 }
00403 #endif
00404
00405 #endif
00406
00407