--- /dev/null
+################## check bcm for algorithm ##################
+
+################## AES ##################
+
+algo=AES
+bcm=NONE
+key_len=128
+iv_len=0
+valid=0
+
+algo=AES
+bcm=ECB
+key_len=128
+iv_len=0
+valid=1
+
+algo=AES
+bcm=CTR
+key_len=128
+iv_len=128
+valid=1
+
+algo=AES
+bcm=CBC
+key_len=128
+iv_len=128
+valid=1
+
+algo=AES
+bcm=GCM
+key_len=128
+iv_len=64
+valid=1
+
+algo=AES
+bcm=CFB
+key_len=128
+iv_len=128
+valid=1
+
+algo=AES
+bcm=CFB1
+key_len=128
+iv_len=128
+valid=1
+
+algo=AES
+bcm=CFB8
+key_len=128
+iv_len=128
+valid=1
+
+algo=AES
+bcm=OFB
+key_len=128
+iv_len=128
+valid=1
+
+algo=AES
+bcm=CCM
+key_len=128
+iv_len=64
+valid=1
+
+################## DES ##################
+
+algo=DES
+bcm=NONE
+key_len=64
+iv_len=0
+valid=0
+
+algo=DES
+bcm=ECB
+key_len=64
+iv_len=0
+valid=1
+
+algo=DES
+bcm=CTR
+key_len=64
+iv_len=64
+valid=0
+
+algo=DES
+bcm=CBC
+key_len=64
+iv_len=64
+valid=1
+
+algo=DES
+bcm=GCM
+key_len=64
+iv_len=64
+valid=0
+
+algo=DES
+bcm=CFB
+key_len=64
+iv_len=64
+valid=1
+
+algo=DES
+bcm=CFB1
+key_len=64
+iv_len=64
+valid=1
+
+algo=DES
+bcm=CFB8
+key_len=64
+iv_len=64
+valid=1
+
+algo=DES
+bcm=OFB
+key_len=64
+iv_len=64
+valid=1
+
+algo=DES
+bcm=CCM
+key_len=64
+iv_len=64
+valid=0
+
+################## 3DES_2TDEA ##################
+
+algo=3DES_2TDEA
+bcm=NONE
+key_len=128
+iv_len=0
+valid=0
+
+algo=3DES_2TDEA
+bcm=ECB
+key_len=128
+iv_len=0
+valid=1
+
+algo=3DES_2TDEA
+bcm=CTR
+key_len=128
+iv_len=64
+valid=0
+
+algo=3DES_2TDEA
+bcm=CBC
+key_len=128
+iv_len=64
+valid=1
+
+algo=3DES_2TDEA
+bcm=GCM
+key_len=128
+iv_len=64
+valid=0
+
+algo=3DES_2TDEA
+bcm=CFB
+key_len=128
+iv_len=64
+valid=1
+
+algo=3DES_2TDEA
+bcm=CFB1
+key_len=128
+iv_len=64
+valid=0
+
+algo=3DES_2TDEA
+bcm=CFB8
+key_len=128
+iv_len=64
+valid=0
+
+algo=3DES_2TDEA
+bcm=OFB
+key_len=128
+iv_len=64
+valid=1
+
+algo=3DES_2TDEA
+bcm=CCM
+key_len=128
+iv_len=64
+valid=0
+
+################## 3DES_3TDEA ##################
+
+algo=3DES_3TDEA
+bcm=NONE
+key_len=192
+iv_len=0
+valid=0
+
+algo=3DES_3TDEA
+bcm=ECB
+key_len=192
+iv_len=0
+valid=1
+
+algo=3DES_3TDEA
+bcm=CTR
+key_len=192
+iv_len=64
+valid=0
+
+algo=3DES_3TDEA
+bcm=CBC
+key_len=192
+iv_len=64
+valid=1
+
+algo=3DES_3TDEA
+bcm=GCM
+key_len=192
+iv_len=64
+valid=0
+
+algo=3DES_3TDEA
+bcm=CFB
+key_len=192
+iv_len=64
+valid=1
+
+algo=3DES_3TDEA
+bcm=CFB1
+key_len=192
+iv_len=64
+valid=1
+
+algo=3DES_3TDEA
+bcm=CFB8
+key_len=192
+iv_len=64
+valid=1
+
+algo=3DES_3TDEA
+bcm=OFB
+key_len=192
+iv_len=64
+valid=1
+
+algo=3DES_3TDEA
+bcm=CCM
+key_len=192
+iv_len=64
+valid=0
+
+################## RC2 ##################
+
+algo=RC2
+bcm=NONE
+key_len=8
+iv_len=0
+valid=0
+
+algo=RC2
+bcm=ECB
+key_len=8
+iv_len=0
+valid=1
+
+algo=RC2
+bcm=CTR
+key_len=8
+iv_len=64
+valid=0
+
+algo=RC2
+bcm=CBC
+key_len=8
+iv_len=64
+valid=1
+
+algo=RC2
+bcm=GCM
+key_len=8
+iv_len=64
+valid=0
+
+algo=RC2
+bcm=CFB
+key_len=8
+iv_len=64
+valid=1
+
+algo=RC2
+bcm=CFB1
+key_len=8
+iv_len=64
+valid=0
+
+algo=RC2
+bcm=CFB8
+key_len=8
+iv_len=64
+valid=0
+
+algo=RC2
+bcm=OFB
+key_len=8
+iv_len=64
+valid=1
+
+algo=RC2
+bcm=CCM
+key_len=8
+iv_len=64
+valid=0
+
+################## RC4 ##################
+
+algo=RC4
+bcm=NONE
+key_len=40
+iv_len=0
+valid=1
+
+algo=RC4
+bcm=ECB
+key_len=40
+iv_len=0
+valid=0
+
+algo=RC4
+bcm=CTR
+key_len=40
+iv_len=64
+valid=0
+
+algo=RC4
+bcm=CBC
+key_len=40
+iv_len=64
+valid=0
+
+algo=RC4
+bcm=GCM
+key_len=40
+iv_len=64
+valid=0
+
+algo=RC4
+bcm=CFB
+key_len=40
+iv_len=64
+valid=0
+
+algo=RC4
+bcm=CFB1
+key_len=40
+iv_len=64
+valid=0
+
+algo=RC4
+bcm=CFB8
+key_len=40
+iv_len=64
+valid=0
+
+algo=RC4
+bcm=OFB
+key_len=40
+iv_len=64
+valid=0
+
+algo=RC4
+bcm=CCM
+key_len=40
+iv_len=64
+valid=0
+
+################## CAST5 ##################
+
+algo=CAST5
+bcm=NONE
+key_len=40
+iv_len=0
+valid=0
+
+algo=CAST5
+bcm=ECB
+key_len=40
+iv_len=0
+valid=1
+
+algo=CAST5
+bcm=CTR
+key_len=40
+iv_len=64
+valid=0
+
+algo=CAST5
+bcm=CBC
+key_len=40
+iv_len=64
+valid=1
+
+algo=CAST5
+bcm=GCM
+key_len=40
+iv_len=64
+valid=0
+
+algo=CAST5
+bcm=CFB
+key_len=40
+iv_len=64
+valid=1
+
+algo=CAST5
+bcm=CFB1
+key_len=40
+iv_len=64
+valid=0
+
+algo=CAST5
+bcm=CFB8
+key_len=40
+iv_len=64
+valid=0
+
+algo=CAST5
+bcm=OFB
+key_len=40
+iv_len=64
+valid=1
+
+algo=CAST5
+bcm=CCM
+key_len=40
+iv_len=64
+valid=0
+
+################## check key_len for algorithm ##################
+
+################## AES ##################
+
+algo=AES
+bcm=ECB
+key_len=8
+iv_len=0
+valid=0
+
+algo=AES
+bcm=ECB
+key_len=40
+iv_len=0
+valid=0
+
+algo=AES
+bcm=ECB
+key_len=64
+iv_len=0
+valid=0
+
+algo=AES
+bcm=ECB
+key_len=80
+iv_len=0
+valid=0
+
+algo=AES
+bcm=ECB
+key_len=128
+iv_len=0
+valid=1
+
+algo=AES
+bcm=ECB
+key_len=192
+iv_len=0
+valid=1
+
+algo=AES
+bcm=ECB
+key_len=256
+iv_len=0
+valid=1
+
+algo=AES
+bcm=ECB
+key_len=512
+iv_len=0
+valid=0
+
+algo=AES
+bcm=ECB
+key_len=1024
+iv_len=0
+valid=0
+
+algo=AES
+bcm=ECB
+key_len=2048
+iv_len=0
+valid=0
+
+algo=AES
+bcm=ECB
+key_len=4096
+iv_len=0
+valid=0
+
+################## DES ##################
+
+algo=DES
+bcm=ECB
+key_len=8
+iv_len=0
+valid=0
+
+algo=DES
+bcm=ECB
+key_len=40
+iv_len=0
+valid=0
+
+algo=DES
+bcm=ECB
+key_len=64
+iv_len=0
+valid=1
+
+algo=DES
+bcm=ECB
+key_len=80
+iv_len=0
+valid=0
+
+algo=DES
+bcm=ECB
+key_len=128
+iv_len=0
+valid=0
+
+algo=DES
+bcm=ECB
+key_len=192
+iv_len=0
+valid=0
+
+algo=DES
+bcm=ECB
+key_len=256
+iv_len=0
+valid=0
+
+algo=DES
+bcm=ECB
+key_len=512
+iv_len=0
+valid=0
+
+algo=DES
+bcm=ECB
+key_len=1024
+iv_len=0
+valid=0
+
+algo=DES
+bcm=ECB
+key_len=2048
+iv_len=0
+valid=0
+
+algo=DES
+bcm=ECB
+key_len=4096
+iv_len=0
+valid=0
+
+################## 3DES_2TDEA ##################
+
+algo=3DES_2TDEA
+bcm=ECB
+key_len=8
+iv_len=0
+valid=0
+
+algo=3DES_2TDEA
+bcm=ECB
+key_len=40
+iv_len=0
+valid=0
+
+algo=3DES_2TDEA
+bcm=ECB
+key_len=64
+iv_len=0
+valid=0
+
+algo=3DES_2TDEA
+bcm=ECB
+key_len=80
+iv_len=0
+valid=0
+
+algo=3DES_2TDEA
+bcm=ECB
+key_len=128
+iv_len=0
+valid=1
+
+algo=3DES_2TDEA
+bcm=ECB
+key_len=192
+iv_len=0
+valid=0
+
+algo=3DES_2TDEA
+bcm=ECB
+key_len=256
+iv_len=0
+valid=0
+
+algo=3DES_2TDEA
+bcm=ECB
+key_len=512
+iv_len=0
+valid=0
+
+algo=3DES_2TDEA
+bcm=ECB
+key_len=1024
+iv_len=0
+valid=0
+
+algo=3DES_2TDEA
+bcm=ECB
+key_len=2048
+iv_len=0
+valid=0
+
+algo=3DES_2TDEA
+bcm=ECB
+key_len=4096
+iv_len=0
+valid=0
+
+################## 3DES_3TDEA ##################
+
+algo=3DES_3TDEA
+bcm=ECB
+key_len=8
+iv_len=0
+valid=0
+
+algo=3DES_3TDEA
+bcm=ECB
+key_len=40
+iv_len=0
+valid=0
+
+algo=3DES_3TDEA
+bcm=ECB
+key_len=64
+iv_len=0
+valid=0
+
+algo=3DES_3TDEA
+bcm=ECB
+key_len=80
+iv_len=0
+valid=0
+
+algo=3DES_3TDEA
+bcm=ECB
+key_len=128
+iv_len=0
+valid=0
+
+algo=3DES_3TDEA
+bcm=ECB
+key_len=192
+iv_len=0
+valid=1
+
+algo=3DES_3TDEA
+bcm=ECB
+key_len=256
+iv_len=0
+valid=0
+
+algo=3DES_3TDEA
+bcm=ECB
+key_len=512
+iv_len=0
+valid=0
+
+algo=3DES_3TDEA
+bcm=ECB
+key_len=1024
+iv_len=0
+valid=0
+
+algo=3DES_3TDEA
+bcm=ECB
+key_len=2048
+iv_len=0
+valid=0
+
+algo=3DES_3TDEA
+bcm=ECB
+key_len=4096
+iv_len=0
+valid=0
+
+################## RC2 ##################
+
+algo=RC2
+bcm=ECB
+key_len=8
+iv_len=0
+valid=1
+
+algo=RC2
+bcm=ECB
+key_len=40
+iv_len=0
+valid=1
+
+algo=RC2
+bcm=ECB
+key_len=64
+iv_len=0
+valid=1
+
+algo=RC2
+bcm=ECB
+key_len=80
+iv_len=0
+valid=1
+
+algo=RC2
+bcm=ECB
+key_len=128
+iv_len=0
+valid=1
+
+algo=RC2
+bcm=ECB
+key_len=192
+iv_len=0
+valid=1
+
+algo=RC2
+bcm=ECB
+key_len=256
+iv_len=0
+valid=1
+
+algo=RC2
+bcm=ECB
+key_len=512
+iv_len=0
+valid=1
+
+algo=RC2
+bcm=ECB
+key_len=1024
+iv_len=0
+valid=1
+
+algo=RC2
+bcm=ECB
+key_len=2048
+iv_len=0
+valid=0
+
+algo=RC2
+bcm=ECB
+key_len=4096
+iv_len=0
+valid=0
+
+################## RC4 ##################
+
+algo=RC4
+bcm=NONE
+key_len=8
+iv_len=0
+valid=0
+
+algo=RC4
+bcm=NONE
+key_len=40
+iv_len=0
+valid=1
+
+algo=RC4
+bcm=NONE
+key_len=64
+iv_len=0
+valid=1
+
+algo=RC4
+bcm=NONE
+key_len=80
+iv_len=0
+valid=1
+
+algo=RC4
+bcm=NONE
+key_len=128
+iv_len=0
+valid=1
+
+algo=RC4
+bcm=NONE
+key_len=192
+iv_len=0
+valid=1
+
+algo=RC4
+bcm=NONE
+key_len=256
+iv_len=0
+valid=1
+
+algo=RC4
+bcm=NONE
+key_len=512
+iv_len=0
+valid=1
+
+algo=RC4
+bcm=NONE
+key_len=1024
+iv_len=0
+valid=1
+
+algo=RC4
+bcm=NONE
+key_len=2048
+iv_len=0
+valid=1
+
+algo=RC4
+bcm=NONE
+key_len=4096
+iv_len=0
+valid=0
+
+################## CAST5 ##################
+
+algo=CAST5
+bcm=ECB
+key_len=8
+iv_len=0
+valid=0
+
+algo=CAST5
+bcm=ECB
+key_len=40
+iv_len=0
+valid=1
+
+algo=CAST5
+bcm=ECB
+key_len=64
+iv_len=0
+valid=1
+
+algo=CAST5
+bcm=ECB
+key_len=80
+iv_len=0
+valid=1
+
+algo=CAST5
+bcm=ECB
+key_len=128
+iv_len=0
+valid=1
+
+algo=CAST5
+bcm=ECB
+key_len=192
+iv_len=0
+valid=0
+
+algo=CAST5
+bcm=ECB
+key_len=256
+iv_len=0
+valid=0
+
+algo=CAST5
+bcm=ECB
+key_len=512
+iv_len=0
+valid=0
+
+algo=CAST5
+bcm=ECB
+key_len=1024
+iv_len=0
+valid=0
+
+algo=CAST5
+bcm=ECB
+key_len=2048
+iv_len=0
+valid=0
+
+algo=CAST5
+bcm=ECB
+key_len=4096
+iv_len=0
+valid=0
+
+################## check iv_len for algorithm and bcm ##################
+
+################## AES ##################
+
+algo=AES
+bcm=ECB
+key_len=128
+iv_len=0
+valid=1
+
+algo=AES
+bcm=ECB
+key_len=128
+iv_len=56
+valid=0
+
+algo=AES
+bcm=ECB
+key_len=128
+iv_len=64
+valid=0
+
+algo=AES
+bcm=ECB
+key_len=128
+iv_len=96
+valid=0
+
+algo=AES
+bcm=ECB
+key_len=128
+iv_len=104
+valid=0
+
+algo=AES
+bcm=ECB
+key_len=128
+iv_len=128
+valid=0
+
+algo=AES
+bcm=ECB
+key_len=128
+iv_len=256
+valid=0
+
+algo=AES
+bcm=CTR
+key_len=128
+iv_len=0
+valid=0
+
+algo=AES
+bcm=CTR
+key_len=128
+iv_len=56
+valid=0
+
+algo=AES
+bcm=CTR
+key_len=128
+iv_len=64
+valid=0
+
+algo=AES
+bcm=CTR
+key_len=128
+iv_len=96
+valid=0
+
+algo=AES
+bcm=CTR
+key_len=128
+iv_len=104
+valid=0
+
+algo=AES
+bcm=CTR
+key_len=128
+iv_len=128
+valid=1
+
+algo=AES
+bcm=CTR
+key_len=128
+iv_len=256
+valid=0
+
+algo=AES
+bcm=CBC
+key_len=128
+iv_len=0
+valid=0
+
+algo=AES
+bcm=CBC
+key_len=128
+iv_len=56
+valid=0
+
+algo=AES
+bcm=CBC
+key_len=128
+iv_len=64
+valid=0
+
+algo=AES
+bcm=CBC
+key_len=128
+iv_len=96
+valid=0
+
+algo=AES
+bcm=CBC
+key_len=128
+iv_len=104
+valid=0
+
+algo=AES
+bcm=CBC
+key_len=128
+iv_len=128
+valid=1
+
+algo=AES
+bcm=CBC
+key_len=128
+iv_len=256
+valid=0
+
+algo=AES
+bcm=GCM
+key_len=128
+iv_len=0
+valid=0
+
+algo=AES
+bcm=GCM
+key_len=128
+iv_len=56
+valid=1
+
+algo=AES
+bcm=GCM
+key_len=128
+iv_len=64
+valid=1
+
+algo=AES
+bcm=GCM
+key_len=128
+iv_len=96
+valid=1
+
+algo=AES
+bcm=GCM
+key_len=128
+iv_len=104
+valid=1
+
+algo=AES
+bcm=GCM
+key_len=128
+iv_len=128
+valid=1
+
+algo=AES
+bcm=GCM
+key_len=128
+iv_len=256
+valid=1
+
+algo=AES
+bcm=CFB
+key_len=128
+iv_len=0
+valid=0
+
+algo=AES
+bcm=CFB
+key_len=128
+iv_len=56
+valid=0
+
+algo=AES
+bcm=CFB
+key_len=128
+iv_len=64
+valid=0
+
+algo=AES
+bcm=CFB
+key_len=128
+iv_len=96
+valid=0
+
+algo=AES
+bcm=CFB
+key_len=128
+iv_len=104
+valid=0
+
+algo=AES
+bcm=CFB
+key_len=128
+iv_len=128
+valid=1
+
+algo=AES
+bcm=CFB
+key_len=128
+iv_len=256
+valid=0
+
+algo=AES
+bcm=CFB1
+key_len=128
+iv_len=0
+valid=0
+
+algo=AES
+bcm=CFB1
+key_len=128
+iv_len=56
+valid=0
+
+algo=AES
+bcm=CFB1
+key_len=128
+iv_len=64
+valid=0
+
+algo=AES
+bcm=CFB1
+key_len=128
+iv_len=96
+valid=0
+
+algo=AES
+bcm=CFB1
+key_len=128
+iv_len=104
+valid=0
+
+algo=AES
+bcm=CFB1
+key_len=128
+iv_len=128
+valid=1
+
+algo=AES
+bcm=CFB1
+key_len=128
+iv_len=256
+valid=0
+
+algo=AES
+bcm=CFB8
+key_len=128
+iv_len=0
+valid=0
+
+algo=AES
+bcm=CFB8
+key_len=128
+iv_len=56
+valid=0
+
+algo=AES
+bcm=CFB8
+key_len=128
+iv_len=64
+valid=0
+
+algo=AES
+bcm=CFB8
+key_len=128
+iv_len=96
+valid=0
+
+algo=AES
+bcm=CFB8
+key_len=128
+iv_len=104
+valid=0
+
+algo=AES
+bcm=CFB8
+key_len=128
+iv_len=128
+valid=1
+
+algo=AES
+bcm=CFB8
+key_len=128
+iv_len=256
+valid=0
+
+algo=AES
+bcm=OFB
+key_len=128
+iv_len=0
+valid=0
+
+algo=AES
+bcm=OFB
+key_len=128
+iv_len=56
+valid=0
+
+algo=AES
+bcm=OFB
+key_len=128
+iv_len=64
+valid=0
+
+algo=AES
+bcm=OFB
+key_len=128
+iv_len=96
+valid=0
+
+algo=AES
+bcm=OFB
+key_len=128
+iv_len=104
+valid=0
+
+algo=AES
+bcm=OFB
+key_len=128
+iv_len=128
+valid=1
+
+algo=AES
+bcm=OFB
+key_len=128
+iv_len=256
+valid=0
+
+algo=AES
+bcm=CCM
+key_len=128
+iv_len=0
+valid=0
+
+algo=AES
+bcm=CCM
+key_len=128
+iv_len=56
+valid=1
+
+algo=AES
+bcm=CCM
+key_len=128
+iv_len=64
+valid=1
+
+algo=AES
+bcm=CCM
+key_len=128
+iv_len=96
+valid=1
+
+algo=AES
+bcm=CCM
+key_len=128
+iv_len=104
+valid=1
+
+algo=AES
+bcm=CCM
+key_len=128
+iv_len=128
+valid=0
+
+algo=AES
+bcm=CCM
+key_len=128
+iv_len=256
+valid=0
+
+################## DES ##################
+
+algo=DES
+bcm=ECB
+key_len=64
+iv_len=0
+valid=1
+
+algo=DES
+bcm=ECB
+key_len=64
+iv_len=56
+valid=0
+
+algo=DES
+bcm=ECB
+key_len=64
+iv_len=64
+valid=0
+
+algo=DES
+bcm=ECB
+key_len=64
+iv_len=96
+valid=0
+
+algo=DES
+bcm=ECB
+key_len=64
+iv_len=104
+valid=0
+
+algo=DES
+bcm=ECB
+key_len=64
+iv_len=128
+valid=0
+
+algo=DES
+bcm=ECB
+key_len=64
+iv_len=256
+valid=0
+
+algo=DES
+bcm=CBC
+key_len=64
+iv_len=0
+valid=0
+
+algo=DES
+bcm=CBC
+key_len=64
+iv_len=56
+valid=0
+
+algo=DES
+bcm=CBC
+key_len=64
+iv_len=64
+valid=1
+
+algo=DES
+bcm=CBC
+key_len=64
+iv_len=96
+valid=0
+
+algo=DES
+bcm=CBC
+key_len=64
+iv_len=104
+valid=0
+
+algo=DES
+bcm=CBC
+key_len=64
+iv_len=128
+valid=0
+
+algo=DES
+bcm=CBC
+key_len=64
+iv_len=256
+valid=0
+
+algo=DES
+bcm=CFB
+key_len=64
+iv_len=0
+valid=0
+
+algo=DES
+bcm=CFB
+key_len=64
+iv_len=56
+valid=0
+
+algo=DES
+bcm=CFB
+key_len=64
+iv_len=64
+valid=1
+
+algo=DES
+bcm=CFB
+key_len=64
+iv_len=96
+valid=0
+
+algo=DES
+bcm=CFB
+key_len=64
+iv_len=104
+valid=0
+
+algo=DES
+bcm=CFB
+key_len=64
+iv_len=128
+valid=0
+
+algo=DES
+bcm=CFB
+key_len=64
+iv_len=256
+valid=0
+
+algo=DES
+bcm=CFB1
+key_len=64
+iv_len=0
+valid=0
+
+algo=DES
+bcm=CFB1
+key_len=64
+iv_len=56
+valid=0
+
+algo=DES
+bcm=CFB1
+key_len=64
+iv_len=64
+valid=1
+
+algo=DES
+bcm=CFB1
+key_len=64
+iv_len=96
+valid=0
+
+algo=DES
+bcm=CFB1
+key_len=64
+iv_len=104
+valid=0
+
+algo=DES
+bcm=CFB1
+key_len=64
+iv_len=128
+valid=0
+
+algo=DES
+bcm=CFB1
+key_len=64
+iv_len=256
+valid=0
+
+algo=DES
+bcm=CFB8
+key_len=64
+iv_len=0
+valid=0
+
+algo=DES
+bcm=CFB8
+key_len=64
+iv_len=56
+valid=0
+
+algo=DES
+bcm=CFB8
+key_len=64
+iv_len=64
+valid=1
+
+algo=DES
+bcm=CFB8
+key_len=64
+iv_len=96
+valid=0
+
+algo=DES
+bcm=CFB8
+key_len=64
+iv_len=104
+valid=0
+
+algo=DES
+bcm=CFB8
+key_len=64
+iv_len=128
+valid=0
+
+algo=DES
+bcm=CFB8
+key_len=64
+iv_len=256
+valid=0
+
+algo=DES
+bcm=OFB
+key_len=64
+iv_len=0
+valid=0
+
+algo=DES
+bcm=OFB
+key_len=64
+iv_len=56
+valid=0
+
+algo=DES
+bcm=OFB
+key_len=64
+iv_len=64
+valid=1
+
+algo=DES
+bcm=OFB
+key_len=64
+iv_len=96
+valid=0
+
+algo=DES
+bcm=OFB
+key_len=64
+iv_len=104
+valid=0
+
+algo=DES
+bcm=OFB
+key_len=64
+iv_len=128
+valid=0
+
+algo=DES
+bcm=OFB
+key_len=64
+iv_len=256
+valid=0
+
+################## 3DES_2TDEA ##################
+
+algo=3DES_2TDEA
+bcm=ECB
+key_len=128
+iv_len=0
+valid=1
+
+algo=3DES_2TDEA
+bcm=ECB
+key_len=128
+iv_len=56
+valid=0
+
+algo=3DES_2TDEA
+bcm=ECB
+key_len=128
+iv_len=64
+valid=0
+
+algo=3DES_2TDEA
+bcm=ECB
+key_len=128
+iv_len=96
+valid=0
+
+algo=3DES_2TDEA
+bcm=ECB
+key_len=128
+iv_len=104
+valid=0
+
+algo=3DES_2TDEA
+bcm=ECB
+key_len=128
+iv_len=128
+valid=0
+
+algo=3DES_2TDEA
+bcm=ECB
+key_len=128
+iv_len=256
+valid=0
+
+algo=3DES_2TDEA
+bcm=CBC
+key_len=128
+iv_len=0
+valid=0
+
+algo=3DES_2TDEA
+bcm=CBC
+key_len=128
+iv_len=56
+valid=0
+
+algo=3DES_2TDEA
+bcm=CBC
+key_len=128
+iv_len=64
+valid=1
+
+algo=3DES_2TDEA
+bcm=CBC
+key_len=128
+iv_len=96
+valid=0
+
+algo=3DES_2TDEA
+bcm=CBC
+key_len=128
+iv_len=104
+valid=0
+
+algo=3DES_2TDEA
+bcm=CBC
+key_len=128
+iv_len=128
+valid=0
+
+algo=3DES_2TDEA
+bcm=CBC
+key_len=128
+iv_len=256
+valid=0
+
+algo=3DES_2TDEA
+bcm=CFB
+key_len=128
+iv_len=0
+valid=0
+
+algo=3DES_2TDEA
+bcm=CFB
+key_len=128
+iv_len=56
+valid=0
+
+algo=3DES_2TDEA
+bcm=CFB
+key_len=128
+iv_len=64
+valid=1
+
+algo=3DES_2TDEA
+bcm=CFB
+key_len=128
+iv_len=96
+valid=0
+
+algo=3DES_2TDEA
+bcm=CFB
+key_len=128
+iv_len=104
+valid=0
+
+algo=3DES_2TDEA
+bcm=CFB
+key_len=128
+iv_len=128
+valid=0
+
+algo=3DES_2TDEA
+bcm=CFB
+key_len=128
+iv_len=256
+valid=0
+
+algo=3DES_2TDEA
+bcm=OFB
+key_len=128
+iv_len=0
+valid=0
+
+algo=3DES_2TDEA
+bcm=OFB
+key_len=128
+iv_len=56
+valid=0
+
+algo=3DES_2TDEA
+bcm=OFB
+key_len=128
+iv_len=64
+valid=1
+
+algo=3DES_2TDEA
+bcm=OFB
+key_len=128
+iv_len=96
+valid=0
+
+algo=3DES_2TDEA
+bcm=OFB
+key_len=128
+iv_len=104
+valid=0
+
+algo=3DES_2TDEA
+bcm=OFB
+key_len=128
+iv_len=128
+valid=0
+
+algo=3DES_2TDEA
+bcm=OFB
+key_len=128
+iv_len=256
+valid=0
+
+################## 3DES_3TDEA ##################
+
+algo=3DES_3TDEA
+bcm=ECB
+key_len=192
+iv_len=0
+valid=1
+
+algo=3DES_3TDEA
+bcm=ECB
+key_len=192
+iv_len=56
+valid=0
+
+algo=3DES_3TDEA
+bcm=ECB
+key_len=192
+iv_len=64
+valid=0
+
+algo=3DES_3TDEA
+bcm=ECB
+key_len=192
+iv_len=96
+valid=0
+
+algo=3DES_3TDEA
+bcm=ECB
+key_len=192
+iv_len=104
+valid=0
+
+algo=3DES_3TDEA
+bcm=ECB
+key_len=192
+iv_len=128
+valid=0
+
+algo=3DES_3TDEA
+bcm=ECB
+key_len=192
+iv_len=256
+valid=0
+
+algo=3DES_3TDEA
+bcm=CBC
+key_len=192
+iv_len=0
+valid=0
+
+algo=3DES_3TDEA
+bcm=CBC
+key_len=192
+iv_len=56
+valid=0
+
+algo=3DES_3TDEA
+bcm=CBC
+key_len=192
+iv_len=64
+valid=1
+
+algo=3DES_3TDEA
+bcm=CBC
+key_len=192
+iv_len=96
+valid=0
+
+algo=3DES_3TDEA
+bcm=CBC
+key_len=192
+iv_len=104
+valid=0
+
+algo=3DES_3TDEA
+bcm=CBC
+key_len=192
+iv_len=128
+valid=0
+
+algo=3DES_3TDEA
+bcm=CBC
+key_len=192
+iv_len=256
+valid=0
+
+algo=3DES_3TDEA
+bcm=OFB
+key_len=192
+iv_len=0
+valid=0
+
+algo=3DES_3TDEA
+bcm=OFB
+key_len=192
+iv_len=56
+valid=0
+
+algo=3DES_3TDEA
+bcm=OFB
+key_len=192
+iv_len=64
+valid=1
+
+algo=3DES_3TDEA
+bcm=OFB
+key_len=192
+iv_len=96
+valid=0
+
+algo=3DES_3TDEA
+bcm=OFB
+key_len=192
+iv_len=104
+valid=0
+
+algo=3DES_3TDEA
+bcm=OFB
+key_len=192
+iv_len=128
+valid=0
+
+algo=3DES_3TDEA
+bcm=OFB
+key_len=192
+iv_len=256
+valid=0
+
+algo=3DES_3TDEA
+bcm=CFB
+key_len=192
+iv_len=0
+valid=0
+
+algo=3DES_3TDEA
+bcm=CFB
+key_len=192
+iv_len=56
+valid=0
+
+algo=3DES_3TDEA
+bcm=CFB
+key_len=192
+iv_len=64
+valid=1
+
+algo=3DES_3TDEA
+bcm=CFB
+key_len=192
+iv_len=96
+valid=0
+
+algo=3DES_3TDEA
+bcm=CFB
+key_len=192
+iv_len=104
+valid=0
+
+algo=3DES_3TDEA
+bcm=CFB
+key_len=192
+iv_len=128
+valid=0
+
+algo=3DES_3TDEA
+bcm=CFB
+key_len=192
+iv_len=256
+valid=0
+
+algo=3DES_3TDEA
+bcm=CFB1
+key_len=192
+iv_len=0
+valid=0
+
+algo=3DES_3TDEA
+bcm=CFB1
+key_len=192
+iv_len=56
+valid=0
+
+algo=3DES_3TDEA
+bcm=CFB1
+key_len=192
+iv_len=64
+valid=1
+
+algo=3DES_3TDEA
+bcm=CFB1
+key_len=192
+iv_len=96
+valid=0
+
+algo=3DES_3TDEA
+bcm=CFB1
+key_len=192
+iv_len=104
+valid=0
+
+algo=3DES_3TDEA
+bcm=CFB1
+key_len=192
+iv_len=128
+valid=0
+
+algo=3DES_3TDEA
+bcm=CFB1
+key_len=192
+iv_len=256
+valid=0
+
+algo=3DES_3TDEA
+bcm=CFB8
+key_len=192
+iv_len=0
+valid=0
+
+algo=3DES_3TDEA
+bcm=CFB8
+key_len=192
+iv_len=56
+valid=0
+
+algo=3DES_3TDEA
+bcm=CFB8
+key_len=192
+iv_len=64
+valid=1
+
+algo=3DES_3TDEA
+bcm=CFB8
+key_len=192
+iv_len=96
+valid=0
+
+algo=3DES_3TDEA
+bcm=CFB8
+key_len=192
+iv_len=104
+valid=0
+
+algo=3DES_3TDEA
+bcm=CFB8
+key_len=192
+iv_len=128
+valid=0
+
+algo=3DES_3TDEA
+bcm=CFB8
+key_len=192
+iv_len=256
+valid=0
+
+################## RC2 ##################
+
+algo=RC2
+bcm=ECB
+key_len=8
+iv_len=0
+valid=1
+
+algo=RC2
+bcm=ECB
+key_len=8
+iv_len=56
+valid=0
+
+algo=RC2
+bcm=ECB
+key_len=8
+iv_len=64
+valid=0
+
+algo=RC2
+bcm=ECB
+key_len=8
+iv_len=96
+valid=0
+
+algo=RC2
+bcm=ECB
+key_len=8
+iv_len=104
+valid=0
+
+algo=RC2
+bcm=ECB
+key_len=8
+iv_len=128
+valid=0
+
+algo=RC2
+bcm=ECB
+key_len=8
+iv_len=256
+valid=0
+
+algo=RC2
+bcm=CBC
+key_len=8
+iv_len=0
+valid=0
+
+algo=RC2
+bcm=CBC
+key_len=8
+iv_len=56
+valid=0
+
+algo=RC2
+bcm=CBC
+key_len=8
+iv_len=64
+valid=1
+
+algo=RC2
+bcm=CBC
+key_len=8
+iv_len=96
+valid=0
+
+algo=RC2
+bcm=CBC
+key_len=8
+iv_len=104
+valid=0
+
+algo=RC2
+bcm=CBC
+key_len=8
+iv_len=128
+valid=0
+
+algo=RC2
+bcm=CBC
+key_len=8
+iv_len=256
+valid=0
+
+algo=RC2
+bcm=CFB
+key_len=8
+iv_len=0
+valid=0
+
+algo=RC2
+bcm=CFB
+key_len=8
+iv_len=56
+valid=0
+
+algo=RC2
+bcm=CFB
+key_len=8
+iv_len=64
+valid=1
+
+algo=RC2
+bcm=CFB
+key_len=8
+iv_len=96
+valid=0
+
+algo=RC2
+bcm=CFB
+key_len=8
+iv_len=104
+valid=0
+
+algo=RC2
+bcm=CFB
+key_len=8
+iv_len=128
+valid=0
+
+algo=RC2
+bcm=CFB
+key_len=8
+iv_len=256
+valid=0
+
+algo=RC2
+bcm=OFB
+key_len=8
+iv_len=0
+valid=0
+
+algo=RC2
+bcm=OFB
+key_len=8
+iv_len=56
+valid=0
+
+algo=RC2
+bcm=OFB
+key_len=8
+iv_len=64
+valid=1
+
+algo=RC2
+bcm=OFB
+key_len=8
+iv_len=96
+valid=0
+
+algo=RC2
+bcm=OFB
+key_len=8
+iv_len=104
+valid=0
+
+algo=RC2
+bcm=OFB
+key_len=8
+iv_len=128
+valid=0
+
+algo=RC2
+bcm=OFB
+key_len=8
+iv_len=256
+valid=0
+
+################## RC4 ##################
+
+algo=RC4
+bcm=NONE
+key_len=40
+iv_len=0
+valid=1
+
+algo=RC4
+bcm=NONE
+key_len=40
+iv_len=56
+valid=0
+
+algo=RC4
+bcm=NONE
+key_len=40
+iv_len=64
+valid=0
+
+algo=RC4
+bcm=NONE
+key_len=40
+iv_len=96
+valid=0
+
+algo=RC4
+bcm=NONE
+key_len=40
+iv_len=104
+valid=0
+
+algo=RC4
+bcm=NONE
+key_len=40
+iv_len=128
+valid=0
+
+algo=RC4
+bcm=NONE
+key_len=40
+iv_len=256
+valid=0
+
+################## CAST5 ##################
+
+algo=CAST5
+bcm=ECB
+key_len=40
+iv_len=0
+valid=1
+
+algo=CAST5
+bcm=ECB
+key_len=40
+iv_len=56
+valid=0
+
+algo=CAST5
+bcm=ECB
+key_len=40
+iv_len=64
+valid=0
+
+algo=CAST5
+bcm=ECB
+key_len=40
+iv_len=96
+valid=0
+
+algo=CAST5
+bcm=ECB
+key_len=40
+iv_len=104
+valid=0
+
+algo=CAST5
+bcm=ECB
+key_len=40
+iv_len=128
+valid=0
+
+algo=CAST5
+bcm=ECB
+key_len=40
+iv_len=256
+valid=0
+
+algo=CAST5
+bcm=CBC
+key_len=40
+iv_len=0
+valid=0
+
+algo=CAST5
+bcm=CBC
+key_len=40
+iv_len=56
+valid=0
+
+algo=CAST5
+bcm=CBC
+key_len=40
+iv_len=64
+valid=1
+
+algo=CAST5
+bcm=CBC
+key_len=40
+iv_len=96
+valid=0
+
+algo=CAST5
+bcm=CBC
+key_len=40
+iv_len=104
+valid=0
+
+algo=CAST5
+bcm=CBC
+key_len=40
+iv_len=128
+valid=0
+
+algo=CAST5
+bcm=CBC
+key_len=40
+iv_len=256
+valid=0
+
+algo=CAST5
+bcm=CFB
+key_len=40
+iv_len=0
+valid=0
+
+algo=CAST5
+bcm=CFB
+key_len=40
+iv_len=56
+valid=0
+
+algo=CAST5
+bcm=CFB
+key_len=40
+iv_len=64
+valid=1
+
+algo=CAST5
+bcm=CFB
+key_len=40
+iv_len=96
+valid=0
+
+algo=CAST5
+bcm=CFB
+key_len=40
+iv_len=104
+valid=0
+
+algo=CAST5
+bcm=CFB
+key_len=40
+iv_len=128
+valid=0
+
+algo=CAST5
+bcm=CFB
+key_len=40
+iv_len=256
+valid=0
+
+algo=CAST5
+bcm=OFB
+key_len=40
+iv_len=0
+valid=0
+
+algo=CAST5
+bcm=OFB
+key_len=40
+iv_len=56
+valid=0
+
+algo=CAST5
+bcm=OFB
+key_len=40
+iv_len=64
+valid=1
+
+algo=CAST5
+bcm=OFB
+key_len=40
+iv_len=96
+valid=0
+
+algo=CAST5
+bcm=OFB
+key_len=40
+iv_len=104
+valid=0
+
+algo=CAST5
+bcm=OFB
+key_len=40
+iv_len=128
+valid=0
+
+algo=CAST5
+bcm=OFB
+key_len=40
+iv_len=256
+valid=0
+
#include "dpl/test/test_runner.h"
#include "yaca-test-common.h"
+#include "yaca-test-vector.h"
+
#include <yaca_encrypt.h>
#include <yaca_key.h>
return create_yaca_buffer(out_len);
}
+void check_test_vector_init(yaca_encrypt_algorithm_e algo,
+ yaca_block_cipher_mode_e bcm,
+ size_t key_len,
+ size_t iv_len,
+ bool valid)
+{
+ yaca_context_h ctx = YACA_CONTEXT_NULL;
+ int expected = YACA_ERROR_NONE;
+ yaca_key_type_e key_type;
+
+ if (!valid)
+ expected = YACA_ERROR_INVALID_PARAMETER;
+
+ auto iv_ptr = (iv_len > 0) ? generate_key(YACA_KEY_TYPE_IV, iv_len)
+ : null_key();
+
+ /*
+ * Invalid DES key cannot be created using yaca_key_generate().
+ * If test case is incorrect, wrong key (symmetric) is generated
+ * in order to check how api behave with inappropriate key imported
+ */
+
+ if ((algo == YACA_ENCRYPT_UNSAFE_DES || algo == YACA_ENCRYPT_UNSAFE_3DES_2TDEA ||
+ algo == YACA_ENCRYPT_3DES_3TDEA) && valid)
+ key_type = YACA_KEY_TYPE_DES;
+ else
+ key_type = YACA_KEY_TYPE_SYMMETRIC;
+
+ auto key_ptr = generate_key(key_type, key_len);
+
+ YACA_RESULT(expected, yaca_encrypt_initialize(&ctx, algo, bcm, key_ptr.get(), iv_ptr.get()));
+ yaca_context_destroy(ctx);
+ ctx = YACA_CONTEXT_NULL;
+ YACA_RESULT(expected, yaca_decrypt_initialize(&ctx, algo, bcm, key_ptr.get(), iv_ptr.get()));
+ yaca_context_destroy(ctx);
+}
+
}//namespace anonymous
RUNNER_TEST_GROUP_INIT(T3000_YACA_ENCRYPT);
YACA_INVALID_PARAM(yaca_encrypt_get_iv_bit_length(YACA_ENCRYPT_AES, YACA_BCM_CBC,
KEY_LEN, nullptr));
}
+
+RUNNER_TEST(T3080_yaca_encrypt_decrypt_init_param_comb, YacaTest)
+{
+ auto tvv = loadTestVector("encrypt_param_comb.txt");
+
+ for (const auto& tv : tvv) {
+ yaca_encrypt_algorithm_e algo;
+ yaca_block_cipher_mode_e bcm;
+ size_t key_len;
+ size_t iv_len;
+ bool valid;
+
+ tv.get("algo", algo);
+ tv.get("bcm", bcm);
+ tv.get("key_len", key_len);
+ tv.get("iv_len", iv_len);
+ tv.get("valid", valid);
+
+ check_test_vector_init(algo, bcm, key_len, iv_len, valid);
+ }
+}
};
std::unordered_map<std::string, yaca_block_cipher_mode_e> str2bcm = {
- std::make_pair("ECB", YACA_BCM_ECB),
- std::make_pair("CTR", YACA_BCM_CTR),
- std::make_pair("CBC", YACA_BCM_CBC),
- std::make_pair("GCM", YACA_BCM_GCM),
- std::make_pair("CFB", YACA_BCM_CFB),
- std::make_pair("CFB1", YACA_BCM_CFB1),
- std::make_pair("CFB8", YACA_BCM_CFB8),
- std::make_pair("OFB", YACA_BCM_OFB),
- std::make_pair("CCM", YACA_BCM_CCM)
+ std::make_pair("NONE", YACA_BCM_NONE),
+ std::make_pair("ECB", YACA_BCM_ECB),
+ std::make_pair("CTR", YACA_BCM_CTR),
+ std::make_pair("CBC", YACA_BCM_CBC),
+ std::make_pair("GCM", YACA_BCM_GCM),
+ std::make_pair("CFB", YACA_BCM_CFB),
+ std::make_pair("CFB1", YACA_BCM_CFB1),
+ std::make_pair("CFB8", YACA_BCM_CFB8),
+ std::make_pair("OFB", YACA_BCM_OFB),
+ std::make_pair("CCM", YACA_BCM_CCM)
};
} // anonymous namespace