Asset

Уникально идентифицирует актив.

Цифровой актив — это идентифицируемый и адресуемый онлайн-объект, который обычно предоставляет некоторую услугу или контент. Примерами ресурсов являются веб-сайты, приложения для Android, каналы Twitter и страницы Plus.

JSON-представление
{
  // Union field, only one of the following:
  "web": {
    object(WebAsset)
  },
  "androidApp": {
    object(AndroidAppAsset)
  },
}
Имя поля Тип Описание
Поле объединения, только одно из следующих:
web object( WebAsset ) Установите, является ли это веб-ресурсом.
androidApp object( AndroidAppAsset ) Установите, если это ресурс приложения Android.

ВебАссет

Описывает веб-ресурс.

JSON-представление
{
  "site": string,
}
Имя поля Тип Описание
site string

Веб-ресурсы идентифицируются по URL-адресу, который содержит только схему, имя хоста и часть порта. Формат:

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

Имена хостов должны быть полными: они должны заканчиваться одной точкой (" . ").

В настоящее время разрешены только схемы «http» и «https».

Номера портов задаются в виде десятичного числа, и их необходимо опускать, если используются стандартные номера портов: 80 для http и 443 для https.

Мы называем этот ограниченный URL-адрес «сайтом». Все URL-адреса, имеющие одну и ту же схему, имя хоста и порт, считаются частью сайта и, следовательно, принадлежат веб-ресурсу.

Пример: ресурс с сайтом https://www.google.com содержит все эти URL:

  • 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/

Но он не содержит этих URL-адресов:

  • http://www.google.com/ (неправильная схема)
  • https://google.com/ (имя хоста не совпадает)
  • https://www.google.com:444/ (порт не соответствует) ОБЯЗАТЕЛЬНО

AndroidAppAsset

Описывает актив приложения Android.

JSON-представление
{
  "packageName": string,
  "certificate": {
    object(CertificateInfo)
  },
}
Имя поля Тип Описание
packageName string Ресурсы приложений Android естественным образом идентифицируются по имени их пакета Java. Например, приложение Google Maps использует имя пакета com.google.android.apps.maps . НЕОБХОДИМЫЙ
certificate object( CertificateInfo )

Поскольку не существует глобального обеспечения уникальности имени пакета, нам также требуется сертификат подписи, который в сочетании с именем пакета однозначно идентифицирует приложение.

Ключи подписи некоторых приложений меняются, поэтому со временем они могут быть подписаны разными ключами. Мы рассматриваем их как отдельные активы, поскольку используем (имя пакета, сертификат) в качестве уникального идентификатора. Обычно это не должно создавать никаких проблем, поскольку обе версии приложения будут делать одинаковые или похожие утверждения. Однако другие ресурсы, делающие заявления о приложении, должны будут обновляться при смене ключа.

(Обратите внимание, что синтаксисы публикации и запроса операторов содержат синтаксический сахар, позволяющий легко указывать приложения, известные по нескольким сертификатам.) ОБЯЗАТЕЛЬНО.

Информация о сертификате

Описывает сертификат X509.

JSON-представление
{
  "sha256Fingerprint": string,
}
Имя поля Тип Описание
sha256Fingerprint string

Отпечаток сертификата SHA-265 в верхнем регистре. Из сертификата PEM его можно получить следующим образом:

$ 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

или вот так:

$ 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

В этом примере содержимое этого поля будет 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 .

Если эти инструменты вам недоступны, вы можете преобразовать сертификат PEM в формат DER, вычислить хэш SHA-256 этой строки и представить результат в виде шестнадцатеричной строки (то есть шестнадцатеричные представления каждого октета в верхнем регистре, разделенные двоеточиями). ).