org.bouncycastle.crypto.signers
Class PSSSigner

java.lang.Object
  extended by org.bouncycastle.crypto.signers.PSSSigner
All Implemented Interfaces:
Signer

public class PSSSigner
extends java.lang.Object
implements Signer

RSA-PSS as described in PKCS# 1 v 2.1.

Note: the usual value for the salt length is the number of bytes in the hash function.


Field Summary
private  byte[] block
           
private  AsymmetricBlockCipher cipher
           
private  Digest digest
           
private  int emBits
           
private  int hLen
           
private  byte[] mDash
           
private  java.security.SecureRandom random
           
private  byte[] salt
           
private  int sLen
           
private  byte trailer
           
static byte TRAILER_IMPLICIT
           
 
Constructor Summary
PSSSigner(AsymmetricBlockCipher cipher, Digest digest, int sLen)
          basic constructor
PSSSigner(AsymmetricBlockCipher cipher, Digest digest, int sLen, byte trailer)
           
 
Method Summary
private  void clearBlock(byte[] block)
          clear possible sensitive data
 byte[] generateSignature()
          generate a signature for the message we've been loaded with using the key we were initialised with.
 void init(boolean forSigning, CipherParameters param)
          Initialise the signer for signing or verification.
private  void ItoOSP(int i, byte[] sp)
          int to octet string.
private  byte[] maskGeneratorFunction1(byte[] Z, int zOff, int zLen, int length)
          mask generator function, as described in PKCS1v2.
 void reset()
          reset the internal state
 void update(byte b)
          update the internal digest with the byte b
 void update(byte[] in, int off, int len)
          update the internal digest with the byte array in
 boolean verifySignature(byte[] signature)
          return true if the internal state represents the signature described in the passed in array.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

TRAILER_IMPLICIT

public static final byte TRAILER_IMPLICIT
See Also:
Constant Field Values

digest

private Digest digest

cipher

private AsymmetricBlockCipher cipher

random

private java.security.SecureRandom random

hLen

private int hLen

sLen

private int sLen

emBits

private int emBits

salt

private byte[] salt

mDash

private byte[] mDash

block

private byte[] block

trailer

private byte trailer
Constructor Detail

PSSSigner

public PSSSigner(AsymmetricBlockCipher cipher,
                 Digest digest,
                 int sLen)
basic constructor

Parameters:
cipher - the assymetric cipher to use.
digest - the digest to use.
sLen - the length of the salt to use (in bytes).

PSSSigner

public PSSSigner(AsymmetricBlockCipher cipher,
                 Digest digest,
                 int sLen,
                 byte trailer)
Method Detail

init

public void init(boolean forSigning,
                 CipherParameters param)
Description copied from interface: Signer
Initialise the signer for signing or verification.

Specified by:
init in interface Signer
Parameters:
forSigning - true if for signing, false otherwise
param - necessary parameters.

clearBlock

private void clearBlock(byte[] block)
clear possible sensitive data


update

public void update(byte b)
update the internal digest with the byte b

Specified by:
update in interface Signer

update

public void update(byte[] in,
                   int off,
                   int len)
update the internal digest with the byte array in

Specified by:
update in interface Signer

reset

public void reset()
reset the internal state

Specified by:
reset in interface Signer

generateSignature

public byte[] generateSignature()
                         throws CryptoException,
                                DataLengthException
generate a signature for the message we've been loaded with using the key we were initialised with.

Specified by:
generateSignature in interface Signer
Throws:
CryptoException
DataLengthException

verifySignature

public boolean verifySignature(byte[] signature)
return true if the internal state represents the signature described in the passed in array.

Specified by:
verifySignature in interface Signer

ItoOSP

private void ItoOSP(int i,
                    byte[] sp)
int to octet string.


maskGeneratorFunction1

private byte[] maskGeneratorFunction1(byte[] Z,
                                      int zOff,
                                      int zLen,
                                      int length)
mask generator function, as described in PKCS1v2.