我正在尝试使用安卓PoC应用程序测试我的Galaxy S6设备的FIDO (https://fidoalliance.org)功能。到目前为止,我已经设法使用DISCOVER意图检索了可用的FIDO验证器,并且它成功地返回了指纹验证器。
但是,当我尝试通过REGISTER FIDO操作注册验证器时,我总是得到错误代码UNKNOWN (0xFF),并且我不知道原因是什么。FIDO文档声明,当其他1-7 error codes没有描述此代码时,将返回此代码。在做试验和错误时,我收到了错误代码5(没有合适的身份验证器)、6(协议错误)和7(不受信任的方面ID),但最后,在修复了这些错误的原因后,我只剩下未知的错误。
我已经检查了很多次,但是FIDO文档的语法是可以的;也可以留在这里:
Intent intent = new Intent();
intent.setAction("org.fidoalliance.intent.FIDO_OPERATION");
intent.setType("application/fido.uaf_client+json");
intent.putExtra("UAFIntentType", "UAF_OPERATION");
intent.putExtra("message", "{"additionalData":"Registration","uafProtocolMessage":"[{\"header\":{\"upv\":{\"major\":1,\"minor\":0},\"op\":\"Reg\",\"appID\":\"android:apk-key-hash:AcX+251ZfGFOzVVk1uQzgP16e2I\",\"serverData\":\"063de11c-153c-4cbe-ac74-fbe282feffac\"},\"challenge\":\"H9iW9yA9aAXF_lelQoi_DhUk514Ad8Tqv0zCnCqKDpo\",\"username\":\"joe\",\"policy\":{\"accepted\": [[{\"userVerification\": 2,\"keyProtection\": 6,\"tcDisplay\": 2,\"authenticationAlgorithms\":[1],\"assertionSchemes\":[\"UAFV1TLV\"]}]]}}]"}");
intent.putExtra("channelBindings", "{\"serverEndPoint\":null,\"tlsServerCertificate\":null,\"tlsUnique\":null,\"cid_pubkey\":null}");组件尝试解析的意图是: ComponentInfo{com.sec.android.fido.uaf.client/com.sec.android.fido.uaf.client.OxygenActivity},,它似乎是在其清单中导出的:
<activity android:exported="true" android:label="@string/title_activity_oxygen" android:name="com.sec.android.fido.uaf.client.OxygenActivity" android:permission="org.fidoalliance.uaf.permissions.FIDO_CLIENT" android:screenOrientation="portrait" android:theme="@style/AppTheme">
<intent-filter>
<action android:name="org.fidoalliance.intent.FIDO_OPERATION"/>
<data android:mimeType="application/fido.uaf_client+json"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>还有没有其他人遇到过这个问题,并找到了解决方案?
注意:在Xperia Z5上进行了同样的测试,组件尝试解析的意图是"com.noknok.android.mfac.service“。然而,在Z5上,我总是得到错误代码6(协议错误),而不是未知。
发布于 2018-07-27 21:19:03
根据规范,我认为您的应用程序是一个Fido客户端。
实际上,galaxy S6中已经存在一个ASM +验证器,但是不能从您的应用程序中调用它。在创建ASM + Authenticator时,您可以决定只回答特定的Fido客户端。这就是三星如何实现他们的Galaxy s6验证器的。(Xperia可能也是如此)。
https://stackoverflow.com/questions/39992161
复制相似问题