Erlang - Dekódování RSA veřejný klíč

hlasů
0

Kroky v návaznosti na tento jeden .

Mám čtení / dekódování práci

1> {ok, F} = file:read_file(inaimathi.rsapub).
{ok,<<-----BEGIN RSA PUBLIC KEY-----\nmQINBE9NBIQBEADMSzN6b0FaPP0rGiLDWKfH4ehN66Z0SAIynXm6lBHjmO69pNsm\niIe4p1X9aXhr...>>}
2> [Entry] = public_key:pem_decode(F).
[{'RSAPublicKey',<<153,2,13,4,79,77,4,132,1,16,0,204,75,
                   51,122,111,65,90,60,253,43,26,34,195,
                   88,167,...>>,
                 not_encrypted}]

Podle docs , poslední věc, co musím udělat, aby si pracovní veřejný klíč z toho běží public_key:pem_entry_decode/1na to Entry. Nicméně, když se snažím dělat to, že dostanu eror.

3> public_key:pem_entry_decode(Entry).
** exception error: no match of right hand side value 
                    {error,
                        {asn1,
                            {{badmatch,{error,{asn1,{wrong_tag,{131097,16}}}}},
                             [{'OTP-PUB-KEY',dec_RSAPublicKey,2,
                                  [{file,OTP-PUB-KEY.erl},{line,5956}]},
                              {'OTP-PUB-KEY',decode,2,
                                  [{file,OTP-PUB-KEY.erl},{line,493}]},
                              {public_key,der_decode,2,
                                  [{file,public_key.erl},{line,166}]},
                              {erl_eval,do_apply,6,
                                  [{file,erl_eval.erl},{line,576}]},
                              {shell,exprs,7,[{file,shell.erl},{line,668}]},
                              {shell,eval_exprs,7,
                                  [{file,shell.erl},{line,623}]},
                              {shell,eval_loop,3,
                                  [{file,shell.erl},{line,608}]}]}}}
     in function  public_key:der_decode/2 (public_key.erl, line 170)

Co dělám špatně?

EDIT: Nemyslel jsem, že by to jedno, ale zeptal se někdo tak.

Běžím Debianu Wheezy na Core i3 s Erlang instalovaného z ~ 2 dny staré pokladny z toho .

erl --version říká

Erlang R15B02 (erts-5.9.2) [source] [64-bit] [smp:4:4] [async-threads:0] [hipe] [kernel-poll:false]
Položena 10/06/2012 v 15:13
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
4

Váš kód funguje zde:

decode() ->
    [application:start(X) || X <- [crypto, public_key, ssl]],
    RawData = ["-----BEGIN PUBLIC KEY-----\n",
               "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBm8yuHmd0P6scl48DEi+xp47w\n",
               "XVZaKWRygGKtA2XkdRuCU99f0Tq07Llcgf8XuR+Wnk+z2CdMMFMzOGhCePblVIAn\n",
               "33dcBVlDokpBF7AnTClsaLcixxZw1LIUiaPaBdN7oG8vt3G2caLHRrrkoEnccY+6\n",
               "GadfH7iuHdcVsz1mowIDAQAB\n",
               "-----END PUBLIC KEY-----"],
    D = iolist_to_binary(RawData),
    [Entry] = public_key:pem_decode(D),
    public_key:pem_entry_decode(Entry).

Generuje výstup (zkráceno):

 {'RSAPublicKey',135956...,65537}
Odpovězeno 10/06/2012 v 21:42
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more