-module(ssh_sign). -export([sign/1 ,verify/2 ,public_identity_key/2 ]). sign(Data) when is_binary(Data) -> {ok,Key} = ssh_file:private_identity_key("ssh-rsa",[]), ssh_rsa:sign(Key, Data). verify(Data, Sig) when is_binary(Data), is_binary(Sig) -> {ok,Key} = public_identity_key("ssh-rsa",[]), ssh_rsa:verify(Key, Data, Sig). public_identity_key(Alg, Opts) -> Path = ssh_file:file_name(user, public_identity_key_filename(Alg), Opts), read_public_key_v2(Path, Alg). public_identity_key_filename("ssh-dss") -> "id_dsa.pub"; public_identity_key_filename("ssh-rsa") -> "id_rsa.pub". read_public_key_v2(File, Type) -> case file:read_file(File) of {ok,Bin} -> List = binary_to_list(Bin), case lists:prefix(Type, List) of true -> List1 = lists:nthtail(length(Type), List), K_S = ssh_bits:b64_decode(List1), ssh_file:decode_public_key_v2(K_S, Type); false -> {error, bad_format} end; Error -> Error end. %% http://www.redhoterlang.com/entry/ce13f30fd1b067039fadc639cedbf06e