Package org.kapott.hbci.passport

# Class AbstractPinTanPassport

java.lang.Object
org.kapott.hbci.passport.AbstractHBCIPassport
org.kapott.hbci.passport.AbstractPinTanPassport

All Implemented Interfaces:
  `Serializable`, `HBCIPassport`, `HBCIPassportInternal`

Direct Known Subclasses:
  `HBCIPassportPinTan`

public abstract class AbstractPinTanPassport extends AbstractHBCIPassport
Abstrakte Basis-Implementierung des PIN/TAN-Supports.

See Also:
  - Serialized Form

## Field Summary

Fields
Modifier and Type
Field
Description
`protected int`
`decoupledRefreshes`
`static final String`
`KEY_PD_CHALLENGE`
Hier speichern wir den Challenge-Text der Bank fuer die TAN-Abfrage.
`static final String`
`KEY_PD_HHDUC`
Hier speichern wir das HHDuc fuer die TAN-Abfrage.
`static final String`
`KEY_PD_ORDERREF`
Hier speichern wir die Auftragsreferenz fuer die TAN-Abfrage.
`static final String`
`KEY_PD_SCA`
Hier speichern wir, ob wir eine SCA-Ausnahme fuer einen GV von der Bank erhalten haben

### Fields inherited from interface org.kapott.hbci.passport.HBCIPassport

`ROLE_CON, ROLE_ISS, ROLE_WIT`

## Constructor Summary

Constructors
Constructor
Description
`AbstractPinTanPassport(Object initObject)`
ct.

## Method Summary

Modifier and Type
Method
Description
`void`
`activateTANVerifyMode()`
`void`
`clearPIN()`
`protected String`
`collectSegCodes(String msg)`
`void`
`deactivateTANVerifyMode()`
`List<String>`
`getAllowedTwostepMechanisms()`
`String`
`getCertFile()`
`boolean`
`getCheckCert()`
`Comm`
`getCommInstance()`
`String`
`getCryptAlg()`
`String`
`getCryptFunction()`
`String`
`getCryptKeyType()`
`String`
`getCryptMode()`
`Properties`
`getCurrentSecMechInfo()`
`String`
`getCurrentTANMethod(boolean recheck)`
Liefert das aktuelle TAN-Verfahren.
`Integer`
`getDecoupledMaxRefreshes()`
Für das Decoupled Verfahren, liefert die maximale Anzahl von refreshes.
`String`
`getHashAlg()`
`String`
`getHost()`
Ueberschrieben, um das "https://" am Anfang automatisch abzuschneiden.
`HBCIKey`
`getInstEncKey()`
`String`
`getInstEncKeyName()`
`String`
`getInstEncKeyNum()`
`String`
`getInstEncKeyVersion()`
`HBCIKey`
`getInstSigKey()`
`String`
`getInstSigKeyName()`
`String`
`getInstSigKeyNum()`
`String`
`getInstSigKeyVersion()`
`int`
`getMaxGVSegsPerMsg()`
`Integer`
`getMinimumTimeBeforeFirstDecoupledRefresh()`
Für das Decoupled Verfahren, liefert die minimale Zeit vor dem ersten refresh.
`Integer`
`getMinimumTimeBeforeNextDecoupledRefresh()`
Für das Decoupled Verfahren, liefert die minimale Zeit vor weiteren refreshes.
`String`
`getMyEncKeyName()`
`String`
`getMyEncKeyNum()`
`String`
`getMyEncKeyVersion()`
`HBCIKey`
`getMyPrivateDigKey()`
`HBCIKey`
`getMyPrivateEncKey()`
`HBCIKey`
`getMyPrivateSigKey()`
`HBCIKey`
`getMyPublicDigKey()`
`HBCIKey`
`getMyPublicEncKey()`
`HBCIKey`
`getMyPublicSigKey()`
`String`
`getMySigKeyName()`
`String`
`getMySigKeyNum()`
`String`
`getMySigKeyVersion()`
`String`
`getPassportTypeName()`
`String`
`getPIN()`
`String`
`getPinTanInfo(String code)`
Liefert "J" oder "N" aus den BPD des Geschaeftsvorfalls, ob fuer diesen eine TAN erforderlich ist.
`String`
`getProfileMethod()`
`String`
`getProfileVersion()`
`String`
`getProxy()`
`String`
`getProxyPass()`
`String`
`getProxyUser()`
`String`
`getSigAlg()`
`String`
`getSigFunction()`
`String`
`getSigMode()`
`String`
`getSysStatus()`
`Hashtable<String,Properties>`
`getTwostepMechanisms()`
`boolean`
`hasInstEncKey()`
`boolean`
`hasInstSigKey()`
`boolean`
`hasMyEncKey()`
`boolean`
`hasMySigKey()`
`void`
`incSigId()`
`boolean`
`isSupported()`
`boolean`
`needInstKeys()`
`boolean`
`needUserKeys()`
`boolean`
`needUserSig()`
`void`
`onDialogEvent(DialogEvent event, DialogContext ctx)`
Wird bei einem Dialog-Event ausgefuehrt.
`void`
`resetSecMechs()`
Kann vor `new HBCIHandler()` aufgerufen werden, um zu erzwingen, dass die Liste der unterstützten PIN/TAN-Sicherheitsverfahren neu vom Server abgeholt wird und evtl.
`void`
`setAllowedTwostepMechanisms(List<String> l)`
`void`
`setBPD(Properties p)`
`void`
`setCertFile(String filename)`
`protected void`
`setCheckCert(boolean doCheck)`
`void`
`setCurrentTANMethod(String method)`
Legt das aktuelle TAN-Verfahren fest.
`void`
`setInstEncKey(HBCIKey key)`
`void`
`setInstSigKey(HBCIKey key)`
`void`
`setMyPrivateDigKey(HBCIKey key)`
`void`
`setMyPrivateEncKey(HBCIKey key)`
`void`
`setMyPrivateSigKey(HBCIKey key)`
`void`
`setMyPublicDigKey(HBCIKey key)`
`void`
`setMyPublicEncKey(HBCIKey key)`
`void`
`setMyPublicSigKey(HBCIKey key)`
`void`
`setPIN(String pin)`
`void`
`setProxy(String proxy)`
`void`
`setProxyPass(String proxypass)`
`void`
`setProxyUser(String proxyuser)`
`boolean`
`shouldPerformDecoupledRefresh(HBCIStatus segStatus)`
Beim Decoupled Verfahren kann die Bank ein 3956 senden, wenn der Nutzer den Prozess noch nicht bestätigt hat.

