Skip to content

Commit 28c67fe

Browse files
authored
Merge pull request #664 from saper/aes_gcm_without_aad
AES GCM without additional authenticated data crashes SoftHSM, with thanks to @saper for the patch.
2 parents 4975c0d + bf71ad7 commit 28c67fe

File tree

5 files changed

+91
-88
lines changed

5 files changed

+91
-88
lines changed

.travis.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ before_install:
99
- sudo apt-get install build-essential autoconf automake libtool libcppunit-dev libsqlite3-dev sqlite3 libbotan-2-dev libssl-dev p11-kit
1010
script: sh testing/travis/travis.sh
1111
env:
12+
- CPP_LIBRARY_ASSERTIONS=yes CRYPTO=openssl OBJSTORE=file
1213
- CRYPTO=openssl OBJSTORE=file
1314
- CRYPTO=openssl OBJSTORE=sqlite
1415
- CRYPTO=botan OBJSTORE=file

src/lib/SoftHSM.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2346,7 +2346,8 @@ CK_RV SoftHSM::SymEncryptInit(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMech
23462346
iv.resize(CK_GCM_PARAMS_PTR(pMechanism->pParameter)->ulIvLen);
23472347
memcpy(&iv[0], CK_GCM_PARAMS_PTR(pMechanism->pParameter)->pIv, CK_GCM_PARAMS_PTR(pMechanism->pParameter)->ulIvLen);
23482348
aad.resize(CK_GCM_PARAMS_PTR(pMechanism->pParameter)->ulAADLen);
2349-
memcpy(&aad[0], CK_GCM_PARAMS_PTR(pMechanism->pParameter)->pAAD, CK_GCM_PARAMS_PTR(pMechanism->pParameter)->ulAADLen);
2349+
if (CK_GCM_PARAMS_PTR(pMechanism->pParameter)->ulAADLen > 0)
2350+
memcpy(&aad[0], CK_GCM_PARAMS_PTR(pMechanism->pParameter)->pAAD, CK_GCM_PARAMS_PTR(pMechanism->pParameter)->ulAADLen);
23502351
tagBytes = CK_GCM_PARAMS_PTR(pMechanism->pParameter)->ulTagBits;
23512352
if (tagBytes > 128 || tagBytes % 8 != 0)
23522353
{
@@ -3066,7 +3067,8 @@ CK_RV SoftHSM::SymDecryptInit(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMech
30663067
iv.resize(CK_GCM_PARAMS_PTR(pMechanism->pParameter)->ulIvLen);
30673068
memcpy(&iv[0], CK_GCM_PARAMS_PTR(pMechanism->pParameter)->pIv, CK_GCM_PARAMS_PTR(pMechanism->pParameter)->ulIvLen);
30683069
aad.resize(CK_GCM_PARAMS_PTR(pMechanism->pParameter)->ulAADLen);
3069-
memcpy(&aad[0], CK_GCM_PARAMS_PTR(pMechanism->pParameter)->pAAD, CK_GCM_PARAMS_PTR(pMechanism->pParameter)->ulAADLen);
3070+
if (CK_GCM_PARAMS_PTR(pMechanism->pParameter)->ulAADLen > 0)
3071+
memcpy(&aad[0], CK_GCM_PARAMS_PTR(pMechanism->pParameter)->pAAD, CK_GCM_PARAMS_PTR(pMechanism->pParameter)->ulAADLen);
30703072
tagBytes = CK_GCM_PARAMS_PTR(pMechanism->pParameter)->ulTagBits;
30713073
if (tagBytes > 128 || tagBytes % 8 != 0)
30723074
{

src/lib/test/SymmetricAlgorithmTests.cpp

Lines changed: 78 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -802,7 +802,7 @@ CK_RV SymmetricAlgorithmTests::generateDes3Key(CK_SESSION_HANDLE hSession, CK_BB
802802
}
803803

804804
void SymmetricAlgorithmTests::encryptDecrypt(
805-
const CK_MECHANISM_TYPE mechanismType,
805+
const CK_MECHANISM mechanism,
806806
const size_t blockSize,
807807
const CK_SESSION_HANDLE hSession,
808808
const CK_OBJECT_HANDLE hKey,
@@ -850,56 +850,10 @@ void SymmetricAlgorithmTests::encryptDecrypt(
850850

851851
CPPUNIT_ASSERT_EQUAL( (CK_RV)CKR_OK, CRYPTOKI_F_PTR( C_GenerateRandom(hSession, (CK_BYTE_PTR)&vData.front(), messageSize) ) );
852852

853-
const CK_MECHANISM mechanism = { mechanismType, NULL_PTR, 0 };
854853
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;
903857
}
904858

905859
// Single-part encryption
@@ -1568,6 +1522,43 @@ void SymmetricAlgorithmTests::testAesEncryptDecrypt()
15681522
CK_SESSION_HANDLE hSessionRO;
15691523
CK_SESSION_HANDLE hSessionRW;
15701524

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+
15711562
// Just make sure that we finalize any previous tests
15721563
CRYPTOKI_F_PTR( C_Finalize(NULL_PTR) );
15731564

@@ -1601,19 +1592,22 @@ void SymmetricAlgorithmTests::testAesEncryptDecrypt()
16011592
// with padding all message sizes could be encrypted-decrypted.
16021593
// without padding the message size must be a multiple of the block size.
16031594
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);
16171611
}
16181612

16191613

@@ -1713,27 +1707,27 @@ void SymmetricAlgorithmTests::testDesEncryptDecrypt()
17131707
rv = generateDesKey(hSessionRW,IN_SESSION,IS_PUBLIC,hKey);
17141708
CPPUNIT_ASSERT(rv == CKR_OK);
17151709

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);
17231717

17241718
CK_OBJECT_HANDLE hKey2 = CK_INVALID_HANDLE;
17251719

17261720
// Generate all combinations of session/token keys.
17271721
rv = generateDes2Key(hSessionRW,IN_SESSION,IS_PUBLIC,hKey2);
17281722
CPPUNIT_ASSERT(rv == CKR_OK);
17291723

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);
17371731
#endif
17381732

17391733
CK_OBJECT_HANDLE hKey3 = CK_INVALID_HANDLE;
@@ -1742,13 +1736,13 @@ void SymmetricAlgorithmTests::testDesEncryptDecrypt()
17421736
rv = generateDes3Key(hSessionRW,IN_SESSION,IS_PUBLIC,hKey3);
17431737
CPPUNIT_ASSERT(rv == CKR_OK);
17441738

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);
17521746
}
17531747

17541748
void SymmetricAlgorithmTests::testDesWrapUnwrap()

src/lib/test/SymmetricAlgorithmTests.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ class SymmetricAlgorithmTests : public TestsBase
7878
#endif
7979
CK_RV generateDes3Key(CK_SESSION_HANDLE hSession, CK_BBOOL bToken, CK_BBOOL bPrivate, CK_OBJECT_HANDLE &hKey);
8080
void encryptDecrypt(
81-
CK_MECHANISM_TYPE mechanismType,
81+
CK_MECHANISM mechanism,
8282
size_t sizeOfIV,
8383
CK_SESSION_HANDLE hSession,
8484
CK_OBJECT_HANDLE hKey,

testing/travis/travis.sh

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,14 @@
11
#!/bin/sh
22

3+
CONF_CPP_LIBRARY_ASSERTIONS=""
34
CONF_CRYPTO=""
45
CONF_OBJSTORE=""
56

7+
case $CPP_LIBRARY_ASSERTIONS in
8+
yes)
9+
CONF_CPP_LIBRARY_ASSERTIONS="$CONF_CPP_LIBRARY_ASSERTIONS -D_LIBCPP_DEBUG_LEVEL=1 -D_GLIBCXX_ASSERTIONS=1"
10+
esac
11+
612
case $CRYPTO in
713
botan)
814
CONF_CRYPTO="$CONF_CRYPTO --with-crypto-backend=botan --with-botan=/usr"
@@ -31,5 +37,5 @@ sqlite)
3137
esac
3238

3339
sh autogen.sh && \
34-
./configure $CONF_CRYPTO $CONF_OBJSTORE && \
40+
env CXXFLAGS="${CXXFLAGS} ${CONF_CPP_LIBRARY_ASSERTIONS}" ./configure $CONF_CRYPTO $CONF_OBJSTORE && \
3541
make all check

0 commit comments

Comments
 (0)