|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectnet.rim.device.api.crypto.AbstractPseudoRandomSource
net.rim.device.api.crypto.SPKMKDFPseudoRandomSource
public final class SPKMKDFPseudoRandomSource
Implements the key derivation function (KDF) found in RFC 2025. This KDF does not have a definite length and can be used to generate a variety of symmetric keys. SPKM stands for "Simple Public-Key Mechanism."
Note: Because of an oddity in the definition of this KDF, you can all call it once ( through xorBytes, getBytes, etc. ) to get random data. Any subsequent calls will throw an IllegalStateException.
Constructor Summary | ||
---|---|---|
|
SPKMKDFPseudoRandomSource(byte[] sharedSecret)
Creates an SPKMKDFPseudoRandomSource object using the given shared secret, keyed integrity
( ie. the 'I' character will be used ), '0' as the algorithm number, and
the default SHA-1 digest. |
|
|
SPKMKDFPseudoRandomSource(byte[] sharedSecret,
int offset,
int length,
boolean confidentiality,
int algorithmNumber,
Digest digest)
Creates an SPKMKDFPseudoRandomSource object using the given parameters and
the specified digest. |
Method Summary | ||
---|---|---|
|
String |
getAlgorithm()
Returns the name of this PseaudoRandomSource "SPKMKDF". |
|
int |
getAvailable()
Returns the number of pseudo random bytes currently available. |
|
int |
getMaxAvailable()
Returns the maximum number of pseudo random bytes that this PRNG can produce. |
|
void |
xorBytes(byte[] buffer,
int offset,
int length)
Exclusive-OR's random bytes into the given buffer starting at the specified array offset. |
Methods inherited from class net.rim.device.api.crypto.AbstractPseudoRandomSource |
---|
getBytes, getBytes, getBytes, xorBytes, xorBytes, xorCopy, xorCopy |
Methods inherited from class java.lang.Object |
---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface net.rim.device.api.crypto.PseudoRandomSource |
---|
getBytes, getBytes, getBytes, xorBytes, xorBytes, xorCopy, xorCopy |
Constructor Detail |
---|
public SPKMKDFPseudoRandomSource(byte[] sharedSecret)
SPKMKDFPseudoRandomSource
object using the given shared secret, keyed integrity
( ie. the 'I' character will be used ), '0' as the algorithm number, and
the default SHA-1 digest.
The intended use of this PseudoRandomSource is in order to create a shared secret key between two people ( party A and party B ). So the javadocs refer to the different parameters as belonging to one party or the other. That does not restrict the use of this PseudoRandomSource, however. The parameters could all be created by one user and passed in.
Assume sharedSecret has been set. SPKMKDFPseudoRandomSource source = new SPKMKDFPseudoRandomSource( sharedSecret ); byte[] keyData = source.getBytes( TripleDESKey.LENGTH ); TripleDESKey key = new TripleDESKey( keyData );
Note: Because of an oddity in the definition of this KDF, you can all call it once ( through xorBytes, getBytes, etc. ) to get random data. Any subsequent calls will throw an IllegalStateException.
sharedSecret
- A byte array containing the shared secret generated by a key-agreement scheme.public SPKMKDFPseudoRandomSource(byte[] sharedSecret, int offset, int length, boolean confidentiality, int algorithmNumber, Digest digest)
SPKMKDFPseudoRandomSource
object using the given parameters and
the specified digest.
The intended use of this PseudoRandomSource is in order to create a shared secret key between two people ( party A and party B ). So the javadocs refer to the different parameters as belonging to one party or the other. That does not restrict the use of this PseudoRandomSource, however. The parameters could all be created by one user and passed in.
Assume sharedSecret has been set. We'll assume the optional parameters to the defaults for clarity sake. SPKMKDFPseudoRandomSource source = new SPKMKDFPseudoRandomSource( sharedSecret, 0, sharedSecret.length, false, 0, new SHA1Digest() ); byte[] keyData = source.getBytes( TripleDESKey.LENGTH ); TripleDESKey key = new TripleDESKey( keyData );
Note: Because of an oddity in the definition of this KDF, you can all call it once ( through xorBytes, getBytes, etc. ) to get random data. Any subsequent calls will throw an IllegalStateException.
sharedSecret
- A byte array containing the shared secret generated by a key-agreement scheme.offset
- The offset into sharedSecret array.length
- The length of the shared secret.confidentiality
- If true then this will be used with a confidentiality algorithm so a 'C' is inserted,
otherwise it is for integrity so insert a 'I'.algorithmNumber
- The number of the algorithm in the appropriate agreed upon list.digest
- An instance of the digest to use for hashing.Method Detail |
---|
public String getAlgorithm()
getAlgorithm
in interface PseudoRandomSource
public void xorBytes(byte[] buffer, int offset, int length)
AbstractPseudoRandomSource
xorBytes
in interface PseudoRandomSource
xorBytes
in class AbstractPseudoRandomSource
buffer
- The byte array to xor the bytes into.offset
- The starting offset within buffer.length
- The number of bytes to xor.public int getAvailable()
PseudoRandomSource
For PRNG sources that have an indefinite length but implement
this interface, the value returned is Integer.MAX
.
getAvailable
in interface PseudoRandomSource
public int getMaxAvailable()
PseudoRandomSource
For PRNG sources that have an indefinite length but implement
this interface, the value returned is Integer.MAX
.
getMaxAvailable
in interface PseudoRandomSource
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
Copyright 1999-2011 Research In Motion Limited. 295 Phillip Street, Waterloo, Ontario, Canada, N2L 3W8. All Rights Reserved.
Java is a trademark of Oracle America Inc. in the US and other countries.
Legal