### Methods inherited from class org.kapott.hbci.passport.AbstractHBCIPassport

`askForMissingData, canMixSecMethods, changePassphrase, checkForCryptDataSize, clearBPD, clearInstEncKey, clearInstSigKey, clearMyDigKey, clearMyEncKey, clearMySigKey, clearUPD, close, closeComm, fillAccountInfo, generateNewUserKeys, getAccount, getAccounts, getBLZ, getBPD, getBPDVersion, getCID, getClientData, getComm, getCommFilter, getCountry, getCustomerId, getCustomerId, getDefaultLang, getFilterType, getHBCIVersion, getInstance, getInstance, getInstance, getInstance, getInstName, getJobRestrictions, getJobRestrictions, getLang, getMaxGVperMsg, getMaxMsgSizeKB, getParamHeader, getParamSegmentNames, getParentHandlerData, getPersistentData, getPort, getSigId, getStoredCustomerId, getSuppCompMethods, getSuppLangs, getSuppSecMethods, getSuppVersions, getSysId, getUPD, getUPDVersion, getUserId, isAnonymous, onlyBPDGVs, setBLZ, setCID, setClientData, setCountry, setCustomerId, setFilterType, setHBCIVersion, setHost, setParamHeader, setParentHandlerData, setPersistentData, setPort, setProfileMethod, setProfileVersion, setSigId, setSysId, setUPD, setUserId, syncSigId, syncSysId`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface org.kapott.hbci.passport.HBCIPassport

`saveChanges`

### Methods inherited from interface org.kapott.hbci.passport.HBCIPassportInternal

`decrypt, encrypt, hash, resetPassphrase, sign, verify`

## Field Details

### KEY_PD_SCA

public static final String KEY_PD_SCA
Hier speichern wir, ob wir eine SCA-Ausnahme fuer einen GV von der Bank erhalten haben

See Also:
  - Constant Field Values

### KEY_PD_CHALLENGE

public static final String KEY_PD_CHALLENGE
Hier speichern wir den Challenge-Text der Bank fuer die TAN-Abfrage.

See Also:
  - Constant Field Values

### KEY_PD_HHDUC

public static final String KEY_PD_HHDUC
Hier speichern wir das HHDuc fuer die TAN-Abfrage.

See Also:
  - Constant Field Values

### KEY_PD_ORDERREF

public static final String KEY_PD_ORDERREF
Hier speichern wir die Auftragsreferenz fuer die TAN-Abfrage.

See Also:
  - Constant Field Values

### decoupledRefreshes

protected int decoupledRefreshes

## Constructor Details

### AbstractPinTanPassport

public AbstractPinTanPassport(Object initObject)
ct.

Parameters:
  `initObject` -

## Method Details

### getPassportTypeName

public String getPassportTypeName()

See Also:
  - `HBCIPassportInternal.getPassportTypeName()`

### setBPD

public void setBPD(Properties p)

