use of com.facebook.crypto.keychain.KeyChain in project LabDayApp by jakdor.
the class ProjectRepository method loadAccessToken.
/**
* Loads access token and decrypts it with Conceal
* @param context required for SharedPreferences/Conceal
* @return boolean success/fail
*/
public boolean loadAccessToken(Context context) {
KeyChain keyChain = new SharedPrefsBackedKeyChain(context, CryptoConfig.KEY_256);
Crypto crypto = AndroidConceal.get().createDefaultCrypto(keyChain);
try {
byte[] encryptedToken = readFile(context, "lab");
if (encryptedToken == null) {
Log.e(CLASS_TAG, "Access token not found");
return false;
} else if (encryptedToken.length == 0) {
Log.e(CLASS_TAG, "Access token not available");
return false;
}
byte[] plainToken = crypto.decrypt(encryptedToken, Entity.create("token"));
this.accessToken = new String(plainToken);
Log.i(CLASS_TAG, "Loaded and decrypted access token");
} catch (Exception e) {
Log.wtf(CLASS_TAG, "unable to decipher access token");
return false;
}
return true;
}
use of com.facebook.crypto.keychain.KeyChain in project TeamCityApp by vase4kin.
the class AppModule method providesCryptoManager.
@VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE)
@Provides
@Singleton
protected CryptoManager providesCryptoManager() {
KeyChain keyChain = new SharedPrefsBackedKeyChain(mApplication.getApplicationContext(), CryptoConfig.KEY_256);
Crypto crypto = AndroidConceal.get().createDefaultCrypto(keyChain);
return new CryptoManagerImpl(crypto);
}
use of com.facebook.crypto.keychain.KeyChain in project conceal by facebook.
the class SharedPrefsBackedKeyChainTest method testLegacy128Bits.
public void testLegacy128Bits() throws Exception {
KeyChain keyChain = new SharedPrefsBackedKeyChain(this.getInstrumentation().getContext());
// destroy keys if they were present in prefs from previous test
keyChain.destroyKeys();
byte[] key = keyChain.getCipherKey();
assertEquals(16, key.length);
KeyChain keyChain2 = new SharedPrefsBackedKeyChain(this.getInstrumentation().getContext());
byte[] key2 = keyChain.getCipherKey();
assertTrue(Arrays.equals(key, key2));
}
use of com.facebook.crypto.keychain.KeyChain in project conceal by facebook.
the class Cipher128BitsTest method testCase.
public void testCase(String key, String iv, String plain, String cipher) throws Exception {
// Test Case 16 - Page 40
KeyChain keyChain = fixedKeyChain(key, iv);
CryptoConfig config = CryptoConfig.KEY_128;
Crypto crypto = new Crypto(keyChain, new AndroidCryptoLibrary(), config);
byte[] plainBytes = toBytes(plain);
byte[] encrypted = crypto.encrypt(plainBytes, new Entity("whatever"));
byte[] expected = toBytes(cipher);
// remove initial 2 bytes + IV
// remove final tag 16 bytes
int metadataLength = config.getHeaderLength() + config.getTailLength();
int prefix = metadataLength - config.tagLength;
byte[] bareEncrypted = Arrays.copyOfRange(encrypted, prefix, encrypted.length - config.tagLength);
Assert.assertTrue(Arrays.equals(expected, bareEncrypted));
}
use of com.facebook.crypto.keychain.KeyChain in project conceal by facebook.
the class EntityFactoryTest method testCase.
public void testCase(String key, String iv, String plain, String entityId) throws Exception {
// Test Case 16 - Page 40
KeyChain keyChain = fixedKeyChain(key, iv);
CryptoConfig config = CryptoConfig.KEY_256;
Crypto crypto = new Crypto(keyChain, new AndroidCryptoLibrary(), config);
byte[] plainBytes = toBytes(plain);
byte[] encrypted = crypto.encrypt(plainBytes, Entity.create(entityId));
byte[] decrypted = crypto.decrypt(encrypted, Entity.create(entityId));
Assert.assertFalse(Arrays.equals(encrypted, plainBytes));
Assert.assertTrue(Arrays.equals(decrypted, plainBytes));
try {
crypto.decrypt(encrypted, Entity.utf16(entityId));
Assert.fail("Decryption with old entity should have failed!");
} catch (IOException ioe) {
// ok, it shouldn't match!
}
}
Aggregations