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;
}
…这成功返回公钥和私钥,但我不确定密钥的格式/编码是什么.我找不到任何关于此的文档.
问题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();
在这里,我得到以下异常:
03-30 17:02:06.459 3786-15263/? E/WalletClient: Error validating
MaskedWalletRequest.paymentMethodTokenizationParameters: first byte of
parameter “publicKey” must be 0x04 (which indicates uncompressed point
format)
问题2:你能帮我理解我做错了什么.我认为这可能与格式不匹配有关,但不确定,也不确定如何修复它.
感谢您的帮助!!
在Android Pay中,使用`prime256v1`椭圆曲线算法生成了公钥和私钥。然而,将Base64编码的公钥传递给`createMaskedWalletRequest`时遇到异常,指出公钥的首字节必须是0x04。问题在于公钥的点格式可能不符合要求。
3083

被折叠的 条评论
为什么被折叠?



