diff --git a/src/iOS.Autofill/AppDelegate.cs b/src/iOS.Autofill/AppDelegate.cs
index e27c57ae6..ca20eda72 100644
--- a/src/iOS.Autofill/AppDelegate.cs
+++ b/src/iOS.Autofill/AppDelegate.cs
@@ -11,6 +11,21 @@ namespace Bit.iOS.Autofill
get; set;
}
+ public override void FinishedLaunching(UIApplication application)
+ {
+
+ var ln = @"libbitwarden_c.framework/libbitwarden_c";
+ var documentsPath = NSBundle.MainBundle.BundlePath;
+ var filePath = System.IO.Path.Combine(documentsPath, "Frameworks", ln);
+ var ptr = ObjCRuntime.Dlfcn.dlopen(filePath, 0);
+
+ var sdkClient = new BitwardenClient();
+ var test = sdkClient.Fingerprint();
+
+
+ base.FinishedLaunching(application);
+ }
+
public override void OnResignActivation(UIApplication application)
{
}
diff --git a/src/iOS.Autofill/BitwardenClient.cs b/src/iOS.Autofill/BitwardenClient.cs
new file mode 100644
index 000000000..0cbef9db4
--- /dev/null
+++ b/src/iOS.Autofill/BitwardenClient.cs
@@ -0,0 +1,31 @@
+using System;
+
+namespace Bit.iOS
+{
+ public class BitwardenClient : IDisposable
+ {
+ private readonly BitwardenClientSafeHandle handle;
+
+ public BitwardenClient()
+ {
+ handle = BitwardenClientWrapper.init("");
+ }
+
+ public string Fingerprint()
+ {
+ return BitwardenClientWrapper.run_command("{}", handle.Ptr);
+ }
+
+ protected virtual void Dispose(bool disposing)
+ {
+ if (handle != null && !handle.IsInvalid)
+ handle.Dispose();
+ }
+
+ public void Dispose()
+ {
+ Dispose(true);
+ GC.SuppressFinalize(this);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/iOS.Autofill/BitwardenClientSafeHandle.cs b/src/iOS.Autofill/BitwardenClientSafeHandle.cs
new file mode 100644
index 000000000..eb22ca4d6
--- /dev/null
+++ b/src/iOS.Autofill/BitwardenClientSafeHandle.cs
@@ -0,0 +1,18 @@
+using System;
+using Microsoft.Win32.SafeHandles;
+
+namespace Bit.iOS
+{
+ internal class BitwardenClientSafeHandle : SafeHandleZeroOrMinusOneIsInvalid
+ {
+ public BitwardenClientSafeHandle() : base(true) { }
+
+ public IntPtr Ptr => this.handle;
+
+ protected override bool ReleaseHandle()
+ {
+ BitwardenClientWrapper.free_mem(handle);
+ return true;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/iOS.Autofill/BitwardenClientWrapper.cs b/src/iOS.Autofill/BitwardenClientWrapper.cs
new file mode 100644
index 000000000..2d06ad412
--- /dev/null
+++ b/src/iOS.Autofill/BitwardenClientWrapper.cs
@@ -0,0 +1,23 @@
+using System;
+using System.Runtime.InteropServices;
+
+namespace Bit.iOS
+{
+ internal static class BitwardenClientWrapper
+ {
+#if Android
+ const string DllName = "libBitwardenC.so";
+#else
+ const string DllName = "__Internal";
+#endif
+
+ [DllImport(DllName, EntryPoint = "init")]
+ internal static extern BitwardenClientSafeHandle init(string settings);
+
+ [DllImport(DllName, EntryPoint = "free_mem")]
+ internal static extern void free_mem(IntPtr clientPtr);
+
+ [DllImport(DllName, EntryPoint = "run_command")]
+ internal static extern string run_command(string loginRequest, IntPtr clientPtr);
+ }
+}
\ No newline at end of file
diff --git a/src/iOS.Autofill/iOS.Autofill.csproj b/src/iOS.Autofill/iOS.Autofill.csproj
index ce5fc0b09..a970dc937 100644
--- a/src/iOS.Autofill/iOS.Autofill.csproj
+++ b/src/iOS.Autofill/iOS.Autofill.csproj
@@ -194,6 +194,9 @@
+
+
+
@@ -278,5 +281,11 @@
+
+
+ Framework
+ False
+
+
\ No newline at end of file
diff --git a/src/iOS/AppDelegate.cs b/src/iOS/AppDelegate.cs
index 6fc420b50..ff182c9e7 100644
--- a/src/iOS/AppDelegate.cs
+++ b/src/iOS/AppDelegate.cs
@@ -182,10 +182,15 @@ namespace Bit.iOS
LoggerHelper.LogEvenIfCantBeResolved(ex);
}
});
+
+ var ln = @"libbitwarden_c.framework/libbitwarden_c";
+ var documentsPath = NSBundle.MainBundle.BundlePath;
+ var filePath = System.IO.Path.Combine(documentsPath, "Frameworks", ln);
+ var ptr = ObjCRuntime.Dlfcn.dlopen(filePath, 0);
var sdkClient = new BitwardenClient();
var test = sdkClient.Fingerprint();
-
+
return base.FinishedLaunching(app, options);
}
diff --git a/src/iOS/iOS.csproj b/src/iOS/iOS.csproj
index 9c1dc3160..94f3620bc 100644
--- a/src/iOS/iOS.csproj
+++ b/src/iOS/iOS.csproj
@@ -29,7 +29,7 @@
None
true
true
- --nodevcodeshare --http-message-handler=NSUrlSessionHandler -gcc_flags "-L${ProjectDir}/../../lib/ios -largon2 -force_load ${ProjectDir}/../../lib/ios/libargon2.a -lbitwarden_c -force_load ${ProjectDir}/../../lib/ios/libbitwarden_c.a"
+ --nodevcodeshare --http-message-handler=NSUrlSessionHandler -gcc_flags "-L${ProjectDir}/../../lib/ios -largon2 -force_load ${ProjectDir}/../../lib/ios/libargon2.a"
Entitlements.plist
@@ -41,7 +41,7 @@
Full
x86_64
false
- --nodevcodeshare --http-message-handler=NSUrlSessionHandler --linkskip=BitwardeniOS --linkskip=BitwardeniOSCore --linkskip=BitwardeniOSAutofill --linkskip=BitwardeniOSExtension --linkskip=BitwardenApp --linkskip=BitwardenCore --linkskip=LiteDB --linkskip=CsvHelper --linkskip=BitwardeniOSShareExtension -gcc_flags "-L${ProjectDir}/../../lib/ios -largon2 -force_load ${ProjectDir}/../../lib/ios/libargon2.a -lbitwarden_c -force_load ${ProjectDir}/../../lib/ios/libbitwarden_c.a"
+ --nodevcodeshare --http-message-handler=NSUrlSessionHandler --linkskip=BitwardeniOS --linkskip=BitwardeniOSCore --linkskip=BitwardeniOSAutofill --linkskip=BitwardeniOSExtension --linkskip=BitwardenApp --linkskip=BitwardenCore --linkskip=LiteDB --linkskip=CsvHelper --linkskip=BitwardeniOSShareExtension -gcc_flags "-L${ProjectDir}/../../lib/ios -largon2 -force_load ${ProjectDir}/../../lib/ios/libargon2.a"
true
Entitlements.plist
@@ -60,7 +60,7 @@
Entitlements.plist
None
false
- --nodevcodeshare --http-message-handler=NSUrlSessionHandler -gcc_flags "-L${ProjectDir}/../../lib/ios -largon2 -force_load ${ProjectDir}/../../lib/ios/libargon2.a -lbitwarden_c -force_load ${ProjectDir}/../../lib/ios/libbitwarden_c.a"
+ --nodevcodeshare --http-message-handler=NSUrlSessionHandler -gcc_flags "-L${ProjectDir}/../../lib/ios -largon2 -force_load ${ProjectDir}/../../lib/ios/libargon2.a"
true
@@ -74,7 +74,7 @@
iPhone Developer
Entitlements.plist
Full
- --nodevcodeshare --http-message-handler=NSUrlSessionHandler --linkskip=BitwardeniOS --linkskip=BitwardeniOSCore --linkskip=BitwardeniOSAutofill --linkskip=BitwardeniOSExtension --linkskip=BitwardenApp --linkskip=BitwardenCore --linkskip=LiteDB --linkskip=CsvHelper --linkskip=BitwardeniOSShareExtension -gcc_flags "-L${ProjectDir}/../../lib/ios -largon2 -force_load ${ProjectDir}/../../lib/ios/libargon2.a -lbitwarden_c -force_load ${ProjectDir}/../../lib/ios/libbitwarden_c.a"
+ --nodevcodeshare --http-message-handler=NSUrlSessionHandler --linkskip=BitwardeniOS --linkskip=BitwardeniOSCore --linkskip=BitwardeniOSAutofill --linkskip=BitwardeniOSExtension --linkskip=BitwardenApp --linkskip=BitwardenCore --linkskip=LiteDB --linkskip=CsvHelper --linkskip=BitwardeniOSShareExtension -gcc_flags "-L${ProjectDir}/../../lib/ios -largon2 -force_load ${ProjectDir}/../../lib/ios/libargon2.a"
true
@@ -89,7 +89,7 @@
iPhone Distribution
Entitlements.plist
Full
- --nodevcodeshare --http-message-handler=NSUrlSessionHandler --linkskip=BitwardeniOS --linkskip=BitwardeniOSCore --linkskip=BitwardeniOSAutofill --linkskip=BitwardeniOSExtension --linkskip=BitwardenApp --linkskip=BitwardenCore --linkskip=LiteDB --linkskip=CsvHelper --linkskip=BitwardeniOSShareExtension -gcc_flags "-L${ProjectDir}/../../lib/ios -largon2 -force_load ${ProjectDir}/../../lib/ios/libargon2.a -lbitwarden_c -force_load ${ProjectDir}/../../lib/ios/libbitwarden_c.a"
+ --nodevcodeshare --http-message-handler=NSUrlSessionHandler --linkskip=BitwardeniOS --linkskip=BitwardeniOSCore --linkskip=BitwardeniOSAutofill --linkskip=BitwardeniOSExtension --linkskip=BitwardenApp --linkskip=BitwardenCore --linkskip=LiteDB --linkskip=CsvHelper --linkskip=BitwardeniOSShareExtension -gcc_flags "-L${ProjectDir}/../../lib/ios -largon2 -force_load ${ProjectDir}/../../lib/ios/libargon2.a"
Automatic:AdHoc
@@ -103,7 +103,7 @@
Automatic:AppStore
iPhone Distribution
Entitlements.plist
- --nodevcodeshare --http-message-handler=NSUrlSessionHandler --linkskip=BitwardeniOS --linkskip=BitwardeniOSCore --linkskip=BitwardeniOSAutofill --linkskip=BitwardeniOSExtension --linkskip=BitwardenApp --linkskip=BitwardenCore --linkskip=LiteDB --linkskip=CsvHelper --linkskip=BitwardeniOSShareExtension -gcc_flags "-L${ProjectDir}/../../lib/ios -largon2 -force_load ${ProjectDir}/../../lib/ios/libargon2.a -lbitwarden_c -force_load ${ProjectDir}/../../lib/ios/libbitwarden_c.a"
+ --nodevcodeshare --http-message-handler=NSUrlSessionHandler --linkskip=BitwardeniOS --linkskip=BitwardeniOSCore --linkskip=BitwardeniOSAutofill --linkskip=BitwardeniOSExtension --linkskip=BitwardenApp --linkskip=BitwardenCore --linkskip=LiteDB --linkskip=CsvHelper --linkskip=BitwardeniOSShareExtension -gcc_flags "-L${ProjectDir}/../../lib/ios -largon2 -force_load ${ProjectDir}/../../lib/ios/libargon2.a"
true
Full
@@ -115,7 +115,7 @@
false
prompt
MinimumRecommendedRules.ruleset
- --nodevcodeshare --http-message-handler=NSUrlSessionHandler --linkskip=BitwardeniOS --linkskip=BitwardeniOSCore --linkskip=BitwardeniOSAutofill --linkskip=BitwardeniOSExtension --linkskip=BitwardenApp --linkskip=BitwardenCore --linkskip=LiteDB --linkskip=CsvHelper -gcc_flags "-L${ProjectDir}/../../lib/ios -largon2 -force_load ${ProjectDir}/../../lib/ios/libargon2.a -lbitwarden_c -force_load ${ProjectDir}/../../lib/ios/libbitwarden_c.a"
+ --nodevcodeshare --http-message-handler=NSUrlSessionHandler --linkskip=BitwardeniOS --linkskip=BitwardeniOSCore --linkskip=BitwardeniOSAutofill --linkskip=BitwardeniOSExtension --linkskip=BitwardenApp --linkskip=BitwardenCore --linkskip=LiteDB --linkskip=CsvHelper -gcc_flags "-L${ProjectDir}/../../lib/ios -largon2 -force_load ${ProjectDir}/../../lib/ios/libargon2.a"
true
SdkOnly
@@ -144,9 +144,6 @@
-
-
-
@@ -186,6 +183,9 @@
+
+
+
@@ -427,6 +427,12 @@
<_ResolvedWatchAppReferences Include="$(WatchAppBundleFullPath)" />
+
+
+ Framework
+ False
+
+
--deep