Проверка подписи токена оплаты Apple - PullRequest
0 голосов
/ 04 мая 2020

По некоторым причинам мне приходится обрабатывать токен оплаты Apple без платежной платформы. Согласно официальному документу , мне нужно сначала " проверить подпись ". И подпись является отдельной подписью PKCS # 7 в кодировке base64. Я хотел проверить это с помощью node.js или openssl.

Поскольку node-forge, очень удобный криптографический инструмент, пока не поддерживает "ECDSA with sha256" ( link ), и я не могу найти другую замену. Я повернулся к openssl. После некоторого расследования кажется, что подпись упакована в формате " CMS подписанные данные ". Поэтому я обнаружил, что эта команда из руководства openssl должна выполнять эту работу:

openssl cms -verify -inform DER -in signature.der -content content.txt

В документе Apple говорится: « убедитесь, что подпись является действительной подписью ECDSA для объединенных значений ключей ephemeralPublicKey, data, TransactionsId и applicationData ». Поэтому я создаю свой тестовый контент, конкатинируя эти поля из моего тестового токена. Но результат таков:

Verification failure
C0:25:34:08:01:00:00:00:error:CMS routines:CMS_SignerInfo_verify_content:verification failure:crypto/cms/cms_sd.c:901:
C0:25:34:08:01:00:00:00:error:CMS routines:CMS_verify:content verify error:crypto/cms/cms_smime.c:399:

cms_sd. c: 901 - подписант, проверяющий дайджест, поэтому я думаю, что эта команда - то, что мне нужно. Тогда что я сделал не так?

...