Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package hbci4java for openSUSE:Factory 
checked in at 2024-04-10 17:49:54
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/hbci4java (Old)
 and      /work/SRC/openSUSE:Factory/.hbci4java.new.29460 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "hbci4java"

Wed Apr 10 17:49:54 2024 rev:16 rq:1166619 version:3.1.79

Changes:
--------
--- /work/SRC/openSUSE:Factory/hbci4java/hbci4java.changes      2024-03-21 
17:00:53.469385519 +0100
+++ /work/SRC/openSUSE:Factory/.hbci4java.new.29460/hbci4java.changes   
2024-04-10 17:50:49.445431246 +0200
@@ -1,0 +2,18 @@
+Wed Apr 10 10:37:00 UTC 2024 - Fridrich Strba <[email protected]>
+
+- update to 3.1.79
+  * DECOUPLED nicht mehr als Default-Version und TAN-Prozess S
+    nur bei HKTAN ab Version 7
+  * Fallback auf HHDVersion.DEFAULT/DECCOUPLED, wenn nichts
+    angegeben ist. Gehe davon aus, dass das das TAN-Verfahren der
+    Zukunft bei den Banken ist.
+  * Bei der Dialoginitialisierung mit SCA und HKTAN7 per Decoupled
+    wurde im DE "TAN-Prozess" versehentlich "2" statt "S" gesendet.
+    Die Ermittlung, ob "S" verwenden muss, passierte, nachdem die
+    Nachricht bereits erstellt wurde.
+  * In DialogInitSCA fehlte das TAN2Step7 sodass bei HTKTAN-Version
+    7 gar kein HKTAN mitgesendet wurde.
+  * Erweitertes Logging bei der SCA
+  * see 
https://github.com/hbci4j/hbci4java/compare/hbci4j-core-3.1.76...hbci4j-core-3.1.79
+
+-------------------------------------------------------------------

Old:
----
  hbci4j-core-3.1.76.tar.gz

New:
----
  hbci4j-core-3.1.79.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ hbci4java.spec ++++++
--- /var/tmp/diff_new_pack.s5ZoK1/_old  2024-04-10 17:50:50.889484391 +0200
+++ /var/tmp/diff_new_pack.s5ZoK1/_new  2024-04-10 17:50:50.889484391 +0200
@@ -18,7 +18,7 @@
 
 %{!?make_build:%global make_build make %{?_smp_mflags}}
 Name:           hbci4java
-Version:        3.1.76
+Version:        3.1.79
 Release:        0
 Summary:        Java online banking client using the HBCI standard
 License:        LGPL-2.1-only

++++++ hbci4j-core-3.1.76.tar.gz -> hbci4j-core-3.1.79.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hbci4java-hbci4j-core-3.1.76/pom.xml 
new/hbci4java-hbci4j-core-3.1.79/pom.xml
--- old/hbci4java-hbci4j-core-3.1.76/pom.xml    2024-03-19 15:33:32.000000000 
+0100
+++ new/hbci4java-hbci4j-core-3.1.79/pom.xml    2024-04-04 21:48:23.000000000 
+0200
@@ -3,7 +3,7 @@
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.github.hbci4j</groupId>
        <artifactId>hbci4j-core</artifactId>
-       <version>3.1.76</version>
+       <version>3.1.79</version>
        <packaging>jar</packaging>
        <name>${project.artifactId}</name>
        <description>HBCI4j - Home Banking Computer Interface for 
Java</description>
@@ -31,7 +31,7 @@
                <url>scm:git:[email protected]:hbci4j/hbci4java.git</url>
                
<connection>scm:git:[email protected]:hbci4j/hbci4java.git</connection>
                
<developerConnection>scm:git:[email protected]:hbci4j/hbci4java.git</developerConnection>
-               <tag>hbci4j-core-3.1.76</tag>
+               <tag>hbci4j-core-3.1.79</tag>
        </scm>
        <properties>
                
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hbci4java-hbci4j-core-3.1.76/src/main/java/org/kapott/hbci/manager/HHDVersion.java
 
new/hbci4java-hbci4j-core-3.1.79/src/main/java/org/kapott/hbci/manager/HHDVersion.java
--- 
old/hbci4java-hbci4j-core-3.1.76/src/main/java/org/kapott/hbci/manager/HHDVersion.java
      2024-03-19 15:33:32.000000000 +0100
+++ 
new/hbci4java-hbci4j-core-3.1.79/src/main/java/org/kapott/hbci/manager/HHDVersion.java
      2024-04-04 21:48:23.000000000 +0200
