de.osci.osci12.messageparts
Class Attachment

java.lang.Object
  extended by de.osci.osci12.messageparts.MessagePart
      extended by de.osci.osci12.messageparts.Attachment

public class Attachment
extends MessagePart

Die Attachment-Klasse repräsentiert einen Anhang einer OSCI-Nachricht. Attachments werden in Content-Elementen mittels eines href-Attributs referenziert. Sie besitzen hierfür einen Identifier (refId), der innerhalb der Nachricht, an die das Attachment gehängt wird, eindeutig sein muss.

Ein Attachment kann mit einem eigenen symmetrischen schlüssel versehen werden. Hierdurch kann in verschiedenen verschlüsselten Inhaltsdatencontainern (EncryptedDataOSCI) dasselbe Attachment referenziert werden.

Copyright © 2010 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.5
See Also:
Content, ContentContainer

Field Summary
static int STATE_OF_ATTACHMENT_ENCRYPTED
           
static int STATE_OF_ATTACHMENT_PARSING
           
 
Fields inherited from class de.osci.osci12.messageparts.MessagePart
ns
 
Constructor Summary
Attachment(java.io.InputStream ins, java.lang.String refId)
          Erzeugt ein neues Attachment-Objekt aus dem InputStream.
Attachment(java.io.InputStream ins, java.lang.String refId, javax.crypto.SecretKey secretKey)
          Erzeugt ein neues Attachment-Objekt aus dem InputStream.
Attachment(java.io.InputStream ins, java.lang.String refId, java.lang.String symmetricCipherAlgorithm)
          Erzeugt ein neues Attachment-Objekt aus dem InputStream.
 
Method Summary
 java.lang.String getContentType()
          Diese Methode liefert den Content der Binärdaten im Mime-Format.
 byte[] getDigestValue(java.lang.String digestAlgorithm)
          Liefert den Hashwert des Attachments.
 byte[] getEncryptedDigestValue(java.lang.String digestAlgorithm)
          Liefert den Hashwert nach der Verschlüsselung für die Nachrichtensignatur.
 long getLength()
          Diese Methode liefert die Länge des Attachments in Byte.
 java.util.Hashtable getMimeHeaders()
          Liefert eine Hashtable mit den MIME-Headereinträgen des MIME-boundary.
 java.lang.String getRefID()
          Liefert das refID-Attribut des Attachments.
 java.io.InputStream getStream()
          Liefert den InputStream der Daten zuRück, wenn das Attachment einer empfangenen Nachricht entnommen wurde.
 boolean hasDigestValue(java.lang.String digestAlgorithm)
          undocumented
 boolean isEncrypted()
          Liefert true, wenn es sich um ein verschlüsseltes Attachment handelt.
 void setBase64Encoding(boolean b64)
          Setzt das Encoding dea MIME-Boundary-Abschnitts auf Base64.
 void setBoundary(java.lang.String boundary)
          Setzt den MIME-Trennstring.
 void setContentType(java.lang.String contentType)
          Diese Methode setzt den Content-Type (MIME-Content-Type) der Daten
 void setMimeHeaders(java.util.Hashtable headers)
          Setzt zusätzliche MIME-Headereinträge für den MIME-boundary Abschnitt des Attachments.
 void setRefID(java.lang.String id)
          Setzt das refID-Attribut des Attachments.
 
Methods inherited from class de.osci.osci12.messageparts.MessagePart
setNSPrefixes, setNSPrefixes
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

STATE_OF_ATTACHMENT_PARSING

public static final int STATE_OF_ATTACHMENT_PARSING
See Also:
Constant Field Values

STATE_OF_ATTACHMENT_ENCRYPTED

public static final int STATE_OF_ATTACHMENT_ENCRYPTED
See Also:
Constant Field Values
Constructor Detail

Attachment

public Attachment(java.io.InputStream ins,
                  java.lang.String refId,
                  java.lang.String symmetricCipherAlgorithm)
           throws java.lang.IllegalArgumentException,
                  java.io.IOException,
                  java.security.NoSuchAlgorithmException
Erzeugt ein neues Attachment-Objekt aus dem InputStream.

Parameters:
ins - der InputStream, aus dem die Daten gelesen und an die Nachricht angehängt werden
refId - Identifier des Anhangs, z.B. Dateiname
symmetricCipherAlgorithm - symmetrischer Verschlüsselungsalgorithmus Die möglichen Werte sind Constants.SYMMETRIC_CIPHER_ALGORITHM_TDES_CBC und Constants.SYMMETRIC_CIPHER_ALGORITHM_AES128, -129, -256
Throws:
java.lang.IllegalArgumentException
java.io.IOException
java.security.NoSuchAlgorithmException
See Also:
Constants

Attachment

public Attachment(java.io.InputStream ins,
                  java.lang.String refId,
                  javax.crypto.SecretKey secretKey)
           throws java.lang.IllegalArgumentException,
                  java.io.IOException,
                  java.security.NoSuchAlgorithmException
Erzeugt ein neues Attachment-Objekt aus dem InputStream. Der geheime schlüssel wird für die Verschlüsselung des Attachments benutzt.

