这篇教程C++ DBG_INFO函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中DBG_INFO函数的典型用法代码示例。如果您正苦于以下问题:C++ DBG_INFO函数的具体用法?C++ DBG_INFO怎么用?C++ DBG_INFO使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了DBG_INFO函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: EBC_Provider_MkEuCryptZipDoc_A004int EBC_Provider_MkEuCryptZipDoc_A004(AB_PROVIDER *pro, AB_USER *u, const char *requestType, const uint8_t *pMsg, uint32_t lMsg, GWEN_CRYPT_KEY *skey, GWEN_BUFFER *sbuf) { GWEN_BUFFER *tbuf; GWEN_BUFFER *ebuf; int rv; uint32_t l; DBG_INFO(AQEBICS_LOGDOMAIN, "Generating EU A005"); tbuf=GWEN_Buffer_new(0, 512, 0, 1); rv=EBC_Provider_MkEuZipDoc_A004(pro, u, requestType, pMsg, lMsg, tbuf); if (rv<0) { DBG_INFO(AQEBICS_LOGDOMAIN, "here (%d)", rv); GWEN_Buffer_free(tbuf); return rv; } /* padd EU */ rv=GWEN_Padd_PaddWithAnsiX9_23(tbuf); if (rv<0) { DBG_INFO(AQEBICS_LOGDOMAIN, "here (%d)", rv); GWEN_Buffer_free(tbuf); return rv; } /* encrypt EU with the DES session key */ ebuf=GWEN_Buffer_new(0, GWEN_Buffer_GetUsedBytes(tbuf)+16, 0, 1); l=GWEN_Buffer_GetMaxUnsegmentedWrite(ebuf); /* reset IV !! */ GWEN_Crypt_KeyDes3K_SetIV(skey, NULL, 0); rv=GWEN_Crypt_Key_Encipher(skey, (uint8_t*)GWEN_Buffer_GetStart(tbuf), GWEN_Buffer_GetUsedBytes(tbuf), (uint8_t*)GWEN_Buffer_GetPosPointer(ebuf), &l); if (rv<0) { DBG_INFO(AQEBICS_LOGDOMAIN, "here (%d)", rv); GWEN_Buffer_free(ebuf); GWEN_Buffer_free(tbuf); return rv; } GWEN_Buffer_free(tbuf); GWEN_Buffer_IncrementPos(ebuf, l); GWEN_Buffer_AdjustUsedBytes(ebuf); /* base64 encode encrypted EU into given buffer */ rv=GWEN_Base64_Encode((const uint8_t*)GWEN_Buffer_GetStart(ebuf), GWEN_Buffer_GetUsedBytes(ebuf), sbuf, 0); if (rv<0) { DBG_INFO(AQEBICS_LOGDOMAIN, "here (%d)", rv); GWEN_Buffer_free(ebuf); return rv; } GWEN_Buffer_free(ebuf); return 0;}
开发者ID:Zauberstuhl,项目名称:aqbanking,代码行数:62,
示例2: GWEN_Process_StartGWEN_PROCESS_STATE GWEN_Process_Start(GWEN_PROCESS *pr, const char *prg, const char *args) { pid_t pid; char *argv[32]; int argc; const char *p, *p2; GWEN_BUFFER *wbuf; assert(pr); if (GWEN_Process_Redirect(pr)) { DBG_ERROR(GWEN_LOGDOMAIN, "Could not setup redirections"); pr->state=GWEN_ProcessStateNotStarted; pr->pid=-1; return GWEN_ProcessStateNotStarted; } pid=fork(); if (pid==-1) { /* error in fork */ pr->state=GWEN_ProcessStateNotStarted; pr->pid=-1; /* close all pipes */ if (pr->filesStdin[0]!=-1) { close(pr->filesStdin[0]); close(pr->filesStdin[1]); } if (pr->filesStdout[0]!=-1) { close(pr->filesStdout[0]); close(pr->filesStdout[1]); } if (pr->filesStderr[0]!=-1) { close(pr->filesStderr[0]); close(pr->filesStderr[1]); } return GWEN_ProcessStateNotStarted; } else if (pid!=0) { /* parent */ DBG_INFO(GWEN_LOGDOMAIN, "Process started with id %d", (int)pid); pr->state=GWEN_ProcessStateRunning; pr->pid=pid; /* setup redirections */ if (pr->filesStdin[0]!=-1) { close(pr->filesStdin[1]); pr->stdIn=GWEN_SyncIo_File_fromFd(pr->filesStdin[0]); } if (pr->filesStdout[0]!=-1) { close(pr->filesStdout[1]); pr->stdOut=GWEN_SyncIo_File_fromFd(pr->filesStdout[0]); } if (pr->filesStderr[0]!=-1) { close(pr->filesStderr[1]); pr->stdErr=GWEN_SyncIo_File_fromFd(pr->filesStdout[0]); } return GWEN_ProcessStateRunning; } /* child, build arguments */ argc=0; DBG_DEBUG(GWEN_LOGDOMAIN, "I'm the child process"); /* setup redirections */ if (pr->filesStdin[0]!=-1) { close(pr->filesStdin[0]); close(0); if (dup(pr->filesStdin[1])==-1) { DBG_ERROR(GWEN_LOGDOMAIN, "Could not setup redirection"); } } if (pr->filesStdout[0]!=-1) { close(pr->filesStdout[0]); close(1); if (dup(pr->filesStdout[1])==-1) { DBG_ERROR(GWEN_LOGDOMAIN, "Could not setup redirection"); } } if (pr->filesStderr[0]!=-1) { close(pr->filesStderr[0]); close(2); if (dup(pr->filesStderr[1])==-1) { DBG_ERROR(GWEN_LOGDOMAIN, "Could not setup redirection"); } } argv[0]=strdup(prg); argc++; p=args; wbuf=GWEN_Buffer_new(0, 256, 0, 1); while(argc<32 && *p) { while(*p && isspace((int)*p)) p++; if (!(*p)) break; if (GWEN_Text_GetWordToBuffer(p, " ",//.........这里部分代码省略.........
开发者ID:Zauberstuhl,项目名称:gwenhywfar,代码行数:101,
示例3: Gtk2Gui_Dialog_SetupTreeint Gtk2Gui_Dialog_SetupTree(GWEN_WIDGET *w) { int rv; switch(GWEN_Widget_GetType(w)) { case GWEN_Widget_TypeDialog: rv=Gtk2Gui_WDialog_Setup(w); break; case GWEN_Widget_TypeLabel: rv=Gtk2Gui_WLabel_Setup(w); break; case GWEN_Widget_TypeGridLayout: rv=Gtk2Gui_WGridLayout_Setup(w); break; case GWEN_Widget_TypeVLayout: rv=Gtk2Gui_WVLayout_Setup(w); break; case GWEN_Widget_TypeHLayout: rv=Gtk2Gui_WHLayout_Setup(w); break; case GWEN_Widget_TypePushButton: rv=Gtk2Gui_WPushButton_Setup(w); break; case GWEN_Widget_TypeLineEdit: rv=Gtk2Gui_WLineEdit_Setup(w); break; case GWEN_Widget_TypeHLine: rv=Gtk2Gui_WHLine_Setup(w); break; case GWEN_Widget_TypeVLine: rv=Gtk2Gui_WVLine_Setup(w); break; case GWEN_Widget_TypeVSpacer: rv=Gtk2Gui_WVSpacer_Setup(w); break; case GWEN_Widget_TypeHSpacer: rv=Gtk2Gui_WHSpacer_Setup(w); break; case GWEN_Widget_TypeComboBox: rv=Gtk2Gui_WComboBox_Setup(w); break; case GWEN_Widget_TypeTextEdit: rv=Gtk2Gui_WTextEdit_Setup(w); break; case GWEN_Widget_TypeWidgetStack: rv=Gtk2Gui_WStack_Setup(w); break; case GWEN_Widget_TypeTabBook: rv=Gtk2Gui_WTabBook_Setup(w); break; case GWEN_Widget_TypeTabPage: /* just re-use vbox */ GWEN_Widget_AddFlags(w, GWEN_WIDGET_FLAGS_FILLX | GWEN_WIDGET_FLAGS_FILLY); rv=Gtk2Gui_WVLayout_Setup(w); break; case GWEN_Widget_TypeGroupBox: rv=Gtk2Gui_WGroupBox_Setup(w); break; case GWEN_Widget_TypeTextBrowser: rv=Gtk2Gui_WTextBrowser_Setup(w); break; case GWEN_Widget_TypeProgressBar: rv=Gtk2Gui_WProgressBar_Setup(w); break; case GWEN_Widget_TypeSpinBox: rv=Gtk2Gui_WSpinBox_Setup(w); break; case GWEN_Widget_TypeListBox: rv=Gtk2Gui_WListBox_Setup(w); break; case GWEN_Widget_TypeCheckBox: rv=Gtk2Gui_WCheckBox_Setup(w); break; case GWEN_Widget_TypeScrollArea: rv=Gtk2Gui_WScrollArea_Setup(w); break; case GWEN_Widget_TypeRadioButton: rv=Gtk2Gui_WRadioButton_Setup(w); break; default: DBG_ERROR(GWEN_LOGDOMAIN, "Unhandled widget type %d", GWEN_Widget_GetType(w)); rv=GWEN_ERROR_INVALID; break; } if (rv<0) { DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv); return rv; } else { GWEN_WIDGET *wChild; /* handle children */ wChild=GWEN_Widget_Tree_GetFirstChild(w); while(wChild) { /* recursion */ rv=Gtk2Gui_Dialog_SetupTree(wChild); if (rv<0) { DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv); return rv; }//.........这里部分代码省略.........
开发者ID:Zauberstuhl,项目名称:gwenhywfar,代码行数:101,
示例4: EBC_Provider_AddJobint EBC_Provider_AddJob(AB_PROVIDER *pro, AB_JOB *j) { EBC_PROVIDER *dp; AB_ACCOUNT *a; AB_USER *u; EBC_USERQUEUE *uq; int doAdd=1; GWEN_DB_NODE *dbJob; assert(pro); dp=GWEN_INHERIT_GETDATA(AB_PROVIDER, EBC_PROVIDER, pro); assert(dp); a=AB_Job_GetAccount(j); assert(a); u=AB_Account_GetFirstUser(a); if (u==NULL) { DBG_ERROR(AQEBICS_LOGDOMAIN, "No user assigned to account."); GWEN_Gui_ProgressLog(0, GWEN_LoggerLevel_Error, I18N("No user assigned to account.")); GWEN_Gui_ShowError(I18N("Setup Error"), I18N("No user assigned to this account. Please assign one in the online banking setup dialog " "for this account./n")); return GWEN_ERROR_INTERNAL; } dbJob=AB_Job_GetProviderData(j, pro); assert(dbJob); switch(AB_Job_GetType(j)) { case AB_Job_TypeGetTransactions: case AB_Job_TypeTransfer: case AB_Job_TypeDebitNote: break; case AB_Job_TypeGetBalance: default: DBG_INFO(AQEBICS_LOGDOMAIN, "Job not yet supported (%d)", AB_Job_GetType(j)); return GWEN_ERROR_NOT_SUPPORTED; } /* switch */ uq=EBC_Queue_GetUserQueue(dp->queue, u); assert(uq); if (AB_Job_GetType(j)==AB_Job_TypeGetTransactions) { AB_JOB *firstJob; firstJob=EBC_Queue_FindFirstJobLikeThis(dp->queue, u, j); if (firstJob) { GWEN_DB_NODE *dbCurrJob; /* this job is just a copy of the firstJob, reference it */ dbCurrJob=AB_Job_GetProviderData(j, pro); assert(dbCurrJob); GWEN_DB_SetIntValue(dbCurrJob, GWEN_DB_FLAGS_OVERWRITE_VARS, "refJob", AB_Job_GetJobId(firstJob)); /* don't add to queues */ doAdd=0; } } if (doAdd) { /* only add to queue if needed */ EBC_UserQueue_AddJob(uq, j); } /* always add to linear list */ AB_Job_List2_PushBack(dp->bankingJobs, j); return 0;}
开发者ID:Zauberstuhl,项目名称:aqbanking,代码行数:75,
示例5: EBC_Provider_ExecUserQueueint EBC_Provider_ExecUserQueue(AB_PROVIDER *pro, AB_IMEXPORTER_CONTEXT *ctx, EBC_USERQUEUE *uq){ EBC_PROVIDER *dp; int errors=0; int oks=0; GWEN_HTTP_SESSION *sess; int rv; EBC_ACCOUNTQUEUE_LIST *al; AB_BANKING *ab; assert(pro); dp=GWEN_INHERIT_GETDATA(AB_PROVIDER, EBC_PROVIDER, pro); assert(dp); ab=AB_Provider_GetBanking(pro); assert(ab); /* create and open session */ sess=EBC_Dialog_new(pro, EBC_UserQueue_GetUser(uq)); rv=GWEN_HttpSession_Init(sess); if (rv<0) { DBG_ERROR(AQEBICS_LOGDOMAIN, "Could not open session"); GWEN_HttpSession_free(sess); return rv; } al=EBC_UserQueue_GetAccountQueues(uq); if (al) { EBC_ACCOUNTQUEUE *aq; aq=EBC_AccountQueue_List_First(al); while(aq) { AB_ACCOUNT *a; a=EBC_AccountQueue_GetAccount(aq); assert(a); /* lock account */ GWEN_Gui_ProgressLog(0, GWEN_LoggerLevel_Info, I18N("Locking account")); rv=AB_Banking_BeginExclUseAccount(ab, a); if (rv<0) { DBG_INFO(AQEBICS_LOGDOMAIN, "here (%d)", rv); GWEN_Gui_ProgressLog(0, GWEN_LoggerLevel_Error, I18N("Could not lock account")); } else { GWEN_Gui_ProgressLog(0, GWEN_LoggerLevel_Info, I18N("Executing account queue")); rv=EBC_Provider_ExecAccountQueue(pro, ctx, EBC_UserQueue_GetUser(uq), sess, aq); if (!rv) oks++; else { errors++; if (rv==GWEN_ERROR_USER_ABORTED) { DBG_INFO(AQEBICS_LOGDOMAIN, "User aborted"); AB_Banking_EndExclUseAccount(ab, a, 1); /* abandon */ GWEN_HttpSession_Fini(sess); GWEN_HttpSession_free(sess); return rv; } else { DBG_INFO(AQEBICS_LOGDOMAIN, "here (%d)", rv); } } /* unlock account */ GWEN_Gui_ProgressLog(0, GWEN_LoggerLevel_Info, I18N("Unlocking account")); rv=AB_Banking_EndExclUseAccount(ab, a, 0); if (rv<0) { DBG_INFO(AQEBICS_LOGDOMAIN, "here (%d)", rv); GWEN_Gui_ProgressLog(0, GWEN_LoggerLevel_Error, I18N("Could not unlock account")); } } aq=EBC_AccountQueue_List_Next(aq); } } /* close and destroy session */ GWEN_HttpSession_Fini(sess); GWEN_HttpSession_free(sess); return 0;}
开发者ID:Zauberstuhl,项目名称:aqbanking,代码行数:96,
示例6: EBC_Provider_Initint EBC_Provider_Init(AB_PROVIDER *pro, GWEN_DB_NODE *dbData) { EBC_PROVIDER *dp; const char *logLevelName; assert(pro); dp=GWEN_INHERIT_GETDATA(AB_PROVIDER, EBC_PROVIDER, pro); assert(dp); if (!GWEN_Logger_IsOpen(AQEBICS_LOGDOMAIN)) { GWEN_Logger_Open(AQEBICS_LOGDOMAIN, "aqebics", 0, GWEN_LoggerType_Console, GWEN_LoggerFacility_User); } logLevelName=getenv("AQEBICS_LOGLEVEL"); if (logLevelName) { GWEN_LOGGER_LEVEL ll; ll=GWEN_Logger_Name2Level(logLevelName); if (ll!=GWEN_LoggerLevel_Unknown) { GWEN_Logger_SetLevel(AQEBICS_LOGDOMAIN, ll); DBG_WARN(AQEBICS_LOGDOMAIN, "Overriding loglevel for AqEBICS with /"%s/"", logLevelName); } else { DBG_ERROR(AQEBICS_LOGDOMAIN, "Unknown loglevel /"%s/"", logLevelName); } } DBG_INFO(AQEBICS_LOGDOMAIN, "Please remember to purchase a license if you want to use the EBICS backend."); if (1) { GWEN_STRINGLIST *sl=GWEN_PathManager_GetPaths(AB_PM_LIBNAME, AB_PM_LOCALEDIR); const char *localedir=GWEN_StringList_FirstString(sl); int rv; rv=GWEN_I18N_BindTextDomain_Dir(PACKAGE, localedir); if (rv) { DBG_ERROR(AQEBICS_LOGDOMAIN, "Could not bind textdomain (%d)", rv); } else { rv=GWEN_I18N_BindTextDomain_Codeset(PACKAGE, "UTF-8"); if (rv) { DBG_ERROR(AQEBICS_LOGDOMAIN, "Could not set codeset (%d)", rv); } } GWEN_StringList_free(sl); } DBG_NOTICE(AQEBICS_LOGDOMAIN, "Initializing AqEBICS backend"); dp->connectTimeout=GWEN_DB_GetIntValue(dbData, "connectTimeout", 0, EBC_DEFAULT_CONNECT_TIMEOUT); dp->transferTimeout=GWEN_DB_GetIntValue(dbData, "transferTimeout", 0, EBC_DEFAULT_TRANSFER_TIMEOUT); return 0;}
开发者ID:Zauberstuhl,项目名称:aqbanking,代码行数:63,
示例7: EBC_Provider_FillDataEncryptionInfoNodeint EBC_Provider_FillDataEncryptionInfoNode(AB_PROVIDER *pro, AB_USER *u, const GWEN_CRYPT_KEY *skey, xmlNodePtr node) { EBC_PROVIDER *dp; int rv; GWEN_CRYPT_TOKEN *ct; const GWEN_CRYPT_TOKEN_CONTEXT *ctx; const GWEN_CRYPT_TOKEN_KEYINFO *ki; uint32_t keyId; GWEN_BUFFER *hbuf; xmlNodePtr nodeX = NULL; const char *s; assert(pro); dp=GWEN_INHERIT_GETDATA(AB_PROVIDER, EBC_PROVIDER, pro); assert(dp); /* get crypt token and context */ rv=EBC_Provider_MountToken(pro, u, &ct, &ctx); if (rv<0) { DBG_INFO(AQEBICS_LOGDOMAIN, "here (%d)", rv); return rv; } /* get key id for server crypt key */ keyId=GWEN_Crypt_Token_Context_GetEncipherKeyId(ctx); ki=GWEN_Crypt_Token_GetKeyInfo(ct, keyId, 0xffffffff, 0); if (ki==NULL) { DBG_INFO(AQEBICS_LOGDOMAIN, "Keyinfo %04x not found on crypt token [%s:%s]", keyId, GWEN_Crypt_Token_GetTypeName(ct), GWEN_Crypt_Token_GetTokenName(ct)); GWEN_Crypt_Token_Close(ct, 0, 0); return GWEN_ERROR_NOT_FOUND; } hbuf=GWEN_Buffer_new(0, 256, 0, 1); s=EBC_User_GetCryptVersion(u); if (!(s && *s)) s="E001"; if (strcasecmp(s, "E001")==0) { rv=EB_Key_Info_BuildHashSha1(ki, hbuf, 1); if (rv<0) { DBG_INFO(AQEBICS_LOGDOMAIN, "here (%d)", rv); GWEN_Buffer_free(hbuf); GWEN_Crypt_Token_Close(ct, 0, 0); return rv; } nodeX=xmlNewTextChild(node, NULL, BAD_CAST "EncryptionPubKeyDigest", BAD_CAST GWEN_Buffer_GetStart(hbuf)); GWEN_Buffer_free(hbuf); assert(nodeX); xmlNewProp(nodeX, BAD_CAST "Version", BAD_CAST "E001"); xmlNewProp(nodeX, BAD_CAST "Algorithm", BAD_CAST "http://www.w3.org/2000/09/xmldsig#sha1"); } else if (strcasecmp(s, "E002")==0) { rv=EB_Key_Info_BuildHashSha256(ki, hbuf, 1); if (rv<0) { DBG_INFO(AQEBICS_LOGDOMAIN, "here (%d)", rv); GWEN_Buffer_free(hbuf); GWEN_Crypt_Token_Close(ct, 0, 0); return rv; } nodeX=xmlNewTextChild(node, NULL, BAD_CAST "EncryptionPubKeyDigest", BAD_CAST GWEN_Buffer_GetStart(hbuf)); GWEN_Buffer_free(hbuf); assert(nodeX); xmlNewProp(nodeX, BAD_CAST "Version", BAD_CAST "E002"); xmlNewProp(nodeX, BAD_CAST "Algorithm", BAD_CAST "http://www.w3.org/2001/04/xmlenc#sha256"); } /* add encrypted transactio key */ hbuf=GWEN_Buffer_new(0, 256, 0, 1); rv=EBC_Provider_EncryptKey(pro, u, skey, hbuf); if (rv<0) { DBG_INFO(AQEBICS_LOGDOMAIN, "here (%d)", rv); GWEN_Buffer_free(hbuf); GWEN_Crypt_Token_Close(ct, 0, 0); return rv; } nodeX=xmlNewTextChild(node, NULL,//.........这里部分代码省略.........
开发者ID:Zauberstuhl,项目名称:aqbanking,代码行数:101,
示例8: AHB_DTAUS__Exportint AHB_DTAUS__Export(GWEN_DBIO *dbio, GWEN_SYNCIO *sio, GWEN_DB_NODE *data, GWEN_DB_NODE *cfg, uint32_t flags){ AB_VALUE *sumEUR; AB_VALUE *sumDEM; AB_VALUE *sumBankCodes; AB_VALUE *sumAccountIds; unsigned int cSets; GWEN_BUFFER *dst; GWEN_DB_NODE *gr; int isDebitNote; //int isEuro; const uint8_t *p; uint32_t size; int rv; isDebitNote=(strcasecmp(GWEN_DB_GetCharValue(cfg, "type", 0, "transfer"), "debitnote")==0); //isEuro=(strcasecmp(GWEN_DB_GetCharValue(cfg, "currency", 0, "EUR"), // "EUR")==0); cSets=0; sumEUR=AB_Value_new(); sumDEM=AB_Value_new(); sumBankCodes=AB_Value_new(); sumAccountIds=AB_Value_new(); dst=GWEN_Buffer_new(0, 1024, 0, 1); GWEN_Buffer_SetHardLimit(dst, AHB_DTAUS_HARDLIMIT); /* create A set */ if (AHB_DTAUS__CreateSetA(dst, cfg)) { DBG_INFO(AQBANKING_LOGDOMAIN, "Error creating A set"); GWEN_Buffer_free(dst); AB_Value_free(sumAccountIds); AB_Value_free(sumBankCodes); AB_Value_free(sumDEM); AB_Value_free(sumEUR); return -1; } /* create C sets */ gr=GWEN_DB_GetFirstGroup(data); while(gr) { const char *gn; gn=GWEN_DB_GroupName(gr); if ((isDebitNote && strcasecmp(gn, "debitnote")==0) || (!isDebitNote && (strcasecmp(gn, "transfer")==0 || strcasecmp(gn, "transaction")==0))){ if (AHB_DTAUS__CreateSetC(dst, cfg, gr, sumEUR, sumDEM, sumBankCodes, sumAccountIds)) { DBG_ERROR(AQBANKING_LOGDOMAIN, "Error creating C set from this data:"); GWEN_DB_Dump(gr, 2); GWEN_Buffer_free(dst); AB_Value_free(sumAccountIds); AB_Value_free(sumBankCodes); AB_Value_free(sumDEM); AB_Value_free(sumEUR); return -1; } cSets++; } /* if group matches */ else { DBG_ERROR(AQBANKING_LOGDOMAIN, "Ignoring group [%s]", GWEN_DB_GroupName(gr)); } gr=GWEN_DB_GetNextGroup(gr); } /* while */ /* create E set */ if (AHB_DTAUS__CreateSetE(dst, cfg, cSets, sumEUR, sumDEM, sumBankCodes, sumAccountIds)) { DBG_INFO(AQBANKING_LOGDOMAIN, "Error creating E set"); GWEN_Buffer_free(dst); AB_Value_free(sumAccountIds); AB_Value_free(sumBankCodes); AB_Value_free(sumDEM); AB_Value_free(sumEUR); return -1; } AB_Value_free(sumAccountIds); AB_Value_free(sumBankCodes); AB_Value_free(sumDEM); AB_Value_free(sumEUR); /* DTAUS finished, write it */ p=(const uint8_t*)GWEN_Buffer_GetStart(dst); size=GWEN_Buffer_GetUsedBytes(dst); rv=GWEN_SyncIo_WriteForced(sio, p, size); if (rv<0) { DBG_ERROR(AQBANKING_LOGDOMAIN, "Broken pipe"); GWEN_Buffer_free(dst); return GWEN_ERROR_IO; }//.........这里部分代码省略.........
开发者ID:Zauberstuhl,项目名称:aqbanking,代码行数:101,
示例9: EBC_Provider_SignMessage_X001static int EBC_Provider_SignMessage_X001(AB_PROVIDER *pro, EB_MSG *msg, AB_USER *u, xmlNodePtr node) { EBC_PROVIDER *dp; int rv; GWEN_CRYPT_TOKEN *ct; const GWEN_CRYPT_TOKEN_CONTEXT *ctx; const GWEN_CRYPT_TOKEN_KEYINFO *ki; uint32_t keyId; GWEN_BUFFER *hbuf; GWEN_BUFFER *bbuf; xmlNodePtr nodeX = NULL; xmlNodePtr nodeXX = NULL; xmlNodePtr nodeXXX = NULL; xmlNodePtr nodeXXXX = NULL; xmlNsPtr ns; assert(pro); dp=GWEN_INHERIT_GETDATA(AB_PROVIDER, EBC_PROVIDER, pro); assert(dp); /* get crypt token and context */ rv=EBC_Provider_MountToken(pro, u, &ct, &ctx); if (rv<0) { DBG_INFO(AQEBICS_LOGDOMAIN, "here (%d)", rv); return rv; } /* get key id */ keyId=GWEN_Crypt_Token_Context_GetAuthSignKeyId(ctx); ki=GWEN_Crypt_Token_GetKeyInfo(ct, keyId, 0xffffffff, 0); if (ki==NULL) { DBG_INFO(AQEBICS_LOGDOMAIN, "Keyinfo %04x not found on crypt token [%s:%s]", keyId, GWEN_Crypt_Token_GetTypeName(ct), GWEN_Crypt_Token_GetTokenName(ct)); GWEN_Crypt_Token_Close(ct, 0, 0); return GWEN_ERROR_NOT_FOUND; } /* prepare signature nodes */ ns=xmlSearchNs(EB_Msg_GetDoc(msg), node, BAD_CAST "ds"); assert(ns); /* build hash */ bbuf=GWEN_Buffer_new(0, 256, 0, 1); rv=EB_Msg_BuildHashSha1(msg, bbuf); if (rv) { DBG_ERROR(AQEBICS_LOGDOMAIN, "Could not build hash"); GWEN_Buffer_free(bbuf); return rv; } /* base64 encode */ hbuf=GWEN_Buffer_new(0, 256, 0, 1); rv=GWEN_Base64_Encode((const uint8_t*)GWEN_Buffer_GetStart(bbuf), GWEN_Buffer_GetUsedBytes(bbuf), hbuf, 0); if (rv<0) { DBG_INFO(AQEBICS_LOGDOMAIN, "here (%d)", rv); GWEN_Buffer_free(hbuf); GWEN_Buffer_free(bbuf); return rv; } GWEN_Buffer_free(bbuf); /* create signature node */ nodeX=xmlNewChild(node, ns, BAD_CAST "SignedInfo", NULL); nodeXX=xmlNewChild(nodeX, ns, BAD_CAST "CanonicalizationMethod", NULL); xmlNewProp(nodeXX, BAD_CAST "Algorithm", BAD_CAST "http://www.w3.org/TR/2001/REC-xml-c14n-20010315"); nodeXX=xmlNewChild(nodeX, ns, BAD_CAST "SignatureMethod", NULL); xmlNewProp(nodeXX, BAD_CAST "Algorithm", BAD_CAST "http://www.w3.org/2000/09/xmldsig#rsa-sha1"); nodeXX=xmlNewChild(nodeX, ns, BAD_CAST "Reference", NULL); xmlNewProp(nodeXX, BAD_CAST "URI", BAD_CAST "#xpointer(//*[@authenticate='true'])"); nodeXXX=xmlNewChild(nodeXX, ns, BAD_CAST "Transforms", NULL); nodeXXXX=xmlNewChild(nodeXXX, ns, BAD_CAST "Transform", NULL); xmlNewProp(nodeXXXX, BAD_CAST "Algorithm", BAD_CAST "http://www.w3.org/TR/2001/REC-xml-c14n-20010315"); nodeXXX=xmlNewChild(nodeXX, ns, BAD_CAST "DigestMethod", NULL); xmlNewProp(nodeXXX, BAD_CAST "Algorithm", BAD_CAST "http://www.w3.org/2000/09/xmldsig#sha1"); /* store hash value */ xmlNewTextChild(nodeXX, ns, BAD_CAST "DigestValue", BAD_CAST GWEN_Buffer_GetStart(hbuf));//.........这里部分代码省略.........
开发者ID:Zauberstuhl,项目名称:aqbanking,代码行数:101,
示例10: extractArchiveint extractArchive(GWEN_DB_NODE *dbArgs, int argc, char **argv) { GWEN_DB_NODE *db; const char *aname; GWEN_SAR *sr; int rv; int verbosity; const GWEN_ARGS args[]={ { GWEN_ARGS_FLAGS_HAS_ARGUMENT, /* flags */ GWEN_ArgsType_Char, /* type */ "archive", /* name */ 1, /* minnum */ 1, /* maxnum */ "a", /* short option */ "archive", /* long option */ "Specify the archive file name", /* short description */ "Specify the archive file name" /* long description */ }, { 0, /* flags */ GWEN_ArgsType_Int, /* type */ "verbosity", /* name */ 0, /* minnum */ 10, /* maxnum */ "v", /* short option */ NULL, /* long option */ "set verbosity", /* short description */ "set verbosity" /* long description */ }, { GWEN_ARGS_FLAGS_HELP | GWEN_ARGS_FLAGS_LAST, /* flags */ GWEN_ArgsType_Int, /* type */ "help", /* name */ 0, /* minnum */ 0, /* maxnum */ "h", /* short option */ "help", /* long option */ "Show this help screen", /* short description */ "Show this help screen" /* long description */ } }; db=GWEN_DB_GetGroup(dbArgs, GWEN_DB_FLAGS_DEFAULT, "local"); rv=GWEN_Args_Check(argc, argv, 1, GWEN_ARGS_MODE_ALLOW_FREEPARAM, args, db); if (rv==GWEN_ARGS_RESULT_ERROR) { fprintf(stderr, "ERROR: Could not parse arguments/n"); return 1; } else if (rv==GWEN_ARGS_RESULT_HELP) { GWEN_BUFFER *ubuf; ubuf=GWEN_Buffer_new(0, 1024, 0, 1); if (GWEN_Args_Usage(args, ubuf, GWEN_ArgsOutType_Txt)) { fprintf(stderr, "ERROR: Could not create help string/n"); return 1; } fprintf(stderr, "%s/n", GWEN_Buffer_GetStart(ubuf)); GWEN_Buffer_free(ubuf); return 0; } aname=GWEN_DB_GetCharValue(db, "archive", 0, NULL); assert(aname); verbosity=GWEN_DB_GetIntValue(db, "verbosity", 0, 0); sr=GWEN_Sar_new(); rv=GWEN_Sar_OpenArchive(sr, aname, GWEN_SyncIo_File_CreationMode_OpenExisting, GWEN_SYNCIO_FILE_FLAGS_READ); if (rv<0) { fprintf(stderr, "ERROR: Error opening archive (%d)/n", rv); return 2; } else { const GWEN_SAR_FILEHEADER_LIST *fhl; fhl=GWEN_Sar_GetHeaders(sr); if (fhl) { const GWEN_SAR_FILEHEADER *fh; fh=GWEN_SarFileHeader_List_First(fhl); while(fh) { const char *s; s=GWEN_SarFileHeader_GetPath(fh); if (s && *s) { rv=GWEN_Sar_ExtractFile(sr, fh); if (rv<0) { DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv); GWEN_Sar_CloseArchive(sr, 1); GWEN_Sar_free(sr); return rv; } if (verbosity>0) { fprintf(stdout, "extracted /"%s/"/n", s); }//.........这里部分代码省略.........
开发者ID:Zauberstuhl,项目名称:gwenhywfar,代码行数:101,
示例11: assertGWEN_DIALOG *AH_Provider_GetNewCardUserDialog(AB_PROVIDER *pro){ int rv; GWEN_BUFFER *mtypeName; GWEN_BUFFER *mediumName; GWEN_CRYPT_TOKEN *ct; AB_BANKING *ab; assert(pro); ab=AB_Provider_GetBanking(pro); assert(ab); mtypeName=GWEN_Buffer_new(0, 64, 0, 1); mediumName=GWEN_Buffer_new(0, 64, 0, 1); rv=AB_Banking_CheckCryptToken(ab, GWEN_Crypt_Token_Device_Card, mtypeName, mediumName); if (rv<0) { DBG_ERROR(AQHBCI_LOGDOMAIN, "here (%d)", rv); GWEN_Gui_ShowError(I18N("Chipcard Error"), I18N("Error checking chip card (%d)./n" "Maybe libchipcard or its plugins are not installed?")); GWEN_Buffer_free(mediumName); GWEN_Buffer_free(mtypeName); return NULL; } rv=AB_Banking_GetCryptToken(AB_Provider_GetBanking(pro), GWEN_Buffer_GetStart(mtypeName), GWEN_Buffer_GetStart(mediumName), &ct); if (rv<0) { DBG_ERROR(AQHBCI_LOGDOMAIN, "here (%d)", rv); GWEN_Buffer_free(mediumName); GWEN_Buffer_free(mtypeName); return NULL; } if (strcasecmp(GWEN_Buffer_GetStart(mtypeName), "ddvcard")==0) { GWEN_DIALOG *dlg2; DBG_WARN(0, "DDV card"); dlg2=AH_DdvCardDialog_new(pro, ct); if (dlg2==NULL) { DBG_INFO(AQHBCI_LOGDOMAIN, "here (no dialog)"); GWEN_Buffer_free(mediumName); GWEN_Buffer_free(mtypeName); return NULL; } GWEN_Dialog_SetWidgetText(dlg2, "", I18N("Create HBCI/FinTS DDV User")); GWEN_Buffer_free(mediumName); GWEN_Buffer_free(mtypeName); return dlg2; } else if (strcasecmp(GWEN_Buffer_GetStart(mtypeName), "starcoscard")==0) { DBG_ERROR(AQHBCI_LOGDOMAIN, "STARCOS RSA card currently not supported by this dialog"); // TODO } else if (strcasecmp(GWEN_Buffer_GetStart(mtypeName), "zkacard")==0) { GWEN_DIALOG *dlg2; DBG_WARN(0, "ZKA RSA card"); dlg2=AH_ZkaCardDialog_new(pro, ct); if (dlg2==NULL) { DBG_INFO(AQHBCI_LOGDOMAIN, "here (no dialog)"); GWEN_Buffer_free(mediumName); GWEN_Buffer_free(mtypeName); return NULL; } GWEN_Dialog_SetWidgetText(dlg2, "", I18N("Create HBCI/FinTS ZKA RSA User")); GWEN_Buffer_free(mediumName); GWEN_Buffer_free(mtypeName); return dlg2; } else { DBG_ERROR(AQHBCI_LOGDOMAIN, "Card type /"%s/" not yet supported", GWEN_Buffer_GetStart(mtypeName)); } GWEN_Buffer_free(mediumName); GWEN_Buffer_free(mtypeName); AB_Banking_ClearCryptTokenList(AB_Provider_GetBanking(pro)); return NULL;}
开发者ID:cstim,项目名称:aqbanking,代码行数:87,
示例12: APY_NewUserDialog_DoItint APY_NewUserDialog_DoIt(GWEN_DIALOG *dlg) { APY_NEWUSER_DIALOG *xdlg; AB_USER *u; int rv; uint32_t pid; AB_PROVIDER *pro; DBG_INFO(0, "Doit"); assert(dlg); xdlg=GWEN_INHERIT_GETDATA(GWEN_DIALOG, APY_NEWUSER_DIALOG, dlg); assert(xdlg); pro=AB_Banking_GetProvider(xdlg->banking, "aqpaypal"); if (pro==NULL) { DBG_ERROR(AQPAYPAL_LOGDOMAIN, "Could not find backend, maybe some plugins are not installed?"); // TODO: show error message return GWEN_DialogEvent_ResultHandled; } DBG_INFO(0, "Creating user"); u=AB_Banking_CreateUser(xdlg->banking, "aqpaypal"); if (u==NULL) { DBG_ERROR(AQPAYPAL_LOGDOMAIN, "Could not create user, maybe backend missing?"); // TODO: show error message return GWEN_DialogEvent_ResultHandled; } /* generic setup */ AB_User_SetUserName(u, xdlg->userName); AB_User_SetUserId(u, xdlg->userId); AB_User_SetCustomerId(u, xdlg->userId); AB_User_SetCountry(u, "de"); AB_User_SetBankCode(u, "PAYPAL"); APY_User_SetServerUrl(u, xdlg->url); APY_User_SetHttpVMajor(u, xdlg->httpVMajor); APY_User_SetHttpVMinor(u, xdlg->httpVMinor); DBG_INFO(0, "Adding user"); rv=AB_Banking_AddUser(xdlg->banking, u); if (rv<0) { DBG_ERROR(AQPAYPAL_LOGDOMAIN, "Could not add user (%d)", rv); AB_User_free(u); return GWEN_DialogEvent_ResultHandled; } pid=GWEN_Gui_ProgressStart(GWEN_GUI_PROGRESS_DELAY | GWEN_GUI_PROGRESS_ALLOW_EMBED | GWEN_GUI_PROGRESS_SHOW_PROGRESS | GWEN_GUI_PROGRESS_SHOW_ABORT, I18N("Setting Up Paypal User"), I18N("The user will be created."), 3, 0); /* lock new user */ DBG_INFO(0, "Locking user"); rv=AB_Banking_BeginExclUseUser(xdlg->banking, u); if (rv<0) { DBG_ERROR(AQPAYPAL_LOGDOMAIN, "Could not lock user (%d)", rv); GWEN_Gui_ProgressLog(pid, GWEN_LoggerLevel_Error, I18N("Unable to lock users")); AB_Banking_DeleteUser(xdlg->banking, u); GWEN_Gui_ProgressEnd(pid); return GWEN_DialogEvent_ResultHandled; }#if 0 DBG_INFO(0, "Getting certs (%08x)", AH_User_GetFlags(u)); GWEN_Gui_ProgressLog(pid, GWEN_LoggerLevel_Notice, I18N("Retrieving SSL certificate")); rv=APY_Provider_GetCert(pro, u, 0, 1, 0); if (rv<0) { // TODO: retry with SSLv3 if necessary AB_Banking_EndExclUseUser(xdlg->banking, u, 1); DBG_ERROR(AQPAYPAL_LOGDOMAIN, "here (%d)", rv); AB_Banking_DeleteUser(xdlg->banking, u); GWEN_Gui_ProgressEnd(pid); return GWEN_DialogEvent_ResultHandled; } rv=GWEN_Gui_ProgressAdvance(pid, GWEN_GUI_PROGRESS_ONE); if (rv==GWEN_ERROR_USER_ABORTED) { AB_Banking_EndExclUseUser(xdlg->banking, u, 1); DBG_INFO(AQPAYPAL_LOGDOMAIN, "here (%d)", rv); AB_Banking_DeleteUser(xdlg->banking, u); GWEN_Gui_ProgressLog(pid, GWEN_LoggerLevel_Error, I18N("Aborted by user.")); GWEN_Gui_ProgressEnd(pid); return GWEN_DialogEvent_ResultHandled; }#endif GWEN_Gui_ProgressLog(pid, GWEN_LoggerLevel_Notice, I18N("Creating API credentials file")); rv=APY_User_SetApiSecrets(u, xdlg->apiPassword, xdlg->apiSignature, xdlg->apiUserId); if (rv<0) {//.........这里部分代码省略.........
开发者ID:aqbanking,项目名称:aqbanking,代码行数:101,
示例13: assertGWEN_DATE *GWEN_Date_fromStringWithTemplate(const char *s, const char *tmpl) { int year, month, day; const char *p; const char *t; GWEN_DATE *gwt; assert(s); assert(tmpl); year=month=day=0; p=s; t=tmpl; while(*t && *p) { int i; if (*t=='*') { t++; if (!*t) { DBG_ERROR(GWEN_LOGDOMAIN, "Bad pattern: Must not end with /"*/""); return 0; } i=0; while(*p) { if (!isdigit((int)*p)) break; if (*p==*t) break; i*=10; i+=(*p)-'0'; p++; } /* while */ } else { if (isdigit((int)*p)) i=(*p)-'0'; else i=-1; p++; } if (i==-1 && strchr("YMD", *t)!=NULL) { DBG_INFO(GWEN_LOGDOMAIN, "No more digits at [%s], continuing", t); p--; } else { switch(*t) { case 'Y': if (i==-1) { DBG_INFO(GWEN_LOGDOMAIN, "here"); return 0; } year*=10; year+=i; break; case 'M': if (i==-1) { DBG_INFO(GWEN_LOGDOMAIN, "here"); return 0; } month*=10; month+=i; break; case 'D': if (i==-1) { DBG_INFO(GWEN_LOGDOMAIN, "here"); return 0; } day*=10; day+=i; break; default: DBG_VERBOUS(GWEN_LOGDOMAIN, "Unknown character in template, will skip in both strings"); break; } } t++; } /* while */ if (year<100) year+=2000; DBG_DEBUG(GWEN_LOGDOMAIN, "Got this date/time: %04d/%02d/%02d", year, month, day); /* get time in local time */ gwt=GWEN_Date_fromGregorian(year, month, day); if (!gwt) { DBG_INFO(GWEN_LOGDOMAIN, "here"); return 0; } return gwt;}
开发者ID:Zauberstuhl,项目名称:gwenhywfar,代码行数:95,
示例14: GWEN_Gui_CProgress_Advanceint GWEN_Gui_CProgress_Advance(GWEN_GUI_CPROGRESS *cp, uint64_t progress){#ifndef OS_WIN32 int fl;#endif assert(cp); if (!cp->shown) { time_t t1; t1=time(0); if (difftime(t1, cp->startTime)>GWEN_GUI_DELAY_SECS) { if (!(GWEN_Gui_GetFlags(cp->gui) & GWEN_GUI_FLAGS_NONINTERACTIVE)) GWEN_Gui_StdPrintf(cp->gui, stderr, "%s: Started./n", cp->title); cp->shown=1; } } if (progress==GWEN_GUI_PROGRESS_ONE) progress=cp->current+1; if (progress!=GWEN_GUI_PROGRESS_NONE) { if (progress!=cp->current) { if (cp->shown) { if (!(GWEN_Gui_GetFlags(cp->gui) & GWEN_GUI_FLAGS_NONINTERACTIVE)) { if (cp->total==GWEN_GUI_PROGRESS_NONE) GWEN_Gui_StdPrintf(cp->gui, stderr, "%s: %llu/n", cp->title, (long long unsigned)progress); else GWEN_Gui_StdPrintf(cp->gui, stderr, "%s: %llu of %llu/n", cp->title, (long long unsigned)progress, (long long unsigned)cp->total); } } cp->current=progress; } } if (cp->aborted) return GWEN_ERROR_USER_ABORTED;#ifndef OS_WIN32 if (!(GWEN_Gui_GetFlags(cp->gui) & GWEN_GUI_FLAGS_NONINTERACTIVE)) { /* check for abort */ fl=fcntl(fileno(stdin), F_GETFL); if (fl!=-1) { int chr; /* set stdin to nonblocking */ if (fcntl(fileno(stdin), F_SETFL, fl | O_NONBLOCK)) { DBG_INFO(GWEN_LOGDOMAIN, "fcntl(stdin): %s", strerror(errno)); return 0; } /* check whether there is a character */ chr=getchar(); /* set blocking mode to what we found before modification */ fcntl(fileno(stdin), F_SETFL, fl); if (chr==GWEN_GUI_CPROGRESS_CHAR_ABORT) { GWEN_Gui_StdPrintf(cp->gui, stderr, "------> ABORTED BY USER/n"); cp->aborted=1; return GWEN_ERROR_USER_ABORTED; } } }#endif return 0;}
开发者ID:cstim,项目名称:gwenhywfar,代码行数:67,
示例15: GWEN_CryptMgr_Decryptint GWEN_CryptMgr_Decrypt(GWEN_CRYPTMGR *cm, const uint8_t *pData, uint32_t lData, GWEN_BUFFER *dbuf) { GWEN_TAG16 *tag; const uint8_t *p; uint32_t l; GWEN_CRYPTHEAD *ch=NULL; const uint8_t *pEncryptedData=NULL; uint32_t lEncryptedData=0; int rv; GWEN_BUFFER *tbuf; GWEN_CRYPT_KEY *mkey; assert(cm); if (lData<3) { DBG_ERROR(GWEN_LOGDOMAIN, "Too few bytes"); return GWEN_ERROR_BAD_DATA; } tag=GWEN_Tag16_fromBuffer2(pData, lData, 0); if (tag==NULL) { DBG_ERROR(GWEN_LOGDOMAIN, "Data doesn't contain a valid TLV"); return GWEN_ERROR_BAD_DATA; } if (GWEN_Tag16_GetTagType(tag)!=GWEN_CRYPTMGR_TLV_ENCRYPTEDOBJECT) { DBG_ERROR(GWEN_LOGDOMAIN, "Data does not contain an encrypted object"); GWEN_Tag16_free(tag); return GWEN_ERROR_BAD_DATA; } p=GWEN_Tag16_GetTagData(tag); l=GWEN_Tag16_GetTagLength(tag); /* read crypthead */ if (l) { GWEN_TAG16 *subtag; subtag=GWEN_Tag16_fromBuffer2(p, l, 0); if (subtag) { if (GWEN_Tag16_GetTagType(subtag)==GWEN_CRYPTMGR_TLV_CRYPTHEAD) { ch=GWEN_CryptHead_fromBuffer(GWEN_Tag16_GetTagData(subtag), GWEN_Tag16_GetTagLength(subtag)); } p+=GWEN_Tag16_GetTagSize(subtag); l-=GWEN_Tag16_GetTagSize(subtag); GWEN_Tag16_free(subtag); } } /* read encrypted data */ if (l) { GWEN_TAG16 *subtag; subtag=GWEN_Tag16_fromBuffer2(p, l, 0); if (subtag) { if (GWEN_Tag16_GetTagType(subtag)==GWEN_CRYPTMGR_TLV_CRYPTDATA) { pEncryptedData=GWEN_Tag16_GetTagData(subtag); lEncryptedData=GWEN_Tag16_GetTagLength(subtag); } p+=GWEN_Tag16_GetTagSize(subtag); l-=GWEN_Tag16_GetTagSize(subtag); GWEN_Tag16_free(subtag); } } /* check for all needed components */ if (!(ch && pEncryptedData && lEncryptedData)) { DBG_ERROR(GWEN_LOGDOMAIN, "Encrypted object is not complete"); GWEN_CryptHead_free(ch); GWEN_Tag16_free(tag); return GWEN_ERROR_BAD_DATA; } /* store or check peer key info */ if (cm->localKeyName) { const char *s; /* compare peer info with expected info */ s=GWEN_CryptHead_GetKeyName(ch); if (!(cm->localKeyName && s && (strcasecmp(cm->localKeyName, s)==0) && (cm->localKeyNumber==GWEN_CryptHead_GetKeyNumber(ch)) && (cm->localKeyVersion==GWEN_CryptHead_GetKeyVersion(ch)))) { DBG_ERROR(GWEN_LOGDOMAIN, "Unexpected local key information in signature"); GWEN_CryptHead_free(ch); GWEN_Tag16_free(tag); return GWEN_ERROR_BAD_DATA; } } /* decrypt message key */ tbuf=GWEN_Buffer_new(0, GWEN_CryptHead_GetKeyLen(ch), 0, 1); rv=GWEN_CryptMgr_DecryptKey(cm, GWEN_CryptHead_GetKeyPtr(ch), GWEN_CryptHead_GetKeyLen(ch), tbuf); GWEN_CryptHead_free(ch); if (rv<0) { DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv); GWEN_Buffer_free(tbuf); GWEN_Tag16_free(tag);//.........这里部分代码省略.........
开发者ID:Zauberstuhl,项目名称:gwenhywfar,代码行数:101,
示例16: LC_Client_ConnectCardLC_CLIENT_RESULT LC_Client_ConnectCard(LC_CLIENT *cl, const char *rname, LC_CARD **pCard) { LC_CLIENT_RESULT res; LONG rv; SCARDHANDLE scardHandle; DWORD dwActiveProtocol; LC_CARD *card; char readerName[256]; DWORD pcchReaderLen; BYTE pbAtr[MAX_ATR_SIZE]; DWORD dwAtrLen; DWORD dwState; GWEN_BUFFER *bDriverType; GWEN_BUFFER *bReaderType; uint32_t rflags=0; assert(cl); DBG_INFO(LC_LOGDOMAIN, "Trying protocol T1"); rv=SCardConnect(cl->scardContext, rname, SCARD_SHARE_EXCLUSIVE, SCARD_PROTOCOL_T1, &scardHandle, &dwActiveProtocol); if (rv!=SCARD_S_SUCCESS) { DBG_INFO(LC_LOGDOMAIN, "Trying protocol T0"); rv=SCardConnect(cl->scardContext, rname, SCARD_SHARE_EXCLUSIVE, SCARD_PROTOCOL_T0, &scardHandle, &dwActiveProtocol); }#ifdef SCARD_PROTOCOL_RAW if (rv!=SCARD_S_SUCCESS) { DBG_INFO(LC_LOGDOMAIN, "Trying protocol RAW"); rv=SCardConnect(cl->scardContext, rname, SCARD_SHARE_EXCLUSIVE, SCARD_PROTOCOL_RAW, &scardHandle, &dwActiveProtocol); }#endif if (rv!=SCARD_S_SUCCESS) { DBG_INFO(LC_LOGDOMAIN, "SCardConnect: %04lx", (long unsigned int) rv); return LC_Client_ResultIoError; } /* get protocol and ATR */ DBG_INFO(LC_LOGDOMAIN, "Reading protocol and ATR"); pcchReaderLen=sizeof(readerName); dwAtrLen=sizeof(pbAtr); rv=SCardStatus(scardHandle, readerName, &pcchReaderLen, &dwState, &dwActiveProtocol, pbAtr, &dwAtrLen); if (rv!=SCARD_S_SUCCESS) { DBG_ERROR(LC_LOGDOMAIN, "SCardStatus: %04lx", (long unsigned int) rv); SCardDisconnect(scardHandle, SCARD_UNPOWER_CARD); return LC_Client_ResultIoError; } /* derive reader and driver type from name */ DBG_INFO(LC_LOGDOMAIN, "Getting reader- and driver type"); bDriverType=GWEN_Buffer_new(0, 32, 0, 1); bReaderType=GWEN_Buffer_new(0, 32, 0, 1); res=LC_Client_GetReaderAndDriverType(cl, readerName, bDriverType, bReaderType, &rflags); if (res) { DBG_INFO(LC_LOGDOMAIN, "Unable to determine type of reader [%s] (%d), assuming generic pcsc", readerName, res); GWEN_Buffer_AppendString(bDriverType, "generic_pcsc"); GWEN_Buffer_AppendString(bReaderType, "generic_pcsc"); } /* create new card */ card=LC_Card_new(cl, scardHandle, readerName, dwActiveProtocol, "processor", /* cardType */ rflags, dwAtrLen?pbAtr:0, /* atrBuf */ dwAtrLen); /* atrLen *///.........这里部分代码省略.........
开发者ID:rhvall,项目名称:SmartCard,代码行数:101,
示例17: EBC_Provider_Executeint EBC_Provider_Execute(AB_PROVIDER *pro, AB_IMEXPORTER_CONTEXT *ctx) { EBC_PROVIDER *dp; int oks=0; int errors=0; AB_JOB_LIST2_ITERATOR *jit; int rv; assert(pro); dp=GWEN_INHERIT_GETDATA(AB_PROVIDER, EBC_PROVIDER, pro); assert(dp); rv=EBC_Provider_ExecQueue(pro, ctx); if (!rv) oks++; else { errors++; if (rv==GWEN_ERROR_USER_ABORTED) { EBC_Queue_Clear(dp->queue); AB_Job_List2_Clear(dp->bankingJobs); return rv; } } /* set results in referencing jobs, too */ jit=AB_Job_List2_First(dp->bankingJobs); if (jit) { AB_JOB *uj; uj=AB_Job_List2Iterator_Data(jit); assert(uj); while(uj) { if (AB_Job_GetStatus(uj)==AB_Job_StatusSent) { AB_JOB *rj; uint32_t rjid; rj=uj; /* find referenced job (if any) */ do { GWEN_DB_NODE *dbT; dbT=AB_Job_GetProviderData(rj, pro); assert(dbT); rjid=GWEN_DB_GetIntValue(dbT, "refJob", 0, 0); if (rjid) { rj=EBC_Provider_FindJobById(dp->bankingJobs, rjid); } } while(rjid && rj); if (rj && rj!=uj) { /* found referenced job, copy status and result text */ DBG_INFO(AQEBICS_LOGDOMAIN, "Copying status from referenced job"); AB_Job_SetStatus(uj, AB_Job_GetStatus(rj)); AB_Job_SetResultText(uj, AB_Job_GetResultText(rj)); } if (AB_Job_GetStatus(uj)==AB_Job_StatusSent) AB_Job_SetStatus(uj, AB_Job_StatusFinished); } uj=AB_Job_List2Iterator_Next(jit); } /* while */ AB_Job_List2Iterator_free(jit); } rv=AB_Banking_ExecutionProgress(AB_Provider_GetBanking(pro)); if (rv==GWEN_ERROR_USER_ABORTED) { DBG_INFO(AQEBICS_LOGDOMAIN, "User aborted"); return rv; } EBC_Queue_Clear(dp->queue); AB_Job_List2_Clear(dp->bankingJobs); if (!oks && errors) { DBG_INFO(AQEBICS_LOGDOMAIN, "Not a single job succeeded"); return GWEN_ERROR_GENERIC; } return 0;}
开发者ID:Zauberstuhl,项目名称:aqbanking,代码行数:80,
示例18: LC_Client_UpdateReaderStatesint LC_Client_UpdateReaderStates(LC_CLIENT *cl) { LONG rv; LPSTR mszGroups=0; LPSTR mszReaders=0; DWORD dwReaders=0; const char *p; int i, j; assert(cl); /* allocate buffer for reader list */ rv=SCardListReaders(cl->scardContext, /* context */ NULL, /* mszGroups */ NULL, /* mszReaders */ &dwReaders); if (rv!=SCARD_S_SUCCESS) { if (rv==SCARD_E_NO_READERS_AVAILABLE) { DBG_ERROR(LC_LOGDOMAIN, "No readers available"); } else { DBG_ERROR(LC_LOGDOMAIN, "SCardListReaders(1): %08lx", (long unsigned int) rv); } return LC_Client_ResultIoError; } mszReaders=(LPSTR)malloc(sizeof(char)*dwReaders); if (mszReaders==0) { return LC_Client_ResultInternal; } /* list readers */ rv=SCardListReaders(cl->scardContext, /* context */ mszGroups, /* mszGroups */ mszReaders, /* mszReaders */ &dwReaders); if (rv!=SCARD_S_SUCCESS) { DBG_ERROR(LC_LOGDOMAIN, "SCardListReaders(2): %04lx", (long unsigned int) rv); return LC_Client_ResultIoError; } /* delete removed readers */ for (i=0; i<cl->readerCount; i++) { int found=0; /* find reader */ p=(const char*)mszReaders; while(*p) { if (strcasecmp(cl->readerStates[i].szReader, p)==0) { /* re-assign reader name, because we are about to exchange the readerList string */ cl->readerStates[i].szReader=p; found=1; break; } while(*p) p++; p++; } /* while */ if (!found) { /* not in the reader list, remove */ for (j=i; j<(cl->readerCount-1); j++) cl->readerStates[j]=cl->readerStates[j+1]; cl->readerCount--; } } /* add new readers */ p=(const char*)mszReaders; while(*p) { i=LC_Client_FindReaderState(cl, p); if (i!=-1) { DBG_INFO(LC_LOGDOMAIN, "Reader /"%s/" already listed", p); } else { if (cl->readerCount<MAX_READERS) { DBG_INFO(LC_LOGDOMAIN, "Creating reader /"%s/"", p); i=cl->readerCount; /* preset */ memset((void*) &(cl->readerStates[i]), 0, sizeof(SCARD_READERSTATE)); cl->readerStates[i].szReader=p; cl->readerStates[i].dwCurrentState=SCARD_STATE_UNAWARE; /* reader added */ cl->readerCount++; } else { DBG_ERROR(LC_LOGDOMAIN, "Too many readers (%d)", cl->readerCount); } } /* next reader */ while(*p) p++; p++; } /* while */ if (cl->pnpAvailable) { if (-1==LC_Client_FindReaderState(cl, "////?PnP?//Notification")) {//.........这里部分代码省略.........
开发者ID:rhvall,项目名称:SmartCard,代码行数:101,
示例19: EBC_Provider_LogRequestResultsvoid EBC_Provider_LogRequestResults(AB_PROVIDER *pro, EB_MSG *mRsp, GWEN_BUFFER *logbuf) { const char *tcode; const char *bcode; const char *s; GWEN_BUFFER *tbuf; tcode=EB_Msg_GetCharValue(mRsp, "header/mutable/ReturnCode", NULL); bcode=EB_Msg_GetCharValue(mRsp, "body/ReturnCode", NULL); tbuf=GWEN_Buffer_new(0, 256, 0, 1); if (tcode) { GWEN_Buffer_AppendString(tbuf, I18N("EBICS (Technical Code):")); GWEN_Buffer_AppendString(tbuf, " "); GWEN_Buffer_AppendString(tbuf, tcode); s=EBC_Provider_TechnicalCodeToString(tcode); if (s) { GWEN_Buffer_AppendString(tbuf, " ["); GWEN_Buffer_AppendString(tbuf, s); GWEN_Buffer_AppendString(tbuf, "]"); } if (logbuf) { GWEN_Buffer_AppendString(logbuf, "/t"); GWEN_Buffer_AppendBuffer(logbuf, tbuf); } GWEN_Gui_ProgressLog(0, EBC_Provider_ResultCodeToLogLevel(pro, tcode), GWEN_Buffer_GetStart(tbuf)); DBG_INFO(AQEBICS_LOGDOMAIN, "%s", GWEN_Buffer_GetStart(tbuf)); GWEN_Buffer_Reset(tbuf); } s=EB_Msg_GetCharValue(mRsp, "header/mutable/ReportText", NULL); if (s) { GWEN_Buffer_AppendString(tbuf, I18N("EBICS (Technical Report):")); GWEN_Buffer_AppendString(tbuf, " "); GWEN_Buffer_AppendString(tbuf, s); if (logbuf) { GWEN_Buffer_AppendString(logbuf, "/t"); GWEN_Buffer_AppendBuffer(logbuf, tbuf); } GWEN_Gui_ProgressLog(0, GWEN_LoggerLevel_Notice, GWEN_Buffer_GetStart(tbuf)); DBG_INFO(AQEBICS_LOGDOMAIN, "%s", GWEN_Buffer_GetStart(tbuf)); GWEN_Buffer_Reset(tbuf); } s=EB_Msg_GetCharValue(mRsp, "body/ReturnCode", NULL); if (bcode) { GWEN_Buffer_AppendString(tbuf, I18N("EBICS (Bank Code):")); GWEN_Buffer_AppendString(tbuf, " "); GWEN_Buffer_AppendString(tbuf, bcode); s=EBC_Provider_BankCodeToString(bcode); if (s) { GWEN_Buffer_AppendString(tbuf, " ["); GWEN_Buffer_AppendString(tbuf, s); GWEN_Buffer_AppendString(tbuf, "]"); } if (logbuf) { GWEN_Buffer_AppendString(logbuf, "/t"); GWEN_Buffer_AppendBuffer(logbuf, tbuf); } GWEN_Gui_ProgressLog(0, EBC_Provider_ResultCodeToLogLevel(pro, bcode), GWEN_Buffer_GetStart(tbuf)); DBG_INFO(AQEBICS_LOGDOMAIN, "%s", GWEN_Buffer_GetStart(tbuf)); GWEN_Buffer_Reset(tbuf); } GWEN_Buffer_free(tbuf);}
开发者ID:Zauberstuhl,项目名称:aqbanking,代码行数:76,
示例20: LC_Client_InitCommonint LC_Client_InitCommon() { if (lc_client__initcounter==0) { int rv; GWEN_STRINGLIST *paths; rv=GWEN_Init(); if (rv) { DBG_ERROR_ERR(LC_LOGDOMAIN, rv); return rv; } if (!GWEN_Logger_IsOpen(LC_LOGDOMAIN)) { const char *s; /* only set our logger if it not already has been */ GWEN_Logger_Open(LC_LOGDOMAIN, "chipcard3-client", 0, GWEN_LoggerType_Console, GWEN_LoggerFacility_User); GWEN_Logger_SetLevel(LC_LOGDOMAIN, GWEN_LoggerLevel_Warning); s=getenv("LC_LOGLEVEL"); if (s) { GWEN_LOGGER_LEVEL ll; ll=GWEN_Logger_Name2Level(s); if (ll!=GWEN_LoggerLevel_Unknown) { GWEN_Logger_SetLevel(LC_LOGDOMAIN, ll); DBG_WARN(LC_LOGDOMAIN, "Overriding loglevel for Libchipcard-Client with /"%s/"", s); } else { DBG_ERROR(0, "Unknown loglevel /"%s/"", s); } } else { GWEN_Logger_SetLevel(LC_LOGDOMAIN, GWEN_LoggerLevel_Warning); } } /* define sysconf path */ GWEN_PathManager_DefinePath(LCC_PM_LIBNAME, LCC_PM_SYSCONFDIR);#if defined(OS_WIN32) || defined(ENABLE_LOCAL_INSTALL) /* add folder relative to EXE */ GWEN_PathManager_AddRelPath(LCC_PM_LIBNAME, LCC_PM_LIBNAME, LCC_PM_SYSCONFDIR, LC_CLIENT_CONFIG_DIR, GWEN_PathManager_RelModeExe);#else /* add absolute folder */ GWEN_PathManager_AddPath(LCC_PM_LIBNAME, LCC_PM_LIBNAME, LCC_PM_SYSCONFDIR, LC_CLIENT_CONFIG_DIR);#endif /* define data path */ GWEN_PathManager_DefinePath(LCC_PM_LIBNAME, LCC_PM_DATADIR);#if defined(OS_WIN32) || defined(ENABLE_LOCAL_INSTALL) /* add folder relative to EXE */ GWEN_PathManager_AddRelPath(LCC_PM_LIBNAME, LCC_PM_LIBNAME, LCC_PM_DATADIR, LC_CLIENT_XML_DIR, GWEN_PathManager_RelModeExe);#else /* add absolute folder */ GWEN_PathManager_AddPath(LCC_PM_LIBNAME, LCC_PM_LIBNAME, LCC_PM_DATADIR, LC_CLIENT_XML_DIR);#endif /* load configuration file */#if 0 paths=GWEN_PathManager_GetPaths(LCC_PM_LIBNAME, LCC_PM_SYSCONFDIR); if (paths) { GWEN_DB_NODE *db; GWEN_BUFFER *fbuf; db=GWEN_DB_Group_new("config"); fbuf=GWEN_Buffer_new(0, 256, 0, 1); rv=GWEN_Directory_FindFileInPaths(paths, LC_CLIENT_CONFIG_FILE, fbuf); if (rv) { DBG_INFO(LC_LOGDOMAIN, "Trying config file with suffix /".default/""); rv=GWEN_Directory_FindFileInPaths(paths, LC_CLIENT_CONFIG_FILE".default", fbuf); } GWEN_StringList_free(paths); if (rv) { DBG_WARN(LC_LOGDOMAIN, "No configuration file found, using defaults"); } else { DBG_INFO(LC_LOGDOMAIN,//.........这里部分代码省略.........
开发者ID:rhvall,项目名称:SmartCard,代码行数:101,
示例21: EBC_Provider_UpdateJobint EBC_Provider_UpdateJob(AB_PROVIDER *pro, AB_JOB *j) { EBC_PROVIDER *dp; AB_ACCOUNT *a; AB_USER *u; assert(pro); dp=GWEN_INHERIT_GETDATA(AB_PROVIDER, EBC_PROVIDER, pro); assert(dp); a=AB_Job_GetAccount(j); assert(a); u=AB_Account_GetFirstUser(a); if (u==NULL) { DBG_ERROR(AQEBICS_LOGDOMAIN, "No user assigned to this account."); GWEN_Gui_ProgressLog(0, GWEN_LoggerLevel_Error, I18N("No user assigned to this account.")); GWEN_Gui_ShowError(I18N("Setup Error"), I18N("No user assigned to this account. Please assign one in the online banking setup dialog " "for this account./n")); return GWEN_ERROR_INTERNAL; } switch(AB_Job_GetType(j)) { case AB_Job_TypeTransfer: { AB_TRANSACTION_LIMITS *lim; lim=AB_TransactionLimits_new(); AB_TransactionLimits_SetMaxLenPurpose(lim, 27); AB_TransactionLimits_SetMaxLenRemoteName(lim, 27); AB_TransactionLimits_SetMaxLinesRemoteName(lim, 1); AB_TransactionLimits_SetMaxLinesPurpose(lim, 2); AB_TransactionLimits_AddValuesTextKey(lim, "51", 0); AB_Job_SetFieldLimits(j, lim); AB_TransactionLimits_free(lim); break; } case AB_Job_TypeDebitNote: { AB_TRANSACTION_LIMITS *lim; lim=AB_TransactionLimits_new(); AB_TransactionLimits_SetMaxLenPurpose(lim, 27); AB_TransactionLimits_SetMaxLenRemoteName(lim, 27); AB_TransactionLimits_SetMaxLinesRemoteName(lim, 1); AB_TransactionLimits_SetMaxLinesPurpose(lim, 2); AB_TransactionLimits_AddValuesTextKey(lim, "05", 0); AB_Job_SetFieldLimits(j, lim); AB_TransactionLimits_free(lim); break; } case AB_Job_TypeGetTransactions: break; case AB_Job_TypeGetBalance: default: DBG_INFO(AQEBICS_LOGDOMAIN, "Job not yet supported (%d)", AB_Job_GetType(j)); return GWEN_ERROR_NOT_SUPPORTED; } /* switch */ return 0;}
开发者ID:Zauberstuhl,项目名称:aqbanking,代码行数:69,
示例22: LC_Client_GetNextCardLC_CLIENT_RESULT LC_Client_GetNextCard(LC_CLIENT *cl, LC_CARD **pCard, int timeout) { LONG rv; int i; uint32_t progressId; time_t startt; uint64_t to; int distance; assert(cl); startt=time(0); if (timeout==GWEN_TIMEOUT_NONE || timeout==GWEN_TIMEOUT_FOREVER) to=0; else to=timeout; progressId=GWEN_Gui_ProgressStart(GWEN_GUI_PROGRESS_DELAY | GWEN_GUI_PROGRESS_ALLOW_EMBED | GWEN_GUI_PROGRESS_SHOW_PROGRESS | GWEN_GUI_PROGRESS_SHOW_ABORT, I18N("Waiting for card to be inserted"), NULL, to, 0); distance=GWEN_GUI_CHECK_PERIOD; if (distance>timeout) distance=timeout; for (;;) { double d; int err; /* continue checking */ for (i=cl->lastUsedReader+1; i<cl->readerCount; i++) { /* we have a change here */ if (cl->readerStates[i].dwEventState & SCARD_STATE_CHANGED) cl->readerStates[i].dwCurrentState=cl->readerStates[i].dwEventState; else continue; DBG_DEBUG(LC_LOGDOMAIN, "Status changed on reader [%s] (%08x, %08x)", cl->readerStates[i].szReader, (unsigned int)(cl->readerStates[i].dwCurrentState), (unsigned int)(cl->readerStates[i].dwEventState)); if (cl->pnpAvailable && i==cl->readerCount-1) { /* pnp pseudo reader: a reader has been added or removed */ DBG_DEBUG(LC_LOGDOMAIN, "Pseudo reader, updating reader list (%08x, %08x)", (unsigned int)(cl->readerStates[i].dwCurrentState), (unsigned int)(cl->readerStates[i].dwEventState)); LC_Client_UpdateReaderStates(cl); cl->lastUsedReader=-1; break; } else { if ((cl->readerStates[i].dwEventState & SCARD_STATE_PRESENT) && !(cl->readerStates[i].dwEventState & SCARD_STATE_EXCLUSIVE) && !(cl->readerStates[i].dwEventState & SCARD_STATE_INUSE)) { LC_CLIENT_RESULT res; LC_CARD *card=NULL; /* card inserted and not used by another application */ DBG_DEBUG(LC_LOGDOMAIN, "Found usable card in reader [%s]", cl->readerStates[i].szReader); res=LC_Client_ConnectCard(cl, cl->readerStates[i].szReader, &card); if (res==LC_Client_ResultOk) { /* card csuccessfully connected, return */ *pCard=card; cl->lastUsedReader=i; GWEN_Gui_ProgressEnd(progressId); return LC_Client_ResultOk; } else { DBG_ERROR(LC_LOGDOMAIN, "Error connecting to card in reader [%s]", cl->readerStates[i].szReader); } } else { DBG_INFO(LC_LOGDOMAIN, "Either no card in reader or card unavailable in reader [%s]", cl->readerStates[i].szReader); } } } if (i>=cl->readerCount) { /* there was no relevant change in a reader, wait for status change */ cl->lastUsedReader=-1; rv=SCardGetStatusChange(cl->scardContext, distance, cl->readerStates, cl->readerCount); if (rv==SCARD_E_TIMEOUT) { /* timeout, just repeat next loop */ if (timeout==GWEN_TIMEOUT_NONE) { GWEN_Gui_ProgressEnd(progressId); return LC_Client_ResultWait; } } else if (rv!=SCARD_S_SUCCESS) { DBG_ERROR(LC_LOGDOMAIN, "SCardGetStatusChange: %d", (int) rv); GWEN_Gui_ProgressEnd(progressId);//.........这里部分代码省略.........
开发者ID:rhvall,项目名称:SmartCard,代码行数:101,
示例23: EBC_Provider_ExecContext__IZVint EBC_Provider_ExecContext__IZV(AB_PROVIDER *pro, AB_IMEXPORTER_CONTEXT *ctx, AB_USER *u, AB_ACCOUNT *a, GWEN_HTTP_SESSION *sess, EBC_CONTEXT *ectx){ EBC_PROVIDER *dp; AB_JOB_LIST2_ITERATOR *jit; AB_JOB_STATUS js; AB_IMEXPORTER_CONTEXT *exCtx; AB_IMEXPORTER_ACCOUNTINFO *ai; GWEN_BUFFER *bufDtaus; GWEN_TIME *currentTime; GWEN_BUFFER *logbuf; int rv; const char *profileName=NULL; const char *s; const char *rqType; uint32_t groupId=0; assert(pro); dp=GWEN_INHERIT_GETDATA(AB_PROVIDER, EBC_PROVIDER, pro); assert(dp); /* prepare CTX log */ logbuf=GWEN_Buffer_new(0, 256, 0, 1); GWEN_Buffer_AppendString(logbuf, "BEGIN"); currentTime=GWEN_CurrentTime(); GWEN_Time_toString(currentTime, I18N("YYYY/MM/DD-hh:mm:ss"), logbuf); GWEN_Time_free(currentTime); GWEN_Buffer_AppendString(logbuf, "/t"); GWEN_Buffer_AppendString(logbuf, I18N("National Mass Transfer")); GWEN_Buffer_AppendString(logbuf, "/n"); GWEN_Buffer_AppendString(logbuf, "/t"); GWEN_Buffer_AppendString(logbuf, I18N("Transfer type: ")); GWEN_Buffer_AppendString(logbuf, "/t"); switch(EBC_Context_GetJobType(ectx)) { case AB_Job_TypeTransfer: if (!profileName) profileName="transfer"; GWEN_Buffer_AppendString(logbuf, I18N("Transfer")); break; case AB_Job_TypeDebitNote: if (!profileName) profileName="debitnote"; GWEN_Buffer_AppendString(logbuf, I18N("Debit Note")); break; default: GWEN_Buffer_AppendString(logbuf, I18N("unknown")); break; } GWEN_Buffer_AppendString(logbuf, "/n"); GWEN_Buffer_AppendString(logbuf, "/t"); GWEN_Buffer_AppendString(logbuf, I18N("Account: ")); GWEN_Buffer_AppendString(logbuf, "/t"); GWEN_Buffer_AppendString(logbuf, AB_Account_GetBankCode(a)); GWEN_Buffer_AppendString(logbuf, " / "); GWEN_Buffer_AppendString(logbuf, AB_Account_GetAccountNumber(a)); GWEN_Buffer_AppendString(logbuf, "/n"); /* add a tab-less line to start a new table */ GWEN_Buffer_AppendString(logbuf, "Transactions/n"); DBG_INFO(AQEBICS_LOGDOMAIN, "Sampling transactions from jobs"); exCtx=AB_ImExporterContext_new(); ai=AB_ImExporterAccountInfo_new(); AB_ImExporterAccountInfo_FillFromAccount(ai, a); jit=AB_Job_List2_First(EBC_Context_GetJobs(ectx)); if (jit) { AB_JOB *uj; uj=AB_Job_List2Iterator_Data(jit); assert(uj); while(uj) { AB_TRANSACTION *t; const GWEN_STRINGLIST *sl; const char *s; const AB_VALUE *v; switch(EBC_Context_GetJobType(ectx)) { case AB_Job_TypeTransfer: case AB_Job_TypeDebitNote: t=AB_Job_GetTransaction(uj); break; default: t=NULL; } assert(t); if (groupId==0) /* take id from first job of the created DTAUS doc */ groupId=AB_Job_GetJobId(uj); AB_Transaction_SetGroupId(t, groupId); AB_ImExporterAccountInfo_AddTransaction(ai, AB_Transaction_dup(t)); sl=AB_Transaction_GetRemoteName(t); s=NULL; if (sl)//.........这里部分代码省略.........
开发者ID:Zauberstuhl,项目名称:aqbanking,代码行数:101,
示例24: GWEN_CryptMgr_Signint GWEN_CryptMgr_Sign(GWEN_CRYPTMGR *cm, const uint8_t *pData, uint32_t lData, GWEN_BUFFER *dbuf) { GWEN_SIGHEAD *sh; GWEN_SIGTAIL *st; GWEN_TIME *ti; uint32_t pos; uint32_t shPos; uint8_t *p; uint32_t l; int rv; GWEN_BUFFER *sigbuf; assert(cm); GWEN_Buffer_AppendByte(dbuf, GWEN_CRYPTMGR_TLV_SIGNEDOBJECT); pos=GWEN_Buffer_GetPos(dbuf); GWEN_Buffer_AppendByte(dbuf, 0); GWEN_Buffer_AppendByte(dbuf, 0); /* prepare signature head */ sh=GWEN_SigHead_new(); GWEN_SigHead_SetKeyName(sh, cm->localKeyName); GWEN_SigHead_SetKeyNumber(sh, cm->localKeyNumber); GWEN_SigHead_SetKeyVersion(sh, cm->localKeyVersion); ti=GWEN_CurrentTime(); GWEN_SigHead_SetDateTime(sh, ti); GWEN_Time_free(ti); GWEN_SigHead_SetSignatureProfile(sh, cm->signatureProfile); GWEN_SigHead_SetSignatureNumber(sh, 1); /* write signature head to buffer */ shPos=GWEN_Buffer_GetPos(dbuf); rv=GWEN_SigHead_toBuffer(sh, dbuf, GWEN_CRYPTMGR_TLV_SIGHEAD); GWEN_SigHead_free(sh); if (rv<0) { DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv); return rv; } /* write data to buffer */ if (pData && lData) GWEN_Tag16_DirectlyToBuffer(GWEN_CRYPTMGR_TLV_SIGDATA, (const char*)pData, lData, dbuf); /* sign data: signature head TLV + data TLV */ sigbuf=GWEN_Buffer_new(0, 300, 0, 1); p=((uint8_t*)GWEN_Buffer_GetStart(dbuf))+shPos; l=GWEN_Buffer_GetPos(dbuf)-shPos; rv=GWEN_CryptMgr_SignData(cm, p, l, sigbuf); if (rv<0) { DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv); GWEN_Buffer_free(sigbuf); return rv; } /* create signature tail */ st=GWEN_SigTail_new(); GWEN_SigTail_SetSignature(st, (const uint8_t*)GWEN_Buffer_GetStart(sigbuf), GWEN_Buffer_GetUsedBytes(sigbuf)); GWEN_Buffer_free(sigbuf); GWEN_SigTail_SetSignatureNumber(st, 1); /* write signature tail */ rv=GWEN_SigTail_toBuffer(st, dbuf, GWEN_CRYPTMGR_TLV_SIGTAIL); GWEN_SigTail_free(st); if (rv<0) { DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv); return rv; } /* write complete size */ l=GWEN_Buffer_GetPos(dbuf)-pos-2; p=(uint8_t*)GWEN_Buffer_GetStart(dbuf)+pos; *(p++)=l & 0xff; *p=(l>>8) & 0xff; return 0;}
开发者ID:Zauberstuhl,项目名称:gwenhywfar,代码行数:79,
示例25: EBC_Provider_ExecQueueint EBC_Provider_ExecQueue(AB_PROVIDER *pro, AB_IMEXPORTER_CONTEXT *ctx) { EBC_PROVIDER *dp; EBC_USERQUEUE_LIST *uql; int errors=0; int oks=0; int rv; AB_BANKING *ab; assert(pro); dp=GWEN_INHERIT_GETDATA(AB_PROVIDER, EBC_PROVIDER, pro); assert(dp); ab=AB_Provider_GetBanking(pro); assert(ab); uql=EBC_Queue_GetUserQueues(dp->queue); if (uql) { EBC_USERQUEUE *uq; uq=EBC_UserQueue_List_First(uql); while(uq) { AB_USER *u; u=EBC_UserQueue_GetUser(uq); assert(u); GWEN_Gui_ProgressLog(0, GWEN_LoggerLevel_Info, I18N("Locking user")); rv=AB_Banking_BeginExclUseUser(ab, u); if (rv) { DBG_INFO(AQEBICS_LOGDOMAIN, "here (%d)", rv); errors++; } else { GWEN_Gui_ProgressLog(0, GWEN_LoggerLevel_Info, I18N("Executing user queue")); rv=EBC_Provider_ExecUserQueue(pro, ctx, uq); if (rv) errors++; else oks++; if (rv==GWEN_ERROR_USER_ABORTED) { DBG_INFO(AQEBICS_LOGDOMAIN, "User aborted"); GWEN_Gui_ProgressLog(0, GWEN_LoggerLevel_Info, I18N("Unlocking user")); AB_Banking_EndExclUseUser(ab, u, 1); return rv; } rv=AB_Banking_EndExclUseUser(ab, u, 0); if (rv<0) { DBG_INFO(AQEBICS_LOGDOMAIN, "here (%d)", rv); } } uq=EBC_UserQueue_List_Next(uq); } /* while */ } return 0;}
开发者ID:Zauberstuhl,项目名称:aqbanking,代码行数:62,
示例26: GWEN_CryptMgr_Encryptint GWEN_CryptMgr_Encrypt(GWEN_CRYPTMGR *cm, const uint8_t *pData, uint32_t lData, GWEN_BUFFER *dbuf) { GWEN_CRYPTHEAD *ch; uint32_t pos; uint8_t *p; uint32_t l; int rv; GWEN_BUFFER *cryptbuf; GWEN_BUFFER *tbuf; GWEN_CRYPT_KEY *mkey; assert(cm); /* generate a message key */ mkey=GWEN_Crypt_KeyBlowFish_Generate(GWEN_Crypt_CryptMode_Cbc, 256/8, 2); if (mkey==NULL) { DBG_ERROR(GWEN_LOGDOMAIN, "Unable to generate BLOWFISH key"); return GWEN_ERROR_GENERIC; } GWEN_Buffer_AppendByte(dbuf, GWEN_CRYPTMGR_TLV_ENCRYPTEDOBJECT); pos=GWEN_Buffer_GetPos(dbuf); GWEN_Buffer_AppendByte(dbuf, 0); GWEN_Buffer_AppendByte(dbuf, 0); /* prepare signature head */ ch=GWEN_CryptHead_new(); GWEN_CryptHead_SetKeyName(ch, cm->peerKeyName); GWEN_CryptHead_SetKeyNumber(ch, cm->peerKeyNumber); GWEN_CryptHead_SetKeyVersion(ch, cm->peerKeyVersion); GWEN_CryptHead_SetCryptProfile(ch, cm->signatureProfile); /* encrypt key */ cryptbuf=GWEN_Buffer_new(0, lData+256, 0, 1); rv=GWEN_CryptMgr_EncryptKey(cm, GWEN_Crypt_KeyBlowFish_GetKeyDataPtr(mkey), GWEN_Crypt_KeyBlowFish_GetKeyDataLen(mkey), cryptbuf); if (rv<0) { DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv); GWEN_Buffer_free(cryptbuf); GWEN_CryptHead_free(ch); GWEN_Crypt_Key_free(mkey); return rv; } GWEN_CryptHead_SetKey(ch, (const uint8_t*)GWEN_Buffer_GetStart(cryptbuf), GWEN_Buffer_GetUsedBytes(cryptbuf)); GWEN_Buffer_free(cryptbuf); /* write crypt head to buffer */ rv=GWEN_CryptHead_toBuffer(ch, dbuf, GWEN_CRYPTMGR_TLV_CRYPTHEAD); GWEN_CryptHead_free(ch); if (rv<0) { DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv); GWEN_Crypt_Key_free(mkey); return rv; } /* padd plain text data */ tbuf=GWEN_Buffer_new(0, lData+256, 0, 1); GWEN_Buffer_AppendBytes(tbuf, (const char*)pData, lData); GWEN_Padd_PaddWithAnsiX9_23(tbuf); /* encrypt with message key */ cryptbuf=GWEN_Buffer_new(0, lData+256, 0, 1); l=GWEN_Buffer_GetMaxUnsegmentedWrite(cryptbuf); rv=GWEN_Crypt_Key_Encipher(mkey, (const uint8_t*)GWEN_Buffer_GetStart(tbuf), GWEN_Buffer_GetUsedBytes(tbuf), (uint8_t*)GWEN_Buffer_GetStart(cryptbuf), &l); GWEN_Buffer_free(tbuf); if (rv<0) { DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv); GWEN_Buffer_free(cryptbuf); GWEN_Crypt_Key_free(mkey); return rv; } GWEN_Buffer_IncrementPos(cryptbuf, l); GWEN_Buffer_AdjustUsedBytes(cryptbuf); /* write encrypted data */ GWEN_Tag16_DirectlyToBuffer(GWEN_CRYPTMGR_TLV_CRYPTDATA, GWEN_Buffer_GetStart(cryptbuf), GWEN_Buffer_GetUsedBytes(cryptbuf), dbuf); GWEN_Buffer_free(cryptbuf); GWEN_Crypt_Key_free(mkey); /* write complete size */ l=GWEN_Buffer_GetPos(dbuf)-pos-2; p=(uint8_t*)GWEN_Buffer_GetStart(dbuf)+pos; *(p++)=l & 0xff; *p=(l>>8) & 0xff; return 0;}
开发者ID:Zauberstuhl,项目名称:gwenhywfar,代码行数:97,
示例27: Gtk2Gui_Dialog_Setupint Gtk2Gui_Dialog_Setup(GWEN_DIALOG *dlg, GtkWidget *parentWindow) { GTK2_GUI_DIALOG *xdlg; GWEN_WIDGET_TREE *wtree; GWEN_WIDGET *w; GtkWindow *gw; int rv; GList *tll; assert(dlg); xdlg=GWEN_INHERIT_GETDATA(GWEN_DIALOG, GTK2_GUI_DIALOG, dlg); assert(xdlg); wtree=GWEN_Dialog_GetWidgets(dlg); if (wtree==NULL) { DBG_ERROR(GWEN_LOGDOMAIN, "No widget tree in dialog"); return GWEN_ERROR_NOT_FOUND; } w=GWEN_Widget_Tree_GetFirst(wtree); if (w==NULL) { DBG_ERROR(GWEN_LOGDOMAIN, "No widgets in dialog"); return GWEN_ERROR_NOT_FOUND; } rv=Gtk2Gui_Dialog_SetupTree(w); if (rv<0) { DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv); return rv; } gw=GTK_WINDOW(GWEN_Widget_GetImplData(w, GTK2_DIALOG_WIDGET_REAL)); gtk_window_set_type_hint(GTK_WINDOW(gw), GDK_WINDOW_TYPE_HINT_DIALOG); gtk_window_set_position (GTK_WINDOW (gw), GTK_WIN_POS_CENTER_ON_PARENT); /*gtk_window_set_keep_above(GTK_WINDOW(gw), TRUE);*/ xdlg->mainWidget=GTK_WIDGET(gw); tll=gtk_window_list_toplevels(); if (tll) { GList* element; GtkWindow *topLevel=NULL; for (element = tll; element; element = g_list_next(element)) { GtkWindow* win = GTK_WINDOW(element->data); if (gtk_window_is_active(win)) { topLevel=win; break; } } g_list_free(tll); if (topLevel) { DBG_NOTICE(GWEN_LOGDOMAIN, "Found active window [%s]", gtk_window_get_title(topLevel)); gtk_window_set_transient_for(gw, topLevel); } else { DBG_ERROR(GWEN_LOGDOMAIN, "No active window found..."); } } return 0;}
开发者ID:Zauberstuhl,项目名称:gwenhywfar,代码行数:61,
示例28: GWEN_CryptMgr_Verify//.........这里部分代码省略......... /* read and store signed data */ if (l) { GWEN_TAG16 *subtag; subtag=GWEN_Tag16_fromBuffer2(p, l, 0); if (subtag) { if (GWEN_Tag16_GetTagType(subtag)==GWEN_CRYPTMGR_TLV_SIGDATA) { GWEN_Buffer_AppendBytes(dbuf, GWEN_Tag16_GetTagData(subtag), GWEN_Tag16_GetTagLength(subtag)); if ((pSignedData+lSignedData)==p) { lSignedData+=GWEN_Tag16_GetTagSize(subtag); } else { DBG_ERROR(GWEN_LOGDOMAIN, "data TLV must follow sighead TLV"); GWEN_Tag16_free(subtag); GWEN_SigHead_free(sh); GWEN_Tag16_free(tag); return GWEN_ERROR_BAD_DATA; } } p+=GWEN_Tag16_GetTagSize(subtag); l-=GWEN_Tag16_GetTagSize(subtag); GWEN_Tag16_free(subtag); } } /* read sigtail (contains the signature) */ if (l) { GWEN_TAG16 *subtag; subtag=GWEN_Tag16_fromBuffer2(p, l, 0); if (subtag) { if (GWEN_Tag16_GetTagType(subtag)==GWEN_CRYPTMGR_TLV_SIGTAIL) { st=GWEN_SigTail_fromBuffer(GWEN_Tag16_GetTagData(subtag), GWEN_Tag16_GetTagLength(subtag)); } p+=GWEN_Tag16_GetTagSize(subtag); l-=GWEN_Tag16_GetTagSize(subtag); GWEN_Tag16_free(subtag); } } /* check for all needed components */ if (!(sh && st && pSignedData && lSignedData)) { DBG_ERROR(GWEN_LOGDOMAIN, "Signed object is not complete"); GWEN_SigTail_free(st); GWEN_SigHead_free(sh); GWEN_Tag16_free(tag); return GWEN_ERROR_BAD_DATA; } if (GWEN_SigHead_GetSignatureNumber(sh)!=GWEN_SigTail_GetSignatureNumber(st)) { DBG_ERROR(GWEN_LOGDOMAIN, "Sighead doesn't match sigtail"); GWEN_SigTail_free(st); GWEN_SigHead_free(sh); GWEN_Tag16_free(tag); return GWEN_ERROR_BAD_DATA; } /* store or check peer key info */ if (cm->peerKeyName==NULL) { /* store peer info */ GWEN_CryptMgr_SetPeerKeyName(cm, GWEN_SigHead_GetKeyName(sh)); GWEN_CryptMgr_SetPeerKeyNumber(cm, GWEN_SigHead_GetKeyNumber(sh)); GWEN_CryptMgr_SetPeerKeyVersion(cm, GWEN_SigHead_GetKeyVersion(sh)); } else { const char *s; /* compare peer info with expected info */ s=GWEN_SigHead_GetKeyName(sh); if (!(cm->peerKeyName && s && (strcasecmp(cm->peerKeyName, s)==0) && (cm->peerKeyNumber==GWEN_SigHead_GetKeyNumber(sh)) && (cm->peerKeyVersion==GWEN_SigHead_GetKeyVersion(sh)))) { DBG_ERROR(GWEN_LOGDOMAIN, "Unexpected peer key information in signature"); GWEN_SigTail_free(st); GWEN_SigHead_free(sh); GWEN_Tag16_free(tag); return GWEN_ERROR_BAD_DATA; } } /* verify signature */ rv=GWEN_CryptMgr_VerifyData(cm, pSignedData, lSignedData, GWEN_SigTail_GetSignaturePtr(st), GWEN_SigTail_GetSignatureLen(st)); GWEN_SigTail_free(st); GWEN_SigHead_free(sh); GWEN_Tag16_free(tag); if (rv<0) { DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv); return rv; } return 0;}
开发者ID:Zauberstuhl,项目名称:gwenhywfar,代码行数:101,
示例29: AH_NewKeyFileDialog_CheckBankIniLetterint AH_NewKeyFileDialog_CheckBankIniLetter(GWEN_DIALOG *dlg, AB_USER *u) { AH_NEWKEYFILE_DIALOG *xdlg; int rv; GWEN_BUFFER *tbuf; assert(dlg); xdlg=GWEN_INHERIT_GETDATA(GWEN_DIALOG, AH_NEWKEYFILE_DIALOG, dlg); assert(xdlg); tbuf=GWEN_Buffer_new(0, 1024, 0, 1); /* add HTML version of the INI letter */ GWEN_Buffer_AppendString(tbuf, "<html>"); GWEN_Buffer_AppendString(tbuf, I18N("<p>The following is the INI letter describing the keys of your bank. " "Please look at it carefully and compare the information against that " "in the letter from your bank.</p>" "<p><font color=red><b>Important Warning:</b></font> Only proceed if the hash matches! " "Contact your bank immediately if the hash does not match!</p>")); rv=AH_Provider_GetIniLetterHtml(AB_User_GetProvider(u), u, 1, 0, tbuf, 1); if (rv<0) { DBG_INFO(AQHBCI_LOGDOMAIN, "here (%d)", rv); // TODO: show error message GWEN_Buffer_free(tbuf); return GWEN_DialogEvent_ResultHandled; } GWEN_Buffer_AppendString(tbuf, "</html>"); /* add ASCII version of the INI letter for frontends which don't support HTML */ GWEN_Buffer_AppendString(tbuf, I18N("The following is the INI letter describing the keys of your bank./n" "Please look at it carefully and compare the information against that/n" "in the letter from your bank./n" "/n" "IMPORTANT WARNING: Only proceed if the hash matches!/n" "Contact your bank immediately if the hash does not match!/n/n")); rv=AH_Provider_GetIniLetterTxt(AB_User_GetProvider(u), u, 1, 0, tbuf, 0); if (rv<0) { DBG_INFO(AQHBCI_LOGDOMAIN, "here (%d)", rv); // TODO: show error message GWEN_Buffer_free(tbuf); return GWEN_DialogEvent_ResultHandled; } if (1!=GWEN_Gui_MessageBox(GWEN_GUI_MSG_FLAGS_TYPE_INFO | GWEN_GUI_MSG_FLAGS_CONFIRM_B1 | GWEN_GUI_MSG_FLAGS_SEVERITY_DANGEROUS, I18N("Check Bank Keys"), GWEN_Buffer_GetStart(tbuf), I18N("Keys are ok"), I18N("Keys do not match!"), NULL, 0)) { GWEN_Buffer_free(tbuf); return GWEN_ERROR_VERIFY; } GWEN_Buffer_free(tbuf); return 0;}
开发者ID:Zauberstuhl,项目名称:aqbanking,代码行数:70,
示例30: EBC_Provider_EuSign_A004int EBC_Provider_EuSign_A004(AB_PROVIDER *pro, AB_USER *u, const char *requestType, const uint8_t *pMsg, uint32_t lMsg, GWEN_BUFFER *sbuf) { EBC_PROVIDER *dp; GWEN_MDIGEST *md; GWEN_BUFFER *hbuf; GWEN_BUFFER *ebuf; GWEN_CRYPT_TOKEN *ct; const GWEN_CRYPT_TOKEN_CONTEXT *ctx; const GWEN_CRYPT_TOKEN_KEYINFO *ki; uint32_t keyId; int ksize; uint32_t l; GWEN_CRYPT_PADDALGO *algo; EB_EU *eu; GWEN_TIME *ti; int rv; const char *userId; assert(pro); dp=GWEN_INHERIT_GETDATA(AB_PROVIDER, EBC_PROVIDER, pro); assert(dp); userId=AB_User_GetUserId(u); md=GWEN_MDigest_Rmd160_new(); assert(md); rv=GWEN_MDigest_Begin(md); if (rv<0) { DBG_INFO(AQEBICS_LOGDOMAIN, "here (%d)", rv); GWEN_MDigest_free(md); return rv; } rv=GWEN_MDigest_Update(md, pMsg, lMsg); if (rv<0) { DBG_INFO(AQEBICS_LOGDOMAIN, "here (%d)", rv); GWEN_MDigest_free(md); return rv; } rv=GWEN_MDigest_End(md); if (rv<0) { DBG_INFO(AQEBICS_LOGDOMAIN, "here (%d)", rv); GWEN_MDigest_free(md); return rv; } hbuf=GWEN_Buffer_new(0, GWEN_MDigest_GetDigestSize(md), 0, 1); GWEN_Buffer_AppendBytes(hbuf, (const char*)GWEN_MDigest_GetDigestPtr(md), GWEN_MDigest_GetDigestSize(md)); GWEN_MDigest_free(md); /* get crypt token and context */ rv=EBC_Provider_MountToken(pro, u, &ct, &ctx); if (rv<0) { DBG_INFO(AQEBICS_LOGDOMAIN, "here (%d)", rv); return rv; } /* get key id */ keyId=GWEN_Crypt_Token_Context_GetSignKeyId(ctx); ki=GWEN_Crypt_Token_GetKeyInfo(ct, keyId, 0xffffffff, 0); if (ki==NULL) { DBG_INFO(AQEBICS_LOGDOMAIN, "Keyinfo %04x not found on crypt token [%s:%s]", keyId, GWEN_Crypt_Token_GetTypeName(ct), GWEN_Crypt_Token_GetTokenName(ct)); GWEN_Crypt_Token_Close(ct, 0, 0); GWEN_Buffer_free(hbuf); return GWEN_ERROR_NOT_FOUND; } ksize=GWEN_Crypt_Token_KeyInfo_GetKeySize(ki); /* select padd algo */ algo=GWEN_Crypt_PaddAlgo_new(GWEN_Crypt_PaddAlgoId_Iso9796_2); GWEN_Crypt_PaddAlgo_SetPaddSize(algo, ksize); /* actually sign */ ebuf=GWEN_Buffer_new(0, ksize+16, 0, 1); l=GWEN_Buffer_GetMaxUnsegmentedWrite(ebuf); rv=GWEN_Crypt_Token_Sign(ct, keyId, algo, (const uint8_t*)GWEN_Buffer_GetStart(hbuf), GWEN_Buffer_GetUsedBytes(hbuf), (uint8_t*)GWEN_Buffer_GetPosPointer(ebuf), &l, NULL, /* ignore seq counter */ 0); GWEN_Crypt_PaddAlgo_free(algo); if (rv<0) { DBG_INFO(AQEBICS_LOGDOMAIN, "here (%d)", rv); GWEN_Buffer_free(ebuf);//.........这里部分代码省略.........
开发者ID:Zauberstuhl,项目名称:aqbanking,代码行数:101,
注:本文中的DBG_INFO函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ DBG_INF_FMT函数代码示例 C++ DBG_FUNC函数代码示例 |