anchor.diff:      true;
   is_acceptable_cipher(rc4_128, Algos) ->
       proplists:get_bool(rc4, Algos);
  -is_acceptable_cipher(des_cbc, Algos) ->
  -    proplists:get_bool(des_cbc, Algos);
   is_acceptable_cipher('3des_ede_cbc', Algos) ->
  -    proplists:get_bool(des_ede3, Algos);
  -is_acceptable_cipher(aes_128_cbc, Algos) ->
  -    proplists:get_bool(aes_cbc128, Algos);
  -is_acceptable_cipher(aes_256_cbc, Algos) ->
  -    proplists:get_bool(aes_cbc256, Algos);
  -is_acceptable_cipher(Cipher, Algos)
  -  when Cipher == aes_128_gcm;
  -       Cipher == aes_256_gcm ->
  -    proplists:get_bool(aes_gcm, Algos);
  -is_acceptable_cipher(Cipher, Algos)
  -  when Cipher == aes_128_ccm;
  -       Cipher == aes_256_ccm;
  -       Cipher == aes_128_ccm_8;
  -       Cipher == aes_256_ccm_8 ->
  -    proplists:get_bool(aes_ccm, Algos);
  +    proplists:get_bool(des_ede3_cbc, Algos);
  +is_acceptable_cipher(aes_128_ccm_8, Algos) ->
  +    proplists:get_bool(aes_128_ccm, Algos);
  +is_acceptable_cipher(aes_256_ccm_8, Algos) ->
  +    proplists:get_bool(aes_256_ccm, Algos);
   is_acceptable_cipher(Cipher, Algos) ->
       proplists:get_bool(Cipher, Algos).
   
  
positive.code:     {iolist_to_binary(T), CipherState#cipher_state{state = State1}};
  cipher(?DES, CipherState, Mac, Fragment, Version) ->
      block_cipher(fun(Key, IV, T) ->
  			 crypto:block_encrypt(des_cbc, Key, IV, T)
  		 end, block_size(des_cbc), CipherState, Mac, Fragment, Version);
  cipher(?'3DES', CipherState, Mac, Fragment, Version) ->
      block_cipher(fun(<<K1:8/binary, K2:8/binary, K3:8/binary>>, IV, T) ->
  			 crypto:block_encrypt(des3_cbc, [K1, K2, K3], IV, T)
  		 end, block_size(des_cbc), CipherState, Mac, Fragment, Version);
  cipher(?AES_CBC, CipherState, Mac, Fragment, Version) ->
      block_cipher(fun(Key, IV, T) when byte_size(Key) =:= 16 ->
  			 crypto:block_encrypt(aes_cbc128, Key, IV, T);
  		    (Key, IV, T) when byte_size(Key) =:= 32 ->
  			 crypto:block_encrypt(aes_cbc256, Key, IV, T)
  		 end, block_size(aes_128_cbc), CipherState, Mac, Fragment, Version).
  
  aead_encrypt(Type, Key, Nonce, Fragment, AdditionalData, TagLen) ->
      crypto:block_encrypt(aead_type(Type), Key, Nonce, {AdditionalData, Fragment, TagLen}).
  
  aead_decrypt(Type, Key, Nonce, CipherText, CipherTag, AdditionalData) ->
      crypto:block_decrypt(aead_type(Type), Key, Nonce, {AdditionalData, CipherText, CipherTag}).
  
  aead_type(?AES_GCM) ->
      aes_gcm;
  aead_type(?AES_CCM) ->
      aes_ccm;
  aead_type(?AES_CCM_8) ->
      aes_ccm;
  aead_type(?CHACHA20_POLY1305) ->
      chacha20_poly1305.
  
  build_cipher_block(BlockSz, Mac, Fragment) ->
  
negative.code:     block_size(Cipher).
  
  block_size(Cipher) when Cipher == des_cbc;
  			Cipher == des_ede3_cbc;
  			Cipher == '3des_ede_cbc' -> 
      8;
  block_size(Cipher) when Cipher == aes_128_cbc;
  