Coverage Summary for Class: PasswordEncryptors (com.acciente.oacc.sql.internal.encryptor)

Class Class, % Method, % Line, %
PasswordEncryptors 100% (1/ 1) 33.3% (1/ 3) 11.1% (1/ 9)


1 /* 2  * Copyright 2009-2017, Acciente LLC 3  * 4  * Acciente LLC licenses this file to you under the 5  * Apache License, Version 2.0 (the "License"); you 6  * may not use this file except in compliance with the 7  * License. You may obtain a copy of the License at 8  * 9  * http://www.apache.org/licenses/LICENSE-2.0 10  * 11  * Unless required by applicable law or agreed to in 12  * writing, software distributed under the License is 13  * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES 14  * OR CONDITIONS OF ANY KIND, either express or implied. 15  * See the License for the specific language governing 16  * permissions and limitations under the License. 17  */ 18 package com.acciente.oacc.sql.internal.encryptor; 19  20 import com.acciente.oacc.encryptor.PasswordEncryptor; 21 import com.acciente.oacc.encryptor.bcrypt.BCryptPasswordEncryptor; 22 import com.acciente.oacc.encryptor.jasypt.JasyptPasswordEncryptor; 23  24 import java.util.Arrays; 25 import java.util.List; 26  27 /** 28  * Internally used helper class to get an instance of the {@link PasswordEncryptor} identified 29  * by the name of the {@link PasswordEncryptor}. This is where the NAME constant that is expected to 30  * be defined in every {@link PasswordEncryptor} implementation is used. 31  */ 32 public class PasswordEncryptors { 33  private static final int BCRYPT_MIN_COST_FACTOR = 10; 34  35  private static final String JASYPT_ALGORITHM = "SHA-256"; 36  private static final int JASYPT_ITERATIONS = 100000; 37  private static final int JASYPT_SALT_SIZE_BYTES = 16; 38  39  public static PasswordEncryptor getPasswordEncryptor(String encryptorName) { 40  if (encryptorName == null) { 41  throw new IllegalArgumentException("Encryptor name cannot be null"); 42  } 43  44  if (encryptorName.equalsIgnoreCase(BCryptPasswordEncryptor.NAME)) { 45  return BCryptPasswordEncryptor.newInstance(BCRYPT_MIN_COST_FACTOR); 46  } 47  48  if (encryptorName.equalsIgnoreCase(JasyptPasswordEncryptor.NAME)) { 49  return JasyptPasswordEncryptor.newInstance(JASYPT_ALGORITHM, JASYPT_ITERATIONS, JASYPT_SALT_SIZE_BYTES); 50  } 51  52  throw new IllegalArgumentException("Encryptor name " + encryptorName + " not recognized"); 53  } 54  55  public static List<String> getSupportedEncryptorNames() { 56  return Arrays.asList(BCryptPasswordEncryptor.NAME, JasyptPasswordEncryptor.NAME); 57  } 58 }