Asset

Identifica um recurso de forma exclusiva.

Um recurso digital é uma entidade on-line identificável e endereçável que normalmente oferece algum serviço ou conteúdo. Exemplos de recursos são sites, apps Android, feeds do Twitter e páginas do Google+.

Representação JSON
{
  // Union field, only one of the following:
  "web": {
    object(WebAsset)
  },
  "androidApp": {
    object(AndroidAppAsset)
  },
}
Nome do campo Tipo Descrição
Campo de união, apenas uma das seguintes opções:
web object(WebAsset) Defina se este é um recurso da Web.
androidApp object(AndroidAppAsset) Defina se este é um recurso de app Android.

Recurso da Web

Descreve um recurso da Web.

Representação JSON
{
  "site": string,
}
Nome do campo Tipo Descrição
site string

Os recursos da Web são identificados por um URL que contém apenas o esquema, o nome do host e as partes da porta. O formato é

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

Os nomes do host precisam ser totalmente qualificados: precisam terminar em um único ponto (".").

Somente os esquemas "http" e "https" são permitidos no momento.

Os números de porta são fornecidos como um número decimal e precisam ser omitidos se os números de porta padrão forem usados: 80 para http e 443 para https.

Chamamos esse URL limitado de "site". Todos os URLs que compartilham o mesmo esquema, nome do host e porta são considerados parte do site e, portanto, pertencem ao recurso da Web.

Exemplo: o recurso com o site https://www.google.com contém todos estes 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/

No entanto, ele não contém os seguintes URLs:

  • http://www.google.com/ (esquema incorreto)
  • https://google.com/ (o nome do host não corresponde)
  • https://www.google.com:444/ (a porta não corresponde) OBRIGATÓRIO

Recurso do app Android

Descreve um recurso de app Android.

Representação JSON
{
  "packageName": string,
  "certificate": {
    object(CertificateInfo)
  },
}
Nome do campo Tipo Descrição
packageName string Os recursos do app Android são naturalmente identificados pelo nome do pacote Java. Por exemplo, o app Google Maps usa o nome de pacote com.google.android.apps.maps. REQUIRED
certificate object(CertificateInfo)

Como não há uma aplicação global da exclusividade do nome do pacote, também exigimos um certificado de assinatura que, em combinação com o nome do pacote, identifique um app de forma exclusiva.

Algumas chaves de assinatura do app são alternadas. Portanto, é possível que elas sejam assinadas por chaves diferentes ao longo do tempo. Eles são tratados como recursos diferentes, já que usamos (nome do pacote, certificado) como o ID exclusivo. Isso normalmente não traz problemas, porque as duas versões do app fazem declarações iguais ou semelhantes. No entanto, outros recursos que fazem declarações sobre o app precisam ser atualizados quando a chave é rotacionada.

As sintaxes para publicar e consultar instruções contêm açúcar sintático para permitir que você especifique facilmente apps conhecidos por vários certificados. REQUIRED

Informações do certificado

Descreve um certificado X509.

Representação JSON
{
  "sha256Fingerprint": string,
}
Nome do campo Tipo Descrição
sha256Fingerprint string

Impressão digital SHA-265 em letras maiúsculas do certificado. O certificado PEM pode ser adquirido da seguinte maneira:

$ 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

ou:

$ 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

Neste exemplo, o conteúdo desse campo seria 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.

Se essas ferramentas não estiverem disponíveis para você, converta o certificado PEM no formato DER, calcule o hash SHA-256 dessa string e represente o resultado como uma string hexadecimal (ou seja, representações hexadecimais maiúsculas de cada octeto separadas por dois-pontos).