SHOW Signed
 

net.rim.device.api.crypto
Class CBCMAC

java.lang.Object
  |
  +--net.rim.device.api.crypto.AbstractMAC
        |
        +--net.rim.device.api.crypto.CBCMAC
All Implemented Interfaces:
MAC

public final class CBCMAC
extends AbstractMAC
implements MAC

CBCMAC is method of producing a Message Authentication Code (MAC) using a block cipher in cipher-block-chaining (CBC) mode. You do not want to use a CBCEncryptorEngine with this class. This class will perform all of the CBC functionality necessary for this MAC.

CBC Mode is defined where the encryption of each block depends on the encryption of the previous block.

Note: The CBCMAC specification has an initialization vector of zeroes so there is no need to pass in a InitializationVector to this class.

CBCMAC has two modes of operation, One-Key and Two-Key.

One-Key CBCMAC works by encrypting the data, that you wish to be mac'ed, in CBC mode. Then, the MAC tag value is simply the last block of the encrypted data. You can create a One-Key CBCMAC using the CBCMAC( BlockEncryptorEngine ) constructor or the CBCMAC( SymmetricKey ) constructor.

In Two-Key CBCMAC, the data to be mac'ed is also encrypted in CBC mode, using the first key. But, rather than just returning the final encrypted block, an extra step of decrypting the final block, with the second key, and then re-encrypting that block with the first key, takes place. This final, modified, block is returned as the MAC tag. You can create a Two-Key CBCMAC using the CBCMAC( BlockEncryptorEngine, BlockDecryptorEngine ) constructor or the CBCMAC( SymmetricKey, SymmetricKey ) constructor.

For information on cryptographic algorithms, see Crypto Algorithms.

More information can be found in the FIPS 81 document in Table F1.

Category:
Signed: This element is only accessible by signed applications. If you intend to use this element, please visit http://www.blackberry.com/go/codesigning to obtain a set of code signing keys. Code signing is only required for applications running on BlackBerry smartphones; development on BlackBerry Smartphone Simulators can occur without code signing.

Since:
JDE 3.6.0

Constructor Summary
 Category: Signed CBCMAC(BlockEncryptorEngine encryptorEngine)
          Creates an instance of the CBCMAC object with a given block cipher.
 Category: Signed CBCMAC(BlockEncryptorEngine encryptorEngine, BlockDecryptorEngine decryptorEngine)
          Creates an instance of the CBCMAC object with given encryptor and decryptor engines.
 Category: Signed CBCMAC(SymmetricKey encryptorKey)
          Creates an instance of the CBCMAC object with a given key.
 Category: Signed CBCMAC(SymmetricKey encryptorKey, SymmetricKey decryptorKey)
          Creates an instance of the CBCMAC object with given keys.
 
Method Summary
 Category: Signed  String getAlgorithm()
          Returns the name of the MAC algorithm, ie "CBCMAC/" + BlockEncryptorEngine.getAlgorithm()
 Category: Signed  int getLength()
          Returns the length, in bytes, of the MAC.
 Category: Signed  int getMAC(byte[] buffer, int offset, boolean reset)
          Puts the MAC of all the input data since the last reset into the given buffer starting at the specified offset.
 Category: Signed  void reset()
          Reinitializes the MAC.
 Category: Signed  void update(byte[] data, int offset, int length)
          Feeds more data into the MAC algorithm.
 
Methods inherited from class net.rim.device.api.crypto.AbstractMAC
checkMAC, checkMAC, checkMAC, checkMAC, getMAC, getMAC, getMAC, update, update
 
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.MAC
checkMAC, checkMAC, checkMAC, checkMAC, getMAC, getMAC, getMAC, update, update
 

Constructor Detail

CBCMAC

public CBCMAC(BlockEncryptorEngine encryptorEngine)
       throws CryptoTokenException
Creates an instance of the CBCMAC object with a given block cipher. This is a One-Key CBCMAC.

Parameters:
encryptorEngine - The block cipher to use with this instance, eg AESEncryptorEngine.
Throws:
CryptoTokenException - Thrown if an error occurs with the crypto token or the crypto token is invalid.
Since:
JDE 3.6.0
Category:
Signed: This element is only accessible by signed applications. If you intend to use this element, please visit http://www.blackberry.com/go/codesigning to obtain a set of code signing keys. Code signing is only required for applications running on BlackBerry smartphones; development on BlackBerry Smartphone Simulators can occur without code signing.

CBCMAC

public CBCMAC(BlockEncryptorEngine encryptorEngine,
              BlockDecryptorEngine decryptorEngine)
       throws CryptoTokenException
Creates an instance of the CBCMAC object with given encryptor and decryptor engines. This is a Two-Key CBCMAC.

Parameters:
encryptorEngine - An engine to use with this instance, eg AESEncryptorEngine.
decryptorEngine - An extra engine to be used in an optional two-key triple-encryption on the last block.
Throws:
CryptoTokenException - Thrown if an error occurs with the crypto token or the crypto token is invalid.
Since:
JDE 3.6.0
Category:
Signed: This element is only accessible by signed applications. If you intend to use this element, please visit http://www.blackberry.com/go/codesigning to obtain a set of code signing keys. Code signing is only required for applications running on BlackBerry smartphones; development on BlackBerry Smartphone Simulators can occur without code signing.

CBCMAC

public CBCMAC(SymmetricKey encryptorKey)
       throws CryptoTokenException,
              NoSuchAlgorithmException,
              CryptoUnsupportedOperationException,
              CryptoException
Creates an instance of the CBCMAC object with a given key. This is a One-Key CBCMAC.

