Skip to content

Instantly share code, notes, and snippets.

View dinorahto's full-sized avatar

Dinorah Tovar dinorahto

View GitHub Profile
val spec = KeyGenParameterSpec.Builder(
KEY_NAME,
KeyProperties.PURPOSE_ENCRYPT or
KeyProperties.PURPOSE_DECRYPT
).apply {
setBlockModes(KeyProperties.BLOCK_MODE_CBC)
setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_PKCS7)
setUserAuthenticationRequired(true)
setUserAuthenticationValidityDurationSeconds(TIMEOUT_SECONDS)
setRandomizedEncryptionRequired(false)
biometricPrompt.authenticate(promptInfo)
var biometricPrompt = BiometricPrompt(this, executor, object : BiometricPrompt.AuthenticationCallback() {
override fun onAuthenticationError(errorCode: Int, errString: CharSequence) {
super.onAuthenticationError(errorCode, errString)
// Error
}
override fun onAuthenticationSucceeded(result: BiometricPrompt.AuthenticationResult) {
super.onAuthenticationSucceeded(result)
// Success
}
val biometricPromptBuilder = BiometricPrompt.PromptInfo.Builder()
.setTitle("A nice title")
.setSubtitle("A nicer subtitle")
.setNegativeButtonText("Cancel")
.build()
//Write to file
encryptedFile.openFileOutput().bufferedWriter().use {
it.write("Hola Mexico! vamos a encriptar esto")
}
//Read from file
val contents = encryptedFile.bufferedReader().useLines { lines ->
lines.fold("") { working, line ->
"$working\n$line"
}
sharedPreferences.edit(commit = true) {
putString("Some key", "Some value")
}
val encryptedFile = EncryptedFile.Builder(
File(directoryPath, "FileName"),
context,
masterKeyAlias,
EncryptedFile.FileEncryptionScheme.AES256_GCM_HKDF_4KB
).build()
// Release Candidate Option
val sharedPreferences = EncryptedSharedPreferences.create(
"FileName",
masterKeyAlias,
context,
EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
)
// Alpha Option
@dinorahto
dinorahto / KeyPairGenerator.kt
Last active July 26, 2020 04:33
KeyPairGenerator.kt
KeyPairGenerator.getInstance(KeyProperties.KEY_ALGORITHM_RSA, "AndroidKeyStore").apply {
val certBuilder = KeyGenParameterSpec.Builder(alias, KeyProperties.PURPOSE_ENCRYPT)
.setKeyValidityStart(keyValidityStart)
.setKeyValidityEnd(keyValidityEnd)
.setCertificateSerialNumber(BigInteger.valueOf(1L))
.setCertificateSubject(X500Principal("CN=MyCompany"))
.setUserAuthenticationRequired(true)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
initialize(
certBuilder
// Release Candidate option
val keyGenParameterSpec = MasterKeys.AES256_GCM_SPEC
val masterKeyAlias = MasterKeys.getOrCreate(keyGenParameterSpec)
// Alpha option
val masterKeyAvailable = MasterKey
.Builder(application.applicationContext)
.setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
.build()