Elexis API documentation
Version 2.1.6 as of December 11 2011

ch.rgw.crypt
Class GnuPG

java.lang.Object
  extended by ch.rgw.crypt.GnuPG
All Implemented Interfaces:
Cryptologist

public class GnuPG
extends java.lang.Object
implements Cryptologist

A class that implements PGP interface for Java.

It calls gpg (GnuPG) program to do all the PGP commands. $Id: GnuPG.java 4440 2008-09-25 12:18:51Z rgw_ch $

Version:
0.5.1
Author:
Yaniv Yemini, January 2004., Based on a class GnuPG by John Anderson, which can be found, at: http://lists.gnupg.org/pipermail/gnupg-devel/2002-February/018098.html, modified for use in JBother by Andrey Zakirov, February 2005
See Also:
- http://www.gnupg.org/ Modified 2006/10 by G. Weirich for use in Elexis

Nested Class Summary
 
Nested classes/interfaces inherited from interface ch.rgw.crypt.Cryptologist
Cryptologist.SYMM_ALGOS, Cryptologist.VERIFY_RESULT
 
Constructor Summary
GnuPG(java.lang.String useIdentity)
          Default constructor
 
Method Summary
 boolean addCertificate(byte[] certEncoded)
           
 boolean addCertificate(java.security.cert.X509Certificate cert)
           
 boolean changeKeyPassphrase(java.lang.String key, java.lang.String oldpwd, java.lang.String newpwd)
           
 boolean clearSign(java.lang.String inStr, java.lang.String secID, java.lang.String passPhrase)
          ClearSign
 Result<byte[]> decrypt(byte[] encrypted)
          decrypt a byte array
 boolean decrypt(java.io.File inFile, java.lang.String outFile, java.lang.String passPhrase)
           
 void decrypt(java.io.InputStream source, java.io.OutputStream dest)
           
 void decrypt(java.io.InputStream source, java.io.OutputStream dest, byte[] key)
          Decrypt a symmetrically encrypted stream
 boolean decrypt(java.lang.String inStr, java.lang.String passPhrase)
          Decrypt
 byte[] encrypt(byte[] source, java.lang.String receiverKeyName)
          encrypt a byte array asymmetrically
 void encrypt(java.io.InputStream source, java.io.OutputStream dest, Cryptologist.SYMM_ALGOS algo, byte[] key)
          Encrypt a stream symmetrically with the provided key.
 void encrypt(java.io.InputStream source, java.io.OutputStream dest, java.lang.String receiverKeyName)
          enctrypt a Stream asymmetrically for the receiver
 boolean encrypt(java.lang.String inStr, java.lang.String keyID)
          Encrypt
 java.security.cert.X509Certificate generateCertificate(java.security.PublicKey pk, java.lang.String alias, TimeTool validFrom, TimeTool validUntil)
           
 boolean generateKey(java.lang.String name, java.lang.String mail, char[] pwd, java.lang.String bem)
          Generate a key pair.
 java.security.KeyPair generateKeys(java.lang.String alias, char[] pwd, TimeTool validFrom, TimeTool validUntil)
           
 java.security.cert.X509Certificate getCertificate(java.lang.String alias)
           
 byte[] getCertificateEncoded(java.lang.String alias)
           
 java.lang.String getErrorString()
          Get error output from GnuPG process
 int getExitCode()
          Get GnuPG exit code
 boolean getKey(java.lang.String id)
          get public key
 java.lang.String getResult()
          Get processing result
 java.lang.String getUser()
           
 boolean hasCertificateOf(java.lang.String alias)
           
 boolean hasKeyOf(java.lang.String alias)
           
 boolean importKey(java.lang.String key)
           
 boolean importKeyFile(java.lang.String keyname)
          import key
 boolean isAvailable()
           
 boolean isFunctional()
           
 boolean listKeys(java.lang.String ID)
          List public keys in keyring
 boolean listSecretKeys(java.lang.String ID)
          List secret keys in keyring
 boolean removeCertificate(java.lang.String alias)
           
 void runWithCommand(java.lang.String command)
           
 void setExecutable(java.lang.String exe)
           
 void setHomedir(java.lang.String dir)
           
 void setPassphrase(char[] pwd)
           
 byte[] sign(byte[] source)
          Sign a byte array (create and sign a MAC)
 boolean sign(java.lang.String inStr, java.lang.String secID, java.lang.String passPhrase)
          Sign
 boolean signAndEncrypt(java.io.File inFile, java.lang.String secID, java.lang.String keyID, java.lang.String passphrase)
           
 boolean signAndEncrypt(java.lang.String inStr, java.lang.String secID, java.lang.String keyID, java.lang.String passPhrase)
          Signs and encrypts a string
 boolean signKey(java.lang.String keyname, java.lang.String passphrase)
           