@@ -73,6 +73,11 @@
     DECOUPLED(Type.DECOUPLED,"Decouple.*"),
 
     ;
+  
+    /**
+     * Die Default-Version.
+     */
+    public final static HHDVersion DEFAULT = HHD_1_2;
     
     /**
      * Definiert die Art des TAN-Verfahrens.
@@ -165,6 +170,12 @@
     {
       HBCIUtils.log("trying to determine HHD version for secmech: " + 
secmech,HBCIUtils.LOG_DEBUG);
 
+      if (secmech == null)
+      {
+        HBCIUtils.log("have no secmech data, fallback to default: " + 
DEFAULT,HBCIUtils.LOG_WARN);
+        return DEFAULT;
+      }
+      
       // DK-TAN-Verfahren
       String name = secmech.getProperty("zkamethod_name","");
       if (name != null && name.length() > 0)
@@ -245,9 +256,8 @@
       }
       
       // Default:
-      HHDVersion v = HHD_1_2;
-      HBCIUtils.log("  identified as " + v,HBCIUtils.LOG_DEBUG);
-      return v;
+      HBCIUtils.log("  no HHD version detected, default to " + 
DEFAULT,HBCIUtils.LOG_DEBUG);
+      return DEFAULT;
     }
 
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hbci4java-hbci4j-core-3.1.76/src/main/java/org/kapott/hbci/passport/AbstractPinTanPassport.java
 
new/hbci4java-hbci4j-core-3.1.79/src/main/java/org/kapott/hbci/passport/AbstractPinTanPassport.java
--- 
old/hbci4java-hbci4j-core-3.1.76/src/main/java/org/kapott/hbci/passport/AbstractPinTanPassport.java
 2024-03-19 15:33:32.000000000 +0100
+++ 
new/hbci4java-hbci4j-core-3.1.79/src/main/java/org/kapott/hbci/passport/AbstractPinTanPassport.java
 2024-04-04 21:48:23.000000000 +0200
@@ -102,11 +102,6 @@
      */
     public final static String KEY_PD_ORDERREF = "__pintan_orderref___";
 
-    /**
-     * Hier speichern wir zwischen, ob es sich um ein Decoupled-Verfahren 
handelt
-     */
-    public final static String KEY_PD_DECOUPLED = "__pintan_decoupled__";
-
     private String certfile;
     private boolean checkCert;
 
@@ -419,11 +414,16 @@
      * Prueft, ob die Dialog-Initialisierung um ein HKTAN erweitert werden 
muss.
      * @param ctx der Kontext.
      */
