Маркерная ссылка формата платежа
Маркер платежа имеет вложенную структуру, как показано на рисунке 1-1.
Структура верхнего уровня
paymentData
свойство PKPaymentToken
содержит сериализацию UTF–8 простого текста словарь JSON со следующими ключами и значениями:
Ключ | Значение | Описание |
---|---|---|
| словарь данных платежа, Base64, закодированный как строка | Зашифрованные данные платежа. |
| словарь заголовка | Дополнительная зависимая от версии информация раньше дешифровала и проверяла платеж. |
| отсоединенная подпись № 7 PKCS, Base64, закодированный как строка | Подпись платежа и данных заголовка. |
| строка | Информация о версии о маркере платежа. |
Для версии "EC_v1"
, для дешифрования зашифрованных данных платежа сделайте следующее:
Заверьте подпись следующим образом:
Гарантируйте, чтобы сертификаты содержали корректный пользовательский OIDs: 1.2.840.113635.100.6.29 для листового сертификата и 1.2.840.113635.100.6.2.14 для промежуточного звена Приблизительно значение для них маркер OIDs не имеет значения, только их присутствие.
Гарантируйте, что корневым CA является Корень Apple CA - G3. Этот сертификат доступен от apple.com/certificateauthority.
Гарантируйте, что существует допустимая цепочка X.509 доверия от подписи до корня Приблизительно В частности, гарантируйте, что подпись создавалась с помощью закрытого ключа, соответствующего листовому сертификату, что листовой сертификат подписывается промежуточным CA, и что промежуточный CA подписывается Корнем Apple CA - G3.
Гарантируйте, что подпись является допустимой подписью ECDSA (ecdsa-with-SHA256 1.2.840.10045.4.3.2) связанных значений
ephemeralPublicKey
,data
,transactionId
, иapplicationData
ключи.Проверьте время подписания CMS подписи, как определено разделом 11.3 из RFC 5652. Если музыкальный размер и время транзакции отличается на больше, чем несколько минут, возможно, что маркер является атакой с повторением пакетов.
Используйте значение
publicKeyHash
ключ для определения, какой торговый открытый ключ использовался Apple, и затем получает соответствующий торговый сертификат открытых ключей и закрытый ключ.Используя торговый закрытый ключ и эфемерный открытый ключ, генерируйте совместно используемую секретную Эллиптическую кривую использования Diffie-Hellman (id-ecDH 1.3.132.1.12).
Используя торговое поле идентификатора (OID 1.2.840.113635.100.6.32) сертификата открытых ключей и совместно используемого секрета, получите симметричный ключ с помощью ключевой функции деривации, описанной в NIST 800-56A SP, разделите 5.8.1 со следующими входными значениями:
Входное имя
Значение
Хеш-функция
SHA 256
Z
Совместно используемый секрет вычислил выше использования ECDH.
Алгоритм ID
Байт (
0x0D
) сопровождаемый ASCII представляют «id-aes256-GCM» в виде строки. Первый байт этого значения является целым без знака, указывающим длину строки в байтах; остающиеся байты являются строкой переменной длины.Сторона U информация
ASCII представляет «Apple» в виде строки. Это значение является строкой фиксированной длины.
Сторона V информаций
Хеш SHA 256 торгового идентификатора. Это значение является строкой битов фиксированной длины.
Дополнительная общедоступная и частная информация
Неиспользованный.
Используйте симметричный ключ для дешифрования значения
data
ключевой AES 256 использования (id-aes256-GCM 2.16.840.1.101.3.4.1.46), с вектором инициализации шестнадцати нулевых байтов и никаких связанных данных аутентификации.
Если подпись недопустима, или любой из хешей не соответствует, игнорирует транзакцию.
Ключи заголовка
Для версии "EC_v1"
, заголовок содержит следующие ключи и значения:
Ключ | Значение | Описание |
---|---|---|
| Хеш SHA 256, шестнадцатеричное число закодировало строкой | Дополнительный. Хеш |
| X.509 закодировал ключевые байты, Base64, закодированный как строка | Эфемерные байты с открытым ключом. |
| Хеш SHA 256, Base64, закодированный как строка | Хеш X.509 закодировал байты с открытым ключом сертификата продавца. |
| шестнадцатеричный идентификатор, как строка | Идентификатор транзакции, сгенерированный на устройстве. |
Ключи данных платежа
Будучи дешифрованным, зашифрованные данные платежа содержат следующие ключи и значения:
Ключ | Значение | Описание |
---|---|---|
| строка | Специфичный для устройства номер счета карты это фонды эта транзакция. |
| дата как строка | Дата истечения срока карты в формате YYMMDD. |
| строка | ISO 4217 числовой код валюты, как строка для сохранения начальных нулей. |
| число | Сумма транзакции. |
| строка | Дополнительный. Имя владельца карты. |
| строка | Закодированный шестнадцатеричными числами идентификатор производителя устройств. |
| строка | Также |
| словарь данных платежа | Подробные данные платежа. |
Подробные ключи данных платежа (3-D безопасный)
Ключ | Значение | Описание |
---|---|---|
| строка | Онлайновая криптограмма платежа, как определено Безопасным 3-D. |
| строка | Дополнительный. ECI idicator, как определено Безопасным 3-D. |
Подробные ключи данных платежа (EMV)
Ключ | Значение | Описание |
---|---|---|
| Структура платежа EMV, Base64, закодированный как строка | Вывод от безопасного элемента. |