anchor.diff:      {Ssh, list_to_binary(Decompressed)}.
   
   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  +%%
   %% MAC calculation
  -%%
  -%%     hmac-sha1    REQUIRED        HMAC-SHA1 (digest length = key
  -%%                                  length = 20)
  -%%     hmac-sha1-96 RECOMMENDED     first 96 bits of HMAC-SHA1 (digest
  -%%                                  length = 12, key length = 20)
  -%%     hmac-md5     OPTIONAL        HMAC-MD5 (digest length = key
  -%%                                  length = 16)
  -%%     hmac-md5-96  OPTIONAL        first 96 bits of HMAC-MD5 (digest
  -%%                                  length = 12, key length = 16)
  -%%     none         OPTIONAL        no MAC; NOT RECOMMENDED
   %%
   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   
  
positive.code: decrypt(#ssh{decrypt = 'aes128-ctr',
              decrypt_ctx = State0} = Ssh, Data) ->
      {State, Enc} = crypto:stream_decrypt(State0,Data),
      {Ssh#ssh{decrypt_ctx = State}, Enc}.
  
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  
negative.code:     end.
  
  crypto_supported(Conditions, Supported) ->
      lists:all( fun({Tag,CryptoName}) when is_atom(CryptoName) ->
  		       crypto_name_supported(Tag,CryptoName,Supported);
  		  ({Tag,{Name=aes_ctr,Len}}) when is_integer(Len) ->
  		       crypto_name_supported(Tag,Name,Supported) andalso
  			   ctr_len_supported(Name,Len)
  	       end, Conditions).
  
  crypto_name_supported(Tag, CryptoName, Supported) ->
      lists:member(CryptoName, proplists:get_value(Tag,Supported,[])).
  
  ctr_len_supported(Name, Len) ->
      try
  	crypto:stream_encrypt(crypto:stream_init(Name, <<0:Len>>, <<0:128>>), <<"">>)
      of
  	{_,X} -> is_binary(X)
      catch
  	_:_ -> false
      end.
  	    
  
  same(Algs) ->  [{client2server,Algs}, {server2client,Algs}].
  
  