Re: PGP public key decoding

Serge <[email protected]>
Newsgroups gmane.comp.lang.erlang.general
Message-ID <CANt451=MetoNL5Vx0ii2espqZmy9-yzoZibC2z1QYP-F8Nh_ig@mail.gmail.com>
I followed the key re-formatting advice mentioned here:
https://stackoverflow.com/questions/10966256/erlang-importing-gpg-public-key

However, as shown, public_key:pem_entry_decode/1 fails.

On Fri, Jul 9, 2021 at 7:43 PM Max Lapshin <[email protected]> wrote:

> 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.