Specified by:
  `setBPD` in interface `HBCIPassportInternal`
Overrides:
  `setBPD` in class `AbstractHBCIPassport`
See Also:
  - `AbstractHBCIPassport.setBPD(java.util.Properties)`

### onDialogEvent

public void onDialogEvent(DialogEvent event, DialogContext ctx)
Description copied from interface: `HBCIPassportInternal`
Wird bei einem Dialog-Event ausgefuehrt.

Specified by:
  `onDialogEvent` in interface `HBCIPassportInternal`
Overrides:
  `onDialogEvent` in class `AbstractHBCIPassport`
Parameters:
  `event` - das Event.
  `ctx` - der Dialog-Kontext.
See Also:
  - `AbstractHBCIPassport.onDialogEvent(org.kapott.hbci.dialog.DialogEvent, org.kapott.hbci.dialog.DialogContext)`

### shouldPerformDecoupledRefresh

public boolean shouldPerformDecoupledRefresh(HBCIStatus segStatus)
Beim Decoupled Verfahren kann die Bank ein 3956 senden, wenn der Nutzer den Prozess noch nicht bestätigt hat. In diesem Fall muss die Nachricht wiederholt werden, um erneut zu prüfen, ob die Bestätigung erfolgt ist. Wir benachrichtigen die Applikation mit einem entsprechenden Callback und warten eine mögliche Mindestzeit. Ein refresh kann entweder durch die Dialoginitialisierung in `checkSCAResponse(org.kapott.hbci.dialog.DialogContext)`, oder von konkreten Geschäftsvorfällen in `GVTAN2Step.extractResults(HBCIMsgStatus, String, int)` ausgelöst werden.

Parameters:
  `segStatus` - Der segStatus, wo ein möglicher 3956 response code zu finden ist.
Returns:
  true, wenn ein 3956 code gefunden wurde, und ein refresh durchgeführt werden soll.

### getCommInstance

public Comm getCommInstance()

Specified by:
  `getCommInstance` in class `AbstractHBCIPassport`
See Also:
  - `AbstractHBCIPassport.getCommInstance()`

### isSupported

public boolean isSupported()

See Also:
  - `HBCIPassport.isSupported()`

### getMinimumTimeBeforeFirstDecoupledRefresh

public Integer getMinimumTimeBeforeFirstDecoupledRefresh()
Für das Decoupled Verfahren, liefert die minimale Zeit vor dem ersten refresh.

Returns:
  Die minimale Zeit vor dem ersten Decoupled refresh.

### getMinimumTimeBeforeNextDecoupledRefresh

public Integer getMinimumTimeBeforeNextDecoupledRefresh()
Für das Decoupled Verfahren, liefert die minimale Zeit vor weiteren refreshes.

Returns:
  Die minimale Zeit vor weiteren Decoupled refreshes.

### getDecoupledMaxRefreshes

public Integer getDecoupledMaxRefreshes()
Für das Decoupled Verfahren, liefert die maximale Anzahl von refreshes.

Returns:
  Die maximale Anzahl von Decoupled refreshes.

### resetSecMechs

public void resetSecMechs()
Kann vor `new HBCIHandler()` aufgerufen werden, um zu erzwingen, dass die Liste der unterstützten PIN/TAN-Sicherheitsverfahren neu vom Server abgeholt wird und evtl. neu vom Nutzer abgefragt wird.

### setCurrentTANMethod

public void setCurrentTANMethod(String method)
Legt das aktuelle TAN-Verfahren fest.

Parameters:
  `method` - das aktuelle TAN-Verfahren.

### getCurrentTANMethod

public String getCurrentTANMethod(boolean recheck)
Liefert das aktuelle TAN-Verfahren.

Parameters:
  `recheck` - true, wenn die gespeicherte Auswahl auf Aktualitaet und Verfuegbarkeit geprueft werden soll. Die Funktion kann in dem Fall einen Callback ausloesen, wenn mehrere Optionen zur Wahl stehen.
Returns:
  das TAN-Verfahren.

### getCurrentSecMechInfo

public Properties getCurrentSecMechInfo()

### getTwostepMechanisms

public Hashtable<String,Properties> getTwostepMechanisms()

### getProfileMethod

public String getProfileMethod()

### getProfileVersion

public String getProfileVersion()

### needUserKeys

public boolean needUserKeys()

### needInstKeys

public boolean needInstKeys()

### needUserSig

public boolean needUserSig()

### getSysStatus

public String getSysStatus()

### hasInstSigKey

public boolean hasInstSigKey()

### hasInstEncKey

public boolean hasInstEncKey()

### hasMySigKey

public boolean hasMySigKey()

### hasMyEncKey

public boolean hasMyEncKey()

### getInstSigKey

public HBCIKey getInstSigKey()

