de.osci.osci12.common
Class DialogHandler

java.lang.Object
  extended byde.osci.osci12.common.DialogHandler

public class DialogHandler
extends java.lang.Object

Der DialogHandler steuert die Kommunikation mit dem Intermediär. Für die Kommunikation mit dem Intermediär müssen eine Reihe von Rahmenparametern gesetzt werden. Daher ist diese Klasse zentral fuer jede Kommunikation. Ein DialogHandler-Objekt ist für jede Nachricht erforderlich, unabhängig davon, ob diese innerhalb eines impliziten oder expliziten Dialogs verarbeitet wird.

Copyright © 2004 Freie Hansestadt Bremen

Erstellt von bremen online services Entwicklungs- und Betriebsgesellschaft GmbH & Co. KG

Diese Bibliothek kann von jedermann nach Maßgabe der Bremer Lizenz für freie Softwarebibliotheken genutzt werden.

Die Lizenzbestimmungen können unter der URL www.osci.de abgerufen oder bei der OSCI-Leitstelle, Senator für Finanzen, Freie Hansestadt Bremen, Postfach 10 15 40, 28015 Bremen schriftlich angefordert werden.

Version:
1.2.1

Field Summary
static java.lang.String boundary
          Der Trenner für die einzelnen MIME boundaries
 Role client
          Client
 boolean explicitDialog
          Status impliziter/expliziter Dialog.
 java.lang.String prevChallenge
          Speichert den Challenge-Wert einer vorangegangenen Response-Nachricht.
 Role supplier
          Supplier
static java.util.ResourceBundle text
          ResourceBundle-Objekt, welches bibliotheksweit für die Textausgaben verwendet wird.
 
Constructor Summary
DialogHandler(Intermed client, Addressee supplier, TransportI transportModule)
          DialogHandler für Annahmeauftrag/-antwort und Bearbeitungsauftrag/-antwort.
DialogHandler(Originator client, Intermed supplier, TransportI transportModule)
          Konstruktor für alle Aufträge/Auftragsantworten, ausgenommen Annahmeauftrag/-antwort und Bearbeitungsauftrag/-antwort.
 
Method Summary
 void checkControlBlock(de.osci.osci12.soapheader.ControlBlockH cb)
          Interne Methode, sollte von Anwendungen nicht aufgerufen werden.
static DialogHandler findDialog(de.osci.osci12.soapheader.ControlBlockH controlBlock)
          Interne Methode, sollte von Anwendungen nicht aufgerufen werden.
 void fireEvent(int type)
          Wird von der Bibliothek aufgerufen, um Ereignisse an den registrierten ProgressEventHandlerI weiterzugeben.
 Role getClient()
          Liefert den mit diesem DialogHandler verbundenen Client.
 de.osci.osci12.soapheader.ControlBlockH getControlblock()
          Liefert den aktuellen Controlblock.
static Addressee getDefaultSupplier()
          Liefert das als Default-Supplier gesetzte Addressee-Objekt.
static Role[] getDefaultSuppliers()
          Liefert die als Default-Supplier gesetzten Addressee-Objekte.
static java.lang.String getDigestAlgorithm()
          Liefert den gesetzten Hash-Algorithmus.
 java.lang.String getLanguageList()
          Liefert die Liste der Sprachkürzel, die in den DesiredLanguages-Elementen eingetragen wird.
static OSCIDataSource getNewDataBuffer()
          Interne Methode, sollte von Anwendungen nicht aufgerufen werden.
 ProgressEventHandlerI getProgressEventHandler()
          Liefert die aktuell registrierte Implementierung des ProgressI-Interfaces.
static java.lang.String getSecureRandomAlgorithm()
          Liefert den eingestellten Algorithmus für den verwendeten Zufallszahlengenerator.
static java.security.Provider getSecurityProvider()
          Liefert den registrierten Security-Provider für die kryptographischen Operationen.
