简体   繁体   English

Xamarin.iOS 绑定库无法使用安全框架中的 SecKey API

[英]Xamarin.iOS binding library cannot use the SecKey API from the Security framework

I created a binding library from an objective-c framework.我从一个 Objective-C 框架创建了一个绑定库。 It works but it cannot use SecKey's encryption api in the Security framework.它可以工作,但不能在安全框架中使用 SecKey 的加密 API。 Library used it for the api request.库将其用于 api 请求。 Is Security framework not fully supported in Xamarin.iOS? Xamarin.iOS 不完全支持安全框架吗? Or is it not working when binding library used it?或者当绑定库使用它时它不起作用?

Note: By the way I added this line to native framework for dependency:注意:顺便说一下,我将此行添加到本机框架以进行依赖:

 <Frameworks>Foundation CFNetwork CoreFoundation Security</Frameworks>

Update 1:更新 1:

This is the device log:这是设备日志:

Trust evaluate failure: [leaf AnchorTrusted]
DemoX[10647]/1#-1 LF=22 add Error Domain=NSOSStatusErrorDomain Code=-34018 "Client has neither application-identifier nor keychain-access-groups entitlements" UserInfo={NSDescription=Client has neither application-identifier nor keychain-access-groups entitlements}
SecTaskLoadEntitlements failed error=22 cs_flags=200, pid=10438
SecTaskCopyDebugDescription: DemoX[10039]/0#-1 LF=0
nw_protocol_boringssl_signal_connected(728) [C13.1:2][0x7fbe21309f80] TLS connected [version(0x0303) ciphersuite(TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) group(0x001d) signature_alg(0x0601) alpn(http/1.1) resumed(0) offered_ticket(0) false_started(0) ocsp_received(0) sct_received(0) connect_time(1811ms) flight_time(144ms) rtt(72ms) write_stalls(0) read_stalls(5)]    
Trust evaluate failure: [leaf AnchorTrusted]
Trust evaluate failure: [leaf AnchorTrusted TemporalValidity]

Update 2:更新 2:

When I run the framework with the XCode below lines appears but not in the my Xamarin.iOS app当我使用 XCode 运行框架时,下面的行出现但不在我的 Xamarin.iOS 应用程序中

inserted <keys,kcls=0,klbl=,atag=5253415574696C5F5075624B6579,
crtr=0,type=42,bsiz=0,esiz=0,sdat=2001-01-01 00:00:00 +0000,
edat=2001-01-01 00:00:00+0000,agrp=A7PT8PDBPQ.com.test.app,sync=0,
musr=,|otherAttr,tomb=0,rowid=9,cdat=2020-11-07 11:02:34 +0000,mdat=2020-11-07 11:02:34+0000,pdmn=ak,
sha1=24BB5BBEE125D6A051E08EA2CB72469A0C62042F,v_Data=<?>,
UUID=********-****-****-****-************,
persistref=,clip=0> from <SecDbConnection rw open>

and

deleted 
<keys,kcls=0,klbl=,atag=5253415574696C5F5075624B6579,crtr=0,type=42,
bsi=,esiz=0,sdat=2001-01-01 00:00:00 +0000,edat=2001-01-01 00:00:00
+0000,agrp=A7PT8PDBPQ.com.test.app,sync=0,musr=,
|otherAttr,tomb=0,rowid=7,cdat=2020-11-07 11:01:55 
+0000,mdat=2020-11-07 11:01:55 +0000,pdmn=ak,
sha1=F1A9A4EC0C5AC67D354C9D7602E118B8DF5EFAF5,
v_Data=<?>,accc=310C300A0C0470726F740C02616B,
UUID=********-****-****-****-************,
persistref=,clip=0> from <SecDbConnection rw open>

So I will answer my own questions since I found the solution.所以我会回答我自己的问题,因为我找到了解决方案。 The reason behind the problem is SecKeyRef using KeyChain access to read and write key as stated in official documentation:问题背后的原因是 SecKeyRef 使用 KeyChain 访问读取和写入密钥,如官方文档所述:

A SecKeyRef instance that represents a key that is stored in a keychain can be safely cast to a SecKeychainItemRef for manipulation as a keychain item.表示存储在钥匙串中的密钥的 SecKeyRef 实例可以安全地转换为 SecKeychainItemRef 以作为钥匙串项目进行操作。 On the other hand, if the key is not stored in a keychain, casting the object to a SecKeychainItemRef and passing it to Keychain Services functions returns errors.另一方面,如果密钥未存储在钥匙串中,则将对象转换为 SecKeychainItemRef 并将其传递给钥匙串服务函数会返回错误。

Having a provisioning profile in Xcode to use SecKeyRef is not important, but in Visual Studio Mac, it is required to use Entitlements.plist to enable keychain access.在 Xcode 中拥有配置文件以使用 SecKeyRef 并不重要,但在 Visual Studio Mac 中,需要使用 Entitlements.plist 来启用钥匙串访问。 So if your binding library used the SecKey API, you need to enable KeyChain Access in Entitlements.plist and set apple developer account in project.所以如果你的绑定库使用了SecKey API,你需要在Entitlements.plist中开启KeyChain Access,并在project中设置apple developer account。

<key>keychain-access-groups</key>
<array>
    <string>$(AppIdentifierPrefix)com.company.yourapp</string>
</array>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM