summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMagnus Ahltorp <map@kth.se>2015-02-26 13:17:22 +0100
committerMagnus Ahltorp <map@kth.se>2015-02-26 13:17:22 +0100
commit6c1efbd59e32e7506ae96a5792edb6c64a79e8f9 (patch)
tree759a7e8632c7029d444477d1d0e1d7381f8daa0b
parent30bee644efd95c4c4cdfd5ab2175e09e3215fcae (diff)
Simplified reading of keyfile
-rw-r--r--src/sign.erl33
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).