Home | History | Annotate | Download | only in params
      1 package org.bouncycastle.crypto.params;
      2 
      3 public class DESedeParameters
      4     extends DESParameters
      5 {
      6     /*
      7      * DES-EDE Key length in bytes.
      8      */
      9     static public final int DES_EDE_KEY_LENGTH = 24;
     10 
     11     public DESedeParameters(
     12         byte[]  key)
     13     {
     14         super(key);
     15 
     16         if (isWeakKey(key, 0, 0))
     17         {
     18             throw new IllegalArgumentException("attempt to create weak DESede key");
     19         }
     20     }
     21 
     22     /**
     23      * return true if the passed in key is a DES-EDE weak key.
     24      *
     25      * @param key bytes making up the key
     26      * @param offset offset into the byte array the key starts at
     27      * @param length number of bytes making up the key
     28      */
     29     public static boolean isWeakKey(
     30         byte[]  key,
     31         int     offset,
     32         int     length)
     33     {
     34         for (int i = offset; i < length; i += DES_KEY_LENGTH)
     35         {
     36             if (DESParameters.isWeakKey(key, i))
     37             {
     38                 return true;
     39             }
     40         }
     41 
     42         return false;
     43     }
     44 
     45     /**
     46      * return true if the passed in key is a DES-EDE weak key.
     47      *
     48      * @param key bytes making up the key
     49      * @param offset offset into the byte array the key starts at
     50      */
     51     public static boolean isWeakKey(
     52         byte[]  key,
     53         int     offset)
     54     {
     55         return isWeakKey(key, offset, key.length - offset);
     56     }
     57 }
     58