Package org.kapott.hbci.tools

## Class CryptUtils

- java.lang.Object
- - org.kapott.hbci.tools.CryptUtils

    public class CryptUtils
    extends java.lang.Object

Hilfsklasse zum Erzeugen und Pruefen von Signaturen und Hashes sowie zum Ver- und Entschluessen.

### Field Summary

Fields
`static java.lang.String` `CRYPT_ALG_AES` Verschluesselungsalgorithmus AES.
`static java.lang.String` `CRYPT_ALG_AES_CBC` Ciphermoduss fuer AES.
`static java.lang.String` `CRYPT_ALG_RSA` Verschluesselungsalgorithmus RSA.
`static java.lang.String` `HASH_ALG_RIPE_MD160` Hash-Algorithmus RIPEMD160.
`static java.lang.String` `HASH_ALG_SHA1` Hash-Algorithmus SHA1.
`static java.lang.String` `HASH_ALG_SHA256` Hash-Algorithmus SHA-256.
`static java.lang.String` `SIGN_ALG_RSA` Signatur-Alorithmus RSASSA-PSS (PKCS1)

### Constructor Summary

Constructors
`CryptUtils()`

### Method Summary

All Methods Static Methods Concrete Methods
`static int` `getCryptDataSize​(java.security.interfaces.RSAPublicKey key)` Liefert die Anzahl der Bytes fuer den Schluessel.
`static java.lang.String` `getSecurityProvider()` Liefert einen optional als Kernel-Parameter definierten Security-Provier.
`static byte[]` `hash​(byte[] data, java.lang.String alg)` Hasht die Daten.
`static java.lang.String` `hash​(java.lang.String data, java.lang.String alg)` Hasht die Daten.
`static byte[]` `padLeft​(byte[] buffer, int size)` Fuehrt ein Null-Padding links auf die angegebene Laenge durch.
`static byte[]` `padLeft​(byte[] buffer, java.security.interfaces.RSAPublicKey key)` Fuehrt ein Null-Padding links auf die Laenge des Schluessels durch.
`static byte[]` `sign​(byte[] data, java.security.PrivateKey key, java.lang.String signAlg, java.lang.String hashAlg)` Signiert die Daten.
`static boolean` `verifySignature​(byte[] data, byte[] signature, java.security.PublicKey key, java.lang.String signAlg, java.lang.String hashAlg)` Prueft die Gueltigkeit der Signatur.

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

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

### Field Detail

#### HASH_ALG_RIPE_MD160

    public static final java.lang.String HASH_ALG_RIPE_MD160

Hash-Algorithmus RIPEMD160.

See Also:
  Constant Field Values

#### HASH_ALG_SHA256

    public static final java.lang.String HASH_ALG_SHA256

Hash-Algorithmus SHA-256.

See Also:
  Constant Field Values

#### HASH_ALG_SHA1

    public static final java.lang.String HASH_ALG_SHA1

Hash-Algorithmus SHA1.

See Also:
  Constant Field Values

#### SIGN_ALG_RSA

    public static final java.lang.String SIGN_ALG_RSA

Signatur-Alorithmus RSASSA-PSS (PKCS1)

See Also:
  Constant Field Values

#### CRYPT_ALG_AES

    public static final java.lang.String CRYPT_ALG_AES

Verschluesselungsalgorithmus AES.

See Also:
  Constant Field Values

#### CRYPT_ALG_RSA

    public static final java.lang.String CRYPT_ALG_RSA

Verschluesselungsalgorithmus RSA.

See Also:
  Constant Field Values

#### CRYPT_ALG_AES_CBC

    public static final java.lang.String CRYPT_ALG_AES_CBC

Ciphermoduss fuer AES.

See Also:
  Constant Field Values

### Constructor Detail

#### CryptUtils

    public CryptUtils()

### Method Detail

#### getSecurityProvider

    public static java.lang.String getSecurityProvider()

Liefert einen optional als Kernel-Parameter definierten Security-Provier.

Returns:
  der Security-Provider oder NULL, wenn keiner definiert ist.

#### hash

    public static final java.lang.String hash​(java.lang.String data,
                                              java.lang.String alg)
                                       throws HBCI_Exception

Hasht die Daten.

Parameters:
  `data` - die zu hashenden Daten.
  `alg` - der zu verwendende Algorithmus.
Returns:
  der Hash.
Throws:
  `HBCI_Exception`

#### hash

    public static final byte[] hash​(byte[] data,
                                    java.lang.String alg)
                             throws HBCI_Exception

Hasht die Daten.

Parameters:
  `data` - die zu hashenden Daten.
  `alg` - der zu verwendende Algorithmus.
Returns:
  der Hash.
Throws:
  `HBCI_Exception`

#### verifySignature

    public static final boolean verifySignature​(byte[] data,
                                                byte[] signature,
                                                java.security.PublicKey key,
                                                java.lang.String signAlg,
                                                java.lang.String hashAlg)
                                         throws HBCI_Exception

Prueft die Gueltigkeit der Signatur.

Parameters:
  `data` - die zu pruefenden Daten.
  `signature` - die Signatur.
  `key` - der Public-Key zur Signatur.
  `signAlg` - der verwendete Signatur-Algorithmus.
  `hashAlg` - der verwendete Hash-Algorithmus.
Returns:
  true, wenn die Signatur ok war.
Throws:
  `HBCI_Exception`

#### sign

    public static final byte[] sign​(byte[] data,
                                    java.security.PrivateKey key,
                                    java.lang.String signAlg,
                                    java.lang.String hashAlg)
                             throws HBCI_Exception

Signiert die Daten.

Parameters:
  `data` - die zu hashenden Daten.
  `key` - der fuer die Signatur zu verwendende Private-Key.
  `signAlg` - der zu verwendende Signatur-Algorithmus.
  `hashAlg` - der zu verwendende Hash-Algorithmus.
Returns:
  die Signatur.
Throws:
  `HBCI_Exception`

#### getCryptDataSize

    public static int getCryptDataSize​(java.security.interfaces.RSAPublicKey key)

Liefert die Anzahl der Bytes fuer den Schluessel.

Parameters:
  `key` - der Schluessel.
Returns:
  die Laenge in Bytes.

#### padLeft

    public static byte[] padLeft​(byte[] buffer,
                                 java.security.interfaces.RSAPublicKey key)

Fuehrt ein Null-Padding links auf die Laenge des Schluessels durch.

Parameters:
  `buffer` - der Buffer.
  `key` - der Schluessel.
Returns:
  der ggf. angepasste Buffer.

#### padLeft

    public static byte[] padLeft​(byte[] buffer,
                                 int size)

Fuehrt ein Null-Padding links auf die angegebene Laenge durch.

Parameters:
  `buffer` - der Buffer.
  `size` - die Laenge.
Returns:
  der ggf. angepasste Buffer.