Skip to content

Commit

Permalink
Switch to Bouncy Castle
Browse files Browse the repository at this point in the history
See rtyley/spongycastle#34

Signed-off-by: Daniele Ricci <daniele@casaricci.it>
  • Loading branch information
daniele-athome committed Mar 14, 2020
1 parent 2656458 commit c0bc6d4
Show file tree
Hide file tree
Showing 32 changed files with 201 additions and 202 deletions.
7 changes: 3 additions & 4 deletions app/build.gradle
Expand Up @@ -169,14 +169,13 @@ dependencies {
implementation 'com.google.code.gson:gson:2.8.6'

// encryption libraries
implementation "com.madgag.spongycastle:core:$spongyCastleVersion"
implementation ("com.madgag.spongycastle:prov:$spongyCastleVersion") {
implementation ("org.bouncycastle:bcprov-jdk15on:$bouncyCastleVersion") {
exclude group: 'junit'
}
implementation ("com.madgag.spongycastle:bcpkix-jdk15on:$spongyCastleVersion") {
implementation ("org.bouncycastle:bcpkix-jdk15on:$bouncyCastleVersion") {
exclude group: 'junit'
}
implementation ("com.madgag.spongycastle:bcpg-jdk15on:$spongyCastleVersion") {
implementation ("org.bouncycastle:bcpg-jdk15on:$bouncyCastleVersion") {
exclude group: 'junit'
}

Expand Down
64 changes: 32 additions & 32 deletions app/proguard.cfg
Expand Up @@ -16,38 +16,38 @@
# keep all of Kontalk
-keep class org.kontalk.** { *; }

# keep Spongy Castle
-keep class org.spongycastle.crypto.* { *; }
-keep class org.spongycastle.crypto.agreement.** { *; }
-keep class org.spongycastle.crypto.digests.* { *; }
-keep class org.spongycastle.crypto.ec.* { *; }
-keep class org.spongycastle.crypto.encodings.* { *; }
-keep class org.spongycastle.crypto.engines.* { *; }
-keep class org.spongycastle.crypto.macs.* { *; }
-keep class org.spongycastle.crypto.modes.* { *; }
-keep class org.spongycastle.crypto.paddings.* { *; }
-keep class org.spongycastle.crypto.params.* { *; }
-keep class org.spongycastle.crypto.prng.* { *; }
-keep class org.spongycastle.crypto.signers.* { *; }

-keep class org.spongycastle.jcajce.provider.asymmetric.* { *; }
-keep class org.spongycastle.jcajce.provider.asymmetric.dh.* { *; }
-keep class org.spongycastle.jcajce.provider.asymmetric.dsa.* { *; }
-keep class org.spongycastle.jcajce.provider.asymmetric.ec.* { *; }
-keep class org.spongycastle.jcajce.provider.asymmetric.elgamal.* { *; }
-keep class org.spongycastle.jcajce.provider.asymmetric.rsa.* { *; }
-keep class org.spongycastle.jcajce.provider.asymmetric.util.* { *; }
-keep class org.spongycastle.jcajce.provider.asymmetric.x509.* { *; }

-keep class org.spongycastle.jcajce.provider.digest.** { *; }
-keep class org.spongycastle.jcajce.provider.keystore.** { *; }
-keep class org.spongycastle.jcajce.provider.symmetric.** { *; }
-keep class org.spongycastle.jcajce.spec.* { *; }
-keep class org.spongycastle.jce.** { *; }

-keep class org.spongycastle.x509.** { *; }
-keep class org.spongycastle.bcpg.** { *; }
-keep class org.spongycastle.openpgp.** { *; }
# keep Bouncy Castle
-keep class org.bouncycastle.crypto.* { *; }
-keep class org.bouncycastle.crypto.agreement.** { *; }
-keep class org.bouncycastle.crypto.digests.* { *; }
-keep class org.bouncycastle.crypto.ec.* { *; }
-keep class org.bouncycastle.crypto.encodings.* { *; }
-keep class org.bouncycastle.crypto.engines.* { *; }
-keep class org.bouncycastle.crypto.macs.* { *; }
-keep class org.bouncycastle.crypto.modes.* { *; }
-keep class org.bouncycastle.crypto.paddings.* { *; }
-keep class org.bouncycastle.crypto.params.* { *; }
-keep class org.bouncycastle.crypto.prng.* { *; }
-keep class org.bouncycastle.crypto.signers.* { *; }

-keep class org.bouncycastle.jcajce.provider.asymmetric.* { *; }
-keep class org.bouncycastle.jcajce.provider.asymmetric.dh.* { *; }
-keep class org.bouncycastle.jcajce.provider.asymmetric.dsa.* { *; }
-keep class org.bouncycastle.jcajce.provider.asymmetric.ec.* { *; }
-keep class org.bouncycastle.jcajce.provider.asymmetric.elgamal.* { *; }
-keep class org.bouncycastle.jcajce.provider.asymmetric.rsa.* { *; }
-keep class org.bouncycastle.jcajce.provider.asymmetric.util.* { *; }
-keep class org.bouncycastle.jcajce.provider.asymmetric.x509.* { *; }

-keep class org.bouncycastle.jcajce.provider.digest.** { *; }
-keep class org.bouncycastle.jcajce.provider.keystore.** { *; }
-keep class org.bouncycastle.jcajce.provider.symmetric.** { *; }
-keep class org.bouncycastle.jcajce.spec.* { *; }
-keep class org.bouncycastle.jce.** { *; }

-keep class org.bouncycastle.x509.** { *; }
-keep class org.bouncycastle.bcpg.** { *; }
-keep class org.bouncycastle.openpgp.** { *; }

# Smack Core classes should be figured out by Proguard
-keep class org.jivesoftware.smack.initializer.** { *; }
Expand Down
Expand Up @@ -27,8 +27,8 @@
import org.junit.runner.RunWith;
import org.jxmpp.util.XmppStringUtils;
import org.kontalk.util.XMPPUtils;
import org.spongycastle.openpgp.PGPException;
import org.spongycastle.openpgp.PGPPublicKeyRing;
import org.bouncycastle.openpgp.PGPException;
import org.bouncycastle.openpgp.PGPPublicKeyRing;

import android.annotation.TargetApi;
import android.database.Cursor;
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/java/org/kontalk/Kontalk.java
Expand Up @@ -27,7 +27,7 @@
import com.vanniktech.emoji.EmojiManager;
import com.vanniktech.emoji.ios.IosEmojiProvider;

import org.spongycastle.openpgp.PGPException;
import org.bouncycastle.openpgp.PGPException;

import android.accounts.Account;
import android.accounts.AccountManager;
Expand Down
Expand Up @@ -27,7 +27,7 @@
import java.util.concurrent.TimeUnit;

import org.jxmpp.jid.BareJid;
import org.spongycastle.openpgp.PGPException;
import org.bouncycastle.openpgp.PGPException;

import android.accounts.AbstractAccountAuthenticator;
import android.accounts.Account;
Expand Down
78 changes: 39 additions & 39 deletions app/src/main/java/org/kontalk/crypto/PGP.java
Expand Up @@ -37,51 +37,51 @@

import org.jivesoftware.smack.util.StringUtils;
import org.jxmpp.util.XmppStringUtils;
import org.spongycastle.bcpg.ArmoredInputStream;
import org.spongycastle.bcpg.BCPGInputStream;
import org.spongycastle.bcpg.BCPGKey;
import org.spongycastle.bcpg.DSASecretBCPGKey;
import org.spongycastle.bcpg.ECSecretBCPGKey;
import org.spongycastle.bcpg.ElGamalSecretBCPGKey;
import org.spongycastle.bcpg.HashAlgorithmTags;
import org.spongycastle.bcpg.PublicKeyPacket;
import org.spongycastle.bcpg.RSASecretBCPGKey;
import org.spongycastle.jce.provider.BouncyCastleProvider;
import org.spongycastle.openpgp.PGPEncryptedData;
import org.spongycastle.openpgp.PGPException;
import org.spongycastle.openpgp.PGPKeyPair;
import org.spongycastle.openpgp.PGPKeyRingGenerator;
import org.spongycastle.openpgp.PGPObjectFactory;
import org.spongycastle.openpgp.PGPPrivateKey;
import org.spongycastle.openpgp.PGPPublicKey;
import org.spongycastle.openpgp.PGPPublicKeyRing;
import org.spongycastle.openpgp.PGPSecretKey;
import org.spongycastle.openpgp.PGPSecretKeyRing;
import org.spongycastle.openpgp.PGPSignature;
import org.spongycastle.openpgp.PGPSignatureGenerator;
import org.spongycastle.openpgp.PGPSignatureSubpacketGenerator;
import org.spongycastle.openpgp.PGPSignatureSubpacketVector;
import org.spongycastle.openpgp.PGPUtil;
import org.spongycastle.openpgp.operator.KeyFingerPrintCalculator;
import org.spongycastle.openpgp.operator.PBESecretKeyDecryptor;
import org.spongycastle.openpgp.operator.PBESecretKeyEncryptor;
import org.spongycastle.openpgp.operator.PGPDigestCalculator;
import org.spongycastle.openpgp.operator.PGPDigestCalculatorProvider;
import org.spongycastle.openpgp.operator.bc.BcKeyFingerprintCalculator;
import org.spongycastle.openpgp.operator.jcajce.JcaPGPContentSignerBuilder;
import org.spongycastle.openpgp.operator.jcajce.JcaPGPDigestCalculatorProviderBuilder;
import org.spongycastle.openpgp.operator.jcajce.JcaPGPKeyConverter;
import org.spongycastle.openpgp.operator.jcajce.JcaPGPKeyPair;
import org.spongycastle.openpgp.operator.jcajce.JcePBESecretKeyDecryptorBuilder;
import org.spongycastle.openpgp.operator.jcajce.JcePBESecretKeyEncryptorBuilder;
import org.bouncycastle.bcpg.ArmoredInputStream;
import org.bouncycastle.bcpg.BCPGInputStream;
import org.bouncycastle.bcpg.BCPGKey;
import org.bouncycastle.bcpg.DSASecretBCPGKey;
import org.bouncycastle.bcpg.ECSecretBCPGKey;
import org.bouncycastle.bcpg.ElGamalSecretBCPGKey;
import org.bouncycastle.bcpg.HashAlgorithmTags;
import org.bouncycastle.bcpg.PublicKeyPacket;
import org.bouncycastle.bcpg.RSASecretBCPGKey;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.openpgp.PGPEncryptedData;
import org.bouncycastle.openpgp.PGPException;
import org.bouncycastle.openpgp.PGPKeyPair;
import org.bouncycastle.openpgp.PGPKeyRingGenerator;
import org.bouncycastle.openpgp.PGPObjectFactory;
import org.bouncycastle.openpgp.PGPPrivateKey;
import org.bouncycastle.openpgp.PGPPublicKey;
import org.bouncycastle.openpgp.PGPPublicKeyRing;
import org.bouncycastle.openpgp.PGPSecretKey;
import org.bouncycastle.openpgp.PGPSecretKeyRing;
import org.bouncycastle.openpgp.PGPSignature;
import org.bouncycastle.openpgp.PGPSignatureGenerator;
import org.bouncycastle.openpgp.PGPSignatureSubpacketGenerator;
import org.bouncycastle.openpgp.PGPSignatureSubpacketVector;
import org.bouncycastle.openpgp.PGPUtil;
import org.bouncycastle.openpgp.operator.KeyFingerPrintCalculator;
import org.bouncycastle.openpgp.operator.PBESecretKeyDecryptor;
import org.bouncycastle.openpgp.operator.PBESecretKeyEncryptor;
import org.bouncycastle.openpgp.operator.PGPDigestCalculator;
import org.bouncycastle.openpgp.operator.PGPDigestCalculatorProvider;
import org.bouncycastle.openpgp.operator.bc.BcKeyFingerprintCalculator;
import org.bouncycastle.openpgp.operator.jcajce.JcaPGPContentSignerBuilder;
import org.bouncycastle.openpgp.operator.jcajce.JcaPGPDigestCalculatorProviderBuilder;
import org.bouncycastle.openpgp.operator.jcajce.JcaPGPKeyConverter;
import org.bouncycastle.openpgp.operator.jcajce.JcaPGPKeyPair;
import org.bouncycastle.openpgp.operator.jcajce.JcePBESecretKeyDecryptorBuilder;
import org.bouncycastle.openpgp.operator.jcajce.JcePBESecretKeyEncryptorBuilder;

import android.os.Parcel;


/** Some PGP utility method, mainly for use by {@link PersonalKey}. */
public class PGP {

/** Security provider: Spongy Castle. */
/** Security provider: Bouncy Castle. */
public static Provider PROVIDER;

/** Default EC curve used. */
Expand Down Expand Up @@ -157,7 +157,7 @@ public static PGPKeyPairRing loadArmored(InputStream privateKeyData, InputStream
}

public static void registerProvider() {
// create spongy castle provider
// create Bouncy Castle provider
// do not register it as can cause issues on some devices
PROVIDER = new BouncyCastleProvider();
try {
Expand Down
50 changes: 25 additions & 25 deletions app/src/main/java/org/kontalk/crypto/PGPCoder.java
Expand Up @@ -32,31 +32,31 @@
import java.util.Iterator;
import java.util.List;

import org.spongycastle.bcpg.HashAlgorithmTags;
import org.spongycastle.openpgp.PGPCompressedData;
import org.spongycastle.openpgp.PGPCompressedDataGenerator;
import org.spongycastle.openpgp.PGPEncryptedData;
import org.spongycastle.openpgp.PGPEncryptedDataGenerator;
import org.spongycastle.openpgp.PGPEncryptedDataList;
import org.spongycastle.openpgp.PGPException;
import org.spongycastle.openpgp.PGPLiteralData;
import org.spongycastle.openpgp.PGPLiteralDataGenerator;
import org.spongycastle.openpgp.PGPObjectFactory;
import org.spongycastle.openpgp.PGPOnePassSignature;
import org.spongycastle.openpgp.PGPOnePassSignatureList;
import org.spongycastle.openpgp.PGPPrivateKey;
import org.spongycastle.openpgp.PGPPublicKeyEncryptedData;
import org.spongycastle.openpgp.PGPPublicKeyRing;
import org.spongycastle.openpgp.PGPSignature;
import org.spongycastle.openpgp.PGPSignatureGenerator;
import org.spongycastle.openpgp.PGPSignatureList;
import org.spongycastle.openpgp.PGPSignatureSubpacketGenerator;
import org.spongycastle.openpgp.operator.KeyFingerPrintCalculator;
import org.spongycastle.openpgp.operator.bc.BcPGPContentSignerBuilder;
import org.spongycastle.openpgp.operator.bc.BcPGPContentVerifierBuilderProvider;
import org.spongycastle.openpgp.operator.bc.BcPGPDataEncryptorBuilder;
import org.spongycastle.openpgp.operator.bc.BcPublicKeyDataDecryptorFactory;
import org.spongycastle.openpgp.operator.bc.BcPublicKeyKeyEncryptionMethodGenerator;
import org.bouncycastle.bcpg.HashAlgorithmTags;
import org.bouncycastle.openpgp.PGPCompressedData;
import org.bouncycastle.openpgp.PGPCompressedDataGenerator;
import org.bouncycastle.openpgp.PGPEncryptedData;
import org.bouncycastle.openpgp.PGPEncryptedDataGenerator;
import org.bouncycastle.openpgp.PGPEncryptedDataList;
import org.bouncycastle.openpgp.PGPException;
import org.bouncycastle.openpgp.PGPLiteralData;
import org.bouncycastle.openpgp.PGPLiteralDataGenerator;
import org.bouncycastle.openpgp.PGPObjectFactory;
import org.bouncycastle.openpgp.PGPOnePassSignature;
import org.bouncycastle.openpgp.PGPOnePassSignatureList;
import org.bouncycastle.openpgp.PGPPrivateKey;
import org.bouncycastle.openpgp.PGPPublicKeyEncryptedData;
import org.bouncycastle.openpgp.PGPPublicKeyRing;
import org.bouncycastle.openpgp.PGPSignature;
import org.bouncycastle.openpgp.PGPSignatureGenerator;
import org.bouncycastle.openpgp.PGPSignatureList;
import org.bouncycastle.openpgp.PGPSignatureSubpacketGenerator;
import org.bouncycastle.openpgp.operator.KeyFingerPrintCalculator;
import org.bouncycastle.openpgp.operator.bc.BcPGPContentSignerBuilder;
import org.bouncycastle.openpgp.operator.bc.BcPGPContentVerifierBuilderProvider;
import org.bouncycastle.openpgp.operator.bc.BcPGPDataEncryptorBuilder;
import org.bouncycastle.openpgp.operator.bc.BcPublicKeyDataDecryptorFactory;
import org.bouncycastle.openpgp.operator.bc.BcPublicKeyKeyEncryptionMethodGenerator;

import org.kontalk.client.EndpointServer;
import org.kontalk.message.TextComponent;
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/java/org/kontalk/crypto/PGPKeyFlags.java
Expand Up @@ -23,7 +23,7 @@
* PGP key flags not supported by Bouncy Castle.
* @author Daniele
*/
public class PGPKeyFlags implements org.spongycastle.openpgp.PGPKeyFlags {
public class PGPKeyFlags implements org.bouncycastle.openpgp.PGPKeyFlags {

public static final int CAN_AUTHENTICATE = 0x20; // This key may be used for authentication.

Expand Down
Expand Up @@ -20,9 +20,9 @@

import java.io.IOException;

import org.spongycastle.openpgp.PGPException;
import org.spongycastle.openpgp.PGPPublicKey;
import org.spongycastle.openpgp.PGPPublicKeyRing;
import org.bouncycastle.openpgp.PGPException;
import org.bouncycastle.openpgp.PGPPublicKey;
import org.bouncycastle.openpgp.PGPPublicKeyRing;


/**
Expand Down
Expand Up @@ -18,7 +18,7 @@

package org.kontalk.crypto;

import org.spongycastle.openpgp.PGPException;
import org.bouncycastle.openpgp.PGPException;


/**
Expand Down
24 changes: 12 additions & 12 deletions app/src/main/java/org/kontalk/crypto/PersonalKey.java
Expand Up @@ -31,18 +31,18 @@
import java.util.Date;
import java.util.Iterator;

import org.spongycastle.openpgp.PGPException;
import org.spongycastle.openpgp.PGPKeyPair;
import org.spongycastle.openpgp.PGPPrivateKey;
import org.spongycastle.openpgp.PGPPublicKey;
import org.spongycastle.openpgp.PGPPublicKeyRing;
import org.spongycastle.openpgp.PGPSecretKey;
import org.spongycastle.openpgp.PGPSecretKeyRing;
import org.spongycastle.openpgp.operator.KeyFingerPrintCalculator;
import org.spongycastle.openpgp.operator.PBESecretKeyDecryptor;
import org.spongycastle.openpgp.operator.PGPDigestCalculatorProvider;
import org.spongycastle.openpgp.operator.jcajce.JcaPGPDigestCalculatorProviderBuilder;
import org.spongycastle.openpgp.operator.jcajce.JcePBESecretKeyDecryptorBuilder;
import org.bouncycastle.openpgp.PGPException;
import org.bouncycastle.openpgp.PGPKeyPair;
import org.bouncycastle.openpgp.PGPPrivateKey;
import org.bouncycastle.openpgp.PGPPublicKey;
import org.bouncycastle.openpgp.PGPPublicKeyRing;
import org.bouncycastle.openpgp.PGPSecretKey;
import org.bouncycastle.openpgp.PGPSecretKeyRing;
import org.bouncycastle.openpgp.operator.KeyFingerPrintCalculator;
import org.bouncycastle.openpgp.operator.PBESecretKeyDecryptor;
import org.bouncycastle.openpgp.operator.PGPDigestCalculatorProvider;
import org.bouncycastle.openpgp.operator.jcajce.JcaPGPDigestCalculatorProviderBuilder;
import org.bouncycastle.openpgp.operator.jcajce.JcePBESecretKeyDecryptorBuilder;

import android.os.Parcel;
import android.os.Parcelable;
Expand Down
8 changes: 4 additions & 4 deletions app/src/main/java/org/kontalk/crypto/PersonalKeyExporter.java
Expand Up @@ -33,10 +33,10 @@
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

import org.spongycastle.bcpg.ArmoredOutputStream;
import org.spongycastle.openpgp.PGPException;
import org.spongycastle.util.io.pem.PemObject;
import org.spongycastle.util.io.pem.PemWriter;
import org.bouncycastle.bcpg.ArmoredOutputStream;
import org.bouncycastle.openpgp.PGPException;
import org.bouncycastle.util.io.pem.PemObject;
import org.bouncycastle.util.io.pem.PemWriter;

import org.kontalk.provider.Keyring;

Expand Down
6 changes: 3 additions & 3 deletions app/src/main/java/org/kontalk/crypto/PersonalKeyImporter.java
Expand Up @@ -33,9 +33,9 @@
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;

import org.spongycastle.bcpg.ArmoredInputStream;
import org.spongycastle.openpgp.PGPException;
import org.spongycastle.operator.OperatorCreationException;
import org.bouncycastle.bcpg.ArmoredInputStream;
import org.bouncycastle.openpgp.PGPException;
import org.bouncycastle.operator.OperatorCreationException;

import org.kontalk.crypto.PGP.PGPKeyPairRing;
import org.kontalk.provider.Keyring;
Expand Down
Expand Up @@ -20,11 +20,11 @@

import java.io.IOException;

import org.spongycastle.asn1.ASN1Encodable;
import org.spongycastle.asn1.ASN1Object;
import org.spongycastle.asn1.ASN1ObjectIdentifier;
import org.spongycastle.asn1.ASN1Primitive;
import org.spongycastle.asn1.DERBitString;
import org.bouncycastle.asn1.ASN1Encodable;
import org.bouncycastle.asn1.ASN1Object;
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
import org.bouncycastle.asn1.ASN1Primitive;
import org.bouncycastle.asn1.DERBitString;


/**
Expand Down

0 comments on commit c0bc6d4

Please sign in to comment.