Compare commits
	
		
			9 Commits
		
	
	
		
			v1.12-r2
			...
			feature/ot
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 0c34625782 | ||
|   | e86fa6f9fa | ||
|   | e2e975f357 | ||
|   | 8eaf6d3f88 | ||
|   | a9fed1c203 | ||
|   | 6d8407676d | ||
|   | 1157716c9c | ||
|   | 861615b7a4 | ||
|   | e12d11264e | 
							
								
								
									
										1
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								Makefile
									
									
									
									
									
								
							| @@ -20,6 +20,7 @@ | ||||
| #  - nuget: restore NuGet packages | ||||
| #  - msbuild: build the project | ||||
| #  - apk: same as all | ||||
| #  - manifestlink: creates a symlink (to be used in building) to the AndroidManifest corresponding to the selected Flavor | ||||
| # | ||||
| #  - distclean: run a 'git clean -xdff'. Remove everyhing that is not in the git tree. | ||||
| #  - clean: all clean_* targets below | ||||
|   | ||||
| @@ -35,8 +35,6 @@ namespace KeePassLib.Cryptography | ||||
| 		{ | ||||
| 			get | ||||
| 			{ | ||||
| 				Debug.Assert(m_dicts.Count > 0); // Should be initialized | ||||
|  | ||||
| 				int iMaxLen = 0; | ||||
| 				foreach(int iLen in m_dicts.Keys) | ||||
| 				{ | ||||
|   | ||||
| @@ -113,4 +113,15 @@ extends Activity implements JavaFileStorage.FileStorageSetupActivity { | ||||
| 		return state; | ||||
| 	} | ||||
|  | ||||
|  | ||||
| 	@Override | ||||
| 	public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { | ||||
| 		super.onRequestPermissionsResult(requestCode, permissions, grantResults); | ||||
| 		MainActivity.storageToTest.onRequestPermissionsResult(this, requestCode, permissions, grantResults); | ||||
|  | ||||
|  | ||||
|  | ||||
| 	} | ||||
|  | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -147,6 +147,7 @@ import java.util.List; | ||||
| //import keepass2android.javafilestorage.DropboxCloudRailStorage; | ||||
| import keepass2android.javafilestorage.DropboxV2Storage; | ||||
| import keepass2android.javafilestorage.GoogleDriveAppDataFileStorage; | ||||
| import keepass2android.javafilestorage.GoogleDriveFullFileStorage; | ||||
| import keepass2android.javafilestorage.ICertificateErrorHandler; | ||||
| import keepass2android.javafilestorage.JavaFileStorage; | ||||
| import keepass2android.javafilestorage.JavaFileStorage.FileEntry; | ||||
| @@ -547,7 +548,7 @@ public class MainActivity extends Activity implements JavaFileStorage.FileStorag | ||||
|  | ||||
|  | ||||
| 		//storageToTest = new GoogleDriveAppDataFileStorage(); | ||||
| 		storageToTest = new WebDavStorage(new ICertificateErrorHandler() { | ||||
| 		/*storageToTest = new WebDavStorage(new ICertificateErrorHandler() { | ||||
| 			@Override | ||||
| 			public boolean onValidationError(String error) { | ||||
| 				return false; | ||||
| @@ -558,10 +559,11 @@ public class MainActivity extends Activity implements JavaFileStorage.FileStorag | ||||
| 				return false; | ||||
| 			} | ||||
| 		}); | ||||
|  | ||||
| */ | ||||
| 		//storageToTest =  new DropboxV2Storage(ctx,"4ybka4p4a1027n6", "1z5lv528un9nre8", !simulateRestart); | ||||
| 		//storageToTest =  new DropboxFileStorage(ctx,"4ybka4p4a1027n6", "1z5lv528un9nre8", !simulateRestart); | ||||
| 		//storageToTest = new DropboxAppFolderFileStorage(ctx,"ax0268uydp1ya57", "3s86datjhkihwyc", true); | ||||
| 		storageToTest = new GoogleDriveFullFileStorage(); | ||||
|  | ||||
|  | ||||
| 		return storageToTest; | ||||
| @@ -580,6 +582,8 @@ public class MainActivity extends Activity implements JavaFileStorage.FileStorag | ||||
| 		getMenuInflater().inflate(R.menu.main, menu); | ||||
| 		return true; | ||||
| 	} | ||||
|  | ||||
|  | ||||
| 	 | ||||
| 	@Override | ||||
| 	protected void onActivityResult(int requestCode, int resultCode, Intent data) { | ||||
|   | ||||
| @@ -47,8 +47,8 @@ | ||||
|   <permission android:description="@string/permission_desc2" android:icon="@drawable/ic_notify_locked" android:label="KP2A entry search" android:name="keepass2android.keepass2android_debug.permission.KP2aInternalSearch" android:protectionLevel="signature" /> | ||||
|   <permission android:description="@string/permission_desc3" android:icon="@drawable/ic_launcher" android:label="KP2A choose autofill dataset" android:name="keepass2android.keepass2android_debug.permission.Kp2aChooseAutofill" android:protectionLevel="signature" /> | ||||
|   <application | ||||
| 	android:icon="@mipmap/ic_launcher_online" | ||||
| 	android:roundIcon="@mipmap/ic_launcher_online_round" | ||||
| 	android:icon="@mipmap/ic_launcher_debug" | ||||
| 	android:roundIcon="@mipmap/ic_launcher_debug_round" | ||||
| 	android:networkSecurityConfig="@xml/network_security_config" | ||||
| 	> | ||||
|     <meta-data | ||||
| @@ -243,6 +243,15 @@ The scheme=file is still there for old OS devices. It's also queried by apps lik | ||||
|         <action android:name="keepass2android.ACTION_START_WITH_TASK" /> | ||||
|         <category android:name="android.intent.category.DEFAULT" /> | ||||
|       </intent-filter> | ||||
|  | ||||
|       <intent-filter> | ||||
|         <action android:name="android.intent.action.VIEW" /> | ||||
|         <category android:name="android.intent.category.DEFAULT" /> | ||||
|         <category android:name="android.intent.category.BROWSABLE" /> | ||||
|         <data android:scheme="otpauth"/> | ||||
|         <data android:host="totp"/> | ||||
|         <data android:host="hotp"/> | ||||
|       </intent-filter> | ||||
|     </activity> | ||||
|     <uses-library android:required="false" android:name="com.sec.android.app.multiwindow" /> | ||||
|     <meta-data android:name="com.sec.android.support.multiwindow" android:value="true" /> | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <manifest xmlns:android="http://schemas.android.com/apk/res/android" | ||||
| 			android:versionCode="203" | ||||
| 			android:versionName="1.12-r2" | ||||
| 			android:versionCode="204" | ||||
| 			android:versionName="1.12-r3" | ||||
| 			package="keepass2android.keepass2android" | ||||
| 			xmlns:tools="http://schemas.android.com/tools" | ||||
| 			android:installLocation="auto"> | ||||
| @@ -255,7 +255,14 @@ The scheme=file is still there for old OS devices. It's also queried by apps lik | ||||
|         <action android:name="keepass2android.ACTION_START_WITH_TASK" /> | ||||
|         <category android:name="android.intent.category.DEFAULT" /> | ||||
|       </intent-filter> | ||||
|       x | ||||
|       <intent-filter> | ||||
|         <action android:name="android.intent.action.VIEW" /> | ||||
|         <category android:name="android.intent.category.DEFAULT" /> | ||||
|         <category android:name="android.intent.category.BROWSABLE" /> | ||||
|         <data android:scheme="otpauth"/> | ||||
|         <data android:host="totp"/> | ||||
|         <data android:host="hotp"/> | ||||
|       </intent-filter> | ||||
|     </activity> | ||||
|     <uses-library android:required="false" android:name="com.sec.android.app.multiwindow" /> | ||||
|     <meta-data android:name="com.sec.android.support.multiwindow" android:value="true" /> | ||||
|   | ||||
| @@ -236,6 +236,14 @@ The scheme=file is still there for old OS devices. It's also queried by apps lik | ||||
| 				<action android:name="keepass2android.ACTION_START_WITH_TASK" /> | ||||
| 				<category android:name="android.intent.category.DEFAULT" /> | ||||
| 			</intent-filter> | ||||
|       <intent-filter> | ||||
|         <action android:name="android.intent.action.VIEW" /> | ||||
|         <category android:name="android.intent.category.DEFAULT" /> | ||||
|         <category android:name="android.intent.category.BROWSABLE" /> | ||||
|         <data android:scheme="otpauth"/> | ||||
|         <data android:host="totp"/> | ||||
|         <data android:host="hotp"/> | ||||
|       </intent-filter> | ||||
| 		</activity> | ||||
| 		<uses-library android:required="false" android:name="com.sec.android.app.multiwindow" /> | ||||
| 		<meta-data android:name="com.sec.android.support.multiwindow" android:value="true" /> | ||||
|   | ||||
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 11 KiB | 
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 20 KiB | 
| @@ -27,6 +27,7 @@ using KeePassLib.Serialization; | ||||
| using Console = System.Console; | ||||
| using Object = Java.Lang.Object; | ||||
| using AndroidX.Core.Content; | ||||
| using Uri = Android.Net.Uri; | ||||
|  | ||||
| namespace keepass2android | ||||
| { | ||||
| @@ -302,9 +303,23 @@ namespace keepass2android | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|  | ||||
|                 if (Intent.Action == Intent.ActionView) | ||||
|                 { | ||||
|                     GetIocFromViewIntent(Intent); | ||||
|                     if (IsOtpUri(Intent.Data)) | ||||
|                     { | ||||
|                         AppTask = new CreateEntryThenCloseTask() | ||||
|                         { | ||||
|                             AllFields = Newtonsoft.Json.JsonConvert.SerializeObject(new Dictionary<string, string>() | ||||
|                             { | ||||
|                                 { "otp", Intent.DataString } | ||||
|                             }) | ||||
|                         }; | ||||
|                     } | ||||
|                     else | ||||
|                     { | ||||
|                         GetIocFromViewIntent(Intent); | ||||
|                     } | ||||
|                 } | ||||
|                 else if (Intent.Action == Intent.ActionSend) | ||||
|                 { | ||||
| @@ -334,6 +349,11 @@ namespace keepass2android | ||||
|  | ||||
|         } | ||||
|  | ||||
|         private bool IsOtpUri(Uri? uri) | ||||
|         { | ||||
|             return uri?.Scheme == "otpauth"; | ||||
|         } | ||||
|  | ||||
|         protected override void OnStart() | ||||
|         { | ||||
|             base.OnStart(); | ||||
|   | ||||
| @@ -93,11 +93,13 @@ namespace keepass2android | ||||
| #if DEBUG | ||||
|         public const string PackagePart = "keepass2android_debug"; | ||||
| 		public const string Searchable = "@xml/searchable_debug"; | ||||
|         public const int LauncherIcon = Resource.Mipmap.ic_launcher_debug; | ||||
| #else | ||||
| 		public const string PackagePart = "keepass2android"; | ||||
| 		public const string Searchable = "@xml/searchable"; | ||||
| 		public const int LauncherIcon = Resource.Mipmap.ic_launcher_online; | ||||
| #endif | ||||
|         public const int LauncherIcon = Resource.Mipmap.ic_launcher_online; | ||||
|  | ||||
|         public const int NotificationLockedIcon = Resource.Drawable.ic_notify_loaded; | ||||
|         public const int NotificationUnlockedIcon = Resource.Drawable.ic_notify_locked; | ||||
|  | ||||
|   | ||||
| @@ -733,18 +733,20 @@ | ||||
|     <AndroidNativeLibrary Include="..\java\argon2\libs\armeabi-v7a\libargon2.so" Link="armeabi-v7a\libargon2.so" /> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <PackageReference Include="Xamarin.AndroidX.AppCompat" Version="1.7.0.3" /> | ||||
|     <PackageReference Include="Xamarin.AndroidX.AppCompat.AppCompatResources" Version="1.7.0.3" /> | ||||
|     <PackageReference Include="Xamarin.AndroidX.AutoFill" Version="1.1.0.28" /> | ||||
|     <PackageReference Include="Xamarin.AndroidX.Biometric" Version="1.1.0.25" /> | ||||
|     <PackageReference Include="Xamarin.AndroidX.CoordinatorLayout" Version="1.2.0.17" /> | ||||
|     <PackageReference Include="Xamarin.AndroidX.CursorAdapter" Version="1.0.0.29" /> | ||||
|     <PackageReference Include="Xamarin.AndroidX.Lifecycle.Common" Version="2.8.5.1" /> | ||||
|     <PackageReference Include="Xamarin.AndroidX.Lifecycle.Runtime" Version="2.8.5.1" /> | ||||
|     <PackageReference Include="Xamarin.AndroidX.Preference" Version="1.2.1.10" /> | ||||
|     <PackageReference Include="Xamarin.Google.Android.Material" Version="1.11.0.3" /> | ||||
|     <PackageReference Include="Xamarin.GooglePlayServices.Base" Version="118.5.0.2" /> | ||||
|     <PackageReference Include="Xamarin.GooglePlayServices.Code.Scanner" Version="116.1.0.3" /> | ||||
|     <PackageReference Include="Xamarin.AndroidX.AppCompat" Version="1.7.0.5" /> | ||||
|     <PackageReference Include="Xamarin.AndroidX.AppCompat.AppCompatResources" Version="1.7.0.5" /> | ||||
|     <PackageReference Include="Xamarin.AndroidX.AutoFill" Version="1.1.0.30" /> | ||||
|     <PackageReference Include="Xamarin.AndroidX.Biometric" Version="1.1.0.27" /> | ||||
|     <PackageReference Include="Xamarin.AndroidX.CoordinatorLayout" Version="1.3.0" /> | ||||
|     <PackageReference Include="Xamarin.AndroidX.CursorAdapter" Version="1.0.0.31" /> | ||||
|     <PackageReference Include="Xamarin.AndroidX.Lifecycle.Common" Version="2.8.7.2" /> | ||||
|     <PackageReference Include="Xamarin.AndroidX.Lifecycle.Runtime" Version="2.8.7.2" /> | ||||
|     <PackageReference Include="Xamarin.AndroidX.Preference" Version="1.2.1.12" /> | ||||
|     <PackageReference Include="Xamarin.Google.Android.Material" Version="1.12.0.2" /> | ||||
|     <PackageReference Include="Xamarin.Google.Guava" Version="33.4.0.1" /> | ||||
|     <PackageReference Include="Xamarin.GooglePlayServices.Auth" Version="121.3.0.1" /> | ||||
|     <PackageReference Include="Xamarin.GooglePlayServices.Base" Version="118.5.0.4" /> | ||||
|     <PackageReference Include="Xamarin.GooglePlayServices.Code.Scanner" Version="116.1.0.10" /> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ProjectReference Include="..\AndroidFileChooserBinding\AndroidFileChooserBinding.csproj" /> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user