Parameters:
encryptorKey - The key to be used in the CBCMAC base cipher.
Throws:
CryptoTokenException - Thrown if an error occurs with a crypto token or the crypto token is invalid.
NoSuchAlgorithmException - Thrown if the specified algorithm is invalid.
CryptoUnsupportedOperationException - Thrown if a call is made to an unsupported operation.
Since:
JDE 3.6.0
Category:
Signed: This element is only accessible by signed applications. If you intend to use this element, please visit http://www.blackberry.com/go/codesigning to obtain a set of code signing keys. Code signing is only required for applications running on BlackBerry smartphones; development on BlackBerry Smartphone Simulators can occur without code signing.

CBCMAC

public CBCMAC(SymmetricKey encryptorKey,
              SymmetricKey decryptorKey)
       throws CryptoTokenException,
              NoSuchAlgorithmException,
              CryptoUnsupportedOperationException,
              CryptoException
Creates an instance of the CBCMAC object with given keys. This is a Two-Key CBCMAC.

Parameters:
encryptorKey - The key to be used in the CBCMAC base cipher.
decryptorKey - The key to be used in an optional two-key triple-encryption on the last block.
Throws:
CryptoTokenException - Thrown if an error occurs with a crypto token or the crypto token is invalid.
NoSuchAlgorithmException - Thrown if the specified algorithm is invalid.
CryptoUnsupportedOperationException - Thrown if a call is made to an unsupported operation.
Since:
JDE 3.6.0
Category:
Signed: This element is only accessible by signed applications. If you intend to use this element, please visit http://www.blackberry.com/go/codesigning to obtain a set of code signing keys. Code signing is only required for applications running on BlackBerry smartphones; development on BlackBerry Smartphone Simulators can occur without code signing.
Method Detail

getAlgorithm

public String getAlgorithm()
Returns the name of the MAC algorithm, ie "CBCMAC/" + BlockEncryptorEngine.getAlgorithm()
Specified by:
getAlgorithm in interface MAC
Overrides:
getAlgorithm in class AbstractMAC
Since:
JDE 3.6.0

Following copied from interface: MAC
Returns:
A String representing the mac algorithm along with the name of the digest or cipher.
Category:
Signed: This element is only accessible by signed applications. If you intend to use this element, please visit http://www.blackberry.com/go/codesigning to obtain a set of code signing keys. Code signing is only required for applications running on BlackBerry smartphones; development on BlackBerry Smartphone Simulators can occur without code signing.

getLength

public int getLength()
Description copied from interface: MAC
Returns the length, in bytes, of the MAC.

Specified by:
getLength in interface MAC
Overrides:
getLength in class AbstractMAC
Since:
JDE 3.6.0

Following copied from interface: MAC
Returns:
An integer that represents the length of the MAC.
Category:
Signed: This element is only accessible by signed applications. If you intend to use this element, please visit http://www.blackberry.com/go/codesigning to obtain a set of code signing keys. Code signing is only required for applications running on BlackBerry smartphones; development on BlackBerry Smartphone Simulators can occur without code signing.

getMAC

public int getMAC(byte[] buffer,
                  int offset,
                  boolean reset)
           throws CryptoTokenException
Description copied from interface: MAC
Puts the MAC of all the input data since the last reset into the given buffer starting at the specified offset. The MAC is then reset.

Specified by:
getMAC in interface MAC
Overrides:
getMAC in class AbstractMAC
Since:
JDE 3.6.0

Following copied from interface: MAC
Parameters:
buffer - The array to contain the MAC.
offset - The offset, or initial position, of teh MAC data within the buffer.
reset - if true then the MAC is reset.
Returns:
An integer representing the number of bytes written to the buffer.
Throws:
CryptoTokenException - Thrown when a problem occurs with a crypto token or the crypto token is invalid.
Category:
Signed: This element is only accessible by signed applications. If you intend to use this element, please visit http://www.blackberry.com/go/codesigning to obtain a set of code signing keys. Code signing is only required for applications running on BlackBerry smartphones; development on BlackBerry Smartphone Simulators can occur without code signing.

reset

public void reset()
           throws CryptoTokenException
Description copied from interface: MAC
Reinitializes the MAC.

Specified by:
reset in interface MAC
Overrides:
reset in class AbstractMAC
Since:
JDE 3.6.0

Following copied from interface: MAC
Throws:
CryptoTokenException - Thrown if an error occurs with the crypto token or the crypto token is invalid.
Category:
Signed: This element is only accessible by signed applications. If you intend to use this element, please visit http://www.blackberry.com/go/codesigning to obtain a set of code signing keys. Code signing is only required for applications running on BlackBerry smartphones; development on BlackBerry Smartphone Simulators can occur without code signing.

update

public void update(byte[] data,
                   int offset,
                   int length)
            throws CryptoTokenException
Description copied from interface: MAC
Feeds more data into the MAC algorithm.

Specified by:
update in interface MAC
Overrides:
update in class AbstractMAC
Since:
JDE 3.6.0

Following copied from interface: MAC
Parameters:
data - The array containing the input data.
offset - The offset, or initial position, of the data within the array.
length - The length of the input data, in bytes.
Throws:
CryptoTokenException - Thrown when a problem occurs with a crypto token or the crypto token is invalid.
Category:
Signed: This element is only accessible by signed applications. If you intend to use this element, please visit http://www.blackberry.com/go/codesigning to obtain a set of code signing keys. Code signing is only required for applications running on BlackBerry smartphones; development on BlackBerry Smartphone Simulators can occur without code signing.



Copyright 1999-2009 Research In Motion Limited. 295 Phillip Street, Waterloo, Ontario, Canada, N2L 3W8. All Rights Reserved.
Copyright 1993-2003 Sun Microsystems, Inc. 901 San Antonio Road, Palo Alto, California, 94303, U.S.A.
Copyright 2002-2003 Nokia Corporation All Rights Reserved.
Java is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.