anchor.diff:      <<Payload:PayloadLen/binary, _/binary>> = PayloadAndPadding,
       Payload.
   
  +sign(SigData, HashAlg, #{algorithm:=dss} = Key) ->
  +    mk_dss_sig(crypto:sign(dss, HashAlg, SigData, Key));
  +sign(SigData, HashAlg, #{algorithm:=SigAlg} = Key) ->
  +    crypto:sign(SigAlg, HashAlg, SigData, Key);
   sign(SigData, HashAlg,  #'DSAPrivateKey'{} = Key) ->
  -    DerSignature = public_key:sign(SigData, HashAlg, Key),
  -    #'Dss-Sig-Value'{r = R, s = S} = public_key:der_decode('Dss-Sig-Value', DerSignature),
  -    <<R:160/big-unsigned-integer, S:160/big-unsigned-integer>>;
  +    mk_dss_sig(public_key:sign(SigData, HashAlg, Key));
   sign(SigData, HashAlg, Key = #'ECPrivateKey'{}) ->
       DerEncodedSign =  public_key:sign(SigData, HashAlg, Key),
       #'ECDSA-Sig-Value'{r=R, s=S} = public_key:der_decode('ECDSA-Sig-Value', DerEncodedSign),
       <<?Empint(R),?Empint(S)>>;
   sign(SigData, HashAlg, Key) ->
       public_key:sign(SigData, HashAlg, Key).
  +
  +
  +mk_dss_sig(DerSignature) ->
  +    #'Dss-Sig-Value'{r = R, s = S} = public_key:der_decode('Dss-Sig-Value', DerSignature),
  +    <<R:160/big-unsigned-integer, S:160/big-unsigned-integer>>.
  +
   
   verify(PlainText, HashAlg, Sig, {_,  #'Dss-Parms'{}} = Key) ->
       case Sig of
  
positive.code:     {Y,  #'Dss-Parms'{p=P, q=Q, g=G}};
  extract_public_key(#'ECPrivateKey'{parameters = {namedCurve,OID},
  				   publicKey = Q}) ->
      {#'ECPoint'{point=Q}, {namedCurve,OID}}.
  
  
  verify_host_key(#ssh{algorithms=Alg}=SSH, PublicKey, Digest, {AlgStr,Signature}) ->
  
negative.code: 
  %%%----------------------------------------------------------------
  
  valid_key_sha_alg(#{engine:=_, key_id:=_}, _Alg) -> true; % Engine key
  
  valid_key_sha_alg(#'RSAPublicKey'{}, 'rsa-sha2-512') -> true;
  valid_key_sha_alg(#'RSAPublicKey'{}, 'rsa-sha2-384') -> true;
  valid_key_sha_alg(#'RSAPublicKey'{}, 'rsa-sha2-256') -> true;
  