Как проанализировать расширение cryptography x509

#python #class #object #cryptography

Вопрос:

У меня есть сертификат x509, который я пытаюсь проанализировать (в частности, KeyUsage), который, по-видимому, относится к типам расширений.KeyUsage (из extensions.py) в модуле криптографии python.

type(KeyUsage)

ВОЗВРАТ

<class 'cryptography.x509.extensions.KeyUsage'>

Полная строка расширения, возвращенная из

KeyUsage = certDecoded.extensions.get_extension_for_oid(ExtensionOID.KEY_USAGE)

выглядит так:

KeyUsage: <Extension(oid=<ObjectIdentifier(oid=2.5.29.15, name=keyUsage)>, critical=True, value=<KeyUsage(digital_signature=True, content_commitment=False, key_encipherment=True, data_encipherment=False, key_agreement=False, key_cert_sign=False, crl_sign=False, encipher_only=False, decipher_only=False)>)>

вызов KeyUsage.value возвращает

<KeyUsage(digital_signature=True, content_commitment=False, key_encipherment=True, data_encipherment=False, key_agreement=False, key_cert_sign=False, crl_sign=False, encipher_only=False, decipher_only=False)>

Который возвращает тип, указанный выше (расширения.KeyUsage)

Глядя на источник для класса, мне кажется, что он возвращает строку (так что это мое первое недоразумение …), Потому что я думал, что расширения можно повторять в соответствии с документами.

Однако, может ли кто-нибудь помочь мне понять (во-первых) тип объекта, чтобы я мог прокормить себя в будущем, и (во-вторых) некоторые предложения о том, как я должен это проанализировать; скажем, в простой объект dict, пожалуйста?

Комментарии:

1. Если объект поддерживает протокол сопоставления (многие делают), вы можете вызвать встроенную функцию vars() в экземпляре и получить обратно dict.

2. Спасибо! — это делает то, что мне нужно.