diff --git a/src/import-export/hbci/druid-hbci-initial.c b/src/import-export/hbci/druid-hbci-initial.c index b3b03cb485..588c647515 100644 --- a/src/import-export/hbci/druid-hbci-initial.c +++ b/src/import-export/hbci/druid-hbci-initial.c @@ -1287,9 +1287,11 @@ on_iniletter_info_next (GnomeDruidPage *gnomedruidpage, HBCI_Job_setIntProperty(jjob, "open/signkey/key/country", HBCI_Bank_country(HBCI_User_bank(HBCI_Customer_user(info->newcustomer)))); HBCI_Job_setProperty(jjob, "open/signkey/key/bankcode", HBCI_Bank_bankCode(HBCI_User_bank(HBCI_Customer_user(info->newcustomer)))); + /*HBCI_Job_setProperty(jjob, "open/signkey/key/userid", "9999999999");*/ HBCI_Job_setIntProperty(jjob, "open/cryptkey/key/country", HBCI_Bank_country(HBCI_User_bank(HBCI_Customer_user(info->newcustomer)))); HBCI_Job_setProperty(jjob, "open/cryptkey/key/bankcode", HBCI_Bank_bankCode(HBCI_User_bank(HBCI_Customer_user(info->newcustomer)))); + /*HBCI_Job_setProperty(jjob, "open/cryptkey/key/userid", "9999999999");*/ } HBCI_Outbox_addJob (info->outbox, job); @@ -1382,6 +1384,7 @@ on_iniletter_info_next (GnomeDruidPage *gnomedruidpage, g_free (hash); gnc_html_show_data (info->server_html, res, strlen(res)); + gnc_html_reload (info->server_html); g_free (res); } @@ -1429,6 +1432,50 @@ on_iniletter_userinfo_next (GnomeDruidPage *gnomedruidpage, job = HBCI_OutboxJob_new("JobSendKeys", (HBCI_Customer*)info->newcustomer, ""); + + { + HBCI_Job *jjob = HBCI_OutboxJob_Job(job); + const HBCI_Customer *customer = info->newcustomer; + const HBCI_User *user = HBCI_Customer_user(customer); + const HBCI_Bank *bank = HBCI_User_bank(user); + const HBCI_Medium *med = HBCI_User_medium (user); + const HBCI_MediumRDHBase *medr = HBCI_Medium_MediumRDHBase ((HBCI_Medium*)med); + const HBCI_RSAKey *signkey = HBCI_MediumRDHBase_userPubSignKey(medr); + const HBCI_RSAKey *cryptkey = HBCI_MediumRDHBase_userPubCryptKey(medr); +#define MY_MAXBUF_SIZE 1024 + unsigned tmp_bufsize = MY_MAXBUF_SIZE; + unsigned tmp_actual; + char tmp[MY_MAXBUF_SIZE]; + g_assert (medr); + /* Copied from libaqmoney's JobSendKeys::JobSendKeys(Pointer c) */ + + // prepare identification + HBCI_Job_setProperty(jjob, "open/ident/systemid", "0"); + HBCI_Job_setIntProperty(jjob, "open/ident/country", HBCI_Bank_country(bank)); + HBCI_Job_setProperty(jjob, "open/ident/bankcode", HBCI_Bank_bankCode(bank)); + HBCI_Job_setProperty(jjob, "open/ident/customerid", HBCI_Customer_custId(customer)); + + // prepare sign key + HBCI_Job_setProperty(jjob, "open/signkey/keyname/bankCode", HBCI_Bank_bankCode(bank)); + HBCI_Job_setProperty(jjob, "open/signkey/keyname/userid", HBCI_User_userId(user)); + HBCI_Job_setIntProperty(jjob, "open/signkey/keyname/keynum", HBCI_RSAKey_number(signkey)); + HBCI_Job_setIntProperty(jjob, "open/signkey/keyname/keyversion", HBCI_RSAKey_version(signkey)); + tmp_actual = HBCI_RSAKey_getModulusData(signkey, tmp, tmp_bufsize); + HBCI_Job_setBinProperty(jjob, "open/signkey/key/modulus", tmp, tmp_actual); + tmp_actual = HBCI_RSAKey_getExpData(signkey, tmp, tmp_bufsize); + HBCI_Job_setBinProperty(jjob, "open/signkey/key/exponent", tmp, tmp_actual); + + // prepare crypt key + HBCI_Job_setProperty(jjob, "open/cryptkey/keyname/bankCode", HBCI_Bank_bankCode(bank)); + HBCI_Job_setProperty(jjob, "open/cryptkey/keyname/userid", HBCI_User_userId(user)); + HBCI_Job_setIntProperty(jjob, "open/cryptkey/keyname/keynum", HBCI_RSAKey_number(cryptkey)); + HBCI_Job_setIntProperty(jjob, "open/cryptkey/keyname/keyversion", HBCI_RSAKey_version(cryptkey)); + tmp_actual = HBCI_RSAKey_getModulusData(cryptkey, tmp, tmp_bufsize); + HBCI_Job_setBinProperty(jjob, "open/cryptkey/key/modulus", tmp, tmp_actual); + tmp_actual = HBCI_RSAKey_getExpData(cryptkey, tmp, tmp_bufsize); + HBCI_Job_setBinProperty(jjob, "open/cryptkey/key/exponent", tmp, tmp_actual); + } + HBCI_Outbox_addJob (info->outbox, job); /* Execute Outbox. */ @@ -1505,6 +1552,7 @@ on_iniletter_userinfo_next (GnomeDruidPage *gnomedruidpage, g_free (hash); } gnc_html_show_data (info->user_html, res, strlen(res)); + gnc_html_reload (info->user_html); g_free (res); diff --git a/src/import-export/hbci/druid-hbci-utils.c b/src/import-export/hbci/druid-hbci-utils.c index 131559dfb4..131c50d13e 100644 --- a/src/import-export/hbci/druid-hbci-utils.c +++ b/src/import-export/hbci/druid-hbci-utils.c @@ -431,8 +431,8 @@ gnc_hbci_evaluate_GetKeys(HBCI_Outbox *outbox, HBCI_OutboxJob *job, return FALSE; } - printf("JobGetKeys: Complete response:\n"); - GWEN_DB_Dump(rsp, stderr, 1); + /*printf("JobGetKeys: Complete response:\n"); + GWEN_DB_Dump(rsp, stderr, 1);*/ n=GWEN_DB_GetFirstGroup(rsp); while(n) { @@ -500,12 +500,18 @@ gnc_hbci_evaluate_GetKeys(HBCI_Outbox *outbox, HBCI_OutboxJob *job, _cryptKey = HBCI_RSAKey_new(iscrypt, keydb); else _signKey = HBCI_RSAKey_new(iscrypt, keydb); - fprintf(stderr, "Created %s key", iscrypt?"crypt":"sign"); + fprintf(stderr, "gnc_hbci_evaluate_GetKeys: Created %s key\n", iscrypt?"crypt":"sign"); } // if we have a key response n=GWEN_DB_GetNextGroup(n); } // while // Key creation finished. Now add them to the medium @§%$!!! + + if (!_cryptKey) { + printf("gnc_hbci_evaluate_GetKeys: Oops, no cryptKey received.\n"); + return FALSE; + } + { HBCI_MediumRDHBase *mrdh; diff --git a/src/import-export/hbci/gnc-hbci-utils.c b/src/import-export/hbci/gnc-hbci-utils.c index 97c939d7c9..7c54c12f7a 100644 --- a/src/import-export/hbci/gnc-hbci-utils.c +++ b/src/import-export/hbci/gnc-hbci-utils.c @@ -467,8 +467,10 @@ gnc_hbci_api_execute (GtkWidget *parent, HBCI_API *api, GNCInteractor_show (inter); if (gnc_lookup_boolean_option("_+Advanced", - "HBCI Verbose Debug Messages", FALSE)) + "HBCI Verbose Debug Messages", FALSE)) { + GWEN_Logger_SetLevel(0, GWEN_LoggerLevelDebug); HBCI_Hbci_setDebugLevel (4); + } else HBCI_Hbci_setDebugLevel (0);