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