Skip to content

Commit 69a0a25

Browse files
authored
feat(android): migrate from SpongyCastle to BouncyCastle (#15)
1 parent 5a390be commit 69a0a25

4 files changed

Lines changed: 21 additions & 22 deletions

File tree

android/build.gradle

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,5 @@ def kotlin_version = getExtOrDefault("kotlinVersion")
7878
dependencies {
7979
implementation "com.facebook.react:react-android"
8080
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
81-
implementation "com.madgag.spongycastle:core:1.58.0.0"
82-
implementation "com.madgag.spongycastle:prov:1.58.0.0"
81+
implementation "org.bouncycastle:bcprov-jdk18on:1.84"
8382
}

android/src/main/java/chat/rocket/mobilecrypto/algorithms/PBKDF2Crypto.kt

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
package chat.rocket.mobilecrypto.algorithms
22

33
import java.security.NoSuchAlgorithmException
4-
import org.spongycastle.crypto.ExtendedDigest
5-
import org.spongycastle.crypto.PBEParametersGenerator
6-
import org.spongycastle.crypto.digests.SHA1Digest
7-
import org.spongycastle.crypto.digests.SHA224Digest
8-
import org.spongycastle.crypto.digests.SHA256Digest
9-
import org.spongycastle.crypto.digests.SHA384Digest
10-
import org.spongycastle.crypto.digests.SHA512Digest
11-
import org.spongycastle.crypto.generators.PKCS5S2ParametersGenerator
12-
import org.spongycastle.crypto.params.KeyParameter
4+
import org.bouncycastle.crypto.ExtendedDigest
5+
import org.bouncycastle.crypto.PBEParametersGenerator
6+
import org.bouncycastle.crypto.digests.SHA1Digest
7+
import org.bouncycastle.crypto.digests.SHA224Digest
8+
import org.bouncycastle.crypto.digests.SHA256Digest
9+
import org.bouncycastle.crypto.digests.SHA384Digest
10+
import org.bouncycastle.crypto.digests.SHA512Digest
11+
import org.bouncycastle.crypto.generators.PKCS5S2ParametersGenerator
12+
import org.bouncycastle.crypto.params.KeyParameter
1313

1414
/**
1515
* PBKDF2 (Password-Based Key Derivation Function 2) operations

android/src/main/java/chat/rocket/mobilecrypto/algorithms/RSACrypto.kt

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,13 @@ import java.security.spec.RSAPublicKeySpec
2121
import java.security.spec.X509EncodedKeySpec
2222
import java.util.Arrays
2323
import javax.crypto.Cipher
24-
import org.spongycastle.asn1.ASN1InputStream
25-
import org.spongycastle.asn1.ASN1Primitive
26-
import org.spongycastle.asn1.pkcs.PrivateKeyInfo
27-
import org.spongycastle.asn1.x509.SubjectPublicKeyInfo
28-
import org.spongycastle.util.io.pem.PemObject
29-
import org.spongycastle.util.io.pem.PemReader
30-
import org.spongycastle.util.io.pem.PemWriter
24+
import org.bouncycastle.asn1.ASN1InputStream
25+
import org.bouncycastle.asn1.ASN1Primitive
26+
import org.bouncycastle.asn1.pkcs.PrivateKeyInfo
27+
import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo
28+
import org.bouncycastle.util.io.pem.PemObject
29+
import org.bouncycastle.util.io.pem.PemReader
30+
import org.bouncycastle.util.io.pem.PemWriter
3131

3232
/**
3333
* RSA encryption, decryption, signing and key format conversion operations
@@ -318,7 +318,7 @@ object RSACrypto {
318318
// PKCS#1 RSA PUBLIC KEY format - need to convert to X.509
319319
val inputStream = ASN1InputStream(keyData)
320320
val obj = inputStream.readObject()
321-
val rsaPublicKey = org.spongycastle.asn1.pkcs.RSAPublicKey.getInstance(obj)
321+
val rsaPublicKey = org.bouncycastle.asn1.pkcs.RSAPublicKey.getInstance(obj)
322322

323323
val keySpec = RSAPublicKeySpec(rsaPublicKey.modulus, rsaPublicKey.publicExponent)
324324
keyFactory.generatePublic(keySpec)
@@ -412,7 +412,7 @@ object RSACrypto {
412412
}
413413

414414
private fun pkcs1ToPublicKey(obj: ASN1Primitive): WritableMap {
415-
val keyStruct = org.spongycastle.asn1.pkcs.RSAPublicKey.getInstance(obj)
415+
val keyStruct = org.bouncycastle.asn1.pkcs.RSAPublicKey.getInstance(obj)
416416

417417
val jwk = Arguments.createMap()
418418
jwk.putString("n", toBase64String(keyStruct.modulus, true))
@@ -422,7 +422,7 @@ object RSACrypto {
422422
}
423423

424424
private fun pkcs1ToPrivateKey(obj: ASN1Primitive): WritableMap {
425-
val keyStruct = org.spongycastle.asn1.pkcs.RSAPrivateKey.getInstance(obj)
425+
val keyStruct = org.bouncycastle.asn1.pkcs.RSAPrivateKey.getInstance(obj)
426426

427427
val jwk = Arguments.createMap()
428428
jwk.putString("n", toBase64String(keyStruct.modulus, true))

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@rocket.chat/mobile-crypto",
3-
"version": "0.3.0",
3+
"version": "0.4.0",
44
"description": "Rocket.Chat Mobile Crypto",
55
"main": "./lib/module/index.js",
66
"module": "./lib/module/index.js",

0 commit comments

Comments
 (0)