Пример кода для извлечения открытого ключа, пригодного для записи в файл или для дальнейшей обработки, такой как проверка подписанного JWT. Важным моментом является то, что открытый ключ извлечен из сертификата.
Я использую этот код с учетными данными учетной записи Google P12.
Открытый ключ, который генерирует этот код, будет выглядеть так:
b'-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFDEADbeefMIIBCgKCAQEA5vFQucW2JW2WBhLI3dB0\n8OIkgCJPJDxoJ65kphmFSB2ZWsejV/iSecoIBYLyD2+HdHJm8pUgOOy05lm07gei\n0BRqLNYtUk2nlQIMoLPXxv23+VOWdpN/mYUsRhRwB13Aq4BybxObq+c7b08YWitI\nEtPmSEv+YkKlpcGzQcfctT7GNjjBqWuUuM1dxAqJll6JIEGAWEsDeTh9YOqnBnRb\nAWxI62D9/9bVnLkRWv0S9gfOZLuboVBhBSbHQyjbeefDeAd1J6nToug7wdxC66r1\n55lLzf9Ow9KPlsj30d6Alv59xX9QEU3MfIEfyxGiIHNTX6g8A3XUHOtgdmDyVB//\nXwIDAQAB\n-----END PUBLIC KEY-----\n'
Python 3.x код:
import OpenSSL.crypto
def load_public_key(pfx_path, pfx_password):
''' Read the public key and return as PEM encoded '''
# print('Opening:', pfx_path)
with open(pfx_path, 'rb') as f:
pfx_data = f.read()
# print('Loading PFX contents:')
pfx = OpenSSL.crypto.load_pkcs12(pfx_data, pfx_password)
public_key = OpenSSL.crypto.dump_publickey(
OpenSSL.crypto.FILETYPE_PEM,
p12.get_certificate().get_pubkey())
print(public_key)
return public_key