为使用com.google.android.gms.fido.u2f.api使用Android应用程序获得有效的Face



我在Android Fido U2F API中有两个问题。

是否可以直接使用facetID识别我的应用程序,还是需要是指向包含有效facetids的JSON的HTTPS URL?我怀疑可能不可能直接使用FacetID作为Appid(尽管官方FIDO规格应允许(。

我的另一个问题是关于识别我的应用程序的facetid。官方的FIDO规范定义了Android应用程序的FacetID如下:

在Android [Android]案例中,FacetID必须是源自APK签名证书的SHA-1 HASH [APK-SIGNING]的base64 sha-1 hash的URI:

android:apk-key-hash:<base64_encoded_sha1_hash-of-apk-signing-cert>

当我查看Google样本中的一个工作示例时,使用的FacetID似乎包含其他东西。

有问题的facetid(绝对不是base64(:

android:apk-key-hash:bkHnlWEV_jRCPdYGJfwOl7Sn_CLC_2TE3h4TO1_n34I

这是包含相关方面的json。

如果API不期望base64编码的哈希,它会期望什么格式(一个人如何生成(?

解决方案:

Google出于某种原因没有FIDO U2F规范。计算APK-SIGNING-CERT的SHA-256(不是每个FIDO规格的SHA-1(,然后计算基本64。然后在末尾删除=字符。

正如已经指出的:google使用sha256哈希。

从您的密钥库获取签名键的编码版本。

keytool -list -v -keystore <your.keystore> | grep "SHA256: " | cut -d " " -f 3 | xxd -r -p | openssl base64 | sed 's/=//g'

最新更新