-    private  void checkSCARequest(DialogContext ctx)
+    private void checkSCARequest(DialogContext ctx)
     {
+        HBCIUtils.log("check SCA request",HBCIUtils.LOG_DEBUG);
+
         final SCARequest sca = this.getSCARequest(ctx);
         if (sca == null)
-            return;
+        {
+          HBCIUtils.log("no SCA request for this context, skipping 
check",HBCIUtils.LOG_DEBUG);
+          return;
+        }
         
         Integer step = (Integer) ctx.getMeta().get(CACHE_KEY_SCA_STEP);
 
@@ -437,15 +437,28 @@
         final Variant variant = sca.getVariant();
         KnownTANProcess tp = KnownTANProcess.get(variant,step.intValue());
 
-        // Checken, ob wir Decoupled verwenden. In dem Fall
-        // TAN-Prozess von "2" auf "S" ändern
         if (tp == KnownTANProcess.PROCESS2_STEP2)
         {
-          final String dec = (String) 
ctx.getPassport().getPersistentData(KEY_PD_DECOUPLED);
-          if (dec != null && dec.length() > 0)
+          // Checken, ob wir Decoupled verwenden. In dem Fall
+          // TAN-Prozess von "2" auf "S" ändern
+          final Properties secmechInfo = this.getCurrentSecMechInfo();
+          final HHDVersion hhd = HHDVersion.find(secmechInfo);
+          final String segversion = secmechInfo != null ? 
secmechInfo.getProperty("segversion") : null;
+          HBCIUtils.log("detected HHD version: " + hhd,HBCIUtils.LOG_DEBUG);
+
+          if (hhd != null && hhd.getType() == Type.DECOUPLED)
           {
-            tp = KnownTANProcess.PROCESS2_STEPS;
-            ctx.getPassport().setPersistentData(KEY_PD_DECOUPLED,null);
+            Integer i = null;
+            try
+            {
+              i = Integer.parseInt(segversion);
+            }
+            catch (Exception e) {}
+            if (i != null && i.intValue() >= 7)
+            {
+              HBCIUtils.log("switching TAN process from " + tp + " to " + 
KnownTANProcess.PROCESS2_STEPS,HBCIUtils.LOG_DEBUG);
+              tp = KnownTANProcess.PROCESS2_STEPS;
+            }
           }
         }
         
@@ -487,13 +500,21 @@
      */
     private SCARequest getSCARequest(DialogContext ctx)
     {
+        HBCIUtils.log("create new SCA request",HBCIUtils.LOG_DEBUG);
+        
         final RawHBCIDialog init = ctx.getDialogInit();
         if (init == null)
-            return null;
+        {
+          HBCIUtils.log("have no dialog init, skip SCA request 
creation",HBCIUtils.LOG_DEBUG);
+          return null;
+        }
 
         // Checken, ob es ein Dialog, in dem eine SCA gemacht werden soll
         if (!KnownDialogTemplate.LIST_SEND_SCA.contains(init.getTemplate()))
-            return null;
+        {
+          HBCIUtils.log("dialog (" + init.getTemplate() + ") not in list of 
SCA dialogs, skip SCA request creation",HBCIUtils.LOG_DEBUG);
+          return null;
+        }
 
         if (Feature.PINTAN_INIT_SKIPONESTEPSCA.isEnabled())
         {
@@ -513,10 +534,11 @@
             //  Sync mit aktiviertem Init-Flip           ja
           
             final KnownDialogTemplate tpl = init.getTemplate();
-            if (!ctx.isAnonymous() && 
Objects.equals(TanMethod.ONESTEP.getId(),this.getCurrentTANMethod(false)) && 
+            final String currentTanMethod = this.getCurrentTANMethod(false);
+            if (!ctx.isAnonymous() && 
Objects.equals(TanMethod.ONESTEP.getId(),currentTanMethod) && 
                 (tpl == KnownDialogTemplate.INIT || 
(Feature.INIT_FLIP_USER_INST.isEnabled() && tpl == KnownDialogTemplate.SYNC)))
             {
-                HBCIUtils.log("skipping HKTAN for dialog 
init",HBCIUtils.LOG_DEBUG);
+                HBCIUtils.log("skipping HKTAN for dialog init [anon: " + 
ctx.isAnonymous() + ", current tan method: " + currentTanMethod + ", tpl: " + 
tpl + "]",HBCIUtils.LOG_DEBUG);
                 return null;
             }
         }
@@ -530,11 +552,17 @@
         // Erst ab HKTAN 6 noetig. Die Bank unterstuetzt es scheinbar noch 
nicht
         // Siehe B.4.3.1 - Wenn die Bank HITAN < 6 geschickt hat, dann kann 
sie keine SCA
         if (hktanVersion < 6)
-            return null;
+        {
+          HBCIUtils.log("HKTAN version < 6, skip SCA request 
creation",HBCIUtils.LOG_DEBUG);
+          return null;
+        }
 
         final SCARequest r = init.createSCARequest(secmechInfo,hktanVersion);
         if (r == null)
+        {
+          HBCIUtils.log("have no SCA request, skip SCA request 
creation",HBCIUtils.LOG_DEBUG);
           return null;
+        }
         
         if (r.getTanReference() == null)
         {
@@ -573,13 +601,21 @@
      */
     private void checkSCAResponse(DialogContext ctx)
     {
+        HBCIUtils.log("check SCA response",HBCIUtils.LOG_DEBUG);
+        
         final RawHBCIDialog init = ctx.getDialogInit();
         if (init == null)
-            return;
+        {
+          HBCIUtils.log("no init dialog, skip SCA response 
analysis",HBCIUtils.LOG_DEBUG);
+          return;
+        }
         
         // Checken, ob es ein Dialog, in dem eine SCA gemacht werden soll
         if (!KnownDialogTemplate.LIST_SEND_SCA.contains(init.getTemplate()))
-            return;
+        {
+          HBCIUtils.log("dialog (" + init.getTemplate() + ") not in list of 
SCA dialogs, skip SCA response analysis",HBCIUtils.LOG_DEBUG);
+          return;
+        }
 
         // Wenn wir noch in der anonymen Dialog-Initialisierung sind, 
interessiert uns das nicht.
         if (ctx.isAnonymous() || this.isAnonymous())
@@ -593,12 +629,18 @@
         
         // Wenn wir keinen SCA-Request gesendet haben, brauchen wir auch nicht 
nach dem Response suchen
         if (scaStep == null)
-            return;
+        {
+          HBCIUtils.log("no sca request sent, skip SCA response 
analysis",HBCIUtils.LOG_DEBUG);
+          return;
+        }
 
         // Ohne Status brauchen wir es gar nicht erst versuchen
         final HBCIMsgStatus status = ctx.getMsgStatus();
         if (status == null)
-            return;
+        {
+          HBCIUtils.log("no message status received, skip SCA response 
analysis",HBCIUtils.LOG_DEBUG);
+          return;
+        }
 
         // Bank hat uns eine Ausnahme erteilt - wir brauchen keine TAN
         if (status.segStatus != null && 
(KnownReturncode.W3076.searchReturnValue(status.segStatus.getWarnings()) != 
null || 
KnownReturncode.W3076.searchReturnValue(status.globStatus.getWarnings()) != 
null))
@@ -615,7 +657,10 @@
 
             Properties props = 
ParameterFinder.find(status.getData(),"TAN2StepRes*.");
             if (props == null || props.size() == 0)
-                return; // Wir haben kein HITAN
+            {
+              HBCIUtils.log("no hitan reponse data found",HBCIUtils.LOG_DEBUG);
+              return; // Wir haben kein HITAN
+            }
 
             // HITAN erhalten - Daten uebernehmen
             HBCIUtils.log("SCA HITAN response found, triggering TAN 
request",HBCIUtils.LOG_DEBUG);
@@ -1561,8 +1606,17 @@
                     HBCIUtils.log("detected HHD version: " + 
hhd,HBCIUtils.LOG_DEBUG);
                     if (hhd.getType() == Type.DECOUPLED)
                     {
-                      HBCIUtils.log("using decoupled hktan for step 
2",HBCIUtils.LOG_DEBUG);
-                      proc = KnownTANProcess.PROCESS2_STEPS;
+                      Integer i = null;
+                      try
+                      {
+                        i = Integer.parseInt(segversion);
+                      }
+                      catch (Exception e) {}
+                      if (i != null && i.intValue() >= 7)
+                      {
+                        HBCIUtils.log("using decoupled hktan for step 
2",HBCIUtils.LOG_DEBUG);
+                        proc = KnownTANProcess.PROCESS2_STEPS;
+                      }
                     }
 
                     // HKTAN-job für das Einreichen der TAN erzeugen
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hbci4java-hbci4j-core-3.1.76/src/main/java/org/kapott/hbci/passport/HBCIPassportPinTan.java
 
new/hbci4java-hbci4j-core-3.1.79/src/main/java/org/kapott/hbci/passport/HBCIPassportPinTan.java
--- 
old/hbci4java-hbci4j-core-3.1.76/src/main/java/org/kapott/hbci/passport/HBCIPassportPinTan.java
     2024-03-19 15:33:32.000000000 +0100
+++ 
new/hbci4java-hbci4j-core-3.1.79/src/main/java/org/kapott/hbci/passport/HBCIPassportPinTan.java
     2024-04-04 21:48:23.000000000 +0200
@@ -392,7 +392,6 @@
                     else if (hhd.getType() == Type.DECOUPLED)
                     {
                         callback = HBCICallback.NEED_PT_DECOUPLED;
-                        setPersistentData(KEY_PD_DECOUPLED,"true");
                     }
                     else
                     {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hbci4java-hbci4j-core-3.1.76/src/main/resources/hbci-300.xml 
new/hbci4java-hbci4j-core-3.1.79/src/main/resources/hbci-300.xml
--- old/hbci4java-hbci4j-core-3.1.76/src/main/resources/hbci-300.xml    
2024-03-19 15:33:32.000000000 +0100
+++ new/hbci4java-hbci4j-core-3.1.79/src/main/resources/hbci-300.xml    
2024-04-04 21:48:23.000000000 +0200
@@ -8531,8 +8531,9 @@
         </MSGdef>
 
         <MSGdef id="DialogInitSCA">
-            &MsgSigHeadUser;
-            <SEG type="TAN2Step6"/>
+            <!-- HNHBK+HNSHK --> &MsgSigHeadUser;
+            <!-- HKTAN --> <SEG type="TAN2Step6" minnum="0" maxnum="1"/>
+            <!-- HKTAN --> <SEG type="TAN2Step7" minnum="0" maxnum="1"/>
             &MsgSigTailUser;
         </MSGdef>
         <MSGdef id="DialogInitSCARes">
@@ -8563,6 +8564,7 @@
             <SEG type="KIMsg" minnum="0" maxnum="0"/>
             <SEG type="TAN2StepRes6" minnum="0" maxnum="1"/>
             <SEG type="TAN2StepRes7" minnum="0" maxnum="1"/>
+            <SEG type="SEPAInfoRes1" minnum="0" maxnum="1"/>
             &MsgSigTailInst;
         </MSGdef>
 

Reply via email to