OneKeePass / mobile

A secure password manager for iOS and Android platforms
GNU General Public License v3.0
120 stars 6 forks source link

Proprietary components added #23

Closed IzzySoft closed 5 months ago

IzzySoft commented 7 months ago

Today's updated added several proprietary components, essentially making the app no longer fully FOSS:

Hence I'll have now to either

The latter would be seen as a "red flag" for many folks looking for a good password manager – and in this case even violate inclusion criteria of the repo, as MLKit is also marked as Tracker – so I will for now take option 2, waiting for clarification. Options from your end would be:

Thanks in advance for consideration! I hope we can find a good solution here, so I can re-enable updates soon.

jeyasankar commented 7 months ago

Thanks @IzzySoft for detailed analyzes.

Indeed it seems these services were included by some react native third party package meant for QR code scanning. I will try to find alternative solutions to remove these dependencies. Till that time please use option 2 as you suggested. I will update you when I have a solution for the next version

IzzySoft commented 7 months ago

I'm no Android dev (and have no idea about RN development at all), so I cannot help with that much. Checking the definitions of my library scanner for a fitting match, I only found react-native-vision-camera explicitly naming RN and checked with their package.json, not seeing anything obviously suspicious. But looking into yours, that seems exactly what you are using, so I'm a bit confused. Obviously the "vision" part of its name points to the very same component of MLKit, though I don't see where the dependency is declared :shrug: But it clearly does depend on it:

import com.google.mlkit.vision.barcode.common.Barcode

Not sure what a good alternative would be. Fingers crossed you find one easily, which then is also easy to "swap in" :crossed_fingers:

IzzySoft commented 6 months ago

While waiting for a hopefully easy solution to that, may I ask for these two as well?

! repo/com.onekeepassmobile_9.apk declares sensitive permission(s): android.permission.CAMERA
! repo/com.onekeepassmobile_9.apk contains signature block blobs: 0x504b4453 (DEPENDENCY_INFO_BLOCK; GOOGLE)

I'd say CAMERA is connected with QR code here (if that was planned to be used). As for DEPENDENCY_INFO_BLOCK, that can easily be avoided:

android {
    dependenciesInfo {
        // Disables dependency metadata when building APKs.
        includeInApk = false
        // Disables dependency metadata when building Android App Bundles.
        includeInBundle = false
    }
}

For some background: that BLOB is supposed to be just a binary representation of your app's dependency tree. But as it's encrypted with a public key belonging to Google, only Google can read it – and nobody else can even verify what it really contains.

jeyasankar commented 6 months ago

Thanks @IzzySoft These hints are useful. Hopefully I can remove the use of camera for the APK release in the next planned release soon

IzzySoft commented 6 months ago

Thank you! Looking forward to that then :star_struck:

jeyasankar commented 5 months ago

Hi @IzzySoft, I have a new APK release - 0.13.0 without these proprietary components. Hopefully this should be good

IzzySoft commented 5 months ago

Looks good, thanks! So I'll re-enable update checks now.

jeyasankar commented 5 months ago

Thanks @IzzySoft