private SaltedSecretKey createMasterKeyFromPassword(String masterPassword) throws Exception { fireNotifyCreateMaster(); SaltedSecretKey masterKey = CipherUtil.createMasterKey(masterPassword); return masterKey; }
public static SaltedSecretKey createMasterKey(String password) throws CipherException { byte[] salt = createRandomArray(MASTER_KEY_SALT_SIZE / 8); return createMasterKey(password, salt); }
private SaltedSecretKey createMasterKeyFromPassword(String masterPassword, byte[] masterKeySalt) throws CipherException { fireNotifyCreateMaster(); SaltedSecretKey masterKey = CipherUtil.createMasterKey(masterPassword, masterKeySalt); return masterKey; }
private static SaltedSecretKey getMasterKey() throws Exception { if (!cryptoEnabled) { return null; } else { if (masterKey == null) { masterKey = CipherUtil.createMasterKey("some password"); } return masterKey; } }
private static void writeExampleUserConfigFile(File userConfigFile) { UserConfigTO userConfigTO = new UserConfigTO(); try { System.out.println("First launch, creating a secret key (could take a sec)..."); SaltedSecretKey configEncryptionKey = CipherUtil.createMasterKey(CipherUtil.createRandomAlphabeticString(USER_CONFIG_ENCRYPTION_KEY_LENGTH)); userConfigTO.setConfigEncryptionKey(configEncryptionKey); userConfigTO.save(userConfigFile); } catch (CipherException e) { System.err.println("ERROR: " + e.getMessage()); System.err.println(" Failed to create masterkey."); System.err.println(); } catch (ConfigException e) { System.err.println("ERROR: " + e.getMessage()); System.err.println(" Failed to save to file."); System.err.println(); } }
@Before public void initMasterKey() throws CipherException { masterKey = CipherUtil.createMasterKey("some password"); }
@Test public void testCreateMasterKeyNoSalt() throws CipherException { SaltedSecretKey masterKeyForPasswordTestNoSalt1 = CipherUtil.createMasterKey("Test"); SaltedSecretKey masterKeyForPasswordTestNoSalt2 = CipherUtil.createMasterKey("Test"); logger.log(Level.INFO, "Key comparison for password 'Test':"); logger.log(Level.INFO, "- Master key 1: "+StringUtil.toHex(masterKeyForPasswordTestNoSalt1.getEncoded())); logger.log(Level.INFO, " with salt: "+StringUtil.toHex(masterKeyForPasswordTestNoSalt1.getSalt())); logger.log(Level.INFO, "- Master key 2: "+StringUtil.toHex(masterKeyForPasswordTestNoSalt2.getEncoded())); logger.log(Level.INFO, " with salt: "+StringUtil.toHex(masterKeyForPasswordTestNoSalt2.getSalt())); assertFalse(Arrays.equals(masterKeyForPasswordTestNoSalt1.getSalt(), masterKeyForPasswordTestNoSalt2.getSalt())); assertFalse(Arrays.equals(masterKeyForPasswordTestNoSalt1.getEncoded(), masterKeyForPasswordTestNoSalt2.getEncoded())); } }
@Test public void testCreateMasterKeyWithSalt() throws CipherException { long timeStart = System.currentTimeMillis(); SaltedSecretKey masterKeyForPasswordTestAndSalt123 = CipherUtil.createMasterKey("Test", new byte[] { 1, 2, 3 }); long timeEnd = System.currentTimeMillis(); long timeDuration = timeEnd - timeStart; logger.log(Level.INFO, "Creating master key took "+timeDuration+"ms:"); logger.log(Level.INFO, " - Key: "+StringUtil.toHex(masterKeyForPasswordTestAndSalt123.getEncoded())); logger.log(Level.INFO, " - Salt: "+StringUtil.toHex(masterKeyForPasswordTestAndSalt123.getSalt())); assertEquals("010203", StringUtil.toHex(masterKeyForPasswordTestAndSalt123.getSalt())); assertEquals("44fda24d53b29828b62c362529bd9df5c8a92c2736bcae3a28b3d7b44488e36e246106aa5334813028abb2048eeb5e177df1c702d93cf82aeb7b6d59a8534ff0", StringUtil.toHex(masterKeyForPasswordTestAndSalt123.getEncoded())); assertEquals(CipherParams.MASTER_KEY_SIZE/8, masterKeyForPasswordTestAndSalt123.getEncoded().length); assertEquals("PBKDF2WithHmacSHA1", masterKeyForPasswordTestAndSalt123.getAlgorithm()); assertEquals("RAW", masterKeyForPasswordTestAndSalt123.getFormat()); assertTrue(timeDuration > 3000); }