Подпись от моего подписанного OpenBadge не будет проверяться
Мне нужно иметь возможность выпускать Mozilla OpenBadges. Тем не менее, Валидатор на http://validator.openbadges.org/ говорит, что мое утверждение недействительно и для проверки подписи, хотя я следовал документации к письму. Метод Mozilla OpenBadges, который выполняет проверку подписи, находится по адресу http://github.com/brianloveswords/node-jws.
Я разместил этот вопрос здесь и здесь с моим кодом и полученным утверждением.
Хотя есть некоторая документация, полноценного примера подписанного утверждения, похоже, не хватает. Чтобы получить некоторую документацию, которую они предоставляют, см. Следующие две ссылки: (1) http://github.com/mozilla/openbadges/wiki/Assertions и (2) http://self-issued.info/ документы / проект-IETF-хосе-JSON-веб-signature.html#RS256Example
Если вам нужно что-то еще от меня, пожалуйста, дайте мне знать. Я старался быть как можно более подробным, но в то же время кратким.
Заранее спасибо! Фредди
2 ответа
Проблема оказалась в том, что у меня не было файла с открытым ключом в формате.pem. Открытый ключ должен содержать 65 символов в строке, а закрытый ключ должен содержать 64 символа в строке с -----BEGIN PUBLIC KEY----- и -----END PUBLIC KEY----- для обоих ключей в качестве верхних и нижних колонтитулов соответственно. С правильно отформатированной полезной нагрузкой я смог проверить ее на OpenBadges Validator, так что подписать ее с помощью PHPSecLib было вполне нормально! В любом случае, спасибо Нойберту за ваш вклад.
Ссылка RS256Example говорит об этом сверху: RSASSA-PKCS-v1_5 SHA-256
Так что сделайте это с phpseclib:
$rsa->setSignatureMode(CRYPT_RSA_SIGNATURE_PKCS1);
$rsa->setHash('sha256');