anchor.diff:  public_algo({ed_pub, ed448,_}) -> 'ssh-ed448';
   public_algo({#'ECPoint'{},{namedCurve,OID}}) -> 
       Curve = public_key:oid2ssh_curvename(OID),
  -    list_to_atom("ecdsa-sha2-" ++ binary_to_list(Curve)).
  +    try list_to_existing_atom("ecdsa-sha2-" ++ binary_to_list(Curve))
  +    catch
  +        _:_ -> undefined
  +    end.
   
   
   sha('ssh-rsa') -> sha;
  
positive.code: 
  
  select_all(CL, SL) when length(CL) + length(SL) < ?MAX_NUM_ALGORITHMS ->
      A = CL -- SL,  %% algortihms only used by client
      %% algorithms used by client and server (client pref)
      lists:map(fun(ALG) -> list_to_atom(ALG) end, (CL -- A));
  select_all(CL, SL) ->
      Error = lists:concat(["Received too many algorithms (",length(CL),"+",length(SL)," >= ",?MAX_NUM_ALGORITHMS,")."]),
      ?DISCONNECT(?SSH_DISCONNECT_PROTOCOL_ERROR,
  
negative.code:     
  valid_key_sha_alg_ec(OID, Alg) -> 
      Curve = public_key:oid2ssh_curvename(OID),
      try Alg == list_to_existing_atom("ecdsa-sha2-" ++ binary_to_list(Curve))
      catch
          _:_ -> false
      end.
      
  
  -dialyzer({no_match, public_algo/1}).
  