Asset

Identifica un activo de manera inequívoca.

Un activo digital es una entidad en línea identificable y direccionable que suele proporcionar algún servicio o contenido. Algunos ejemplos de recursos son los sitios web, las apps para Android, los feeds de Twitter y las páginas de Google+.

Representación JSON
{
  // Union field, only one of the following:
  "web": {
    object(WebAsset)
  },
  "androidApp": {
    object(AndroidAppAsset)
  },
}
Nombre del campo Tipo Descripción
Campo de unión, solo uno de los siguientes:
web object(WebAsset) Establece si se trata de un recurso web.
androidApp object(AndroidAppAsset) Establece si se trata de un recurso de app para Android.

WebAsset

Describe un elemento web.

Representación JSON
{
  "site": string,
}
Nombre del campo Tipo Descripción
site string

Los recursos web se identifican mediante una URL que contiene solo el esquema, el nombre de host y las partes del puerto. El formato es

http[s]://<hostname>[:<port>]

Los nombres de host deben estar completamente calificados: deben terminar en un solo punto (“.”).

Actualmente, solo se permiten los esquemas “http” y “https”.

Los números de puerto se proporcionan como números decimales y deben omitirse si se usan los números de puerto estándar: 80 para http y 443 para https.

A esta URL limitada la llamamos el "sitio". Todas las URLs que comparten el mismo esquema, nombre de host y puerto se consideran parte del sitio y, por lo tanto, pertenecen al activo web.

Ejemplo: El recurso con el sitio https://www.google.com contiene todas estas URLs:

  • https://www.google.com/
  • https://www.google.com:443/
  • https://www.google.com/foo
  • https://www.google.com/foo?bar
  • https://www.google.com/foo#bar
  • https://user@password:www.google.com/

Sin embargo, no contiene las siguientes URL:

  • http://www.google.com/ (esquema incorrecto)
  • https://google.com/ (el nombre de host no coincide)
  • https://www.google.com:444/ (el puerto no coincide) OBLIGATORIO

AndroidAppAsset

Describe un recurso de app para Android.

Representación JSON
{
  "packageName": string,
  "certificate": {
    object(CertificateInfo)
  },
}
Nombre del campo Tipo Descripción
packageName string Los recursos de apps para Android se identifican naturalmente por su nombre de paquete de Java. Por ejemplo, la app de Google Maps usa el nombre de paquete com.google.android.apps.maps. REQUIRED
certificate object(CertificateInfo)

Debido a que no existe una aplicación global de la exclusividad de nombre de paquete, también necesitamos un certificado de firma, que, combinado con el nombre del paquete, identifica una app de manera única.

Las claves de firma de algunas apps se rotan, por lo que es posible que se firmen con diferentes claves a lo largo del tiempo. Consideramos que son elementos distintos, ya que los utilizamos (nombre del paquete, certificado) como el ID único. Por lo general, esto no debería suponer ningún problema, ya que ambas versiones de la app harán las mismas declaraciones o similares. Sin embargo, otros recursos que hagan declaraciones sobre la app deberán actualizarse cuando se rote una clave.

(Ten en cuenta que las sintaxis para publicar y consultar instrucciones contienen azúcar sintáctica para permitirte especificar fácilmente las apps que son conocidas por varios certificados). REQUIRED

CertificateInfo

Describe un certificado X509.

Representación JSON
{
  "sha256Fingerprint": string,
}
Nombre del campo Tipo Descripción
sha256Fingerprint string

La huella digital SHA-265 en mayúsculas del certificado. Desde el certificado PEM, se puede adquirir de la siguiente manera:

$ keytool -printcert -file $CERTFILE | grep SHA256:
SHA256: 14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83: \
    42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5

o así:

$ openssl x509 -in $CERTFILE -noout -fingerprint -sha256
SHA256 Fingerprint=14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64: \
    16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5

En este ejemplo, el contenido de este campo sería 14:6D:E9:83:C5:73: 06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF: 44:E5.

Si estas herramientas no están disponibles, puedes convertir el certificado PEM al formato DER, calcular el hash SHA-256 de esa cadena y representar el resultado como una cadena hexadecimal (es decir, representaciones hexadecimales en mayúsculas de cada octeto, separadas por dos puntos).