Logging.init();
}
@Test
public void testCreateDerivedKeys() throws InvalidKeySpecException, NoSuchAlgorithmException, NoSuchProviderException {
SaltedSecretKey masterKey = createDummyMasterKey();
CipherSpec cipherSpec = CipherSpecs.getCipherSpec(CipherSpecs.AES_128_GCM);
byte[] derivedKeySalt1 = new byte[] { 1, 2, 3 };
byte[] derivedKeySalt2 = new byte[] { 1, 2, 3, 4 };
SaltedSecretKey derivedKey1 = CipherUtil.createDerivedKey(masterKey, derivedKeySalt1, cipherSpec);
SaltedSecretKey derivedKey2 = CipherUtil.createDerivedKey(masterKey, derivedKeySalt2, cipherSpec);
logger.log(Level.INFO, "- Derived key 1: "+StringUtil.toHex(derivedKey1.getEncoded()));
logger.log(Level.INFO, " with salt: "+StringUtil.toHex(derivedKey1.getSalt()));
logger.log(Level.INFO, "- Derived key 2: "+StringUtil.toHex(derivedKey2.getEncoded()));
logger.log(Level.INFO, " with salt: "+StringUtil.toHex(derivedKey2.getSalt()));
assertEquals(128/8, derivedKey1.getEncoded().length);
assertEquals(128/8, derivedKey2.getEncoded().length);
assertFalse(Arrays.equals(derivedKey1.getSalt(), derivedKey2.getSalt()));
assertFalse(Arrays.equals(derivedKey1.getEncoded(), derivedKey2.getEncoded()));
}