title: Decoding PGP keys in Erlang
body: <p>I'm unable to "pem_entry_decode" GPG public key in Erlang. Public key generated through OpenSSL works fine. I've fixed GPG key as suggested in <a href="https://stackoverflow.com/questions/10966256/erlang-importing-gpg-public-key">Erlang - Importing GPG Public Key</a>.</p>
  
  <pre><code>#!/usr/local/bin/escript
  
  main(_) -&gt;
    [application:start(X) || X &lt;- [crypto, public_key, ssl]],
    Msg = list_to_binary("Hello World!"),
    %{ok, FileContents} = file:read_file("public_openssl.pem"),
    {ok, FileContents} = file:read_file("public_gpg.asc"),
    show(FileContents),
    [Entry] = public_key:pem_decode(FileContents),
    show(Entry),
    Key = public_key:pem_entry_decode(Entry),
    show(Key),
    EM = public_key:encrypt_public(Msg, Key),
    show(EM).
  
  show(Something) -&gt;
    io:format("~p~n", [Something]).
  </code></pre>
  
  <p>Error:</p>
  
  <pre><code>escript: exception error: no match of right hand side value 
                   {error,
                       {asn1,
                           {wrong_tag,
                               {{expected,16},{got,131097,{131097,&lt;&lt;"\r"&gt;&gt;}}}}}}
    in function  public_key:der_decode/2 (public_key.erl, line 170)
    in call from erl_eval:do_apply/6 (erl_eval.erl, line 572)
    in call from erl_eval:expr/5 (erl_eval.erl, line 367)
    in call from escript:eval_exprs/5 (escript.erl, line 850)
    in call from erl_eval:local_func/5 (erl_eval.erl, line 470)
    in call from escript:interpret/4 (escript.erl, line 768)
    in call from escript:start/1 (escript.erl, line 277)
    in call from init:start_it/1 
  </code></pre>