inescID.crypto.blindSignatures
Class EMSA_PKCS1_V1_5

java.lang.Object
  extended byinescID.crypto.blindSignatures.EMSA_PKCS1_V1_5
All Implemented Interfaces:
java.lang.Cloneable

public class EMSA_PKCS1_V1_5
extends java.lang.Object
implements java.lang.Cloneable

An implementation of the EMSA-PKCS1-V1.5 encoding scheme.

EMSA-PKCS1-V1.5 is parameterised by the choice of hash function Hash and hLen which denotes the length in octets of the hash function output.

References:

  1. Public-Key Cryptography Standards (PKCS) #1:
    RSA Cryptography Specifications Version 2.1.
    Jakob Jonsson and Burt Kaliski.


Field Summary
private  java.security.MessageDigest hash
          The underlying hash function to use with this instance.
private  int hLen
          The output size of the hash function in octets.
private static java.lang.String MD2_HASH
           
private static byte[] MD2_PREFIX
           
private static java.lang.String MD5_HASH
           
private static byte[] MD5_PREFIX
           
private  java.lang.String name
          The name of the underlying hash fuction.
private  byte[] prefix
          The DER part of DigestInfo not containing the hash value itself.
private static java.lang.String SHA160_HASH
           
private static byte[] SHA160_PREFIX
           
private static java.lang.String SHA256_HASH
           
private static byte[] SHA256_PREFIX
           
private static java.lang.String SHA384_HASH
           
private static byte[] SHA384_PREFIX
           
private static java.lang.String SHA512_HASH
           
private static byte[] SHA512_PREFIX
           
 
Constructor Summary
private EMSA_PKCS1_V1_5(java.security.MessageDigest hash, java.lang.String hashName)
          Trivial private constructor to enforce use through Factory method.
 
Method Summary
 java.lang.Object clone()
           
 byte[] encode(byte[] mHash, int emLen)
          Frames the hash of a message, along with an ID of the hash function in a DER sequence according to the specifications of EMSA-PKCS1-V1.5 as described in RFC-3447 (see class documentation).
static EMSA_PKCS1_V1_5 getInstance(java.lang.String mdName)
          Returns an instance of this object given a designated name of a hash function.
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

MD2_PREFIX

private static final byte[] MD2_PREFIX

MD5_PREFIX

private static final byte[] MD5_PREFIX

SHA160_PREFIX

private static final byte[] SHA160_PREFIX

SHA256_PREFIX

private static final byte[] SHA256_PREFIX

SHA384_PREFIX

private static final byte[] SHA384_PREFIX

SHA512_PREFIX

private static final byte[] SHA512_PREFIX

MD2_HASH

private static final java.lang.String MD2_HASH
See Also:
Constant Field Values

MD5_HASH

private static final java.lang.String MD5_HASH
See Also:
Constant Field Values

SHA160_HASH

private static final java.lang.String SHA160_HASH
See Also:
Constant Field Values

SHA256_HASH

private static final java.lang.String SHA256_HASH
See Also:
Constant Field Values

SHA384_HASH

private static final java.lang.String SHA384_HASH
See Also:
Constant Field Values

SHA512_HASH

private static final java.lang.String SHA512_HASH
See Also:
Constant Field Values

hash

private java.security.MessageDigest hash
The underlying hash function to use with this instance.


name

private java.lang.String name
The name of the underlying hash fuction.


hLen

private int hLen
The output size of the hash function in octets.


prefix

private byte[] prefix
The DER part of DigestInfo not containing the hash value itself.

Constructor Detail

EMSA_PKCS1_V1_5

private EMSA_PKCS1_V1_5(java.security.MessageDigest hash,
                        java.lang.String hashName)
                 throws java.security.NoSuchAlgorithmException

Trivial private constructor to enforce use through Factory method.

Parameters:
hash - the message digest instance to use with this scheme instance.
Method Detail

getInstance

public static final EMSA_PKCS1_V1_5 getInstance(java.lang.String mdName)
                                         throws java.security.NoSuchAlgorithmException

Returns an instance of this object given a designated name of a hash function.

Parameters:
mdName - the canonical name of a hash function.
Returns:
an instance of this object configured for use with the designated options.
Throws:
java.lang.UnsupportedOperationException - if the hash function is not implemented or does not have an ID listed in RFC-3447.
java.security.NoSuchAlgorithmException

clone

public java.lang.Object clone()

encode

public byte[] encode(byte[] mHash,
                     int emLen)

Frames the hash of a message, along with an ID of the hash function in a DER sequence according to the specifications of EMSA-PKCS1-V1.5 as described in RFC-3447 (see class documentation).

Parameters:
mHash - the byte sequence resulting from applying the message digest algorithm Hash to the message M.
emLen - intended length in octets of the encoded message, at least tLen + 11, where tLen is the octet length of the DER encoding T of a certain value computed during the encoding operation.
Returns:
encoded message, an octet string of length emLen.
Throws:
java.lang.IllegalArgumentException - if the message is too long, or if the intended encoded message length is too short.