static java.lang.String getSignatureAlgorithm()
          Liefert den Identifier des Signaturalgorithmus, der für die Verschlüsselung der Nachrichten (verschlüsselte Auftragsdaten) verwendet wird.
 Role getSupplier()
          Liefert den mit diesem DialogHandler verbundenen Supplier.
 java.lang.String getSymmetricCipherAlgorithm()
          Liefert den symmetrischen Verschlüsselungs-Algorithmus.
 TransportI getTransportModule()
          Liefert die installierte Implementierung des Transportinterfaces.
 boolean isCheckSignatures()
          Liefert true, wenn die Nachrichtensignaturen (Client-/Suppliersignatur) beim Empfang überprüft werden, sonst false.
 boolean isCreateSignatures()
          Liefert true, wenn an den Nachrichten eine Signatur (Client- bzw.
 boolean isEncryption()
          Liefert true, wenn die Nachrichten als verschlüsselte Auftragsdaten versendet werden.
 boolean isExplicitDialog()
          Status des Dialogs: explizit/implizit
 void resetControlBlock()
          Setzt den ControlBlock zurück.
 void setCheckSignatures(boolean check)
          Legt fest, ob Nachrichtensignaturen (Client-/Suppliersignaturen) beim Empfang geprüft werden sollen.
 void setCreateSignatures(boolean sign)
          Legt fest, ob Nachrichtensignaturen (Client-/Suppliersignaturen) beim Versand angebracht werden sollen.
static void setDataBuffer(OSCIDataSource buffer)
          Hiermit kann eine Implementierung der abstrakten Klasse OSCIDataSource installiert werden, falls Inhaltsdaten nicht durch die default-Implementierung SwapBuffer im Arbeitsspeicher bzw. in temporären Dateien gepuffert werden sollen, sondern beispielsweise in einer Datenbank.
static void setDefaultSupplier(Addressee supplier)
          Mit dieser Methode können passive Empfänger ein Addressee-Objekt als Default-Supplier setzen, das für den Empfang einer Nachricht das richtige Decrypter- und gegebenenfalls Signer-Objekt zur Verfügung stellt.
static void setDefaultSuppliers(Addressee[] supplier)
          Mit dieser Methode können passive Empfänger Addressee-Objekte als Default-Supplier setzen, die für den Empfang von Nachrichten das Decrypter- und gegebenenfalls Signer-Objekte zur Verfügung stellen.
 void setDigestAlgorithm(java.lang.String newDigestAlgorithm)
          Setzt den Hash-Algorithmus für die Signatur der Nachrichten (Voreinstellung SHA1).
 void setEncryption(boolean doEncryption)
          Legt fest, ob die Nachrichten als verschlüsselte Auftragsdaten versendet werden.
 void setLanguageList(java.lang.String languageList)
          Setzt die Liste der Sprachkürzel, die in den DesiredLanguages-Elementen eingetragen wird.
 void setProgressEventHandler(ProgressEventHandlerI progressEventHandler)
          Registriert eine Instanz (einer Implementierung) des ProgressEventHandlerI- Interfaces.
static void setSecureRandomAlgorithm(java.lang.String algorithm)
          Mit Hilfe dieser Methode kann ein Algorithmus für den verwendeten Zufallszahlengenerator gesetzt werden.
static void setSecurityProvider(java.security.Provider provider)
          Mit dieser Methode kann ein Security-Provider gesetzt werden, der von der Bibliothek für die kryptographischen Operationen verwendet wird.
 void setSymmetricCipherAlgorithm(java.lang.String symmetricCipherAlgorithm)
          Setzen des symmetrischen Verschlüsselungs-Algorithmus (Nachrichtenverschlüsselung)
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

text

public static final java.util.ResourceBundle text
ResourceBundle-Objekt, welches bibliotheksweit für die Textausgaben verwendet wird.


client

public Role client
Client


supplier

public Role supplier
Supplier


explicitDialog

public boolean explicitDialog
Status impliziter/expliziter Dialog. Sollte von Anwendungen nicht gesetzt werden.


boundary

public static java.lang.String boundary
Der Trenner für die einzelnen MIME boundaries


prevChallenge

public java.lang.String prevChallenge
Speichert den Challenge-Wert einer vorangegangenen Response-Nachricht. Wird von Anwednungen normalerweise nicht benötigt und sollte auch nicht gesetzt werden.

Constructor Detail

DialogHandler

public DialogHandler(Originator client,
                     Intermed supplier,
                     TransportI transportModule)
Konstruktor für alle Aufträge/Auftragsantworten, ausgenommen Annahmeauftrag/-antwort und Bearbeitungsauftrag/-antwort.

Parameters:
client - Originator als Client. Sollen Aufträge signiert versendet werden oder werden verschlüsselte Rückantworten erwartet, so muss für dieses Objekt ein Decrypter- bzw. Signer-Objekt gesetzt sein. Die gilt für die Verschlüsselung bzw. Signatur der Nachricht wie für die der Inhaltsdaten.
supplier - Intermediär als Supplier.
transportModule - zu verwendende Implementierung des TransportInterfaces
See Also:
Originator

DialogHandler

public DialogHandler(Intermed client,
                     Addressee supplier,
                     TransportI transportModule)
DialogHandler für Annahmeauftrag/-antwort und Bearbeitungsauftrag/-antwort. Dieser Konstruktor wird vom Anwender nicht benötigt.

Parameters:
client - Intermediär als Client.
supplier - Addressee als Supplier.
transportModule - Implementierung des TransportInterfaces
See Also:
Addressee
Method Detail

isCheckSignatures

public boolean isCheckSignatures()
Liefert true, wenn die Nachrichtensignaturen (Client-/Suppliersignatur) beim Empfang überprüft werden, sonst false.

Returns:
Wert des Attributs
See Also:
setCheckSignatures(boolean)

setCheckSignatures

public void setCheckSignatures(boolean check)
Legt fest, ob Nachrichtensignaturen (Client-/Suppliersignaturen) beim Empfang geprüft werden sollen. Voreinstellung ist true. Achtung: Diese Eigenschaft legt lediglich fest, ob vorhandene Signaturen eingehender Nachrichten mathematisch geprüft werden. Fehlt eine Signatur ganz, wird keine Exception o.ä. ausgelöst. Es sollte daher zusätzlich OSCIMessage.isSigned() geprüft werden.

Parameters:
check - true - Signaturprüfung wird durchgeführt.
See Also:
isCheckSignatures(), OSCIMessage.isSigned()

isCreateSignatures

public boolean isCreateSignatures()
Liefert true, wenn an den Nachrichten eine Signatur (Client- bzw. Suppliersignatur) angebracht wird, sonst false.

Returns:
Wert des Attributs
See Also:
setCreateSignatures(boolean)

setCreateSignatures

public void setCreateSignatures(boolean sign)
Legt fest, ob Nachrichtensignaturen (Client-/Suppliersignaturen) beim Versand angebracht werden sollen. Voreinstellung ist true.

Parameters:
sign - true -> ausgehende Nachrichten werden signiert
See Also:
isCreateSignatures()

checkControlBlock

public void checkControlBlock(de.osci.osci12.soapheader.ControlBlockH cb)
                       throws SoapClientException
Interne Methode, sollte von Anwendungen nicht aufgerufen werden.

Throws:
SoapClientException

findDialog

public static DialogHandler findDialog(de.osci.osci12.soapheader.ControlBlockH controlBlock)
                                throws SoapClientException
Interne Methode, sollte von Anwendungen nicht aufgerufen werden.

Throws:
SoapClientException

getTransportModule

public TransportI getTransportModule()
Liefert die installierte Implementierung des Transportinterfaces.

Returns:
Transportinterface-Implementierung.
See Also:
TransportI

isEncryption

public boolean isEncryption()
Liefert true, wenn die Nachrichten als verschlüsselte Auftragsdaten versendet werden.

Returns:
Wert des Attributs
See Also:
setEncryption(boolean)

setEncryption

public void setEncryption(boolean doEncryption)
Legt fest, ob die Nachrichten als verschlüsselte Auftragsdaten versendet werden. Voreinstellung ist true.

Parameters:
doEncryption - ausgehende Nachrichten werden verschlüsselt
See Also:
isEncryption()

getControlblock

public de.osci.osci12.soapheader.ControlBlockH getControlblock()
Liefert den aktuellen Controlblock. Ein Controlblock beinhaltet Challenge, Response, ConversationID und Sequenznummer.

Returns:
ControlBlock dieses Dialogs

getProgressEventHandler

public ProgressEventHandlerI getProgressEventHandler()
Liefert die aktuell registrierte Implementierung des ProgressI-Interfaces.

Returns:
ProgressEventHandlerI-Implementierung
See Also:
ProgressEventHandlerI

setProgressEventHandler

public void setProgressEventHandler(ProgressEventHandlerI progressEventHandler)
Registriert eine Instanz (einer Implementierung) des ProgressEventHandlerI- Interfaces. Das registrierte Objekt wird im Verlauf der Verarbeitung der Nachricht durch Aufruf seiner Methode event(int,String,int) über Fortschrittsereignisse informiert.

Parameters:
progressEventHandler - ProgressEventHandlerI-Implementierung
See Also:
ProgressEventHandlerI

resetControlBlock

public void resetControlBlock()
Setzt den ControlBlock zurück. Erlaubt die Wiederverwendung dieses Objekts in einem neuen Dialog.


getClient

public Role getClient()
Liefert den mit diesem DialogHandler verbundenen Client.

Returns:
Rollenobjekt, welches als Client fungiert

getSupplier

public Role getSupplier()
Liefert den mit diesem DialogHandler verbundenen Supplier.

Returns:
Rollenobjekt, welches als Supplier fungiert

getLanguageList

public java.lang.String getLanguageList()
Liefert die Liste der Sprachkürzel, die in den DesiredLanguages-Elementen eingetragen wird.

Returns:
Liste der Sprachkürzel, getrennt durch Leerzeichen, z.B. "de en-US fr"
See Also:
setLanguageList(String)

setLanguageList

public void setLanguageList(java.lang.String languageList)
Setzt die Liste der Sprachkürzel, die in den DesiredLanguages-Elementen eingetragen wird. Voreingestellt ist das Kürzel der im default-Locale eingetragenen Sprache.

Parameters:
languageList - die Liste der Sprachkürzel, getrennt durch Leerzeichen, z.B. "de en-US fr"
See Also:
getLanguageList()

getSecureRandomAlgorithm

public static java.lang.String getSecureRandomAlgorithm()
Liefert den eingestellten Algorithmus für den verwendeten Zufallszahlengenerator.

Returns:
String-Identifier des Algorithmus
See Also:
setSecureRandomAlgorithm(String)

setSecureRandomAlgorithm

public static void setSecureRandomAlgorithm(java.lang.String algorithm)
Mit Hilfe dieser Methode kann ein Algorithmus für den verwendeten Zufallszahlengenerator gesetzt werden. Dieser String wird von der Bibliothek bei der Initialisierung an die Methode java.security.SecureRandom#getInstance(String) übergeben. Voreingestellt ist "SHA1PRNG".

Parameters:
algorithm - ein String-Identifier für den Algorithmus, der von dem installierten Provider unterstützt werden muss.
See Also:
SecureRandom

getSignatureAlgorithm

public static java.lang.String getSignatureAlgorithm()
Liefert den Identifier des Signaturalgorithmus, der für die Verschlüsselung der Nachrichten (verschlüsselte Auftragsdaten) verwendet wird.

Returns:
Identifier

setDataBuffer

public static void setDataBuffer(OSCIDataSource buffer)
Hiermit kann eine Implementierung der abstrakten Klasse OSCIDataSource installiert werden, falls Inhaltsdaten nicht durch die default-Implementierung SwapBuffer im Arbeitsspeicher bzw. in temporären Dateien gepuffert werden sollen, sondern beispielsweise in einer Datenbank.
Dieser Puffer-Mechanismus wird von den Klassen EncryptedData, Content und Attachment genutzt. Zur Implementierung eigener Klassen sind die Hinweise in der Dokumentation von OSCIDataSource zu beachten.

Parameters:
buffer - die OSCIDataSource-Implementierung
See Also:
OSCIDataSource, SwapBuffer

getNewDataBuffer

public static OSCIDataSource getNewDataBuffer()
                                       throws java.io.IOException
Interne Methode, sollte von Anwendungen nicht aufgerufen werden.

Throws:
java.io.IOException

setSecurityProvider

public static void setSecurityProvider(java.security.Provider provider)
Mit dieser Methode kann ein Security-Provider gesetzt werden, der von der Bibliothek für die kryptographischen Operationen verwendet wird. Beim Laden der Klasse wird versucht, den BouncyCastle-Provider vorzuinstallieren. Ist dieser nicht vorhanden, muss der Anwender mit dieser Methode einen eigenen Provider setzen.

Parameters:
provider - Security-Provider
See Also:
getSecurityProvider(), Provider

getSecurityProvider

public static java.security.Provider getSecurityProvider()
Liefert den registrierten Security-Provider für die kryptographischen Operationen.

See Also:
setSecurityProvider(Provider)

setDefaultSupplier

public static void setDefaultSupplier(Addressee supplier)
Mit dieser Methode können passive Empfänger ein Addressee-Objekt als Default-Supplier setzen, das für den Empfang einer Nachricht das richtige Decrypter- und gegebenenfalls Signer-Objekt zur Verfügung stellt. Falls eingehende Nachrichten für verschiedene Privatschlüssel verschlüsselt sein können, muss die Methode setDefaultSuppliers(Addressee[]) verwendet werden.

Parameters:
supplier - Rollenobjekt
See Also:
getDefaultSupplier(), setDefaultSuppliers(Addressee[]), getDefaultSuppliers()

getDefaultSupplier

public static Addressee getDefaultSupplier()
Liefert das als Default-Supplier gesetzte Addressee-Objekt. Wurden mehrere Default-Supplier konfiguriert, wird der erste (Postion 0) zurückgegeben.

See Also:
setDefaultSupplier(Addressee), setDefaultSuppliers(Addressee[]), getDefaultSuppliers()

setDefaultSuppliers

public static void setDefaultSuppliers(Addressee[] supplier)
Mit dieser Methode können passive Empfänger Addressee-Objekte als Default-Supplier setzen, die für den Empfang von Nachrichten das Decrypter- und gegebenenfalls Signer-Objekte zur Verfügung stellen.

Parameters:
supplier - Rollenobjekt
See Also:
getDefaultSupplier(), setDefaultSupplier(Addressee), getDefaultSuppliers()

getDefaultSuppliers

public static Role[] getDefaultSuppliers()
Liefert die als Default-Supplier gesetzten Addressee-Objekte.

See Also:
getDefaultSupplier(), setDefaultSupplier(Addressee), return Supplier-Objekte

getSymmetricCipherAlgorithm

public java.lang.String getSymmetricCipherAlgorithm()
Liefert den symmetrischen Verschlüsselungs-Algorithmus.

Returns:
Identifier des Algorithmus

setSymmetricCipherAlgorithm

public void setSymmetricCipherAlgorithm(java.lang.String symmetricCipherAlgorithm)
Setzen des symmetrischen Verschlüsselungs-Algorithmus (Nachrichtenverschlüsselung)

Parameters:
symmetricCipherAlgorithm -

getDigestAlgorithm

public static java.lang.String getDigestAlgorithm()
Liefert den gesetzten Hash-Algorithmus.

Returns:
Identifier des Hash-Algorithmus
See Also:
setDigestAlgorithm(String)

setDigestAlgorithm

public void setDigestAlgorithm(java.lang.String newDigestAlgorithm)
Setzt den Hash-Algorithmus für die Signatur der Nachrichten (Voreinstellung SHA1). Z.Zt. keine Unterstützung von RIPE-MD.

Parameters:
newDigestAlgorithm - Hash-Algorithmus-Identifier
See Also:
getDigestAlgorithm()

fireEvent

public void fireEvent(int type)
Wird von der Bibliothek aufgerufen, um Ereignisse an den registrierten ProgressEventHandlerI weiterzugeben. Kann selbstverständlich auch von Anwendungen zu diesem Zweck verwendet werden.

Parameters:
type - Identifier des Events
See Also:
Constants

isExplicitDialog

public boolean isExplicitDialog()
Status des Dialogs: explizit/implizit

Returns:
true -> explizit, false -> implizit


Copyright © 2004. All Rights Reserved.