@@ -802,7 +802,7 @@ CK_RV SymmetricAlgorithmTests::generateDes3Key(CK_SESSION_HANDLE hSession, CK_BB
802
802
}
803
803
804
804
void SymmetricAlgorithmTests::encryptDecrypt (
805
- const CK_MECHANISM_TYPE mechanismType ,
805
+ const CK_MECHANISM mechanism ,
806
806
const size_t blockSize,
807
807
const CK_SESSION_HANDLE hSession,
808
808
const CK_OBJECT_HANDLE hKey,
@@ -850,56 +850,10 @@ void SymmetricAlgorithmTests::encryptDecrypt(
850
850
851
851
CPPUNIT_ASSERT_EQUAL ( (CK_RV)CKR_OK, CRYPTOKI_F_PTR ( C_GenerateRandom (hSession, (CK_BYTE_PTR)&vData.front (), messageSize) ) );
852
852
853
- const CK_MECHANISM mechanism = { mechanismType, NULL_PTR, 0 };
854
853
CK_MECHANISM_PTR pMechanism ((CK_MECHANISM_PTR)&mechanism);
855
- CK_AES_CTR_PARAMS ctrParams =
856
- {
857
- 32 ,
858
- {
859
- 0x00 , 0x00 , 0x00 , 0x30 , 0x00 , 0x00 , 0x00 , 0x00 ,
860
- 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x01
861
- }
862
- };
863
- CK_BYTE gcmIV[] = {
864
- 0xCA , 0xFE , 0xBA , 0xBE , 0xFA , 0xCE ,
865
- 0xDB , 0xAD , 0xDE , 0xCA , 0xF8 , 0x88
866
- };
867
- CK_BYTE gcmAAD[] = {
868
- 0xFE , 0xED , 0xFA , 0xCE , 0xDE , 0xAD , 0xBE , 0xEF ,
869
- 0xFE , 0xED , 0xFA , 0xCE , 0xDE , 0xAD , 0xBE , 0xEF ,
870
- 0xAB , 0xAD , 0xDA , 0xD2
871
- };
872
- CK_GCM_PARAMS gcmParams =
873
- {
874
- &gcmIV[0 ],
875
- sizeof (gcmIV),
876
- sizeof (gcmIV)*8 ,
877
- &gcmAAD[0 ],
878
- sizeof (gcmAAD),
879
- 16 *8
880
- };
881
-
882
- switch (mechanismType)
883
- {
884
- case CKM_DES_CBC:
885
- case CKM_DES_CBC_PAD:
886
- case CKM_DES3_CBC:
887
- case CKM_DES3_CBC_PAD:
888
- case CKM_AES_CBC:
889
- case CKM_AES_CBC_PAD:
890
- pMechanism->pParameter = (CK_VOID_PTR)&vData.front ();
891
- pMechanism->ulParameterLen = blockSize;
892
- break ;
893
- case CKM_AES_CTR:
894
- pMechanism->pParameter = &ctrParams;
895
- pMechanism->ulParameterLen = sizeof (ctrParams);
896
- break ;
897
- case CKM_AES_GCM:
898
- pMechanism->pParameter = &gcmParams;
899
- pMechanism->ulParameterLen = sizeof (gcmParams);
900
- break ;
901
- default :
902
- break ;
854
+ if (pMechanism->pParameter == NULL_PTR) {
855
+ pMechanism->pParameter = (CK_VOID_PTR)&vData.front ();
856
+ pMechanism->ulParameterLen = blockSize;
903
857
}
904
858
905
859
// Single-part encryption
@@ -1568,6 +1522,43 @@ void SymmetricAlgorithmTests::testAesEncryptDecrypt()
1568
1522
CK_SESSION_HANDLE hSessionRO;
1569
1523
CK_SESSION_HANDLE hSessionRW;
1570
1524
1525
+ CK_AES_CTR_PARAMS ctrParams =
1526
+ {
1527
+ 32 ,
1528
+ {
1529
+ 0x00 , 0x00 , 0x00 , 0x30 , 0x00 , 0x00 , 0x00 , 0x00 ,
1530
+ 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x01
1531
+ }
1532
+ };
1533
+ CK_BYTE gcmIV[] = {
1534
+ 0xCA , 0xFE , 0xBA , 0xBE , 0xFA , 0xCE ,
1535
+ 0xDB , 0xAD , 0xDE , 0xCA , 0xF8 , 0x88
1536
+ };
1537
+ CK_BYTE gcmAAD[] = {
1538
+ 0xFE , 0xED , 0xFA , 0xCE , 0xDE , 0xAD , 0xBE , 0xEF ,
1539
+ 0xFE , 0xED , 0xFA , 0xCE , 0xDE , 0xAD , 0xBE , 0xEF ,
1540
+ 0xAB , 0xAD , 0xDA , 0xD2
1541
+ };
1542
+ CK_GCM_PARAMS gcmParamsWithAAD =
1543
+ {
1544
+ &gcmIV[0 ],
1545
+ sizeof (gcmIV),
1546
+ sizeof (gcmIV)*8 ,
1547
+ &gcmAAD[0 ],
1548
+ sizeof (gcmAAD),
1549
+ 16 *8
1550
+ };
1551
+ CK_GCM_PARAMS gcmParamsWithoutAAD =
1552
+ {
1553
+ &gcmIV[0 ],
1554
+ sizeof (gcmIV),
1555
+ sizeof (gcmIV)*8 ,
1556
+ NULL_PTR,
1557
+ 0 ,
1558
+ 16 *8
1559
+ };
1560
+
1561
+
1571
1562
// Just make sure that we finalize any previous tests
1572
1563
CRYPTOKI_F_PTR ( C_Finalize (NULL_PTR) );
1573
1564
@@ -1601,19 +1592,22 @@ void SymmetricAlgorithmTests::testAesEncryptDecrypt()
1601
1592
// with padding all message sizes could be encrypted-decrypted.
1602
1593
// without padding the message size must be a multiple of the block size.
1603
1594
const int blockSize (0x10 );
1604
- encryptDecrypt (CKM_AES_CBC_PAD,blockSize,hSessionRO,hKey,blockSize*NR_OF_BLOCKS_IN_TEST-1 );
1605
- encryptDecrypt (CKM_AES_CBC_PAD,blockSize,hSessionRO,hKey,blockSize*NR_OF_BLOCKS_IN_TEST+1 );
1606
- encryptDecrypt (CKM_AES_CBC_PAD,blockSize,hSessionRO,hKey,blockSize*NR_OF_BLOCKS_IN_TEST);
1607
- encryptDecrypt (CKM_AES_CBC,blockSize,hSessionRO,hKey,blockSize*NR_OF_BLOCKS_IN_TEST);
1608
- encryptDecrypt (CKM_AES_CBC,blockSize,hSessionRO,hKey,blockSize*NR_OF_BLOCKS_IN_TEST+1 , false );
1609
- encryptDecrypt (CKM_AES_ECB,blockSize,hSessionRO,hKey,blockSize*NR_OF_BLOCKS_IN_TEST);
1610
- encryptDecrypt (CKM_AES_ECB,blockSize,hSessionRO,hKey,blockSize*NR_OF_BLOCKS_IN_TEST+1 , false );
1611
- encryptDecrypt (CKM_AES_CTR,blockSize,hSessionRO,hKey,blockSize*NR_OF_BLOCKS_IN_TEST-1 );
1612
- encryptDecrypt (CKM_AES_CTR,blockSize,hSessionRO,hKey,blockSize*NR_OF_BLOCKS_IN_TEST+1 );
1613
- encryptDecrypt (CKM_AES_CTR,blockSize,hSessionRO,hKey,blockSize*NR_OF_BLOCKS_IN_TEST);
1614
- encryptDecrypt (CKM_AES_GCM,blockSize,hSessionRO,hKey,blockSize*NR_OF_BLOCKS_IN_TEST-1 );
1615
- encryptDecrypt (CKM_AES_GCM,blockSize,hSessionRO,hKey,blockSize*NR_OF_BLOCKS_IN_TEST+1 );
1616
- encryptDecrypt (CKM_AES_GCM,blockSize,hSessionRO,hKey,blockSize*NR_OF_BLOCKS_IN_TEST);
1595
+ encryptDecrypt ({CKM_AES_CBC_PAD,NULL_PTR,0 },blockSize,hSessionRO,hKey,blockSize*NR_OF_BLOCKS_IN_TEST-1 );
1596
+ encryptDecrypt ({CKM_AES_CBC_PAD,NULL_PTR,0 },blockSize,hSessionRO,hKey,blockSize*NR_OF_BLOCKS_IN_TEST+1 );
1597
+ encryptDecrypt ({CKM_AES_CBC_PAD,NULL_PTR,0 },blockSize,hSessionRO,hKey,blockSize*NR_OF_BLOCKS_IN_TEST);
1598
+ encryptDecrypt ({CKM_AES_CBC,NULL_PTR,0 },blockSize,hSessionRO,hKey,blockSize*NR_OF_BLOCKS_IN_TEST);
1599
+ encryptDecrypt ({CKM_AES_CBC,NULL_PTR,0 },blockSize,hSessionRO,hKey,blockSize*NR_OF_BLOCKS_IN_TEST+1 , false );
1600
+ encryptDecrypt ({CKM_AES_ECB,NULL_PTR,0 },blockSize,hSessionRO,hKey,blockSize*NR_OF_BLOCKS_IN_TEST);
1601
+ encryptDecrypt ({CKM_AES_ECB,NULL_PTR,0 },blockSize,hSessionRO,hKey,blockSize*NR_OF_BLOCKS_IN_TEST+1 , false );
1602
+ encryptDecrypt ({CKM_AES_CTR,&ctrParams,sizeof (ctrParams)},blockSize,hSessionRO,hKey,blockSize*NR_OF_BLOCKS_IN_TEST-1 );
1603
+ encryptDecrypt ({CKM_AES_CTR,&ctrParams,sizeof (ctrParams)},blockSize,hSessionRO,hKey,blockSize*NR_OF_BLOCKS_IN_TEST+1 );
1604
+ encryptDecrypt ({CKM_AES_CTR,&ctrParams,sizeof (ctrParams)},blockSize,hSessionRO,hKey,blockSize*NR_OF_BLOCKS_IN_TEST);
1605
+ encryptDecrypt ({CKM_AES_GCM,&gcmParamsWithAAD,sizeof (gcmParamsWithAAD)},blockSize,hSessionRO,hKey,blockSize*NR_OF_BLOCKS_IN_TEST-1 );
1606
+ encryptDecrypt ({CKM_AES_GCM,&gcmParamsWithAAD,sizeof (gcmParamsWithAAD)},blockSize,hSessionRO,hKey,blockSize*NR_OF_BLOCKS_IN_TEST+1 );
1607
+ encryptDecrypt ({CKM_AES_GCM,&gcmParamsWithAAD,sizeof (gcmParamsWithAAD)},blockSize,hSessionRO,hKey,blockSize*NR_OF_BLOCKS_IN_TEST);
1608
+ encryptDecrypt ({CKM_AES_GCM,&gcmParamsWithoutAAD,sizeof (gcmParamsWithoutAAD)},blockSize,hSessionRO,hKey,blockSize*NR_OF_BLOCKS_IN_TEST-1 );
1609
+ encryptDecrypt ({CKM_AES_GCM,&gcmParamsWithoutAAD,sizeof (gcmParamsWithoutAAD)},blockSize,hSessionRO,hKey,blockSize*NR_OF_BLOCKS_IN_TEST+1 );
1610
+ encryptDecrypt ({CKM_AES_GCM,&gcmParamsWithoutAAD,sizeof (gcmParamsWithoutAAD)},blockSize,hSessionRO,hKey,blockSize*NR_OF_BLOCKS_IN_TEST);
1617
1611
}
1618
1612
1619
1613
@@ -1713,27 +1707,27 @@ void SymmetricAlgorithmTests::testDesEncryptDecrypt()
1713
1707
rv = generateDesKey (hSessionRW,IN_SESSION,IS_PUBLIC,hKey);
1714
1708
CPPUNIT_ASSERT (rv == CKR_OK);
1715
1709
1716
- encryptDecrypt (CKM_DES_CBC_PAD,blockSize,hSessionRO,hKey,blockSize*NR_OF_BLOCKS_IN_TEST-1 );
1717
- encryptDecrypt (CKM_DES_CBC_PAD,blockSize,hSessionRO,hKey,blockSize*NR_OF_BLOCKS_IN_TEST+1 );
1718
- encryptDecrypt (CKM_DES_CBC_PAD,blockSize,hSessionRO,hKey,blockSize*NR_OF_BLOCKS_IN_TEST);
1719
- encryptDecrypt (CKM_DES_CBC,blockSize,hSessionRO,hKey,blockSize*NR_OF_BLOCKS_IN_TEST);
1720
- encryptDecrypt (CKM_DES_CBC,blockSize,hSessionRO,hKey,blockSize*NR_OF_BLOCKS_IN_TEST+1 , false );
1721
- encryptDecrypt (CKM_DES_ECB,blockSize,hSessionRO,hKey,blockSize*NR_OF_BLOCKS_IN_TEST);
1722
- encryptDecrypt (CKM_DES_ECB,blockSize,hSessionRO,hKey,blockSize*NR_OF_BLOCKS_IN_TEST+1 , false );
1710
+ encryptDecrypt ({ CKM_DES_CBC_PAD,NULL_PTR, 0 } ,blockSize,hSessionRO,hKey,blockSize*NR_OF_BLOCKS_IN_TEST-1 );
1711
+ encryptDecrypt ({ CKM_DES_CBC_PAD,NULL_PTR, 0 } ,blockSize,hSessionRO,hKey,blockSize*NR_OF_BLOCKS_IN_TEST+1 );
1712
+ encryptDecrypt ({ CKM_DES_CBC_PAD,NULL_PTR, 0 } ,blockSize,hSessionRO,hKey,blockSize*NR_OF_BLOCKS_IN_TEST);
1713
+ encryptDecrypt ({ CKM_DES_CBC,NULL_PTR, 0 } ,blockSize,hSessionRO,hKey,blockSize*NR_OF_BLOCKS_IN_TEST);
1714
+ encryptDecrypt ({ CKM_DES_CBC,NULL_PTR, 0 } ,blockSize,hSessionRO,hKey,blockSize*NR_OF_BLOCKS_IN_TEST+1 , false );
1715
+ encryptDecrypt ({ CKM_DES_ECB,NULL_PTR, 0 } ,blockSize,hSessionRO,hKey,blockSize*NR_OF_BLOCKS_IN_TEST);
1716
+ encryptDecrypt ({ CKM_DES_ECB,NULL_PTR, 0 } ,blockSize,hSessionRO,hKey,blockSize*NR_OF_BLOCKS_IN_TEST+1 , false );
1723
1717
1724
1718
CK_OBJECT_HANDLE hKey2 = CK_INVALID_HANDLE;
1725
1719
1726
1720
// Generate all combinations of session/token keys.
1727
1721
rv = generateDes2Key (hSessionRW,IN_SESSION,IS_PUBLIC,hKey2);
1728
1722
CPPUNIT_ASSERT (rv == CKR_OK);
1729
1723
1730
- encryptDecrypt (CKM_DES3_CBC_PAD,blockSize,hSessionRO,hKey2,blockSize*NR_OF_BLOCKS_IN_TEST-1 );
1731
- encryptDecrypt (CKM_DES3_CBC_PAD,blockSize,hSessionRO,hKey2,blockSize*NR_OF_BLOCKS_IN_TEST+1 );
1732
- encryptDecrypt (CKM_DES3_CBC_PAD,blockSize,hSessionRO,hKey2,blockSize*NR_OF_BLOCKS_IN_TEST);
1733
- encryptDecrypt (CKM_DES3_CBC,blockSize,hSessionRO,hKey2,blockSize*NR_OF_BLOCKS_IN_TEST);
1734
- encryptDecrypt (CKM_DES3_CBC,blockSize,hSessionRO,hKey2,blockSize*NR_OF_BLOCKS_IN_TEST+1 , false );
1735
- encryptDecrypt (CKM_DES3_ECB,blockSize,hSessionRO,hKey2,blockSize*NR_OF_BLOCKS_IN_TEST);
1736
- encryptDecrypt (CKM_DES3_ECB,blockSize,hSessionRO,hKey2,blockSize*NR_OF_BLOCKS_IN_TEST+1 , false );
1724
+ encryptDecrypt ({ CKM_DES3_CBC_PAD,NULL_PTR, 0 } ,blockSize,hSessionRO,hKey2,blockSize*NR_OF_BLOCKS_IN_TEST-1 );
1725
+ encryptDecrypt ({ CKM_DES3_CBC_PAD,NULL_PTR, 0 } ,blockSize,hSessionRO,hKey2,blockSize*NR_OF_BLOCKS_IN_TEST+1 );
1726
+ encryptDecrypt ({ CKM_DES3_CBC_PAD,NULL_PTR, 0 } ,blockSize,hSessionRO,hKey2,blockSize*NR_OF_BLOCKS_IN_TEST);
1727
+ encryptDecrypt ({ CKM_DES3_CBC,NULL_PTR, 0 } ,blockSize,hSessionRO,hKey2,blockSize*NR_OF_BLOCKS_IN_TEST);
1728
+ encryptDecrypt ({ CKM_DES3_CBC,NULL_PTR, 0 } ,blockSize,hSessionRO,hKey2,blockSize*NR_OF_BLOCKS_IN_TEST+1 , false );
1729
+ encryptDecrypt ({ CKM_DES3_ECB,NULL_PTR, 0 } ,blockSize,hSessionRO,hKey2,blockSize*NR_OF_BLOCKS_IN_TEST);
1730
+ encryptDecrypt ({ CKM_DES3_ECB,NULL_PTR, 0 } ,blockSize,hSessionRO,hKey2,blockSize*NR_OF_BLOCKS_IN_TEST+1 , false );
1737
1731
#endif
1738
1732
1739
1733
CK_OBJECT_HANDLE hKey3 = CK_INVALID_HANDLE;
@@ -1742,13 +1736,13 @@ void SymmetricAlgorithmTests::testDesEncryptDecrypt()
1742
1736
rv = generateDes3Key (hSessionRW,IN_SESSION,IS_PUBLIC,hKey3);
1743
1737
CPPUNIT_ASSERT (rv == CKR_OK);
1744
1738
1745
- encryptDecrypt (CKM_DES3_CBC_PAD,blockSize,hSessionRO,hKey3,blockSize*NR_OF_BLOCKS_IN_TEST-1 );
1746
- encryptDecrypt (CKM_DES3_CBC_PAD,blockSize,hSessionRO,hKey3,blockSize*NR_OF_BLOCKS_IN_TEST+1 );
1747
- encryptDecrypt (CKM_DES3_CBC_PAD,blockSize,hSessionRO,hKey3,blockSize*NR_OF_BLOCKS_IN_TEST);
1748
- encryptDecrypt (CKM_DES3_CBC,blockSize,hSessionRO,hKey3,blockSize*NR_OF_BLOCKS_IN_TEST);
1749
- encryptDecrypt (CKM_DES3_CBC,blockSize,hSessionRO,hKey3,blockSize*NR_OF_BLOCKS_IN_TEST+1 , false );
1750
- encryptDecrypt (CKM_DES3_ECB,blockSize,hSessionRO,hKey3,blockSize*NR_OF_BLOCKS_IN_TEST);
1751
- encryptDecrypt (CKM_DES3_ECB,blockSize,hSessionRO,hKey3,blockSize*NR_OF_BLOCKS_IN_TEST+1 , false );
1739
+ encryptDecrypt ({ CKM_DES3_CBC_PAD,NULL_PTR, 0 } ,blockSize,hSessionRO,hKey3,blockSize*NR_OF_BLOCKS_IN_TEST-1 );
1740
+ encryptDecrypt ({ CKM_DES3_CBC_PAD,NULL_PTR, 0 } ,blockSize,hSessionRO,hKey3,blockSize*NR_OF_BLOCKS_IN_TEST+1 );
1741
+ encryptDecrypt ({ CKM_DES3_CBC_PAD,NULL_PTR, 0 } ,blockSize,hSessionRO,hKey3,blockSize*NR_OF_BLOCKS_IN_TEST);
1742
+ encryptDecrypt ({ CKM_DES3_CBC,NULL_PTR, 0 } ,blockSize,hSessionRO,hKey3,blockSize*NR_OF_BLOCKS_IN_TEST);
1743
+ encryptDecrypt ({ CKM_DES3_CBC,NULL_PTR, 0 } ,blockSize,hSessionRO,hKey3,blockSize*NR_OF_BLOCKS_IN_TEST+1 , false );
1744
+ encryptDecrypt ({ CKM_DES3_ECB,NULL_PTR, 0 } ,blockSize,hSessionRO,hKey3,blockSize*NR_OF_BLOCKS_IN_TEST);
1745
+ encryptDecrypt ({ CKM_DES3_ECB,NULL_PTR, 0 } ,blockSize,hSessionRO,hKey3,blockSize*NR_OF_BLOCKS_IN_TEST+1 , false );
1752
1746
}
1753
1747
1754
1748
void SymmetricAlgorithmTests::testDesWrapUnwrap ()
0 commit comments