Package org.kapott.hbci.GV

Examples of org.kapott.hbci.GV.GVTAN2Step


                            HBCIUtils.log("process #1: adding new message with HKTAN(p=1,hash=...) before current message",HBCIUtils.LOG_DEBUG);
                           
                            // neue msg erzeugen
                            additional_msg_tasks=new ArrayList<HBCIJobImpl>();

                            GVTAN2Step hktan = (GVTAN2Step) handler.newJob("TAN2Step");
                           
                            // muessen wir explizit setzen, damit wir das HKTAN in der gleichen Version
                            // schicken, in der das HITANS kam.
                            hktan.setSegVersion(segversion);
                           
                            hktan.setParam("process",process);
                            hktan.setParam("notlasttan","N");
                           
                            // willuhn 2011-05-16
                            // Siehe FinTS_3.0_Security_Sicherheitsverfahren_PINTAN_Rel_20101027_final_version.pdf, Seite 58
                            int hktanVersion = Integer.parseInt(hktan.getSegVersion());
                            if (hktanVersion >= 5)
                            {
                              // Bis HKTAN4/hhd1.3 wurde das noch als Challenge-Parameter uebermittelt. Jetzt hat es einen
                              // eigenen Platz in den Job-Parametern
                              hktan.setParam("ordersegcode",task.getHBCICode());

                              // Zitat aus HITANS5: Diese Funktion erm�glicht das Sicherstellen einer g�ltigen Kontoverbindung
                              // z. B. f�r die Abrechnung von SMS-Kosten bereits vor Erzeugen und Versenden einer
                              // (ggf. kostenpflichtigen!) TAN.
                              //  0: Auftraggeberkonto darf nicht angegeben werden
                              //  2: Auftraggeberkonto muss angegeben werden, wenn im Gesch�ftsvorfall enthalten
                              String noa = secmechInfo.getProperty("needorderaccount","");
                              HBCIUtils.log("needorderaccount=" + noa,HBCIUtils.LOG_INFO);
                              if (noa.equals("2"))
                              {
                                Konto k = task.getOrderAccount();
                                if (k != null)
                                {
                                    HBCIUtils.log("applying orderaccount to HKTAN for " + task.getHBCICode(),HBCIUtils.LOG_INFO);
                                    hktan.setParam("orderaccount",k);
                                }
                                else
                                {
                                    HBCIUtils.log("orderaccount needed, but not found in " + task.getHBCICode(),HBCIUtils.LOG_WARN);
                                }
                              }
                            }
                           
                            // TODO: das f�r mehrfachsignaturen
                            // hktan.setParam("notlasttan","J");
                           
                            // orderhash ermitteln
                            try {
                                // TODO: hier wird jetzt *immer* segnum=3 angenommen,
                                // kann in Einzelf�llen evtl. auch anders sein (?)
                                SEG seg=task.createJobSegment(3);
                                seg.validate();
                                String segdata=seg.toString(0);
                                HBCIUtils.log("calculating hash for jobsegment: "+segdata,HBCIUtils.LOG_DEBUG2);
                               
                                // zu verwendenden Hash-Algorithmus von dem Wert "orderhashmode" aus den BPD abh�ngig machen
                                String orderhashmode=getOrderHashMode();
                                String alg=null;
                                String provider=null;
                                if (orderhashmode.equals("1")) {
                                    alg="RIPEMD160";
                                    provider="CryptAlgs4Java";
                                } else if (orderhashmode.equals("2")) {
                                    alg="SHA-1";
                                }
                                HBCIUtils.log("using "+alg+"/"+provider+" for generating order hash", HBCIUtils.LOG_DEBUG);
                                MessageDigest digest=MessageDigest.getInstance(alg,provider);
                               
                                digest.update(segdata.getBytes(Comm.ENCODING));
                                byte[] hash=digest.digest();
                                SEGFactory.getInstance().unuseObject(seg);
                                hktan.setParam("orderhash",new String(hash,Comm.ENCODING));
                            } catch (Exception e) {
                                throw new HBCI_Exception(e);
                            }
                           
                            // TODO: evtl. listindex ermitteln
                            // hktan.setParam("listidx","");
                           
                            // wenn needchallengeklass gesetzt ist:
                            if (secmechInfo.getProperty("needchallengeklass","N").equals("J"))
                            {
                                HBCIUtils.log("we are in PV #1, and a challenge klass is required",HBCIUtils.LOG_DEBUG);
                                ChallengeInfo cinfo = ChallengeInfo.getInstance();
                                cinfo.applyParams(task,hktan,secmechInfo);
                            }

                            // willuhn 2011-05-09: Bei Bedarf noch das TAN-Medium erfragen
                            applyTanMedia(hktan);
                           
                            // hktan-job zur neuen msg hinzuf�gen
                            additional_msg_tasks.add(hktan);
                           
                            // diese neue msg vor der aktuellen in die msg-queue einstellen
                            new_msgs.add(additional_msg_tasks);
                            // und gleich wieder auf null setzen, damit diese msg nicht
                            // sp�ter nochmal *nach* der aktuellen msg eingef�gt wird
                            additional_msg_tasks=null;
                           
                            // den aktuellen task ganz normal zur aktuellen msg hinzuf�gen
                            new_msg_tasks.add(task);
                        } else {
                            // prozessvariante 2
                            HBCIUtils.log("process #2: adding new task HKTAN(p=4) to current message",HBCIUtils.LOG_DEBUG);
                           
                            // den aktuellen task ganz normal zur aktuellen msg hinzuf�gen
                            new_msg_tasks.add(task);
                           
                            // dazu noch einen hktan-job hinzuf�gen
                            GVTAN2Step hktan1 = (GVTAN2Step) handler.newJob("TAN2Step");

                            // muessen wir explizit setzen, damit wir das HKTAN in der gleichen Version
                            // schicken, in der das HITANS kam.
                            hktan1.setSegVersion(segversion);

                            hktan1.setParam("process","4");
                            // TODO: evtl. listindex ermitteln
                            // hktan1.setParam("listidx","");
                            // TODO: das f�r mehrfachsignaturen
                            // hktan1.setParam("notlasttan","N");

                            // willuhn 2011-05-09: Bei Bedarf noch das TAN-Medium erfragen
                            applyTanMedia(hktan1);
                           
                            // den hktan-job zus�tzlich zur aktuellen msg hinzuf�gen
                            new_msg_tasks.add(hktan1);
                           
                            // eine neue msg f�r das einreichen der tan erzeugen
                            HBCIUtils.log("creating new msg with HKTAN(p=2,orderref=DELAYED)",HBCIUtils.LOG_DEBUG);
                            additional_msg_tasks=new ArrayList<HBCIJobImpl>();
                           
                            // HKTAN-job f�r das einreichen der TAN erzeugen
                            GVTAN2Step hktan2 = (GVTAN2Step) handler.newJob("TAN2Step");

                            // muessen wir explizit setzen, damit wir das HKTAN in der gleichen Version
                            // schicken, in der das HITANS kam.
                            hktan1.setSegVersion(segversion);

                            hktan2.setParam("process","2");
                            hktan2.setParam("notlasttan","N");
                            // TODO: evtl. listindex ermitteln
                            // hktan2.setParam("listidx","");
                            // TODO: das f�r mehrfachsignaturen
                            // hktan2.setParam("notlasttan","J");
                           
                            // willuhn 2011-05-09 TAN-Media gibts nur bei Prozess 1,3,4 - also nicht in hktan2

                            // hktan-job zur neuen msg hinzuf�gen
                            additional_msg_tasks.add(hktan2);
                           
                            // in dem ersten HKTAN-job eine referenz auf den zweiten speichern,
                            // damit der erste die auftragsreferenz sp�ter im zweiten speichern kann
                            HBCIUtils.log("storing reference to this HKTAN in previous HKTAN segment",HBCIUtils.LOG_DEBUG);
                            hktan1.storeOtherTAN2StepTask(hktan2);
                           
                            // in dem zweiten HKTAN-job eine referenz auf den originalen job
                            // speichern, damit die antwortdaten f�r den job, die als antwortdaten
                            // f�r hktan2 ankommen, dem richtigen job zugeordnet werden k�nnen
                            HBCIUtils.log("storing reference to original job in new HKTAN segment",HBCIUtils.LOG_DEBUG);
                            hktan2.storeOriginalTask(task);
                           
                            // die neue msg wird sp�ter (nach der aktuellen) zur msg-queue hinzugef�gt
                        }
                    } else {
                        // kein tan-pflichtiger task, also einfach zur gepatchten msg-queue hinzuf�gen
View Full Code Here

TOP

Related Classes of org.kapott.hbci.GV.GVTAN2Step

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.