diff options
author | Magnus Ahltorp <map@kth.se> | 2015-02-26 13:17:22 +0100 |
---|---|---|
committer | Magnus Ahltorp <map@kth.se> | 2015-02-26 13:17:22 +0100 |
commit | 6c1efbd59e32e7506ae96a5792edb6c64a79e8f9 (patch) | |
tree | 759a7e8632c7029d444477d1d0e1d7381f8daa0b | |
parent | 30bee644efd95c4c4cdfd5ab2175e09e3215fcae (diff) |
Simplified reading of keyfile
-rw-r--r-- | src/sign.erl | 33 |
1 files changed, 14 insertions, 19 deletions
diff --git a/src/sign.erl b/src/sign.erl index 5a2d478..eae76e7 100644 --- a/src/sign.erl +++ b/src/sign.erl @@ -9,7 +9,7 @@ %% API. -export([start_link/2, stop/0]). -export([sign/1, get_pubkey/0, get_logid/0]). --export([read_private_keyfile_ec/1, read_public_keyfile_ec/2]). +-export([read_keyfile_ec/1]). %% API for tests. -export([read_keyfile_rsa/2, read_keyfiles_ec/2]). %% gen_server callbacks. @@ -53,27 +53,22 @@ read_keyfile_rsa(Filename, Passphrase) -> Privatekey = decode_key(KeyPem, Passphrase), {Privatekey, public_key(Privatekey)}. -read_private_keyfile_ec(PrivkeyFile) -> - lager:debug("reading file ~p", [PrivkeyFile]), - {ok, PemBinPriv} = file:read_file(PrivkeyFile), - [PrivkeyPem] = public_key:pem_decode(PemBinPriv), - decode_key(PrivkeyPem). +read_keyfile_ec(KeyFile) -> + lager:debug("reading file ~p", [KeyFile]), + {ok, PemBin} = file:read_file(KeyFile), + [KeyPem] = public_key:pem_decode(PemBin), + decode_key(KeyPem). -read_public_keyfile_ec(Paramsfile, Pubkeyfile) -> - {ok, PemBinPub} = file:read_file(Pubkeyfile), - [SPKIPem] = public_key:pem_decode(PemBinPub), - %% SPKI is missing #'AlgorithmIdentifier' so pem_entry_decode won't do. - %% Publickey = public_key:pem_entry_decode(SPKIPem), - {_, AlgoDer, _} = SPKIPem, - SPKI = public_key:der_decode('SubjectPublicKeyInfo', AlgoDer), - #'SubjectPublicKeyInfo'{subjectPublicKey = {_, Octets}} = SPKI, - #'SubjectPublicKeyInfo'{algorithm = Algorithm} = SPKI, +pem_entry_decode({'SubjectPublicKeyInfo', Der, _}) -> + SPKI = public_key:der_decode('SubjectPublicKeyInfo', Der), + #'SubjectPublicKeyInfo'{subjectPublicKey = {_, Octets}, + algorithm = Algorithm} = SPKI, #'AlgorithmIdentifier'{parameters = ECParams} = Algorithm, Params = public_key:der_decode('EcpkParameters', ECParams), Point = #'ECPoint'{point = Octets}, - Publickey = {Point, Params}, - - Publickey. + {Point, Params}; +pem_entry_decode(Entry) -> + public_key:pem_entry_decode(Entry). %% @doc Read two PEM files, one with a private EC key and one with the %% corresponding public EC key. @@ -115,7 +110,7 @@ signhash_ec(Data, PrivKey) -> public_key:sign(Data, sha256, PrivKey). decode_key(Entry) -> - public_key:pem_entry_decode(Entry). + pem_entry_decode(Entry). decode_key(Entry, Passphrase) -> public_key:pem_entry_decode(Entry, Passphrase). |