Skip to content

Commit 19c6095

Browse files
committed
Encryption: use RSAPublicKey interface instead of concrete conscrypt class
This allows the code to work regardless of installed security provider. Signed-off-by: Álvaro Brey <[email protected]>
1 parent 71f16d6 commit 19c6095

File tree

4 files changed

+10
-11
lines changed

4 files changed

+10
-11
lines changed

app/src/androidTest/java/com/nextcloud/client/EndToEndRandomIT.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@
5252
import com.owncloud.android.utils.FileStorageUtils;
5353

5454
import org.bouncycastle.operator.OperatorCreationException;
55-
import org.conscrypt.OpenSSLRSAPublicKey;
5655
import org.junit.Before;
5756
import org.junit.BeforeClass;
5857
import org.junit.Rule;
@@ -66,6 +65,7 @@
6665
import java.security.NoSuchAlgorithmException;
6766
import java.security.cert.CertificateException;
6867
import java.security.interfaces.RSAPrivateCrtKey;
68+
import java.security.interfaces.RSAPublicKey;
6969
import java.util.ArrayList;
7070
import java.util.List;
7171
import java.util.Random;
@@ -501,7 +501,7 @@ public void testCheckCSR() throws NoSuchAlgorithmException, IOException, Operato
501501

502502
// check key
503503
RSAPrivateCrtKey privateKey = (RSAPrivateCrtKey) keyPair.getPrivate();
504-
OpenSSLRSAPublicKey publicKey = EncryptionUtils.convertPublicKeyFromString(publicKeyString);
504+
RSAPublicKey publicKey = EncryptionUtils.convertPublicKeyFromString(publicKeyString);
505505

506506
BigInteger modulusPublic = publicKey.getModulus();
507507
BigInteger modulusPrivate = privateKey.getModulus();
@@ -614,7 +614,7 @@ private static void createKeys() throws Exception {
614614

615615
// check key
616616
RSAPrivateCrtKey privateKey = (RSAPrivateCrtKey) keyPair.getPrivate();
617-
OpenSSLRSAPublicKey publicKey = EncryptionUtils.convertPublicKeyFromString(publicKeyString);
617+
RSAPublicKey publicKey = EncryptionUtils.convertPublicKeyFromString(publicKeyString);
618618

619619
BigInteger modulusPublic = publicKey.getModulus();
620620
BigInteger modulusPrivate = privateKey.getModulus();

app/src/androidTest/java/com/owncloud/android/util/EncryptionTestIT.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@
3636

3737
import org.apache.commons.codec.binary.Hex;
3838
import org.apache.commons.io.FileUtils;
39-
import org.conscrypt.OpenSSLRSAPublicKey;
4039
import org.junit.Rule;
4140
import org.junit.Test;
4241
import org.junit.runner.RunWith;
@@ -53,6 +52,7 @@
5352
import java.security.PrivateKey;
5453
import java.security.SecureRandom;
5554
import java.security.interfaces.RSAPrivateCrtKey;
55+
import java.security.interfaces.RSAPublicKey;
5656
import java.util.Arrays;
5757
import java.util.HashMap;
5858
import java.util.HashSet;
@@ -184,7 +184,7 @@ public void encryptStringAsymmetricWrongPublicKey() throws Exception {
184184
@Test
185185
public void testModulus() throws Exception {
186186
KeyPair keyPair = EncryptionUtils.generateKeyPair();
187-
OpenSSLRSAPublicKey publicKey = (OpenSSLRSAPublicKey) keyPair.getPublic();
187+
RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();
188188
RSAPrivateCrtKey privateKey = (RSAPrivateCrtKey) keyPair.getPrivate();
189189

190190
BigInteger modulusPublic = publicKey.getModulus();

app/src/main/java/com/owncloud/android/ui/dialog/SetupEncryptionDialogFragment.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,12 @@
5050
import com.owncloud.android.utils.theme.ThemeButtonUtils;
5151
import com.owncloud.android.utils.theme.ThemeColorUtils;
5252

53-
import org.conscrypt.OpenSSLRSAPublicKey;
54-
5553
import java.io.IOException;
5654
import java.math.BigInteger;
5755
import java.security.KeyPair;
5856
import java.security.PrivateKey;
5957
import java.security.interfaces.RSAPrivateCrtKey;
58+
import java.security.interfaces.RSAPublicKey;
6059
import java.util.Arrays;
6160
import java.util.List;
6261
import java.util.Locale;
@@ -367,7 +366,7 @@ protected String doInBackground(Void... voids) {
367366

368367
// check key
369368
RSAPrivateCrtKey privateKey = (RSAPrivateCrtKey) keyPair.getPrivate();
370-
OpenSSLRSAPublicKey publicKey = EncryptionUtils.convertPublicKeyFromString(publicKeyString);
369+
RSAPublicKey publicKey = EncryptionUtils.convertPublicKeyFromString(publicKeyString);
371370

372371
BigInteger modulusPublic = publicKey.getModulus();
373372
BigInteger modulusPrivate = privateKey.getModulus();

app/src/main/java/com/owncloud/android/utils/EncryptionUtils.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@
4545
import com.owncloud.android.operations.UploadException;
4646

4747
import org.apache.commons.httpclient.HttpStatus;
48-
import org.conscrypt.OpenSSLRSAPublicKey;
4948

5049
import java.io.BufferedReader;
5150
import java.io.ByteArrayInputStream;
@@ -69,6 +68,7 @@
6968
import java.security.cert.CertificateException;
7069
import java.security.cert.CertificateFactory;
7170
import java.security.cert.X509Certificate;
71+
import java.security.interfaces.RSAPublicKey;
7272
import java.security.spec.InvalidKeySpecException;
7373
import java.security.spec.KeySpec;
7474
import java.security.spec.PKCS8EncodedKeySpec;
@@ -852,7 +852,7 @@ public static RemoteOperationResult unlockFolder(OCFile parentFolder, OwnCloudCl
852852
}
853853
}
854854

855-
public static OpenSSLRSAPublicKey convertPublicKeyFromString(String string) throws CertificateException {
855+
public static RSAPublicKey convertPublicKeyFromString(String string) throws CertificateException {
856856
String trimmedCert = string.replace("-----BEGIN CERTIFICATE-----\n", "")
857857
.replace("-----END CERTIFICATE-----\n", "");
858858
byte[] encodedCert = trimmedCert.getBytes(StandardCharsets.UTF_8);
@@ -861,6 +861,6 @@ public static OpenSSLRSAPublicKey convertPublicKeyFromString(String string) thro
861861
CertificateFactory certFactory = CertificateFactory.getInstance("X.509");
862862
InputStream in = new ByteArrayInputStream(decodedCert);
863863
X509Certificate certificate = (X509Certificate) certFactory.generateCertificate(in);
864-
return (OpenSSLRSAPublicKey) certificate.getPublicKey();
864+
return (RSAPublicKey) certificate.getPublicKey();
865865
}
866866
}

0 commit comments

Comments
 (0)