public_key:pem_entry_decode(Certificate)
возвращает запись Certificate
. Чтобы извлечь из него открытый ключ, вам нужно загрузить определения записей. В оболочке Erlang введите следующее:
rr(public_key).
После загрузки определений записей в оболочку возвращаемые значения будут содержать имена полей, а также значения полей, что должно немного прояснить ситуацию.
В модуле Erlang загрузите файл заголовка следующим образом:
-include_lib("public_key/include/public_key.hrl").
Затем вы можете извлечь информацию об открытом ключе следующим образом:
DecodedCertificate = public_key:pem_entry_decode(Certificate).
DecodedCertificate#'Certificate'.tbsCertificate#'TBSCertificate'.subjectPublicKeyInfo.
который возвращает:
#'SubjectPublicKeyInfo'{
algorithm =
#'AlgorithmIdentifier'{
algorithm = {1,2,840,113549,1,1,1},
parameters = <<5,0>>},
subjectPublicKey =
<<48,130,2,10,2,130,2,1,0,195,76,200,181,90,146,51,183,
39,91,176,28,95,117,241,28,140,...>>}
Или копайте на один уровень ниже, чтобы получить сам ключ:
DecodedCertificate#'Certificate'.tbsCertificate
#'TBSCertificate'.subjectPublicKeyInfo
#'SubjectPublicKeyInfo'.subjectPublicKey.
<<48,130,2,10,2,130,2,1,0,195,76,200,181,90,146,51,183,39,
91,176,28,95,117,241,28,140,212,223,132,...>>
person
legoscia
schedule
22.02.2016