com.ibm.crypto.hdwrCCA.provider

Class DESedeKeySpec

  • java.lang.Object
    • com.ibm.crypto.hdwrCCA.provider.DESedeKeySpec
  • All Implemented Interfaces:
    java.security.spec.KeySpec


    public class DESedeKeySpec
    extends java.lang.Object
    implements java.security.spec.KeySpec
    This class specifies a DES-EDE ("triple-DES") key.
    Implementation Note:
    This class allows for the specification of key "types" ("RAW" or "CLEAR", "CKDSLabel" or "CKDS", "ICSFToken" or "SECURE_INTERNAL_TOKEN"). Some JCECCA operations are restricted to specific key types. Provider support, ICSF support, and hardware support all determine which key and algorithm types will function on a given system. For details on the supported operations for each key type please consult the z/OS Unique Considerations Hardware Crypto Reference Guide. More information can also be found in the Javadoc reference for the specific SPI class in use (KeyFactory, KeyGenerator, etc.)"
    See Also:
    DESedeKeyFactory, DESedeKeyGenerator, DESedeCipher
    • Field Summary

      Fields 
      Modifier and Type Field and Description
      static int DES_EDE_KEY_LEN
      The constant which defines the length of a DESede key in bytes.
    • Constructor Summary

      Constructors 
      Constructor and Description
      DESedeKeySpec(byte[] key)
      Creates a DESedeKeySpec object using the first 24 bytes in key as the key material for the DES-EDE key.
      DESedeKeySpec(byte[] key, int offset)
      Creates a DESedeKeySpec object using the first 24 bytes in key, beginning at offset inclusive, as the key material for the DES-EDE key.
      DESedeKeySpec(byte[] key, int offset, java.lang.String type)
      Creates a DESedeKeySpec object using the first 24 bytes in key, beginning at offset inclusive, as the key material for the DES-EDE key.
      DESedeKeySpec(byte[] key, java.lang.String type)
      Creates a DESedeKeySpec object using the first 24 bytes in key as the key material for the DES-EDE key.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method and Description
      byte[] getKey()
      Returns a clone of the DESede key material.
      java.lang.String getType()
      Returns the DESede key type.
      static boolean isParityAdjusted(byte[] key, int offset)
      Checks if the given DES-EDE key, starting at offset inclusive, is parity-adjusted.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • DES_EDE_KEY_LEN

        public static final int DES_EDE_KEY_LEN
        The constant which defines the length of a DESede key in bytes.
        See Also:
        Constant Field Values
    • Constructor Detail

      • DESedeKeySpec

        public DESedeKeySpec(byte[] key)
                      throws java.security.InvalidKeyException
        Creates a DESedeKeySpec object using the first 24 bytes in key as the key material for the DES-EDE key. A specification for a RAW (also known as CLEAR) key is created with this constructor.

        The bytes that constitute the DES-EDE key are those between key[0] and key[23] inclusive

        Parameters:
        key - the buffer with the DES-EDE key material. The first 24 bytes of the buffer are copied to protect against subsequent modification.
        Throws:
        java.lang.NullPointerException - if key is null.
        java.security.InvalidKeyException - if the given key material is shorter than 24 bytes.
      • DESedeKeySpec

        public DESedeKeySpec(byte[] key,
                             java.lang.String type)
                      throws java.security.InvalidKeyException
        Creates a DESedeKeySpec object using the first 24 bytes in key as the key material for the DES-EDE key.

        The bytes that constitute the DES-EDE key are those between key[0] and key[23] inclusive

        Parameters:
        key - the buffer with the DES-EDE key material, CCA token, or CKDS label. If a "RAW" type is specified the first 24 bytes of the buffer are used. If a "CKDSLabel" type is specified it must be encoded in the IBM-1047 codepage. The buffer is copied to protect against subsequent modification.
        type - the type of key, one of "RAW", "CKDSLabel", "ICSFToken". Please note that we recommend the use of the KeyLabelKeySpec class to create a key specification using a "CKDSLabel".
        Throws:
        java.lang.NullPointerException - if key is null.
        java.security.InvalidKeyException - if the given key material is shorter than 24 bytes.
      • DESedeKeySpec

        public DESedeKeySpec(byte[] key,
                             int offset)
                      throws java.security.InvalidKeyException
        Creates a DESedeKeySpec object using the first 24 bytes in key, beginning at offset inclusive, as the key material for the DES-EDE key. A specification for a RAW (also known as CLEAR) key is created with this constructor.

        The bytes that constitute the DES-EDE key are those between key[offset] and key[offset+23] inclusive.

        Parameters:
        key - the buffer with the DES-EDE key material. The first 24 bytes of the buffer beginning at offset inclusive are copied to protect against subsequent modification.
        offset - the offset in key, where the DES-EDE key material starts.
        Throws:
        java.lang.NullPointerException - if key is null.
        java.security.InvalidKeyException - if the given key material, starting at offset inclusive, is shorter than 24 bytes
      • DESedeKeySpec

        public DESedeKeySpec(byte[] key,
                             int offset,
                             java.lang.String type)
                      throws java.security.InvalidKeyException
        Creates a DESedeKeySpec object using the first 24 bytes in key, beginning at offset inclusive, as the key material for the DES-EDE key.

        The bytes that constitute the DES-EDE key are those between key[offset] and key[offset+23] inclusive.

        Parameters:
        key - the buffer with the DES-EDE key material, CCA token, or CKDS label. If a "RAW" type is specified the first 24 bytes of the buffer are used. If a "CKDSLabel" type is specified it must be encoded in the IBM-1047 codepage. The buffer is copied to protect against subsequent modification.
        offset - the offset in key, where the DES-EDE key material starts.
        type - the type of key, one of "RAW", "CKDSLabel", "ICSFToken".Please note that we recommend the use of the KeyLabelKeySpec class to create a key specification using a "CKDSLabel".
        Throws:
        java.lang.NullPointerException - if key is null.
        java.security.InvalidKeyException - if the given key material, starting at offset inclusive, is shorter than 24 bytes
    • Method Detail

      • getKey

        public byte[] getKey()
        Returns a clone of the DESede key material.

        Note that this method returns a clone of sensitive information. It is the caller's responsibility to zero out the information after it is no longer needed.

        Returns:
        A clone of the DESede key material.
      • getType

        public java.lang.String getType()
        Returns the DESede key type.
        Returns:
        the DESede key type.
      • isParityAdjusted

        public static boolean isParityAdjusted(byte[] key,
                                               int offset)
                                        throws java.security.InvalidKeyException
        Checks if the given DES-EDE key, starting at offset inclusive, is parity-adjusted.
        Parameters:
        key - a byte array which holds the key value
        offset - the offset into the byte array
        Returns:
        true if the given DES-EDE key is parity-adjusted, false otherwise
        Throws:
        java.lang.NullPointerException - if key is null.
        java.security.InvalidKeyException - if the given key material, starting at offset inclusive, is shorter than 24 bytes
� Portions Copyright 1997, 2022 IBM Corporation. All rights reserved. � Portions Copyright 1997, 2022, Oracle and/or its affiliates. All rights reserved.