/* $Id: HBCIPassportInternal.java,v 1.1 2011/05/04 22:37:43 willuhn Exp $ This file is part of HBCI4Java Copyright (C) 2001-2008 Stefan Palme HBCI4Java is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. HBCI4Java is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package org.kapott.hbci.passport; import java.util.Properties; import org.kapott.hbci.comm.Comm; import org.kapott.hbci.comm.Filter; import org.kapott.hbci.manager.HBCIDialog; import org.kapott.hbci.manager.HBCIKey; import org.kapott.hbci.manager.IHandlerData; import org.kapott.hbci.status.HBCIMsgStatus; /** Interface, welches alle Passport-Varianten implementieren m�ssen. Diese Schnittstelle wird nur intern verwendet. Sie beschreibt alle Methoden, die ein Passport zur Verf�gung stellen muss, um von <em>HBCI4Java</em> benutzt werden zu k�nnen. Dieses Interface ist nicht zur Anwendung hin sichtbar (deshalb auch "<code>Internal</code>").*/ public interface HBCIPassportInternal extends HBCIPassport { public String getPassportTypeName(); public Comm getComm(); public Filter getCommFilter(); public void closeComm(); public void setHBCIVersion(String hbciversion); public String getSysId(); public String getCID(); public String getSysStatus(); public String getProfileMethod(); public String getProfileVersion(); public boolean needUserSig(); public void setInstSigKey(HBCIKey key); public void setInstEncKey(HBCIKey key); public void clearMySigKey(); public void clearMyEncKey(); public void clearMyDigKey(); public void setMyPublicSigKey(HBCIKey key); public void setMyPrivateSigKey(HBCIKey key); public void setMyPublicEncKey(HBCIKey key); public void setMyPrivateEncKey(HBCIKey key); public void setMyPublicDigKey(HBCIKey key); public void setMyPrivateDigKey(HBCIKey key); public String getInstSigKeyName(); public String getInstSigKeyNum(); public String getInstSigKeyVersion(); public String getInstEncKeyName(); public String getInstEncKeyNum(); public String getInstEncKeyVersion(); public String getMySigKeyName(); public String getMySigKeyNum(); public String getMySigKeyVersion(); public String getMyEncKeyName(); public String getMyEncKeyNum(); public String getMyEncKeyVersion(); public boolean canMixSecMethods(); public String getLang(); public Long getSigId(); public String getCryptKeyType(); public String getCryptFunction(); public String getCryptAlg(); public String getCryptMode(); public String getSigFunction(); public String getSigAlg(); public String getSigMode(); public String getHashAlg(); public void setBPD(Properties bpd); public void setUPD(Properties upd); public void setSigId(Long sigid); public void setSysId(String sysid); public void setCID(String cid); public void incSigId(); public void setProfileMethod(String method); public void setProfileVersion(String version); public HBCIKey[][] generateNewUserKeys(); public byte[] hash(byte[] data); public byte[] sign(byte[] data); public boolean verify(byte[] data,byte[] sig); public byte[][] encrypt(byte[] plainMsg); public byte[] decrypt(byte[] cryptedKey,byte[] encryptedMsg); public Properties getParamSegmentNames(); public Properties getJobRestrictions(String specname); public Properties getJobRestrictions(String gvname,String version); public void setPersistentData(String id,Object o); public Object getPersistentData(String id); public void resetPassphrase(); public boolean isAnonymous(); public void setParentHandlerData(IHandlerData handler); public IHandlerData getParentHandlerData(); /* Diese Methode wird nach jeder Dialog-Initialisierung aufgerufen. Ein * Passport-Objekt kann den Status der Response mit Hilfe von msgStatus * auswerten. Durch Zur�ckgeben von "true" wird angezeigt, dass eine * erneute Dialog-Initialisierung stattfinden sollte (z.B. weil sich grund- * legende Zugangsdaten ge�ndert haben, secMechs neu festgelegt wurden o.�.) */ public boolean postInitResponseHook(HBCIMsgStatus msgStatus, boolean anonDialog); /* Diese Methode wird aufgerufen, bevor ein "normaler" Dialog (also mit GVs) * gef�hrt wird. */ public void beforeCustomDialogHook(HBCIDialog dialog); /* Diese Methode wird aufgerufen, nachdem bei einem normalen Dialog die * Dialog-Initialisierung abgeschlossen ist. * Wird im Moment nur von PinTan-Passports benutzt, um bei * Verwendung des Zweischritt-Verfahrens die Message-Liste zu patchen */ public void afterCustomDialogInitHook(HBCIDialog dialog); /* Gibt zur�ck, wieviele GV-Segmente in einer Nachricht enthalten sein d�rfen. * Normalerweise wird das schon durch die BPD bzw. die Job-Params festgelegt, * deswegen geben die meisten Passport-Implementierungen hier 0 zur�ck (also * keine weiteren Einschr�nkungen neben den BPD-Daten). Im Fall von PIN/TAN * muss jedoch daf�r gesorgt werden, dass tats�chlich nur ein einziges * Auftragssegment in einer HBCI-Nachricht steht (weil sonst das "Signieren" * mit einer TAN schwierig wird). Deswegen gibt die PIN/TAN-Implementierung * dieser Methode 1 zur�ck. * In HBCIDialog.addTask() wird diese Methode aufgerufen, um festzustellen, * ob f�r den hinzuzuf�genden Task eine neue Nachricht erzeugt werden muss * oder nicht. */ public int getMaxGVSegsPerMsg(); }