

PREV CLASS NEXT CLASS  FRAMES NO FRAMES  
SUMMARY: NESTED  FIELD  CONSTR  METHOD  DETAIL: FIELD  CONSTR  METHOD 
java.lang.Object net.rim.device.api.crypto.DHCryptoSystem
public final class DHCryptoSystem
Represents the system of asymmetric cryptography which is based on the Discrete Logarithm Problem.
DiffieHellman ( DH ) is defined in P1363, PKCS #3 and various other spots.
DHPublicKey
,
DHPrivateKey
Field Summary  


static int 
DEFAULT_PRIVATE_KEY_MIN_RANDOM_BITS
Represents the minimum number of random bits a private key should contain. 

static String 
SUN1024
Represents the 1024 bit parameters defined in the SUN JCA. 

static String 
SUN512
Represents the 512 bit parameters defined in the SUN JCA. 

static String 
SUN768
Represents the 768 bit parameters defined in the SUN JCA. 

static String 
WTLS1
Represents the WTLS #1 DH parameters (512 bits). 

static String 
WTLS2
Represents the WTLS #2 DH parameters (768 bits). 
Constructor Summary  


DHCryptoSystem()
Creates the DHCryptoSystem object with the SUN1024 parameters. 


DHCryptoSystem(byte[] p,
byte[] g)
Creates a DHCryptoSystem object with the specified p and g
domain parameters. 


DHCryptoSystem(byte[] p,
byte[] q,
byte[] g)
Creates a DHCryptoSystem with the specified p, q and g
domain parameters. 


DHCryptoSystem(byte[] p,
byte[] q,
byte[] g,
int privateKeyMinRandomBits)
Creates a DHCryptoSystem object with the specified p, q and g
domain parameters, as well as the minimum number of private key random bits. 


DHCryptoSystem(byte[] p,
byte[] q,
byte[] g,
int privateKeyMinRandomBits,
String name)
Creates a DHCryptoSystem object with the specified p, q and g
domain parameters, as well as the minimum number of private key random bits. 


DHCryptoSystem(byte[] p,
byte[] g,
int privateKeyMinRandomBits)
Creates a DHCryptoSystem object with the specified p and g
domain parameters, as well as the minimum number of private key random bits. 


DHCryptoSystem(String name)
Creates the DHCryptoSystem object using the specified parameters. 


DHCryptoSystem(String name,
int privateKeyMinRandomBits)
Creates the DHCryptoSystem object using the specified parameters as well as
the minimum number of private key random bits. 


DHCryptoSystem(DHCryptoToken cryptoToken,
byte[] p,
byte[] q,
byte[] g,
int privateKeyMinRandomBits,
String name)
Creates a DHCryptoSystem object with the specified p, q and g
domain parameters, as well as the minimum number of private key random bits. 


DHCryptoSystem(DHCryptoToken cryptoToken,
String name,
int privateKeyMinRandomBits)
Creates the DHCryptoSystem using the specified parameters as well as
the minimum number of private key random bits. 


DHCryptoSystem(DHCryptoToken cryptoToken,
CryptoTokenCryptoSystemData cryptoTokenData)
Creates a DHCryptoSystem object using the specified crypto
token and crypto system. 
Method Summary  


DHKeyPair 
createDHKeyPair()


KeyPair 
createKeyPair()
Creates a new key pair using this crypto system. 

boolean 
equals(Object obj)
Indicates whether some other object is "equal to" this one. 

String 
getAlgorithm()
Returns a String that indicates the algorithm, ie "DH". 

AsymmetricCryptoToken 
getAsymmetricCryptoToken()
Returns the DH crypto token. 

int 
getBitLength()
Returns the number of bits (aka the "strength") of the crypto system, eg 1024 (for RSA), 163 (for EC). 

CryptoTokenCryptoSystemData 
getCryptoTokenData()
Returns the crypto token associated with the crypto system. 

byte[] 
getG()
Returns the g domain parameter. 

String 
getName()
Returns a String that indicates the set of parameters in use, eg "WTLS1", or null. 

byte[] 
getP()
Returns the p domain parameter. 

int 
getPrivateKeyLength()
Returns the length of the private key. 

int 
getPrivateKeyMinRandomBits()
Returns the minimum number of private key random bits. 

