> For the complete documentation index, see [llms.txt](https://docs.payments.thalescloud.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.payments.thalescloud.io/nfc-wallet-sdk-android/ja/help/knowledge-base/compute-the-application-binding-key.md).

# アプリケーションバインディングキーを計算する

## 概要

次の **NFC Wallet**、Android の **アプリのバインディングキー** は `署名者公開鍵の SHA-256 ダイジェスト`.

これは署名者の SHA-256 ハッシュです **公開鍵** アプリケーション署名証明書から抽出されたものです。

次を取得します `署名者公開鍵の SHA-256 ダイジェスト` 以下のいずれかの方法で取得し、得られた 16 進値を **Thales デリバリーチームに共有してください。**

これにより、NFC Wallet の使用は登録済みの **デジタルウォレットアプリケーション**.

{% hint style="info" %}
環境ごとに署名設定が異なる場合は、複数の値を共有する必要があることがあります（例: **PreProd**, **本番**).
{% endhint %}

ハッシュは表示されたとおり正確に共有してください。区切り文字や空白を追加しないでください。

署名設定に合った方法を選択してください。詳細は [Android アプリ署名](https://developer.android.com/studio/publish/app-signing) を参照してください。

## オプション 1: 署名済みアプリケーション パッケージを調べる

これは最も簡単な方法です。ワークステーション上の署名済み APK にアクセスできる必要があります。

〜の場合は **本番**では、Google Play からアプリをインストールしてから、 [テスト端末から APK を取得します](https://stackoverflow.com/questions/4032960/how-do-i-get-an-apk-file-from-an-android-device).

さらに必要なのは `apksigner` （Android SDK Build Tools に含まれます）。場所の例: `%ANDROID_HOME%\build-tools\33.0.1\`.

アプリケーション パッケージが利用可能になれば、その署名は 1 つのコマンドで確認できます。例:

```nushell
apksigner verify -v --print-certs Sample-sandbox-debug.apk
検証結果
v1 スキーム（JAR 署名）を使用して検証: false
v2 スキーム（APK Signature Scheme v2）を使用して検証: true
v3 スキーム（APK Signature Scheme v3）を使用して検証: false
v3.1 スキーム（APK Signature Scheme v3.1）を使用して検証: false
v4 スキーム（APK Signature Scheme v4）を使用して検証: false
SourceStamp の検証: false
署名者の数: 1
署名者 #1 の証明書 DN: CN=D1
署名者 #1 の証明書 SHA-256 ダイジェスト: 591411c6efdc32c0a48ebf023583af589a50fd34914b9277377954ecff91b325
署名者 #1 の証明書 SHA-1 ダイジェスト: 2829a0da71747ae11cce49e77a361267f1abf58d
署名者 #1 の証明書 MD5 ダイジェスト: d14c33afe4217372edfa4eea92ede878
署名者 #1 の鍵アルゴリズム: RSA
署名者 #1 の鍵サイズ（ビット）: 2048
署名者 #1 の公開鍵 SHA-256 ダイジェスト: b8e36f1efe7e4c827aeb390fafbf500d971c7e09a0bb62f84cfbaf8e0c770496
署名者 #1 の公開鍵 SHA-1 ダイジェスト: 3df52267537eebfed228f704af7ab02e54f47172
署名者 #1 の公開鍵 MD5 ダイジェスト: 97fb0a170b1499956ead185500ea3738
```

次の値を使用してください `署名者 #1 の公開鍵 SHA-256 ダイジェスト`.

上記の例では、次を共有します:

`b8e36f1efe7e4c827aeb390fafbf500d971c7e09a0bb62f84cfbaf8e0c770496`

## オプション 2: ローカルの Java キーストア ファイルから取得する

以下の例では、Thales の **PreProd** Training App に同梱されたキーストアを使用します。

次には独自の署名鍵を使用してください **Sandbox**, **PreProd**、および **本番**.

### ステップ 1: キーストア ファイルを確認する

次を使用して [Java keytool](https://docs.oracle.com/javase/8/docs/technotes/tools/unix/keytool.html) ユーティリティを使うと、次のようにキーストア ファイルを確認できます:

```nushell
keytool -v -list -keystore <keystore file name>
```

例:

<figure><img src="https://4053702943-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0KuRpRJHT65Q5KFpOJb4%2Fuploads%2FWzsIu5m0sUkJSZ7PLMmy%2Fimage.png?alt=media&amp;token=aa72ff27-2304-4ace-a178-86a23b0626f2" alt=""><figcaption><p>例: <code>keytool -list</code> キーストアに対する出力</p></figcaption></figure>

### ステップ 2: 公開鍵証明書を抽出する

Java keytool を再度使用して、エイリアスで識別される特定の鍵エントリの公開鍵証明書を抽出します。

コマンド:

```nushell
keytool -export -alias <key alias> -keystore <keystore file name> -rfc -file <output certificate file name>
```

例:

```nushell
c:\Temp>keytool -export -alias gto -keystore release.keystore -rfc -file public.cert
キーストアのパスワードを入力してください:
証明書がファイル <public.cert> に保存されました
```

### ステップ 3: ハッシュを取得する

Thales から `PKPinGenerator.jar`が提供されている場合は、それを使用して公開鍵ハッシュを生成してください。

コマンド:

```nushell
java -jar PKPinGenerator.jar <output certificate file name from previous step>
```

例:

```sh
c:\Temp>java -jar PKPinGenerator.jar public.cert
**************************************************
** 公開鍵ハッシュ生成ツール **
**************************************************

公開鍵ハッシュ #1: E7F85A18D065DF41A3DD59ECB5FF5807CACABAE8DFACCDE12DB24BD658299C54
```

出力に表示されたハッシュを共有してください。

この例では:

`E7F85A18D065DF41A3DD59ECB5FF5807CACABAE8DFACCDE12DB24BD658299C54`

## オプション 3: Google Play アプリ署名証明書から取得する

**ステップ 1: Google Play Console から証明書をダウンロードする**

<figure><img src="https://4053702943-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0KuRpRJHT65Q5KFpOJb4%2Fuploads%2FM7NMIaewel8gEdqEe3Kg%2Fimage.png?alt=media&amp;token=b31eb553-7120-46f4-be73-40c501b95b97" alt=""><figcaption><p>Google Play Console からアプリ署名証明書をダウンロードします</p></figcaption></figure>

**ステップ 2: 公開鍵とそのハッシュを抽出する**

同じ結果を得る方法はいくつかありますが、次のコマンド列を [OpenSSL](https://www.openssl.org/):

```sh
openssl x509 -in deployment_cert.der -inform DER -out deployment_cert.crt
openssl x509 -noout -in deployment_cert.crt -pubkey | openssl asn1parse -noout -inform pem -out deployment_cert.key
openssl dgst -sha256 -hex deployment_cert.key
SHA256(deployment_cert.key)= [Thales と共有する公開鍵ハッシュ]
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.payments.thalescloud.io/nfc-wallet-sdk-android/ja/help/knowledge-base/compute-the-application-binding-key.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