Parameters:
ins - der InputStream, aus dem die Daten gelesen und an die Nachricht angehängt werden
refId - Identifier des Anhangs, z.B. Dateiname. Dieser Identifier muss innerhalb der Nachricht, an die das Attachment gehängt wird, eindeutig sein
secretKey - der Secret-Key mit dem verschlüsselt werden soll Der übergebene schlüssel muss daher für diesem Algorithmus anwendbar sein Wird dieser Parameter mit 'null' übergeben, wird ein neuer AES-256-schlüssel erzeugt
Throws:
java.lang.IllegalArgumentException
java.io.IOException
java.security.NoSuchAlgorithmException

Attachment

public Attachment(java.io.InputStream ins,
                  java.lang.String refId)
           throws java.lang.IllegalArgumentException,
                  java.io.IOException,
                  java.security.NoSuchAlgorithmException
Erzeugt ein neues Attachment-Objekt aus dem InputStream. Das Attachment wird unverschlüsselt übertragen.

Parameters:
ins - der InputStream, aus dem die Daten gelesen und an die Nachricht angehängt werden.
refId - Identifier des Anhangs, z.B. Dateiname. Dieser Identifier muss innerhalb der Nachricht, an die das Attachment gehängt wird, eindeutig sein.
Throws:
java.lang.IllegalArgumentException
java.io.IOException
java.security.NoSuchAlgorithmException
Method Detail

setRefID

public void setRefID(java.lang.String id)
Setzt das refID-Attribut des Attachments. Da der hier verwendete String auch als Referenz im XML der OSCI-Nachricht verwendet wird, empfiehlt sich die Anwendung von URL-encoding.

Overrides:
setRefID in class MessagePart
Parameters:
id - refID-String
See Also:
getRefID(), URLEncoder

getRefID

public java.lang.String getRefID()
Liefert das refID-Attribut des Attachments. Da für die verwendeten Strings URL-encoding empfohlen wird, sollte ggf. URL-decoding angewendet werden.

Overrides:
getRefID in class MessagePart
Returns:
refID
See Also:
setRefID(String), URLDecoder

getLength

public long getLength()
Diese Methode liefert die Länge des Attachments in Byte.

Overrides:
getLength in class MessagePart
Returns:
Länge des Attachments

getStream

public java.io.InputStream getStream()
                              throws de.osci.osci12.encryption.OSCICipherException,
                                     java.io.IOException
Liefert den InputStream der Daten zuRück, wenn das Attachment einer empfangenen Nachricht entnommen wurde.

Returns:
InputStream der Anhangsdaten
Throws:
de.osci.osci12.encryption.OSCICipherException
java.io.IOException

getContentType

public java.lang.String getContentType()
Diese Methode liefert den Content der Binärdaten im Mime-Format.

Returns:
Content-Type der Daten #setContentType(String)

setContentType

public void setContentType(java.lang.String contentType)
Diese Methode setzt den Content-Type (MIME-Content-Type) der Daten

Parameters:
contentType - Content-Type der Daten, sollte ein gültiges Mime-Format sein (z.B. 'text/html' oder 'image/gif') #getContentType()

hasDigestValue

public boolean hasDigestValue(java.lang.String digestAlgorithm)
undocumented

Returns:
undocumented

getDigestValue

public byte[] getDigestValue(java.lang.String digestAlgorithm)
                      throws java.io.IOException,
                             java.security.NoSuchAlgorithmException
Liefert den Hashwert des Attachments.

Returns:
Hashwert des Attachments
Throws:
java.io.IOException
java.security.NoSuchAlgorithmException

setBoundary

public void setBoundary(java.lang.String boundary)
Setzt den MIME-Trennstring. Wird von Anwendungen normalerweise nicht aufgerufen.

Parameters:
boundary - Trenner

setBase64Encoding

public void setBase64Encoding(boolean b64)
Setzt das Encoding dea MIME-Boundary-Abschnitts auf Base64.

Parameters:
b64 - true -> Daten werden Base64 codiert.

isEncrypted

public boolean isEncrypted()
Liefert true, wenn es sich um ein verschlüsseltes Attachment handelt.

Returns:
verschlüsselt -> true, unverschlüsselt -> false

getEncryptedDigestValue

public byte[] getEncryptedDigestValue(java.lang.String digestAlgorithm)
                               throws java.io.IOException,
                                      java.security.NoSuchAlgorithmException
Liefert den Hashwert nach der Verschlüsselung für die Nachrichtensignatur.

Returns:
Hashwert
Throws:
java.io.IOException
java.security.NoSuchAlgorithmException

getMimeHeaders

public java.util.Hashtable getMimeHeaders()
Liefert eine Hashtable mit den MIME-Headereinträgen des MIME-boundary. Nicht enthalten sind die Headereinträge "Content-Transfer-Encoding", "Content-ID", "Content-Length" und "Content-Type". Abschnitts.

Returns:
Header

setMimeHeaders

public void setMimeHeaders(java.util.Hashtable headers)
Setzt zusätzliche MIME-Headereinträge für den MIME-boundary Abschnitt des Attachments. Die key- und value-Strings der Hashtable müssen den MIME-Spezifikationen genügen. Die Header Content-Transfer-Encoding, Content-ID, Content-Length und Content-Type werden von der Implementierung gesetzt und werden ignoriert.

Parameters:
headers - MIME-Header als key-value-Paare
See Also:
setContentType(String)


Copyright © 2010. All Rights Reserved.