我试图在一个Android应用程序中实现SafetyNet,但遇到了这个问题:
Task<SafetyNetApi.AttestationResponse> task = client.attest(nonce.getBytes(), apiKey);
task.addOnSuccessListener(this, new OnSuccessListener<SafetyNetApi.AttestationResponse>() {
@Override
public void onSuccess(SafetyNetApi.AttestationResponse attestationResponse) {
handleJWS(attestationResponse.getJwsResult());
}
}).addOnFailureListener(this, new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
if (BuildConfig.DEBUG)
Log.d("cts", "fail " + e.toString());
}
});
有什么想法吗?
谢了!
我也遇到了同样的问题,只是想出了问题:nonce,apkDigestSha256和apkCertificateDigestSha256的值都是Base64编码的!参见https://github.com/googlesamples/android-play-safetynet/blob/master/server/java/src/main/java/attestationstatement.java
为了将您的nonce与来自JWS的nonce进行比较,您必须执行以下操作:
Arrays.equals(yourNonce, Base64.decode(attestationStatement.nonce(), Base64.DEFAULT))
问题内容: 我目前有以下sql查询 它返回给定用户和日期的总计[单位]。 但是,我想根据新的标准(即[Units]是否在“可充电”位置)来生成两个单独的总计单位。tblTimeSheets中有一个称为Chargeable的字段,它是一个布尔值(true表示chargeable,false表示false)。如何将其合并为每种类型的单位显示两个总和? 问题答案: 您可以将与一起使用来计算单独的总计:
我有文件,像这样: 我希望现在这是清楚的,谢谢!
当我只为一些特定的测试用例运行代码时,我得到了一个“由于超时错误而终止”。即使我的代码为其他测试用例成功编译。有人能帮我吗 问题陈述 一个能被2整除的数字叫做偶数。Continue是与break语句相反的循环控制语句,它不终止循环,而是强制执行循环的下一次迭代。Sohan很想知道给定范围内的偶数总数,但他的朋友不喜欢数字。 输入格式 第一行将包含测试用例的数量。然后测试用例如下:每个测试用例包含一
我需要写一个gradle脚本来在每次提交时自动版本化我的应用程序。我还需要在测试人员的应用程序中包含提交散列作为参考。 我对自动版本控制通常的工作方式感到困惑。有人可以解释自动归因过程吗?
下面我有两个箱子。 案例1和案例2之间的区别在于案例2具有在中,但案例1在中具有。 问题是关于案例2的输出:为什么包含两个不同的值,一个是,另一个是字符串“B”?
问题内容: 我有一个目录结构如下的项目: 我应该如何编写一个可以在part / src中(或在任何地方)的makefile来在部分c / c ++源文件中完成/链接?/ src? 我可以做一些事情-I $ projectroot / part1 / src -I $ projectroot / part1 / inc -I $ projectroot / part2 / src … 如果那行得通,