static java.lang.String streamEncoding()
          Gets stream encoding
 Cryptologist.VERIFY_RESULT verify(byte[] data, byte[] signature, java.lang.String signerKeyName)
          Verify a MAC
 boolean verify(java.lang.String signedString)
           
 boolean verify(java.lang.String signedString, java.lang.String dataString)
          Verify a signature
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

GnuPG

public GnuPG(java.lang.String useIdentity)
Default constructor

Method Detail

setPassphrase

public void setPassphrase(char[] pwd)

setExecutable

public void setExecutable(java.lang.String exe)

setHomedir

public void setHomedir(java.lang.String dir)

sign

public boolean sign(java.lang.String inStr,
                    java.lang.String secID,
                    java.lang.String passPhrase)
Sign

Parameters:
inStr - input string to sign
secID - ID of secret key to sign with
passPhrase - passphrase for the secret key to sign with
Returns:
true upon success

clearSign

public boolean clearSign(java.lang.String inStr,
                         java.lang.String secID,
                         java.lang.String passPhrase)
ClearSign

Parameters:
inStr - input string to sign
secID - ID of secret key to sign with
passPhrase - passphrase for the secret key to sign with
Returns:
true upon success

signAndEncrypt

public boolean signAndEncrypt(java.lang.String inStr,
                              java.lang.String secID,
                              java.lang.String keyID,
                              java.lang.String passPhrase)
Signs and encrypts a string

Parameters:
inStr - input string to encrypt
secID - ID of secret key to sign with
keyID - ID of public key to encrypt with
passPhrase - passphrase for the secret key to sign with
Returns:
true upon success

signAndEncrypt

public boolean signAndEncrypt(java.io.File inFile,
                              java.lang.String secID,
                              java.lang.String keyID,
                              java.lang.String passphrase)

encrypt

public boolean encrypt(java.lang.String inStr,
                       java.lang.String keyID)
Encrypt

Parameters:
inStr - input string to encrypt
secID - ID of secret key to use
keyID - ID of public key to encrypt with
Returns:
true upon success

decrypt

public boolean decrypt(java.lang.String inStr,
                       java.lang.String passPhrase)
Decrypt

Parameters:
inStr - input string to decrypt
passPhrase - passphrase for the secret key to decrypt with
Returns:
true upon success

signKey

public boolean signKey(java.lang.String keyname,
                       java.lang.String passphrase)

decrypt

public boolean decrypt(java.io.File inFile,
                       java.lang.String outFile,
                       java.lang.String passPhrase)

listKeys

public boolean listKeys(java.lang.String ID)
List public keys in keyring

Parameters:
ID - ID of public key to list, blank for all
Returns:
true upon success

getKey

public boolean getKey(java.lang.String id)
get public key


importKeyFile

public boolean importKeyFile(java.lang.String keyname)
import key


importKey

public boolean importKey(java.lang.String key)

listSecretKeys

public boolean listSecretKeys(java.lang.String ID)
List secret keys in keyring

Parameters:
ID - ID of secret key to list, blank for all
Returns:
true upon success

generateKey

public boolean generateKey(java.lang.String name,
                           java.lang.String mail,
                           char[] pwd,
                           java.lang.String bem)
Generate a key pair. This will open the gpg-console to create the key interactively

Returns:

changeKeyPassphrase

public boolean changeKeyPassphrase(java.lang.String key,
                                   java.lang.String oldpwd,
                                   java.lang.String newpwd)

verify

public boolean verify(java.lang.String signedString,
                      java.lang.String dataString)
Verify a signature

Parameters:
inStr - signature to verify
Returns:
true if verified.

verify

public boolean verify(java.lang.String signedString)

getResult

public java.lang.String getResult()
Get processing result

Returns:
result string.

getErrorString

public java.lang.String getErrorString()
Get error output from GnuPG process

Returns:
error string.

getExitCode

public int getExitCode()
Get GnuPG exit code

Returns:
exit code.

runWithCommand

public void runWithCommand(java.lang.String command)

isAvailable

public boolean isAvailable()

streamEncoding

public static java.lang.String streamEncoding()
Gets stream encoding

Returns:
stream encoding.

decrypt

public Result<byte[]> decrypt(byte[] encrypted)
Description copied from interface: Cryptologist
decrypt a byte array

Specified by:
decrypt in interface Cryptologist
Parameters:
encrypted - the encrypted bytes
Returns:
the plain array or null of decryption failed

sign

public byte[] sign(byte[] source)
Description copied from interface: Cryptologist
Sign a byte array (create and sign a MAC)

Specified by:
sign in interface Cryptologist
Parameters:
source - the bytes to sign
Returns:
the signature

encrypt

public byte[] encrypt(byte[] source,
                      java.lang.String receiverKeyName)
Description copied from interface: Cryptologist
encrypt a byte array asymmetrically

Specified by:
encrypt in interface Cryptologist
Parameters:
source - the plain bytes
receiverKeyName - name of the receiver's public key
Returns:
the encrypted bytes or null if encryption failed

verify

public Cryptologist.VERIFY_RESULT verify(byte[] data,
                                         byte[] signature,
                                         java.lang.String signerKeyName)
Description copied from interface: Cryptologist
Verify a MAC

Specified by:
verify in interface Cryptologist
Parameters:
data - the signed data
signature - the signed digest
signerKeyName - name of the signer's public key
Returns:

addCertificate

public boolean addCertificate(java.security.cert.X509Certificate cert)
Specified by:
addCertificate in interface Cryptologist

generateCertificate

public java.security.cert.X509Certificate generateCertificate(java.security.PublicKey pk,
                                                              java.lang.String alias,
                                                              TimeTool validFrom,
                                                              TimeTool validUntil)
Specified by:
generateCertificate in interface Cryptologist

generateKeys

public java.security.KeyPair generateKeys(java.lang.String alias,
                                          char[] pwd,
                                          TimeTool validFrom,
                                          TimeTool validUntil)
Specified by:
generateKeys in interface Cryptologist

hasCertificateOf

public boolean hasCertificateOf(java.lang.String alias)
Specified by:
hasCertificateOf in interface Cryptologist

hasKeyOf

public boolean hasKeyOf(java.lang.String alias)
Specified by:
hasKeyOf in interface Cryptologist

getUser

public java.lang.String getUser()
Specified by:
getUser in interface Cryptologist

getCertificate

public java.security.cert.X509Certificate getCertificate(java.lang.String alias)
Specified by:
getCertificate in interface Cryptologist

isFunctional

public boolean isFunctional()
Specified by:
isFunctional in interface Cryptologist

addCertificate

public boolean addCertificate(byte[] certEncoded)
Specified by:
addCertificate in interface Cryptologist

getCertificateEncoded

public byte[] getCertificateEncoded(java.lang.String alias)
                             throws CryptologistException
Specified by:
getCertificateEncoded in interface Cryptologist
Throws:
CryptologistException

removeCertificate

public boolean removeCertificate(java.lang.String alias)
Specified by:
removeCertificate in interface Cryptologist

decrypt

public void decrypt(java.io.InputStream source,
                    java.io.OutputStream dest)
             throws CryptologistException
Specified by:
decrypt in interface Cryptologist
Throws:
CryptologistException

encrypt

public void encrypt(java.io.InputStream source,
                    java.io.OutputStream dest,
                    java.lang.String receiverKeyName)
             throws CryptologistException
Description copied from interface: Cryptologist
enctrypt a Stream asymmetrically for the receiver

Specified by:
encrypt in interface Cryptologist
Throws:
CryptologistException

encrypt

public void encrypt(java.io.InputStream source,
                    java.io.OutputStream dest,
                    Cryptologist.SYMM_ALGOS algo,
                    byte[] key)
             throws CryptologistException
Description copied from interface: Cryptologist
Encrypt a stream symmetrically with the provided key.

Specified by:
encrypt in interface Cryptologist
Parameters:
source - the unencrypte source
dest - the encrypted destination
algo - the algorithm to use
key - the key in byte-encoded format. Must match the algorithm
Throws:
CryptologistException

decrypt

public void decrypt(java.io.InputStream source,
                    java.io.OutputStream dest,
                    byte[] key)
             throws CryptologistException
Description copied from interface: Cryptologist
Decrypt a symmetrically encrypted stream

Specified by:
decrypt in interface Cryptologist
Parameters:
source - the encrypted origin
dest - the decrypted destination
key - the key to use (must be in approprioate format for encryption method. The Method will be read from the Stream header)
Throws:
CryptologistException

Elexis API documentation
Version 2.1.6 as of December 11 2011

Copyright 2005-2011 by Gerry Weirich, Elexis