anchor.diff:  	    ct:fail({{crypto, block_decrypt, [Type, Key, IV, CipherText]}, {expected, Plain}, {got, Other1}})
       end.
   
  -block_cipher_increment({Type, Key, IV, PlainTexts})
  -  when Type == des_cbc; Type == aes_cbc; Type == des3_cbc ->
  +block_cipher_increment({Type, Key, IV, PlainTexts}) when Type == des_cbc ;
  +                                                         Type == des3_cbc ;
  +                                                         Type == aes_128_cbc ;
  +                                                         Type == aes_192_cbc ;
  +                                                         Type == aes_256_cbc
  +                                                         ->
       block_cipher_increment(Type, Key, IV, IV, PlainTexts, iolist_to_binary(PlainTexts), []);
  -block_cipher_increment({Type, Key, IV, PlainTexts, CipherText})
  -  when Type == des_cbc; Type == des3_cbc ->
  +block_cipher_increment({Type, Key, IV, PlainTexts, CipherText}) when Type == des_cbc; 
  +                                                                     Type == des_ede3_cbc ;
  +                                                                     Type == des3_cbc ;
  +                                                                     Type == des_ede3 ;
  +                                                                     Type == des_ede3_cfb ;
  +                                                                     Type == des_ede3_cbf ;
  +                                                                     Type == des3_cbf ;
  +                                                                     Type == des3_cfb
  +                                                                     ->
       block_cipher_increment(Type, Key, IV, IV, PlainTexts, iolist_to_binary(PlainTexts), CipherText, []);
  -block_cipher_increment({Type, Key, IV, PlainTexts, _CipherText}) when Type == aes_cbc ->
  +block_cipher_increment({Type, Key, IV, PlainTexts, _CipherText}) when Type == aes_128_cbc ;
  +                                                                      Type == aes_192_cbc ;
  +                                                                      Type == aes_256_cbc 
  +                                                                      ->
       Plain = iolist_to_binary(PlainTexts),
       Blocks = [iolistify(Block) || << Block:128/bitstring >> <= Plain],
       block_cipher_increment(Type, Key, IV, IV, Blocks, Plain, []);
  
positive.code:     NextIV = crypto:next_iv(Type, CT),
      block_cipher_increment(Type, Key, IV0, NextIV, PlainTexts, Plain, CipherText, [CT | Acc]).
  
  stream_cipher({Type, Key, PlainText}) ->
      Plain = iolist_to_binary(PlainText),
      StateE = crypto:stream_init(Type, Key),
      StateD = crypto:stream_init(Type, Key),
      {_, CipherText} = crypto:stream_encrypt(StateE, PlainText),
  
negative.code:      <<"Now is the time for all ">>
       }].
  
  des_ede3_cfb(_) ->
      [{des_ede3_cfb,
       [hexstr2bin("0123456789abcdef"),
        hexstr2bin("fedcba9876543210"),
        hexstr2bin("0f2d4b6987a5c3e1")],
       hexstr2bin("1234567890abcdef"),
       <<"Now is the time for all ">>
       }].
  
  rc2_cbc(_) ->
      [{rc2_cbc,
       <<146,210,160,124,215,227,153,239,227,17,222,140,3,93,27,191>>,
        <<72,91,135,182,25,42,35,210>>,
  