@ -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 ) ;
}
}