Re: PGP public key decoding

Max Lapshin <[email protected]>
Newsgroups gmane.comp.lang.erlang.general
Message-ID <CAMxVRxCqA0LXNU9Uxhnz=xk2wV9Q2SnbAkcYdhuA_10KSy5LjA@mail.gmail.com>
https://datatracker.ietf.org/doc/html/rfc4880

1. maybe it is not base64, but radix64 and it could be another thing?
2. is it really ASN?

On Fri, Jul 9, 2021 at 10:09 PM Serge <[email protected]> wrote:
>
> Does anyone have an idea how to decode a PGP public key using public_key module?
>
> I am doing this:
>
> 1> {ok, B} = file:read_file(PGPPubKeyFile),
> 2> B1 = re:replace(B, <<"-----BEGIN PGP PUBLIC KEY BLOCK-----">>, <<"-----BEGIN RSA PUBLIC KEY-----">>, [{return, binary}]),
> 3> B2 = re:replace(B1,  <<"-----END PGP PUBLIC KEY BLOCK-----">>,   <<"-----END RSA PUBLIC KEY-----">>,   [{return, binary}]),
> 4> B3 = re:replace(B2,  <<"\n.+(\n-----END)">>,    <<"\\1">>, [{return, binary}]), % Remove checksum
> 5> B4 = re:replace(B3,  <<"\nVersion:.+\n\r?\n">>, <<"\n">>,  [{return, binary}]), % Remove version
> 6> [Entry] = public_key:pem_decode(B4),
> 7> public_key:pem_entry_decode(Entry).
> ** exception error: no match of right hand side value {error,{asn1,{{wrong_tag,{{expected,16},
>                                                                                {got,131097,{131097,<<"\r">>}}}},
>                                                                    [{'OTP-PUB-KEY',match_tags,2,
>                                                                                    [{file,"OTP-PUB-KEY.erl"},{line,23999}]},
>                                                                     {'OTP-PUB-KEY',dec_RSAPublicKey,2,
>                                                                                    [{file,"OTP-PUB-KEY.erl"},{line,2957}]},
>                                                                     {'OTP-PUB-KEY',decode,2,
>                                                                                    [{file,"OTP-PUB-KEY.erl"},{line,1232}]},
>                                                                     {public_key,der_decode,2,
>                                                                                 [{file,"public_key.erl"},{line,318}]},
>                                                                     {erl_eval,do_apply,6,[{file,"erl_eval.erl"},{line,689}]},
>                                                                     {shell,exprs,7,[{file,"shell.erl"},{line,686}]},
>                                                                     {shell,eval_exprs,7,[{file,"shell.erl"},{line,642}]},
>                                                                     {shell,eval_loop,3,[{file,"shell.erl"},{line,627}]}]}}}
>     in function  public_key:der_decode/2 (public_key.erl, line 322)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.