Android Pay问题
在Android Pay中,从信用卡生成令牌的过程如下:
生成公钥和私钥(下面的调用使用带有NISTP-256算法的椭圆曲线返回键)
为此,我打电话给...
public static KeyPair generateKeyPair() {
KeyPair pair =null;
try {
ECGenParameterSpec ecGenSpec = new ECGenParameterSpec("prime256v1");
java.security.KeyPairGenerator g = KeyPairGenerator.getInstance("EC");
g.initialize(ecGenSpec, new SecureRandom());
pair = g.generateKeyPair();
pair.getPrivate();
pair.getPublic();
}catch (Throwable e ){
e.printStackTrace();
}
return pair;
}
Run Code Online (Sandbox Code Playgroud)
...这成功返回公钥和私钥,但我不确定密钥的格式/编码是什么.我找不到任何关于此的文档.
问题1:这是为Android Pay生成公钥和私钥的正确方法吗?
将base64编码格式的公钥传递给Android Pay createMaskedWalletRequet方法(详情请参阅Android Pay文档)
String publicKey = String (Base64.encodeBase64(pair.getPublic().getEncoded()));
PaymentMethodTokenizationParameters parameters = PaymentMethodTokenizationParameters.newBuilder().setPaymentMethodTokenizationType(PaymentMethodTokenizationType.NETWORK_TOKEN).addParameter("publicKey", publicKey).build();
Run Code Online (Sandbox Code Playgroud)
在这里,我得到以下异常:
03-30 17:02:06.459 3786-15263 /?E/WalletClient:错误验证MaskedWalletRequest.paymentMethodTokenizationParameters:参数"公钥"第一字节必须是0×04(表示未压缩的点格式)
问题2:你能帮我理解我做错了什么.我认为这可能与格式不匹配有关,但不确定,也不确定如何修复它.
感谢您的帮助!!