Мы пытаемся использовать 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"
Есть только несколько различий:
вместо +
символ Azure HSM возвращается -
вместо /
символ Azure HSM возвращается _
и подпись от Azure не дополняется.
Эти символы не разрешены в базе 64: https://en.wikipedia.org/wiki/Base64#Base64_table
У кого-нибудь есть идея, откуда эти различия?
У кого-нибудь есть идея, откуда эти различия?
Похоже, что Azure использует URL-адрес base64, как указано в RFC 4648. Вы можете найти его в Раздел «Сводная таблица вариантов» статьи в Википедии Вы связаны
Других решений пока нет …