Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- val ks: KeyStore = KeyStore.getInstance("AndroidKeyStore").apply {
- load(null)
- }
- fun encryptUsingKey(publicKey: PublicKey, bytes: ByteArray): ByteArray {
- val inCipher = Cipher.getInstance("RSA/NONE/NoPadding")
- inCipher.init(Cipher.ENCRYPT_MODE, publicKey)
- return inCipher.doFinal(bytes)
- }
- fun decryptUsingKey(privateKey: PrivateKey, bytes: ByteArray): ByteArray {
- val inCipher = Cipher.getInstance("RSA/NONE/NoPadding")
- inCipher.init(Cipher.DECRYPT_MODE, privateKey)
- return inCipher.doFinal(bytes)
- }
- fun getKey(): KeyStore.Entry {
- val containsAlias = ks.containsAlias(alias)
- if (!containsAlias) {
- val kpg: KeyPairGenerator = KeyPairGenerator.getInstance(
- KeyProperties.KEY_ALGORITHM_RSA,
- "AndroidKeyStore"
- )
- val parameterSpec: KeyGenParameterSpec =
- KeyGenParameterSpec.Builder(
- alias,
- KeyProperties.PURPOSE_DECRYPT or KeyProperties.PURPOSE_ENCRYPT
- )
- .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_NONE)
- .setDigests(KeyProperties.DIGEST_SHA256, KeyProperties.DIGEST_SHA512)
- .setRandomizedEncryptionRequired(false)
- .build()
- kpg.initialize(parameterSpec)
- val kp = kpg.generateKeyPair()
- }
- return ks.getEntry(alias, null)
- }
- fun testEncryptionDecryption() {
- val entry = getKey()
- if (entry is KeyStore.PrivateKeyEntry) {
- val privateKey = entry.privateKey
- val certificate = entry.certificate
- val publicKey = certificate.publicKey
- val testKey = "0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF"
- val encrypted = service.encryptUsingKey(publicKey, Base64.decodeFromString(testKey))
- val decrypted = service.decryptUsingKey(privateKey, encrypted)
- assertEquals(testKey, Base64.encodeToString(decrypted))
- }
- }
- org.junit.ComparisonFailure: expected:<[0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF]> but was:<[AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNdt-Oeu_PQAQgxBdNdt-Oeu_PQAQgxBdNdt-Oeu_PQAQgxBdNdt-Oeu_PQAQgxBQ]>
Add Comment
Please, Sign In to add comment