Androidの有料号アンドロイドペイ:公開、非公開鍵ペア生成(NISTP-256との楕円曲線)
Androidの支払いで次のようにクレジットカードからトークンを生成するためのプロセスは次のとおりです。
生成このI呼び出しを行うには、公開鍵と秘密鍵(以下呼び出しが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の公開鍵と非公開鍵を生成する正しい方法ですか?
私は次の例外を取得します。ここ
String publicKey = String (Base64.encodeBase64(pair.getPublic().getEncoded()));
PaymentMethodTokenizationParameters parameters = PaymentMethodTokenizationParameters.newBuilder().setPaymentMethodTokenizationType(PaymentMethodTokenizationType.NETWORK_TOKEN).addParameter("publicKey", publicKey).build();
(これの詳細はAndroidの有料文書である)のAndroidペイcreateMaskedWalletRequet
方法にbase64でエンコードされた形式の公開鍵を渡します
03 -30 17:02:06.459 3786-15263 /? E/WalletClient:エラーが MaskedWalletRequest.paymentMethodTokenizationParametersの確認:あなたは私が私が間違っているのかを理解助けてください: パラメータ「公開」の最初のバイトは、(圧縮されていない点に フォーマットを示す)0x04の
質問2でなければなりません。私は、これがフォーマットの不一致に関連しているかもしれないとは思いますが、わからないし、それを修正する方法もわかりません。
あなたのお手伝いをよろしくお願いいたします。
ありがとうAndy、私たちはまったく同じようにして静的な公開鍵と秘密鍵のペアを生成し、アプリケーションで使用しました。私は動的にそれらを生成する方法があったと思っていたが、Googleは静的なキーのペアを使用して大丈夫だった –