src/ssh_sign.erl

-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