Re: PGP public key decoding
Serge <[email protected]>
| Newsgroups | gmane.comp.lang.erlang.general |
|---|---|
| Message-ID | <CANt451=Sk=yb5rr6JWcoSJ-oBBVXy5fZFcjUD0rA5DJuOjHzPQ@mail.gmail.com> |
Oh, I see. I thought the two functions public_key:pem_decode/1 and public_key:pem_entry_decode/1 need to be used in succession to decode the entry. On Sat, Jul 10, 2021 at 6:59 AM Stanislav Ledenev <[email protected]> wrote: > Your Entry is already decoded, so no need to decode it again. > It must be something like {'RSAPublicKey',.....} > > пт, 9 июл. 2021 г. в 22:09, Serge <[email protected]>: > >> 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) >> >