### getInstEncKey

public HBCIKey getInstEncKey()

### getInstSigKeyName

public String getInstSigKeyName()

### getInstSigKeyNum

public String getInstSigKeyNum()

### getInstSigKeyVersion

public String getInstSigKeyVersion()

### getInstEncKeyName

public String getInstEncKeyName()

### getInstEncKeyNum

public String getInstEncKeyNum()

### getInstEncKeyVersion

public String getInstEncKeyVersion()

### getMySigKeyName

public String getMySigKeyName()

### getMySigKeyNum

public String getMySigKeyNum()

### getMySigKeyVersion

public String getMySigKeyVersion()

### getMyEncKeyName

public String getMyEncKeyName()

### getMyEncKeyNum

public String getMyEncKeyNum()

### getMyEncKeyVersion

public String getMyEncKeyVersion()

### getMyPublicDigKey

public HBCIKey getMyPublicDigKey()

### getMyPrivateDigKey

public HBCIKey getMyPrivateDigKey()

### getMyPublicSigKey

public HBCIKey getMyPublicSigKey()

### getMyPrivateSigKey

public HBCIKey getMyPrivateSigKey()

### getMyPublicEncKey

public HBCIKey getMyPublicEncKey()

### getMyPrivateEncKey

public HBCIKey getMyPrivateEncKey()

### getCryptMode

public String getCryptMode()

### getCryptAlg

public String getCryptAlg()

### getCryptKeyType

public String getCryptKeyType()

### getSigFunction

public String getSigFunction()

### getCryptFunction

public String getCryptFunction()

### getSigAlg

public String getSigAlg()

### getSigMode

public String getSigMode()

### getHashAlg

public String getHashAlg()

### setInstSigKey

public void setInstSigKey(HBCIKey key)

### setInstEncKey

public void setInstEncKey(HBCIKey key)

### setMyPublicDigKey

public void setMyPublicDigKey(HBCIKey key)

### setMyPrivateDigKey

public void setMyPrivateDigKey(HBCIKey key)

### setMyPublicSigKey

public void setMyPublicSigKey(HBCIKey key)

### setMyPrivateSigKey

public void setMyPrivateSigKey(HBCIKey key)

### setMyPublicEncKey

public void setMyPublicEncKey(HBCIKey key)

### setMyPrivateEncKey

public void setMyPrivateEncKey(HBCIKey key)

### incSigId

public void incSigId()

Specified by:
  `incSigId` in interface `HBCIPassportInternal`
Overrides:
  `incSigId` in class `AbstractHBCIPassport`

### collectSegCodes

protected String collectSegCodes(String msg)

### getPinTanInfo

public String getPinTanInfo(String code)
Liefert "J" oder "N" aus den BPD des Geschaeftsvorfalls, ob fuer diesen eine TAN erforderlich ist.

Parameters:
  `code` - der GV-Code.
Returns:
  "J" oder "N". Oder "A", wenn es ein Admin-Segment ist, jedoch keine TAN noetig ist.

### deactivateTANVerifyMode

public void deactivateTANVerifyMode()

### activateTANVerifyMode

public void activateTANVerifyMode()

### setCertFile

public void setCertFile(String filename)

### getCertFile

public String getCertFile()

### setCheckCert

protected void setCheckCert(boolean doCheck)

### getCheckCert

public boolean getCheckCert()

### getProxy

public String getProxy()

### setProxy

public void setProxy(String proxy)

### getProxyPass

public String getProxyPass()

### getProxyUser

public String getProxyUser()

### setProxyPass

public void setProxyPass(String proxypass)

### setProxyUser

public void setProxyUser(String proxyuser)

### setPIN

public void setPIN(String pin)

### getPIN

public String getPIN()

### clearPIN

public void clearPIN()

### getAllowedTwostepMechanisms

public List<String> getAllowedTwostepMechanisms()

### setAllowedTwostepMechanisms

public void setAllowedTwostepMechanisms(List<String> l)

### getMaxGVSegsPerMsg

public int getMaxGVSegsPerMsg()

Specified by:
  `getMaxGVSegsPerMsg` in interface `HBCIPassportInternal`
Overrides:
  `getMaxGVSegsPerMsg` in class `AbstractHBCIPassport`
See Also:
  - `HBCIPassportInternal.getMaxGVSegsPerMsg()`

### getHost

public String getHost()
Ueberschrieben, um das "https://" am Anfang automatisch abzuschneiden. Das sorgte schon fuer so viele unnoetige Fehler.

Specified by:
  `getHost` in interface `HBCIPassport`
Overrides:
  `getHost` in class `AbstractHBCIPassport`
Returns:
  Hostname oder IP-Adresse des HBCI-Servers
See Also:
  - `AbstractHBCIPassport.getHost()`