FileDocCategorySizeDatePackage
DESedeKeySpec.javaAPI DocAndroid 1.5 API4640Wed May 06 22:41:02 BST 2009javax.crypto.spec

DESedeKeySpec

public class DESedeKeySpec extends Object implements KeySpec
The key specification for a triple-DES (DES-EDE) key.
since
Android 1.0

Fields Summary
public static final int
DES_EDE_KEY_LEN
The length of a DES-EDE key in bytes.
private final byte[]
key
Constructors Summary
public DESedeKeySpec(byte[] key)
Creates a new DESedeKeySpec instance from the first 24 ( {@link #DES_EDE_KEY_LEN}) bytes of the specified key data.

param
key the key data.
throws
InvalidKeyException if the length of the key data is less than 24.
throws
NullPointerException if the key data is null.


                                                                                         
      
                  
        if (key == null) {
            throw new NullPointerException(Messages.getString("crypto.2F")); //$NON-NLS-1$
        }
        if (key.length < DES_EDE_KEY_LEN) {
            throw new InvalidKeyException(
                    Messages.getString("crypto.30")); //$NON-NLS-1$
        }
        this.key = new byte[DES_EDE_KEY_LEN];
        System.arraycopy(key, 0, this.key, 0, DES_EDE_KEY_LEN);
    
public DESedeKeySpec(byte[] key, int offset)
Creates a new DESedeKeySpec instance from the first 24 ( {@link #DES_EDE_KEY_LEN} ) bytes of the specified key data starting at offset.

param
key the key data
param
offset the offset to start at.
throws
InvalidKeyException if the length of the key data starting at offset is less than 24.
throws
NullPointerException if the key data is null.

        if (key == null) {
            throw new NullPointerException(Messages.getString("crypto.2F")); //$NON-NLS-1$
        }
        if (key.length - offset < DES_EDE_KEY_LEN) {
            throw new InvalidKeyException(
                    Messages.getString("crypto.30")); //$NON-NLS-1$
        }
        this.key = new byte[DES_EDE_KEY_LEN];
        System.arraycopy(key, offset, this.key, 0, DES_EDE_KEY_LEN);
    
Methods Summary
public byte[]getKey()
Returns a copy of the key.

return
a copy of the key.

        byte[] result = new byte [DES_EDE_KEY_LEN];
        System.arraycopy(this.key, 0, result, 0, DES_EDE_KEY_LEN);
        return result;
    
public static booleanisParityAdjusted(byte[] key, int offset)
Returns whether the specified key data starting at offset is parity-adjusted.

param
key the key data.
param
offset the offset to start checking at.
return
{@code true} if the specified key data is parity-adjusted, {@code false} otherwise.
throws
InvalidKeyException if the length of the key data starting at offset is less than 24.

        if (key.length - offset < DES_EDE_KEY_LEN) {
            throw new InvalidKeyException(
                    Messages.getString("crypto.30")); //$NON-NLS-1$
        }
        for (int i=offset; i<DES_EDE_KEY_LEN+offset; i++) {
            int b = key[i];
            if ((((b & 1) + ((b & 2) >> 1) + ((b & 4) >> 2)
                + ((b & 8) >> 3) + ((b & 16) >> 4) + ((b & 32) >> 5)
                + ((b & 64) >> 6)) & 1) == ((b & 128) >> 7)) {
                return false;
            }
        }
        return true;