> 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/es/help/knowledge-base/compute-the-application-binding-key.md).

# Calcular la clave de vinculación de la aplicación

## Resumen

En **Cartera NFC**, el Android **clave de enlace de la aplicación** es el `digest SHA-256 de la clave pública del firmante`.

Es el hash SHA-256 del firmante **clave pública** extraída del certificado de firma de la aplicación.

Recuperar el `digest SHA-256 de la clave pública del firmante` utilizando una de las opciones a continuación, luego comparta el valor hexadecimal resultante con el **equipo de entrega de Thales.**

Esto restringe el uso de la Cartera NFC a un **aplicación de billetera digital**.

{% hint style="info" %}
Es posible que deba compartir varios valores si su configuración de firma difiere por entorno (por ejemplo: **PreProd**, **Producción**).
{% endhint %}

Comparta el hash exactamente como está impreso. No añada separadores ni espacios.

Elija la opción que coincida con su configuración de firma. Vea [Firma de aplicaciones Android](https://developer.android.com/studio/publish/app-signing) para más información.

## Opción 1: Inspeccionar el paquete de la aplicación firmado

Esta es la opción más sencilla. Necesita acceso al APK firmado en una estación de trabajo.

Para **Producción**, a menudo instala la aplicación desde Google Play, luego [extrae el APK de un dispositivo de prueba](https://stackoverflow.com/questions/4032960/how-do-i-get-an-apk-file-from-an-android-device).

También necesita `apksigner` de las Android SDK Build Tools. Ubicación de ejemplo: `%ANDROID_HOME%\build-tools\33.0.1\`.

Una vez que el paquete de la aplicación está disponible, su firma puede examinarse con un solo comando. Por ejemplo:

```nushell
apksigner verify -v --print-certs Sample-sandbox-debug.apk
Verifica
Verificado usando el esquema v1 (firma JAR): false
Verificado usando el esquema v2 (APK Signature Scheme v2): true
Verificado usando el esquema v3 (APK Signature Scheme v3): false
Verificado usando el esquema v3.1 (APK Signature Scheme v3.1): false
Verificado usando el esquema v4 (APK Signature Scheme v4): false
Verificado para SourceStamp: false
Número de firmantes: 1
DN del certificado del firmante #1: CN=D1
Digest SHA-256 del certificado del firmante #1: 591411c6efdc32c0a48ebf023583af589a50fd34914b9277377954ecff91b325
Digest SHA-1 del certificado del firmante #1: 2829a0da71747ae11cce49e77a361267f1abf58d
Digest MD5 del certificado del firmante #1: d14c33afe4217372edfa4eea92ede878
Algoritmo de la clave del firmante #1: RSA
Tamaño de la clave del firmante #1 (bits): 2048
Digest SHA-256 de la clave pública del firmante #1: b8e36f1efe7e4c827aeb390fafbf500d971c7e09a0bb62f84cfbaf8e0c770496
Digest SHA-1 de la clave pública del firmante #1: 3df52267537eebfed228f704af7ab02e54f47172
Digest MD5 de la clave pública del firmante #1: 97fb0a170b1499956ead185500ea3738
```

Use el valor de `Digest SHA-256 de la clave pública del firmante #1`.

En el ejemplo anterior, comparta:

`b8e36f1efe7e4c827aeb390fafbf500d971c7e09a0bb62f84cfbaf8e0c770496`

## Opción 2: Recuperar desde un archivo keystore Java local

Los ejemplos a continuación usan un **PreProd** keystore de Thales incluido con la App de Entrenamiento.

Use sus propias claves de firma para **Sandbox**, **PreProd**, y **Producción**.

### Paso 1: Inspeccionar el archivo keystore

Usando un [Java keytool](https://docs.oracle.com/javase/8/docs/technotes/tools/unix/keytool.html) utilitario, puede inspeccionar el archivo keystore de la siguiente manera:

```nushell
keytool -v -list -keystore <nombre del archivo keystore>
```

Ejemplo:

<figure><img src="/files/152ecd9e26289468c73803dc67696ecfa8974857" alt=""><figcaption><p>Ejemplo: <code>keytool -list</code> salida para el keystore</p></figcaption></figure>

### Paso 2: Extraer el certificado de clave pública

El Java keytool se utiliza nuevamente para extraer un certificado de clave pública para la entrada de clave particular identificada por el alias.

Comando:

```nushell
keytool -export -alias <alias de la clave> -keystore <nombre del archivo keystore> -rfc -file <nombre del archivo de certificado de salida>
```

Ejemplo:

```nushell
c:\Temp>keytool -export -alias gto -keystore release.keystore -rfc -file public.cert
Introduzca la contraseña del keystore:
Certificado almacenado en el archivo <public.cert>
```

### Paso 3: Obtener el hash

Si Thales proporcionó `PKPinGenerator.jar`, úselo para generar el hash de la clave pública.

Comando:

```nushell
java -jar PKPinGenerator.jar <nombre del archivo de certificado de salida del paso anterior>
```

Ejemplo:

```sh
c:\Temp>java -jar PKPinGenerator.jar public.cert
**************************************************
** Generador de Hash de Clave Pública **
**************************************************

Hash de Clave Pública #1: E7F85A18D065DF41A3DD59ECB5FF5807CACABAE8DFACCDE12DB24BD658299C54
```

Comparta el hash impreso en la salida.

En este ejemplo:

`E7F85A18D065DF41A3DD59ECB5FF5807CACABAE8DFACCDE12DB24BD658299C54`

## Opción 3: Recuperar del certificado de firma de la aplicación de Google Play

**Paso 1: Descargar el certificado desde Google Play Console**

<figure><img src="/files/44cf82a78f6bba17241f60f8f251538811f52d48" alt=""><figcaption><p>Descargue el certificado de firma de la aplicación desde Google Play Console</p></figcaption></figure>

**Paso 2: Extraer la clave pública y su hash**

Hay varias maneras de lograr el mismo resultado, pero se recomienda usar la siguiente secuencia de comandos usando [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)= [hash de la clave pública para compartir con 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/es/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.
