gwenhywfar/plugins/ct/ohbci/ohbci_p.h @ 85b6bc2a
da13b417 | martin | /***************************************************************************
|
|
begin : Mon Mar 01 2004
|
|||
c3293db2 | martin | copyright : (C) 2004-2010 by Martin Preuss
|
|
da13b417 | martin | email : martin@libchipcard.de
|
|
***************************************************************************
|
|||
* Please see toplevel file COPYING for license details *
|
|||
***************************************************************************/
|
|||
#ifndef AH_MEDIUM_OHBCI_P_H
|
|||
#define AH_MEDIUM_OHBCI_P_H
|
|||
#define GWEN_CRYPT_TOKEN_OHBCI_NAME "OHBCI"
|
|||
#define GWEN_CRYPT_TOKEN_OHBCI_VMAJOR 1
|
|||
c3293db2 | martin | #define GWEN_CRYPT_TOKEN_OHBCI_VMINOR 8
|
|
da13b417 | martin | ||
#define GWEN_CRYPT_TOKEN_OHBCI_PINMINLENGTH 4 /* temporary, should be 5 or more */
|
|||
#define GWEN_CRYPT_TOKEN_OHBCI_MAX_PIN_TRY 10
|
|||
c3293db2 | martin | #define GWEN_CRYPT_TOKEN_OHBCI_TRESOR_PWD_ITERATIONS 1469
|
|
#define GWEN_CRYPT_TOKEN_OHBCI_TRESOR_CRYPT_ITERATIONS 365
|
|||
da13b417 | martin | /* new in 1.6 */
|
|
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_MEDIUM1 (unsigned char)0xc1
|
|||
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_MEDIUM2 (unsigned char)0xc2
|
|||
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_MEDIUM3 (unsigned char)0xc3
|
|||
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_CRYPT_OLD GWEN_CRYPT_TOKEN_OHBCI_TAG_MEDIUM1
|
|||
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_CRYPT GWEN_CRYPT_TOKEN_OHBCI_TAG_MEDIUM2
|
|||
/* new in 1.6 */
|
|||
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_CRYPT_BF GWEN_CRYPT_TOKEN_OHBCI_TAG_MEDIUM3
|
|||
c3293db2 | martin | /* new in 1.8 */
|
|
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_CRYPT_TRESOR (unsigned char)0xc4
|
|||
da13b417 | martin | ||
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_VERSION_MAJOR (unsigned char)0x02
|
|||
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_VERSION_MINOR (unsigned char)0x03
|
|||
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_SEQ (unsigned char)0x04
|
|||
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_USER_PUBSIGNKEY (unsigned char)0xc5
|
|||
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_USER_PRIVSIGNKEY (unsigned char)0xc6
|
|||
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_USER_PUBCRYPTKEY (unsigned char)0xc7
|
|||
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_USER_PRIVCRYPTKEY (unsigned char)0xc8
|
|||
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_USER_ID (unsigned char)0x09
|
|||
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_INST_PUBSIGNKEY (unsigned char)0xca
|
|||
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_INST_PUBCRYPTKEY (unsigned char)0xcb
|
|||
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_INST_COUNTRY (unsigned char)0x0c
|
|||
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_INST_CODE (unsigned char)0x0d
|
|||
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_INST_SYSTEMID (unsigned char)0x0e
|
|||
c3293db2 | martin | /* temporary keys (reintroduced in version 1.8) */
|
|
da13b417 | martin | #define GWEN_CRYPT_TOKEN_OHBCI_TAG_TEMP_PUBSIGNKEY (unsigned char)0xcf
|
|
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_TEMP_PRIVSIGNKEY (unsigned char)0xd0
|
|||
c3293db2 | martin | /* temporary keys (new in version 1.1, ignored in later versions) */
|
|
da13b417 | martin | #define GWEN_CRYPT_TOKEN_OHBCI_TAG_TEMP_PUBCRYPTKEY (unsigned char)0xd1
|
|
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_TEMP_PRIVCRYPTKEY (unsigned char)0xd2
|
|||
/* new in version 1.4 */
|
|||
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_SERVER_ADDR (unsigned char)0xd3
|
|||
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_SERVER_PORT (unsigned char)0xd4
|
|||
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_REMOTE_SEQ (unsigned char)0xd5
|
|||
/* new in version 1.6 */
|
|||
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_HEADER (unsigned char)0x16
|
|||
/* new in version 1.7 */
|
|||
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_USER_PRIVAUTHKEY (unsigned char)0xd6
|
|||
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_INST_PUBAUTHKEY (unsigned char)0xd7
|
|||
/* keydata */
|
|||
/* ignored */
|
|||
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_KEY_ISPUBLIC (unsigned char) 0x01
|
|||
/* ignored since 1.8 */
|
|||
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_KEY_ISCRYPT (unsigned char) 0x02
|
|||
/* fixed in 1.5: fixes a bug in old OpenHBCI which included escape chars */
|
|||
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_KEY_OWNER (unsigned char) 0x03
|
|||
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_KEY_VERSION (unsigned char) 0x04
|
|||
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_KEY_NUMBER (unsigned char) 0x05
|
|||
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_KEY_MODULUS (unsigned char) 0x06
|
|||
/* ignored */
|
|||
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_KEY_EXP_OLD (unsigned char) 0x07
|
|||
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_KEY_N (unsigned char) 0x08
|
|||
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_KEY_P (unsigned char) 0x09
|
|||
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_KEY_Q (unsigned char) 0x0a
|
|||
/* ignored since 1.8 */
|
|||
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_KEY_DMP1 (unsigned char) 0x0b
|
|||
/* ignored since 1.8 */
|
|||
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_KEY_DMQ1 (unsigned char) 0x0c
|
|||
/* ignored since 1.8 */
|
|||
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_KEY_IQMP (unsigned char) 0x0d
|
|||
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_KEY_D (unsigned char) 0x0e
|
|||
/* new in version 1.3 */
|
|||
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_KEY_EXP (unsigned char) 0x0f
|
|||
/* new in version 1.7 */
|
|||
#define GWEN_CRYPT_TOKEN_OHBCI_TAG_KEY_LEN (unsigned char) 0x10
|
|||
#include "ohbci_l.h"
|
|||
#include <time.h>
|
|||
#include <sys/types.h>
|
|||
#include <sys/stat.h>
|
|||
#include <gwenhywfar/fslock.h>
|
|||
#include <gwenhywfar/cryptkey.h>
|
|||
#include <gwenhywfar/ct_be.h>
|
|||
#include <gwenhywfar/tag16.h>
|
|||
cfa44bda | martin | GWENHYWFAR_EXPORT
|
|
GWEN_PLUGIN *ct_ohbci_factory(GWEN_PLUGIN_MANAGER *pm,
|
|||
const char *modName,
|
|||
const char *fileName);
|
|||
da13b417 | martin | ||
GWEN_PLUGIN *GWEN_Crypt_TokenOHBCI_Plugin_new(GWEN_PLUGIN_MANAGER *pm,
|
|||
const char *modName,
|
|||
const char *fileName);
|
|||
GWEN_CRYPT_TOKEN* GWENHYWFAR_CB
|
|||
GWEN_Crypt_TokenOHBCI_Plugin_CreateToken(GWEN_PLUGIN *pl, const char *name);
|
|||
int GWENHYWFAR_CB
|
|||
GWEN_Crypt_TokenOHBCI_Plugin_CheckToken(GWEN_PLUGIN *pl,
|
|||
GWEN_BUFFER *name);
|
|||
typedef struct GWEN_CRYPT_TOKEN_OHBCI GWEN_CRYPT_TOKEN_OHBCI;
|
|||
struct GWEN_CRYPT_TOKEN_OHBCI {
|
|||
GWEN_CRYPT_TOKEN_OPEN_FN openFn;
|
|||
GWEN_CRYPT_TOKEN_CREATE_FN createFn;
|
|||
GWEN_CRYPT_TOKEN_CLOSE_FN closeFn;
|
|||
unsigned int mediumTag;
|
|||
unsigned int cryptoTag;
|
|||
unsigned int vminor;
|
|||
c3293db2 | martin | char password[64];
|
|
da13b417 | martin | int passWordIsSet;
|
|
int justCreated;
|
|||
};
|
|||
void GWENHYWFAR_CB GWEN_Crypt_TokenOHBCI_FreeData(void *bp, void *p);
|
|||
int GWEN_Crypt_TokenOHBCI__DecryptFile(GWEN_CRYPT_TOKEN *ct,
|
|||
GWEN_BUFFER *fbuf,
|
|||
int trynum,
|
|||
uint32_t gid);
|
|||
int GWEN_Crypt_TokenOHBCI__DecryptFile16(GWEN_CRYPT_TOKEN *ct,
|
|||
GWEN_BUFFER *fbuf,
|
|||
int trynum,
|
|||
uint32_t gid);
|
|||
c3293db2 | martin | ||
int GWEN_Crypt_TokenOHBCI__DecryptTresor(GWEN_CRYPT_TOKEN *ct,
|
|||
GWEN_BUFFER *fbuf,
|
|||
int trynum,
|
|||
uint32_t gid);
|
|||
da13b417 | martin | void GWEN_Crypt_TokenOHBCI__DecodeKey(GWEN_CRYPT_TOKEN *ct,
|
|
GWEN_TAG16 *keyTlv,
|
|||
GWEN_DB_NODE *dbKeys,
|
|||
const char *keyName);
|
|||
int GWEN_Crypt_TokenOHBCI__Decode(GWEN_CRYPT_TOKEN *ct, GWEN_BUFFER *dbuf);
|
|||
int GWEN_Crypt_TokenOHBCI__EncodeKey(const GWEN_CRYPT_KEY *key,
|
|||
GWEN_CRYPT_TOKEN_CONTEXT *fct,
|
|||
unsigned int tagType,
|
|||
int wantPublic,
|
|||
int isCrypt,
|
|||
GWEN_BUFFER *dbuf);
|
|||
int GWEN_Crypt_TokenOHBCI_Encode(GWEN_CRYPT_TOKEN *ct, GWEN_BUFFER *dbuf);
|
|||
int GWEN_Crypt_TokenOHBCI__EnsurePassword(GWEN_CRYPT_TOKEN *ct,
|
|||
int trynum,
|
|||
int twice,
|
|||
uint32_t gid);
|
|||
int GWENHYWFAR_CB
|
|||
GWEN_Crypt_TokenOHBCI_Create(GWEN_CRYPT_TOKEN *ct, uint32_t gid);
|
|||
int GWENHYWFAR_CB
|
|||
GWEN_Crypt_TokenOHBCI_Open(GWEN_CRYPT_TOKEN *ct, int manage, uint32_t gid);
|
|||
int GWENHYWFAR_CB
|
|||
GWEN_Crypt_TokenOHBCI_Close(GWEN_CRYPT_TOKEN *ct, int abandon, uint32_t gid);
|
|||
int GWENHYWFAR_CB
|
|||
GWEN_Crypt_TokenOHBCI_Write(GWEN_CRYPT_TOKEN *ct, int fd, int cre, uint32_t gid);
|
|||
int GWENHYWFAR_CB
|
|||
GWEN_Crypt_TokenOHBCI_Read(GWEN_CRYPT_TOKEN *ct, int fd, uint32_t gid);
|
|||
int GWENHYWFAR_CB
|
|||
GWEN_Crypt_TokenOHBCI_ChangePin(GWEN_CRYPT_TOKEN *ct,
|
|||
int admin,
|
|||
uint32_t gid);
|
|||
#endif /* GWEN_CRYPT_TOKEN_OHBCI_P_H */
|
|||