Guest User

Untitled

a guest
Dec 14th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.34 KB | None | 0 0
  1. val ks: KeyStore = KeyStore.getInstance("AndroidKeyStore").apply {
  2. load(null)
  3. }
  4.  
  5. fun encryptUsingKey(publicKey: PublicKey, bytes: ByteArray): ByteArray {
  6. val inCipher = Cipher.getInstance("RSA/NONE/NoPadding")
  7. inCipher.init(Cipher.ENCRYPT_MODE, publicKey)
  8. return inCipher.doFinal(bytes)
  9. }
  10.  
  11. fun decryptUsingKey(privateKey: PrivateKey, bytes: ByteArray): ByteArray {
  12. val inCipher = Cipher.getInstance("RSA/NONE/NoPadding")
  13. inCipher.init(Cipher.DECRYPT_MODE, privateKey)
  14. return inCipher.doFinal(bytes)
  15. }
  16.  
  17. fun getKey(): KeyStore.Entry {
  18. val containsAlias = ks.containsAlias(alias)
  19. if (!containsAlias) {
  20. val kpg: KeyPairGenerator = KeyPairGenerator.getInstance(
  21. KeyProperties.KEY_ALGORITHM_RSA,
  22. "AndroidKeyStore"
  23. )
  24. val parameterSpec: KeyGenParameterSpec =
  25. KeyGenParameterSpec.Builder(
  26. alias,
  27. KeyProperties.PURPOSE_DECRYPT or KeyProperties.PURPOSE_ENCRYPT
  28. )
  29. .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_NONE)
  30. .setDigests(KeyProperties.DIGEST_SHA256, KeyProperties.DIGEST_SHA512)
  31. .setRandomizedEncryptionRequired(false)
  32. .build()
  33.  
  34. kpg.initialize(parameterSpec)
  35.  
  36. val kp = kpg.generateKeyPair()
  37. }
  38. return ks.getEntry(alias, null)
  39. }
  40.  
  41. fun testEncryptionDecryption() {
  42. val entry = getKey()
  43.  
  44. if (entry is KeyStore.PrivateKeyEntry) {
  45. val privateKey = entry.privateKey
  46. val certificate = entry.certificate
  47. val publicKey = certificate.publicKey
  48.  
  49. val testKey = "0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF"
  50.  
  51. val encrypted = service.encryptUsingKey(publicKey, Base64.decodeFromString(testKey))
  52. val decrypted = service.decryptUsingKey(privateKey, encrypted)
  53.  
  54. assertEquals(testKey, Base64.encodeToString(decrypted))
  55.  
  56. }
  57. }
  58.  
  59. org.junit.ComparisonFailure: expected:<[0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF]> but was:<[AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNdt-Oeu_PQAQgxBdNdt-Oeu_PQAQgxBdNdt-Oeu_PQAQgxBdNdt-Oeu_PQAQgxBQ]>
Add Comment
Please, Sign In to add comment