int 
getPublicKeyLength()
Returns the length of the public key. 

byte[] 
getQ()
Returns the q domain parameter, or null. 

int 
hashCode()
Returns a hash code value for the object. 

boolean 
isStrong()
Returns whether or not the CryptoSystem is cryptographically strong as of the release date of the code. 

void 
verify()
Performs integrity checks on the crypto system parameters. 
Methods inherited from class java.lang.Object 

getClass, notify, notifyAll, toString, wait, wait, wait 
Field Detail 

public static final String WTLS1
public static final String WTLS2
public static final String SUN512
public static final String SUN768
public static final String SUN1024
public static final int DEFAULT_PRIVATE_KEY_MIN_RANDOM_BITS
Note: This default value depends on the size of P.
Constructor Detail 

public DHCryptoSystem()
DHCryptoSystem
object with the SUN1024 parameters.
public DHCryptoSystem(String name)
DHCryptoSystem
object using the specified parameters.
name
 Specifies the parameters to use.public DHCryptoSystem(String name, int privateKeyMinRandomBits)
DHCryptoSystem
object using the specified parameters as well as
the minimum number of private key random bits.
name
 Specifies the parameters to use.privateKeyMinRandomBits
 Overrides the default minimum number of private key random bits.public DHCryptoSystem(DHCryptoToken cryptoToken, String name, int privateKeyMinRandomBits) throws CryptoTokenException, CryptoUnsupportedOperationException, UnsupportedCryptoSystemException
DHCryptoSystem
using the specified parameters as well as
the minimum number of private key random bits.
cryptoToken
 The token associated with the crypto system.name
 Specifies the parameters to use.privateKeyMinRandomBits
 Overrides the default minimum number of
private key random bits.
CryptoTokenException
 Thrown if there was an error communicating
with the token.
CryptoUnsupportedOperationException
 Thrown if a call is made to
an unsupported operation.
UnsupportedCryptoSystemException
 Thrown if the specified crypto
token is invalid.public DHCryptoSystem(byte[] p, byte[] g) throws InvalidCryptoSystemException, UnsupportedCryptoSystemException
DHCryptoSystem
object with the specified p and g
domain parameters.
p
 The p domain parameter.g
 The g domain parameter.
InvalidCryptoSystemException
 Thrown if any or both of the
specified parameters are invalid.
UnsupportedCryptoSystemException
 Thrown if the specified crypto
system is invalid.public DHCryptoSystem(byte[] p, byte[] g, int privateKeyMinRandomBits) throws InvalidCryptoSystemException, UnsupportedCryptoSystemException
DHCryptoSystem
object with the specified p and g
domain parameters, as well as the minimum number of private key random bits.
p
 The p domain parameter.g
 The g domain parameter.privateKeyMinRandomBits
 An integer that represents the minimum
number of private key random bits. This value overrides the default value.
InvalidCryptoSystemException
 Thrown if any or both of the
specified parameters are invalid.
UnsupportedCryptoSystemException
 Thrown if the specified crypto
system is invalid.public DHCryptoSystem(byte[] p, byte[] q, byte[] g) throws InvalidCryptoSystemException, UnsupportedCryptoSystemException
DHCryptoSystem
with the specified p, q and g
domain parameters.
p
 The p domain parameter.q
 The q domain parameter. May be null.g
 The g domain parameter.
InvalidCryptoSystemException
 Thrown if any or both of the
specified parameters are invalid.
UnsupportedCryptoSystemException
 Thrown if the specified crypto
system is invalid.public DHCryptoSystem(byte[] p, byte[] q, byte[] g, int privateKeyMinRandomBits) throws InvalidCryptoSystemException, UnsupportedCryptoSystemException
DHCryptoSystem
object with the specified p, q and g
domain parameters, as well as the minimum number of private key random bits.
p
 The p domain parameter.q
 The q domain parameter. May be null.g
 The g domain parameter.privateKeyMinRandomBits
 An integer that represents the minimum
number of random bits in the key.
InvalidCryptoSystemException
 Thrown if any or both of the
specified parameters are invalid.
UnsupportedCryptoSystemException
 Thrown if the specified crypto
