Skip to content

Instantly share code, notes, and snippets.

@FilipeLipan
Created October 29, 2019 20:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save FilipeLipan/adcd0de81530ec6b48380e2802d97dd9 to your computer and use it in GitHub Desktop.
Save FilipeLipan/adcd0de81530ec6b48380e2802d97dd9 to your computer and use it in GitHub Desktop.
a lot of diferrent types of cryptos
package com.ebanx.congo.app
import android.content.Context
import android.security.KeyPairGeneratorSpec
import android.security.keystore.KeyGenParameterSpec
import android.security.keystore.KeyProperties
import android.security.keystore.KeyProperties.KEY_ALGORITHM_RSA
import android.util.Base64
import androidx.security.crypto.MasterKeys
import com.ebanx.congo.BuildConfig
import com.google.crypto.tink.aead.AeadKeyTemplates
import com.google.crypto.tink.integration.android.AndroidKeysetManager
import java.math.BigInteger
import java.security.GeneralSecurityException
import java.security.KeyPairGenerator
import java.security.KeyStore
import java.security.PrivateKey
import java.util.*
import javax.crypto.KeyGenerator
import javax.security.auth.x500.X500Principal
class KeyStoreManager(val context: Context) {
private val TAG = "tink"
private val PREF_FILE_NAME = "hello_world_pref"
private val TINK_KEYSET_NAME = "hello_world_keyset"
private val MASTER_KEY_URI = "android-keystore://hello_world_master_key"
// val aead: Aead
init {
// val keyGenParameterSpec = MasterKeys.AES256_GCM_SPEC
// val masterKeyAlias = MasterKeys.getOrCreate(keyGenParameterSpec)
//
//
// val KEYSTORE_PROVIDER_ANDROID_KEYSTORE = "AndroidKeyStore"
//
// val ks = KeyStore.getInstance(KEYSTORE_PROVIDER_ANDROID_KEYSTORE)
// val alias = BuildConfig.APPLICATION_ID
//
// //Use null to load Keystore with default parameters.
// ks?.load(null)
//
//
// val start = GregorianCalendar()
// val end = GregorianCalendar()
// end.add(Calendar.YEAR, 10)
//
// val spec = android.security.KeyPairGeneratorSpec.Builder(context)
// // Alias - is a key for your KeyPair, to obtain it from Keystore in future.
// .setAlias(alias?:"")
// // The subject used for the self-signed certificate of the generated pair
// .setSubject(X500Principal("CN=$alias"))
// // The serial number used for the self-signed certificate of the generated pair.
// .setSerialNumber(BigInteger.valueOf(1337))
// // Date range of validity for the generated pair.
// .setStartDate(start.time).setEndDate(end.time)
// .build()
//
// val kpGenerator = KeyPairGenerator.getInstance(KEY_ALGORITHM_RSA, KEYSTORE_PROVIDER_ANDROID_KEYSTORE)
// kpGenerator.initialize(spec)
// // Generate private/public keys
// kpGenerator.generateKeyPair()
//
// ks.getCertificate(alias).publicKey
// val ks = KeyStore.getInstance("AndroidKeyStore")
//
// val privateKey = ks?.getKey(BuildConfig.APPLICATION_ID, null) as PrivateKey?
//
// KeyGenParameterSpec.Builder
//
//
//
//
// val keyGenerator = KeyGenerator
// .getInstance(KeyProperties.KEY_ALGORITHM_AES, "AndroidKeyStore");
// encryptedFile.openFileOutput()
// val contents = encryptedFile.bufferedReader().useLines { lines ->
// lines.fold("") { working, line ->
// "$working\n$line"
// }
// }
//
//
// val stringBuffer = StringBuffer()
// try {
// BufferedReader(FileReader(encryptedFile.)).use({ reader ->
//
// var line = reader.readLine()
// while (line != null) {
// stringBuffer.append(line).append('\n')
// line = reader.readLine()
// }
// })
// } catch (e: IOException) {
// // Error occurred opening raw file for reading.
// } finally {
// val contents = stringBuffer.toString()
// }
// TinkConfig.register()
//
// val androidKeysetManager = getOrGenerateNewKeysetHandle()
//
// aead = AeadFactory.getPrimitive(androidKeysetManager!!.keysetHandle)
//
// val EMPTY_ASSOCIATED_DATA = ByteArray(0)
//
// val name = "nome"
// val nameValue = "nameValue"
//
// val teste = aead.encrypt(name.toByteArray(), EMPTY_ASSOCIATED_DATA)
// Log.d(TAG, teste.toString())
//
// val plaintext = aead.decrypt(teste, EMPTY_ASSOCIATED_DATA)
//
// Log.d(TAG, String(plaintext, Charset.defaultCharset()))
}
//
// private fun base64Encode(input: ByteArray): String {
// return Base64.encodeToString(input, Base64.DEFAULT)
// }
//
// private fun base64Decode(input: String): ByteArray {
// return Base64.decode(input, Base64.DEFAULT)
// }
// @Throws(IOException::class, GeneralSecurityException::class)
// private fun getOrGenerateNewKeysetHandle(): AndroidKeysetManager? {
// return AndroidKeysetManager.Builder()
// .withSharedPref(context, TINK_KEYSET_NAME, PREF_FILE_NAME)
// .withKeyTemplate(AeadKeyTemplates.AES256_GCM)
// .withMasterKeyUri(MASTER_KEY_URI)
// .build()
// }
// val key = AndroidKeysetManager.Builder()
// .withSharedPref(context, "sadasd", "asdasdas")
// .withKeyTemplate(AeadKeyTemplates.AES256_GCM)
// .withMasterKeyUri("")
// .build()
// .keysetHandle
//
//// AeadConfig.register()
//
//// Registry.registerKeyManager(MyAeadKeyManager())
//
//// val keyTemplate = AeadKeyTemplates.AES128_GCM
//// val keysetHandle = KeysetHandle.generateNew(keyTemplate)
//
//
//// Generate the key material...
// val keysetHandle = KeysetHandle.generateNew(
// AeadKeyTemplates.AES128_GCM)
//
// // and write it to a file.
// val keysetFilename = "my_keyset.json"
//
// val file = File(context.filesDir, keysetFilename)
// CleartextKeysetHandle.write(keysetHandle, JsonKeysetWriter.withFile(
// File(keysetFilename)))
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment