Browse Source

Before reverting

master
Preyea Regmi 4 years ago
parent
commit
d65cab1547
  1. 6
      app/src/main/java/com/gmeremit/online/gmeremittance_native/base/PrivilegedGateway.java
  2. 4
      app/src/main/java/com/gmeremit/online/gmeremittance_native/loginV2/view/LoginV2Activity.java
  3. 3
      app/src/main/java/com/gmeremit/online/gmeremittance_native/security/GMEAuthManager.java
  4. 15
      rxkeystore/src/main/java/com/mtramin/rxfingerprint/RsaDecryptionObservable.java
  5. 13
      rxkeystore/src/main/java/com/mtramin/rxfingerprint/RsaEncryptionObservable.java

6
app/src/main/java/com/gmeremit/online/gmeremittance_native/base/PrivilegedGateway.java

@ -3,6 +3,7 @@ package com.gmeremit.online.gmeremittance_native.base;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.SharedPreferences;
import android.util.Log;
import com.gmeremit.online.gmeremittance_native.GmeApplication;
import com.gmeremit.online.gmeremittance_native.homeV2.model.UserInfoModelV2;
@ -208,6 +209,7 @@ public abstract class PrivilegedGateway extends BaseGateway implements Privilege
@Override
public void persistSecretKeyForBiometric(String encrypted) {
Log.d("GMEAuthManager","Encrypted secret to Storage => "+encrypted);
GmeApplication.getStorage().edit().putString(PrefKeys.APP_SECRET_KEY, encrypted).apply();
}
@ -230,7 +232,9 @@ public abstract class PrivilegedGateway extends BaseGateway implements Privilege
@Override
public String getPersistedSecretKey() {
return GmeApplication.getStorage().getString(PrefKeys.APP_SECRET_KEY, "");
String secretKey=GmeApplication.getStorage().getString(PrefKeys.APP_SECRET_KEY, "");
Log.d("GMEAuthManager","Encrypted secret from Storage => "+secretKey);
return secretKey;
}
@Override

4
app/src/main/java/com/gmeremit/online/gmeremittance_native/loginV2/view/LoginV2Activity.java

@ -186,7 +186,7 @@ public class LoginV2Activity extends BaseActivity implements View.OnClickListene
loginBtn.setOnClickListener(this);
// iv_back.setOnClickListener(this);
securityKeyboardView.setSecurityKeyboardFocusStateListener(this);
// presenter.startObservingFingerPrintIfRequired(true);
presenter.startObservingFingerPrintIfRequired(true);
}
@ -200,7 +200,7 @@ public class LoginV2Activity extends BaseActivity implements View.OnClickListene
loginBtn.setOnClickListener(null);
// iv_back.setOnClickListener(null);
securityKeyboardView.setSecurityKeyboardFocusStateListener(null);
// presenter.startObservingFingerPrintIfRequired(false);
presenter.startObservingFingerPrintIfRequired(false);
}

3
app/src/main/java/com/gmeremit/online/gmeremittance_native/security/GMEAuthManager.java

@ -181,8 +181,7 @@ public class GMEAuthManager {
}
private Observable<UserCredentialDecryptionResultDTO> getDecryptedUserInfo() {
Log.d(TAG,gmeAuthManagerGateway.getPersistedUserId());
Log.d(TAG,gmeAuthManagerGateway.getPersistedSecretKey());
return Observable.zip(Observable.fromCallable(gmeAuthManagerGateway::getPersistedUserId),
Observable.fromCallable(gmeAuthManagerGateway::getPersistedSecretKey)
.flatMap(storedKey -> decryptByKeyStore(storedKey)

15
rxkeystore/src/main/java/com/mtramin/rxfingerprint/RsaDecryptionObservable.java

@ -41,7 +41,6 @@ class RsaDecryptionObservable implements ObservableOnSubscribe<KeyStoreDecryptio
private final RsaCipherProvider cipherProvider;
private final String encryptedString;
private final EncodingProvider encodingProvider;
private final BiometricPrompt.CryptoObject cryptoObject;
/**
* Creates a new AesEncryptionObservable that will listen to fingerprint authentication
@ -70,31 +69,21 @@ class RsaDecryptionObservable implements ObservableOnSubscribe<KeyStoreDecryptio
this.cipherProvider = cipherProvider;
encryptedString = encrypted;
this.encodingProvider = encodingProvider;
this.cryptoObject=initCryptoObject();
}
private BiometricPrompt.CryptoObject initCryptoObject() {
try {
Cipher cipher = cipherProvider.getCipherForDecryption();
return new BiometricPrompt.CryptoObject(cipher);
} catch (Exception e) {
return null;
}
}
@Override
public void subscribe(ObservableEmitter<KeyStoreDecryptionResult> emitter) {
try {
Cipher cipher = cryptoObject.getCipher();
Cipher cipher = cipherProvider.getCipherForEncryption();
byte[] bytes = cipher.doFinal(encodingProvider.decode(encryptedString));
emitter.onNext(new KeyStoreDecryptionResult(FingerprintResult.AUTHENTICATED, null, ConversionUtils.toChars(bytes)));
emitter.onComplete();
} catch (Exception e) {
Logger.error("Unable to decrypt given value. RxFingerprint is only able to decrypt values previously encrypted by RxFingerprint with the same encryption mode.", e);
Log.d("GMEAuthManager","Unable to decrypt given value. RxFingerprint is only able to decrypt values previously encrypted by RxFingerprint with the same encryption mode.", e);
emitter.onError(cipherProvider.mapCipherFinalOperationException(e));
}
}

13
rxkeystore/src/main/java/com/mtramin/rxfingerprint/RsaEncryptionObservable.java

@ -34,6 +34,7 @@ import io.reactivex.ObservableOnSubscribe;
class RsaEncryptionObservable implements ObservableOnSubscribe<FingerprintEncryptionResult> {
private final FingerprintApiWrapper fingerprintApiWrapper;
private final RsaCipherProvider cipherProvider;
private final char[] toEncrypt;
private final EncodingProvider encodingProvider;
@ -51,7 +52,7 @@ class RsaEncryptionObservable implements ObservableOnSubscribe<FingerprintEncryp
return Observable.error(new IllegalArgumentException("String to be encrypted is null. Can only encrypt valid strings"));
}
try {
return Observable.create(new RsaEncryptionObservable(
return Observable.create(new RsaEncryptionObservable(new FingerprintApiWrapper(context),
new RsaCipherProvider(context, keyName, keyInvalidatedByBiometricEnrollment),
toEncrypt,
new Base64Provider()));
@ -61,10 +62,11 @@ class RsaEncryptionObservable implements ObservableOnSubscribe<FingerprintEncryp
}
@VisibleForTesting
RsaEncryptionObservable(
RsaEncryptionObservable(FingerprintApiWrapper fingerprintApiWrapper,
RsaCipherProvider cipherProvider,
char[] toEncrypt,
EncodingProvider encodingProvider) {
this.fingerprintApiWrapper = fingerprintApiWrapper;
this.cipherProvider = cipherProvider;
this.toEncrypt = toEncrypt;
this.encodingProvider = encodingProvider;
@ -73,18 +75,15 @@ class RsaEncryptionObservable implements ObservableOnSubscribe<FingerprintEncryp
@Override
public void subscribe(ObservableEmitter<FingerprintEncryptionResult> emitter) throws Exception {
try {
Cipher cipher = cipherProvider.getCipherForEncryption();
byte[] encryptedBytes = cipher.doFinal(ConversionUtils.toBytes(toEncrypt));
Log.d("GMEAuthManager","Encrypted Text => "+ Arrays.toString(encryptedBytes));
String encryptedString = encodingProvider.encode(encryptedBytes);
Log.d("GMEAuthManager","Encrypted to Base 64 Text => "+ encryptedString);
String encryptedString = encodingProvider.encode(encryptedBytes);
emitter.onNext(new FingerprintEncryptionResult(FingerprintResult.AUTHENTICATED, null, encryptedString));
emitter.onComplete();
} catch (Exception e) {
Logger.error(String.format("Error writing value for key: %s", cipherProvider.keyName), e);
Log.d("GMEAuthManager",String.format("Error writing value for key: %s", cipherProvider.keyName), e);
emitter.onError(e);
}
}

Loading…
Cancel
Save