Подписание Azure RSA HSM - плохие символы в base64 - PullRequest
0 голосов
/ 12 ноября 2018

Мы пытаемся использовать Azure HSM для цифровых подписей. К сожалению, между PHP и HSM есть различия.

т.е. тот же контент, подписанный из PHP методами openssl_sign, возвращает

string(344) "SgPUHc0bKz9d6KetdnNZxIguqDmrj9+B9kQO0t3mxObZ2+EndJ0MEDIuYEcj20BaIlXuM+IAFz25jeZy7VnoGsq+r/L3nxi4b+C6HE7Nw1EyQ3Hz5Tm53bdjr0w25LDOvRFxnxqrzzkxo2K66/Lm0DHMs1r/7XcQhpYEKhZsMCwnk4KzPt3YdE/WpdO+yyVoaM19l+4vVu/GMOKLbQhTtNPEZ+2dw4YtIiUmJz/9o/ARdTaI8XMFWQxQCEgdnii+I1TuuQVKa2BQPPAPNYjJJFU2H9UzxXj1dKxHinCnW8jNZ57gf41PEypqtf8ebFSunWyxdtWdIQ+RjRoJoQLTxQ=="

Контент, подписанный Azure HSM, выглядит следующим образом

string(342) "SgPUHc0bKz9d6KetdnNZxIguqDmrj9-B9kQO0t3mxObZ2-EndJ0MEDIuYEcj20BaIlXuM-IAFz25jeZy7VnoGsq-r_L3nxi4b-C6HE7Nw1EyQ3Hz5Tm53bdjr0w25LDOvRFxnxqrzzkxo2K66_Lm0DHMs1r_7XcQhpYEKhZsMCwnk4KzPt3YdE_WpdO-yyVoaM19l-4vVu_GMOKLbQhTtNPEZ-2dw4YtIiUmJz_9o_ARdTaI8XMFWQxQCEgdnii-I1TuuQVKa2BQPPAPNYjJJFU2H9UzxXj1dKxHinCnW8jNZ57gf41PEypqtf8ebFSunWyxdtWdIQ-RjRoJoQLTxQ"

Есть только несколько отличий: вместо + char Azure HSM возвращает - вместо / char Azure HSM возвращает _ и подпись от Azure не дополняется.

Эти символы недопустимы для базы 64: https://en.wikipedia.org/wiki/Base64#Base64_table

У кого-нибудь есть идея, откуда могут возникнуть эти различия?

1 Ответ

0 голосов
/ 12 ноября 2018

У кого-нибудь есть идеи, откуда могут возникнуть эти различия?

Похоже, что Azure использует безопасный URL-адрес base64, как указано в RFC 4648 .Вы можете найти его в разделе «Сводная таблица вариантов» статьи Wikipedia , на которую вы ссылаетесь.

...