anchor.diff:                                engine_method_pkey_meths | engine_method_pkey_asn1_meths | 
                                 engine_method_ec.
   
  +-type engine_ref() :: term().
  +
   -spec engine_get_all_methods() ->
       [engine_method_type()].
   engine_get_all_methods() ->
  
positive.code: -spec engine_load(EngineId::unicode:chardata(),
                    PreCmds::[{unicode:chardata(), unicode:chardata()}],
                    PostCmds::[{unicode:chardata(), unicode:chardata()}]) ->
      {ok, Engine::term()} | {error, Reason::term()}.
  engine_load(EngineId, PreCmds, PostCmds) when is_list(PreCmds), is_list(PostCmds) ->
      engine_load(EngineId, PreCmds, PostCmds, engine_get_all_methods()).
  
  
negative.code:     end.
  
  
  
  -type key_id()   :: string() | binary() .
  -type password() :: string() | binary() .
  
  -type engine_key_ref() :: #{engine :=   engine_ref(),
                              key_id :=   key_id(),
                              password => password(),
                              term() => term() 
                             }.
  
  -type pk_algs() :: rsa | ecdsa | dss .
  -type pk_key()  :: engine_key_ref() | [integer() | binary()] .
  -type pk_opt()  :: list() | rsa_padding() .
  
  -spec public_encrypt(pk_algs(),  binary(), pk_key(), pk_opt()) -> binary().
  