system is invalid.public DHCryptoSystem(byte[] p, byte[] q, byte[] g, int privateKeyMinRandomBits, String name) throws InvalidCryptoSystemException, UnsupportedCryptoSystemException
DHCryptoSystem
object with the specified p, q and g
domain parameters, as well as the minimum number of private key random bits.
p
 The p domain parameter.q
 The q domain parameter. May be null.g
 The g domain parameter.privateKeyMinRandomBits
 The minimum number of random bits in the
private key.name
 A description of the parameters, eg "SUN1024", "WTLS1". May be null.
InvalidCryptoSystemException
 Thrown if any or both of the
specified parameters are invalid.
UnsupportedCryptoSystemException
 Thrown if the specified crypto
system is invalid.public DHCryptoSystem(DHCryptoToken cryptoToken, byte[] p, byte[] q, byte[] g, int privateKeyMinRandomBits, String name) throws CryptoTokenException, CryptoUnsupportedOperationException, InvalidCryptoSystemException, UnsupportedCryptoSystemException
DHCryptoSystem
object with the specified p, q and g
domain parameters, as well as the minimum number of private key random bits.
cryptoToken
 The crypto token.p
 The p domain parameter.q
 The q domain parameter. May be null.g
 The g domain parameter.privateKeyMinRandomBits
 An integer that represents the minimum number of private key random bits.name
 A description of the parameters, eg "SUN1024", "WTLS1". May be null.
CryptoTokenException
 Thrown if there was an error communicating
with the token.
CryptoUnsupportedOperationException
 Thrown if a call is made to
an unsupported operation.
InvalidCryptoSystemException
 Thrown if any or both of the
specified parameters are invalid.
UnsupportedCryptoSystemException
 Thrown if the specified crypto
system is unsupported.public DHCryptoSystem(DHCryptoToken cryptoToken, CryptoTokenCryptoSystemData cryptoTokenData)
DHCryptoSystem
object using the specified crypto
token and crypto system.
cryptoToken
 The token associated with the crypto system.cryptoTokenData
 The data associated with the crypto token.Method Detail 

public void verify() throws InvalidCryptoSystemException, CryptoTokenException, CryptoUnsupportedOperationException
verifyCryptoSystemData
method of the associated crypto
token is called.
verify
in interface CryptoSystem
InvalidCryptoSystemException
 Thrown if any or both of the
specified keys are invalid.
CryptoTokenException
 Thrown if there was an error communicating
with the token.
CryptoUnsupportedOperationException
 Thrown if a call is made to
an unsupported operation.public String getAlgorithm()
This method will always return the String "DH".
getAlgorithm
in interface CryptoSystem
public AsymmetricCryptoToken getAsymmetricCryptoToken()
getAsymmetricCryptoToken
in interface CryptoSystem
public CryptoTokenCryptoSystemData getCryptoTokenData()
public int getBitLength() throws CryptoTokenException, CryptoUnsupportedOperationException
CryptoSystem
Note: the strength of a CryptoSystem is a combination of the algorithm and the bit length. For example, a 1024 bit RSA CryptoSystem is estimated to have the same cryptographic strength as 160 bit EC CryptoSystem.
getBitLength
in interface CryptoSystem
CryptoTokenException
 Thrown when a problem occurs with a crypto
token or the crypto token is invalid.
CryptoUnsupportedOperationException
 Thrown when a call is made to
an unsupported operation.CryptoSystem.isStrong()
public boolean isStrong() throws CryptoTokenException, CryptoUnsupportedOperationException
Note: Due to the nature of cryptography, things that are presently strong may be insecure in the future.
isStrong
in interface CryptoSystem
CryptoTokenException
 Thrown when a problem occurs with a crypto
token or the crypto token is invalid.
CryptoUnsupportedOperationException
 Thrown when a call is made to
an unsupported operation.public String getName() throws CryptoTokenException, CryptoUnsupportedOperationException
getName
in interface CryptoSystem
CryptoTokenException
 Thrown if an error occurs with a crypto
token or the crypto token is invalid.
CryptoUnsupportedOperationException
 Thrown if a call is made to
an unsupported operation.public byte[] getP() throws CryptoTokenException, CryptoUnsupportedOperationException
CryptoTokenException
 Thrown if an error occurs with a crypto
token or the crypto token is invalid.
CryptoUnsupportedOperationException
 Thrown if a call is made to
an unsupported operation.public byte[] getQ() throws CryptoTokenException, CryptoUnsupportedOperationException
CryptoTokenException
 Thrown if an error occurs with a crypto
token or the crypto token is invalid.
CryptoUnsupportedOperationException
 Thrown if a call is made to
an unsupported operation.public byte[] getG() throws CryptoTokenException, CryptoUnsupportedOperationException
CryptoTokenException
 Thrown if an error occurs with a crypto
token or the crypto token is invalid.
CryptoUnsupportedOperationException
 Thrown if a call is made to
an unsupported operation.public int getPublicKeyLength() throws CryptoTokenException, CryptoUnsupportedOperationException
CryptoTokenException
 Thrown if an error occurs with a crypto
token or the crypto token is invalid.
CryptoUnsupportedOperationException
 Thrown if a call is made to
an unsupported operation.public int getPrivateKeyLength() throws CryptoTokenException, CryptoUnsupportedOperationException
CryptoTokenException
 Thrown if an error occurs with a crypto
token or the crypto token is invalid.
CryptoUnsupportedOperationException
 Thrown if a call is made to
an unsupported operation.public int getPrivateKeyMinRandomBits() throws CryptoTokenException, CryptoUnsupportedOperationException
CryptoTokenException
 Thrown if an error occurs with a crypto
token or the crypto token is invalid.
CryptoUnsupportedOperationException
 Thrown if a call is made to
an unsupported operation.public int hashCode()
Object
java.util.Hashtable
.
The general contract of hashCode
is:
hashCode
method on each of
the two objects must produce the same integer result.
Object.equals(java.lang.Object)
method, then calling the hashCode method on each of the
two objects must produce distinct integer results. However, the
programmer should be aware that producing distinct integer results
for unequal objects may improve the performance of hashtables.
As much as is reasonably practical, the hashCode method defined by class Object does return distinct integers for distinct objects. (This is typically implemented by converting the internal address of the object into an integer, but this implementation technique is not required by the Java^{TM} programming language.)
hashCode
in class Object
Object.equals(java.lang.Object)
,
Hashtable
public boolean equals(Object obj)
Object
The equals
method implements an equivalence relation:
x
,
x.equals(x)
should return true
.
x
and
y
, x.equals(y)
should return
true
if and only if y.equals(x)
returns
true
.
x
,
y
, and z
, if x.equals(y)
returns true
and y.equals(z)
returns
true
, then x.equals(z)
should return
true
.
x
and y
, multiple invocations of x.equals(y)
consistently return true
or consistently return
false
, provided no information used in
equals
comparisons on the object is modified.
x
,
x.equals(null)
should return false
.
The equals method for class Object
implements
the most discriminating possible equivalence relation on objects;
that is, for any reference values x
and y
,
this method returns true
if and only if x
and
y
refer to the same object (x==y
has the
value true
).
equals
in class Object
obj
 the reference object with which to compare.
true
if this object is the same as the obj
argument; false
otherwise.Boolean.hashCode()
,
Hashtable
public KeyPair createKeyPair() throws CryptoTokenException, CryptoUnsupportedOperationException
CryptoSystem
createKeyPair
in interface CryptoSystem
CryptoTokenException
 Thrown if an error occurs with the crypto
token or the crypto token is invalid.
CryptoUnsupportedOperationException
 Thrown if a call is made to
an unsupported operation.public DHKeyPair createDHKeyPair() throws CryptoTokenException, CryptoUnsupportedOperationException
CryptoTokenException
CryptoUnsupportedOperationException


PREV CLASS NEXT CLASS  FRAMES NO FRAMES  
SUMMARY: NESTED  FIELD  CONSTR  METHOD  DETAIL: FIELD  CONSTR  METHOD 
Copyright 19992010 Research In Motion Limited. 295 Phillip Street, Waterloo, Ontario, Canada, N2L 3W8. All Rights Reserved.
Copyright 19932003 Sun Microsystems, Inc. 901 San Antonio Road, Palo Alto, California, 94303, U.S.A. All Rights Reserved.
Copyright 20022003 Nokia Corporation All Rights Reserved.
Java is a trademark of Sun Microsystems, Inc.