View Javadoc
1    /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *     http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
17   */
18  
19  package org.apache.commons.crypto.cipher;
20  
21  import static org.junit.jupiter.api.Assertions.assertTrue;
22  
23  import java.security.NoSuchAlgorithmException;
24  
25  import javax.crypto.Cipher;
26  
27  import org.apache.commons.crypto.utils.AES;
28  import org.junit.jupiter.api.BeforeAll;
29  
30  
31  public class JceCipherTest extends AbstractCipherTest {
32  
33      private static final int MAX_KEY_LEN_LOWER_BOUND = 256;
34  
35      @BeforeAll
36      public static void checkJceUnlimitedStrength() throws NoSuchAlgorithmException {
37          final int maxKeyLen = Cipher.getMaxAllowedKeyLength(AES.ALGORITHM);
38          assertTrue(maxKeyLen >= MAX_KEY_LEN_LOWER_BOUND,
39                  String.format(
40                          "Testing requires support for an AES key length of %d, but " +
41                          "the detected maximum key length is %d.  This may indicate " +
42                          "that the test environment is missing the JCE Unlimited " +
43                          "Strength Jurisdiction Policy Files.",
44                          MAX_KEY_LEN_LOWER_BOUND, maxKeyLen));
45      }
46  
47      @Override
48      public void init() {
49          transformations = new String[] {
50                  AES.CBC_NO_PADDING,
51                  AES.CBC_PKCS5_PADDING,
52                  AES.CTR_NO_PADDING};
53          cipherClass = JCE_CIPHER_CLASSNAME;
54      }
55  }