anchor.diff:                   decrypt_block_size = BlockBytes,
                    decrypt_ctx = Ctx0}}.
   
  +
   decrypt_final(Ssh) ->
       {ok, Ssh#ssh {decrypt = none, 
   		  decrypt_keys = undefined,
  
positive.code:              encrypt_ctx = IV0} = Ssh,
          <<LenData:4/binary, PayloadData/binary>>) when SshCipher == 'AEAD_AES_128_GCM' ;
                                                         SshCipher == 'AEAD_AES_256_GCM' ->
      {Ctext,Ctag} = crypto:block_encrypt(CryptoCipher, K, IV0, {LenData,PayloadData}),
      IV = next_gcm_iv(IV0),
      {Ssh#ssh{encrypt_ctx = IV}, {<<LenData/binary,Ctext/binary>>,Ctag}};
  
  encrypt(#ssh{encrypt_ctx = Ctx0} = Ssh, Data) ->
      Enc = crypto:crypto_update(Ctx0, Data),
      {Ssh, Enc}.
    
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% Decryption
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  
negative.code: decrypt(#ssh{decrypt = SshCipher,
               decrypt_cipher = CryptoCipher,
  	     decrypt_keys = K,
  	     decrypt_ctx = IV0} = Ssh, {AAD,Ctext,Ctag}) when SshCipher == 'AEAD_AES_128_GCM' ;
                                                                SshCipher == 'AEAD_AES_256_GCM' ->
      Dec = crypto:crypto_one_time_aead(CryptoCipher, K, IV0, Ctext, AAD, Ctag, false),
      IV = next_gcm_iv(IV0),
      {Ssh#ssh{decrypt_ctx = IV}, Dec};
  
  