@@ -1099,7 +1099,7 @@ void SymmetricAlgorithmTests::aesWrapUnwrapGeneric(CK_MECHANISM_TYPE mechanismTy
10991099
11001100 CK_RV rv;
11011101 CK_BYTE ivPtr[16 ];
1102- if ( mechanismType == CKM_AES_CBC_PAD ) {
1102+ if ( mechanismType == CKM_AES_CBC_PAD || mechanismType == CKM_AES_CBC ) {
11031103 rv = CRYPTOKI_F_PTR ( C_GenerateRandom (hSession, ivPtr, sizeof ivPtr) );
11041104 CPPUNIT_ASSERT (rv == CKR_OK );
11051105 mechanism.pParameter = ivPtr;
@@ -1148,7 +1148,12 @@ void SymmetricAlgorithmTests::aesWrapUnwrapGeneric(CK_MECHANISM_TYPE mechanismTy
11481148 CPPUNIT_ASSERT (rv == CKR_OK );
11491149
11501150 auto wrapOverhead = [mechanismType]() {
1151- return (mechanismType == CKM_AES_KEY_WRAP || mechanismType == CKM_AES_KEY_WRAP_PAD ) ? 8 : 16 ;
1151+ if (mechanismType == CKM_AES_KEY_WRAP || mechanismType == CKM_AES_KEY_WRAP_PAD )
1152+ return 8 ;
1153+ else if (mechanismType == CKM_AES_CBC )
1154+ return 0 ; // No padding overhead for CKM_AES_CBC
1155+ else
1156+ return 16 ; // CKM_AES_CBC_PAD adds padding
11521157 };
11531158 CPPUNIT_ASSERT (wrappedLen == rndKeyLen + wrapOverhead () );
11541159
@@ -1199,7 +1204,7 @@ void SymmetricAlgorithmTests::aesWrapUnwrapNonModifiableGeneric(CK_MECHANISM_TYP
11991204
12001205 CK_RV rv;
12011206 CK_BYTE ivPtr[16 ];
1202- if ( mechanismType == CKM_AES_CBC_PAD ) {
1207+ if ( mechanismType == CKM_AES_CBC_PAD || mechanismType == CKM_AES_CBC ) {
12031208 rv = CRYPTOKI_F_PTR ( C_GenerateRandom (hSession, ivPtr, sizeof ivPtr) );
12041209 CPPUNIT_ASSERT (rv == CKR_OK );
12051210 mechanism.pParameter = ivPtr;
@@ -1248,7 +1253,12 @@ void SymmetricAlgorithmTests::aesWrapUnwrapNonModifiableGeneric(CK_MECHANISM_TYP
12481253 CPPUNIT_ASSERT (rv == CKR_OK );
12491254
12501255 auto wrapOverhead = [mechanismType]() {
1251- return (mechanismType == CKM_AES_KEY_WRAP || mechanismType == CKM_AES_KEY_WRAP_PAD ) ? 8 : 16 ;
1256+ if (mechanismType == CKM_AES_KEY_WRAP || mechanismType == CKM_AES_KEY_WRAP_PAD )
1257+ return 8 ;
1258+ else if (mechanismType == CKM_AES_CBC )
1259+ return 0 ; // No padding overhead for CKM_AES_CBC
1260+ else
1261+ return 16 ; // CKM_AES_CBC_PAD adds padding
12521262 };
12531263 CPPUNIT_ASSERT (wrappedLen == rndKeyLen + wrapOverhead () );
12541264
@@ -1322,13 +1332,14 @@ void SymmetricAlgorithmTests::wrapUnwrapRsa(CK_MECHANISM_TYPE mechanismType, CK_
13221332
13231333 CK_BYTE ivPtr[16 ];
13241334 switch (mechanismType) {
1335+ case CKM_AES_CBC :
13251336 case CKM_AES_CBC_PAD :
13261337 case CKM_DES_CBC_PAD :
13271338 case CKM_DES3_CBC_PAD :
13281339 rv = CRYPTOKI_F_PTR ( C_GenerateRandom (hSession, ivPtr, sizeof ivPtr) );
13291340 CPPUNIT_ASSERT (rv == CKR_OK );
13301341 mechanism.pParameter = ivPtr;
1331- mechanism.ulParameterLen = mechanismType == CKM_AES_CBC_PAD ? 16 : 8 ;
1342+ mechanism.ulParameterLen = ( mechanismType == CKM_AES_CBC_PAD || mechanismType == CKM_AES_CBC ) ? 16 : 8 ;
13321343 // falls through
13331344 }
13341345
@@ -1756,8 +1767,10 @@ void SymmetricAlgorithmTests::testAesWrapUnwrap()
17561767
17571768 aesWrapUnwrapGeneric (CKM_AES_KEY_WRAP , hSession, hKey);
17581769 aesWrapUnwrapGeneric (CKM_AES_CBC_PAD , hSession, hKey);
1770+ aesWrapUnwrapGeneric (CKM_AES_CBC , hSession, hKey);
17591771 aesWrapUnwrapNonModifiableGeneric (CKM_AES_KEY_WRAP , hSession, hKey);
17601772 aesWrapUnwrapNonModifiableGeneric (CKM_AES_CBC_PAD , hSession, hKey);
1773+ aesWrapUnwrapNonModifiableGeneric (CKM_AES_CBC , hSession, hKey);
17611774 aesWrapUnwrapRsa (CKM_AES_KEY_WRAP , hSession, hKey);
17621775 aesWrapUnwrapRsa (CKM_AES_CBC_PAD , hSession, hKey);
17631776
0 commit comments