Search in sources :

Example 1 with CipherSession

use of org.syncany.crypto.CipherSession in project syncany by syncany.

the class CipherTransformer method initCipherSession.

private void initCipherSession(String masterKeyStr, String masterKeySaltStr) {
    byte[] masterKeySalt = StringUtil.fromHex(masterKeySaltStr);
    byte[] masterKeyBytes = StringUtil.fromHex(masterKeyStr);
    SaltedSecretKey masterKey = new SaltedSecretKey(new SecretKeySpec(masterKeyBytes, "RAW"), masterKeySalt);
    cipherSession = new CipherSession(masterKey);
}
Also used : SaltedSecretKey(org.syncany.crypto.SaltedSecretKey) CipherSession(org.syncany.crypto.CipherSession) SecretKeySpec(javax.crypto.spec.SecretKeySpec)

Example 2 with CipherSession

use of org.syncany.crypto.CipherSession in project syncany by syncany.

the class CipherSessionTest method testCipherSessionWriteKeyReuseCountOfTwo.

@Test
public void testCipherSessionWriteKeyReuseCountOfTwo() throws Exception {
    SaltedSecretKey masterKey = createDummyMasterKey();
    CipherSession cipherSession = new CipherSession(masterKey, 999, 2);
    CipherSpec cipherSpecAes128 = CipherSpecs.getCipherSpec(CipherSpecs.AES_128_GCM);
    CipherSpec cipherSpecTwofish128 = CipherSpecs.getCipherSpec(CipherSpecs.TWOFISH_128_GCM);
    SaltedSecretKey writeSecretKey1Aes128 = cipherSession.getWriteSecretKey(cipherSpecAes128);
    SaltedSecretKey writeSecretKey2Aes128 = cipherSession.getWriteSecretKey(cipherSpecAes128);
    SaltedSecretKey writeSecretKey3Aes128 = cipherSession.getWriteSecretKey(cipherSpecAes128);
    SaltedSecretKey writeSecretKey1Twofish128 = cipherSession.getWriteSecretKey(cipherSpecTwofish128);
    SaltedSecretKey writeSecretKey2Twofish128 = cipherSession.getWriteSecretKey(cipherSpecTwofish128);
    SaltedSecretKey writeSecretKey3Twofish128 = cipherSession.getWriteSecretKey(cipherSpecTwofish128);
    assertEquals(writeSecretKey1Aes128, writeSecretKey2Aes128);
    assertNotSame(writeSecretKey1Aes128, writeSecretKey3Aes128);
    assertEquals(writeSecretKey1Twofish128, writeSecretKey2Twofish128);
    assertNotSame(writeSecretKey1Twofish128, writeSecretKey3Twofish128);
    assertNotSame(writeSecretKey1Aes128, writeSecretKey1Twofish128);
}
Also used : SaltedSecretKey(org.syncany.crypto.SaltedSecretKey) CipherSession(org.syncany.crypto.CipherSession) CipherSpec(org.syncany.crypto.CipherSpec) Test(org.junit.Test)

Example 3 with CipherSession

use of org.syncany.crypto.CipherSession in project syncany by syncany.

the class CipherSessionTest method testCipherSessionReadKeyCacheSizeOfThree.

@Test
public void testCipherSessionReadKeyCacheSizeOfThree() throws Exception {
    SaltedSecretKey masterKey = createDummyMasterKey();
    CipherSession cipherSession = new CipherSession(masterKey, 2, 999);
    CipherSpec cipherSpecAes128 = CipherSpecs.getCipherSpec(CipherSpecs.AES_128_GCM);
    byte[] readKeySalt1 = CipherUtil.createRandomArray(cipherSpecAes128.getKeySize());
    byte[] readKeySalt2 = CipherUtil.createRandomArray(cipherSpecAes128.getKeySize());
    byte[] readKeySalt3 = CipherUtil.createRandomArray(cipherSpecAes128.getKeySize());
    SaltedSecretKey readSecretKey1Aes128 = cipherSession.getReadSecretKey(cipherSpecAes128, readKeySalt1);
    SaltedSecretKey readSecretKey2Aes128 = cipherSession.getReadSecretKey(cipherSpecAes128, readKeySalt2);
    SaltedSecretKey readSecretKey3Aes128 = cipherSession.getReadSecretKey(cipherSpecAes128, readKeySalt3);
    assertNotSame(readSecretKey1Aes128, readSecretKey2Aes128);
    assertNotSame(readSecretKey1Aes128, readSecretKey3Aes128);
    assertNotSame(readSecretKey2Aes128, readSecretKey3Aes128);
// TODO [medium] This does NOT TEST the actual read cache. How to test this. The cache is completely hidden/private?!
}
Also used : SaltedSecretKey(org.syncany.crypto.SaltedSecretKey) CipherSession(org.syncany.crypto.CipherSession) CipherSpec(org.syncany.crypto.CipherSpec) Test(org.junit.Test)

Aggregations

CipherSession (org.syncany.crypto.CipherSession)3 SaltedSecretKey (org.syncany.crypto.SaltedSecretKey)3 Test (org.junit.Test)2 CipherSpec (org.syncany.crypto.CipherSpec)2 SecretKeySpec (javax.crypto.spec.SecretKeySpec)1