Skip to content

Commit 1bbcd50

Browse files
authored
Merge pull request #90 from LinuxJedi/find-crash
Fix bad memory access on C_FindObjects
2 parents 44702ce + 2af41ee commit 1bbcd50

3 files changed

Lines changed: 217 additions & 14 deletions

File tree

.github/workflows/build-workflow.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,10 @@ jobs:
9090
run: sudo make install
9191
- name: wolfpkcs11 make dist
9292
run: make dist
93+
- name: Run pkcs11test with ASAN LD_PRELOAD
94+
run: |
95+
export LD_PRELOAD=$(gcc -print-file-name=libasan.so):$LD_PRELOAD
96+
./tests/pkcs11test
9397
9498
# capture logs on failure
9599
- name: Upload failure logs

src/internal.c

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6541,7 +6541,7 @@ static int SecretObject_GetAttr(WP11_Object* object, CK_ATTRIBUTE_TYPE type,
65416541
int WP11_Object_GetAttr(WP11_Object* object, CK_ATTRIBUTE_TYPE type, byte* data,
65426542
CK_ULONG* len)
65436543
{
6544-
int ret = 0;
6544+
int ret = NOT_AVAILABLE_E;
65456545

65466546
if (object->onToken)
65476547
WP11_Lock_LockRO(object->lock);
@@ -6597,7 +6597,7 @@ int WP11_Object_GetAttr(WP11_Object* object, CK_ATTRIBUTE_TYPE type, byte* data,
65976597
ret = GetBool(CK_TRUE, data, len);
65986598
break;
65996599
case CKA_APPLICATION:
6600-
ret = NOT_AVAILABLE_E;
6600+
/* Not available */
66016601
break;
66026602
case CKA_ID:
66036603
ret = GetData(object->keyId, object->keyIdLen, data, len);
@@ -6606,15 +6606,19 @@ int WP11_Object_GetAttr(WP11_Object* object, CK_ATTRIBUTE_TYPE type, byte* data,
66066606
ret = GetULong(object->type, data, len);
66076607
break;
66086608
case CKA_START_DATE:
6609-
if (object->startDate[0] == '\0')
6609+
if (object->startDate[0] == '\0') {
66106610
*len = 0;
6611+
ret = CKR_OK;
6612+
}
66116613
else
66126614
ret = GetData((byte*)object->startDate,
66136615
sizeof(object->startDate), data, len);
66146616
break;
66156617
case CKA_END_DATE:
6616-
if (object->endDate[0] == '\0')
6618+
if (object->endDate[0] == '\0') {
66176619
*len = 0;
6620+
ret = CKR_OK;
6621+
}
66186622
else
66196623
ret = GetData((byte*)object->endDate, sizeof(object->endDate),
66206624
data, len);
@@ -6626,7 +6630,7 @@ int WP11_Object_GetAttr(WP11_Object* object, CK_ATTRIBUTE_TYPE type, byte* data,
66266630
ret = GetULong(object->keyGenMech, data, len);
66276631
break;
66286632
case CKA_ALLOWED_MECHANISMS:
6629-
ret = NOT_AVAILABLE_E;
6633+
/* Not available */
66306634
break;
66316635

66326636
case CKA_ENCRYPT:
@@ -6664,16 +6668,18 @@ int WP11_Object_GetAttr(WP11_Object* object, CK_ATTRIBUTE_TYPE type, byte* data,
66646668
break;
66656669

66666670
case CKA_SUBJECT:
6667-
ret = NOT_AVAILABLE_E;
6671+
/* Not available */
66686672
break;
66696673

66706674
default:
66716675
{
6672-
if ((object->objClass == CKO_CERTIFICATE) &&
6673-
(type == CKA_VALUE)) {
6674-
ret = GetData((byte*)object->data.cert.data,
6675-
object->data.cert.len, data, len);
6676-
break;
6676+
if (object->objClass == CKO_CERTIFICATE) {
6677+
switch (type) {
6678+
case CKA_VALUE:
6679+
ret = GetData((byte*)object->data.cert.data,
6680+
object->data.cert.len, data, len);
6681+
break;
6682+
}
66776683
}
66786684
else {
66796685
switch (object->type) {
@@ -6698,9 +6704,6 @@ int WP11_Object_GetAttr(WP11_Object* object, CK_ATTRIBUTE_TYPE type, byte* data,
66986704
case CKK_GENERIC_SECRET:
66996705
ret = SecretObject_GetAttr(object, type, data, len);
67006706
break;
6701-
default:
6702-
ret = NOT_AVAILABLE_E;
6703-
break;
67046707
}
67056708
break;
67066709
}

tests/pkcs11test.c

Lines changed: 196 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8138,6 +8138,199 @@ static CK_RV test_x509(void* args)
81388138
return ret;
81398139
}
81408140

8141+
#ifndef NO_RSA
8142+
/* Tests finding a CKA_MODULUS in a CKO_CERTIFICATE, which will always fail */
8143+
static CK_RV test_x509_cert_find_fail(void* args)
8144+
{
8145+
CK_SESSION_HANDLE session = *(CK_SESSION_HANDLE*)args;
8146+
CK_RV ret = CKR_OK;
8147+
CK_OBJECT_HANDLE hTest = 0;
8148+
CK_OBJECT_HANDLE hObjectFound = 0;
8149+
CK_ULONG ulObjectCount = 0;
8150+
8151+
CK_CERTIFICATE_TYPE certType = CKC_X_509;
8152+
CK_UTF8CHAR label[] = "A certificate object";
8153+
CK_BYTE subject[] = "C = US, ST = Montana, L = Bozeman, O = wolfSSL, "
8154+
"OU = Support, CN = www.wolfssl.com, emailAddress = info@wolfssl.com";
8155+
CK_BYTE id[] = {0x27, 0x8E, 0x67, 0x11, 0x74, 0xC3, 0x26, 0x1D, 0x3F, 0xED,
8156+
0x33, 0x63, 0xB3, 0xA4, 0xD8, 0x1D, 0x30, 0xE5, 0xE8, 0xD5
8157+
};
8158+
CK_BYTE certificate[] = { /* ./certs/server-cert.der, 2048-bit */
8159+
0x30, 0x82, 0x04, 0xE8, 0x30, 0x82, 0x03, 0xD0, 0xA0, 0x03,
8160+
0x02, 0x01, 0x02, 0x02, 0x01, 0x01, 0x30, 0x0D, 0x06, 0x09,
8161+
0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B, 0x05,
8162+
0x00, 0x30, 0x81, 0x94, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03,
8163+
0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30,
8164+
0x0E, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0C, 0x07, 0x4D, 0x6F,
8165+
0x6E, 0x74, 0x61, 0x6E, 0x61, 0x31, 0x10, 0x30, 0x0E, 0x06,
8166+
0x03, 0x55, 0x04, 0x07, 0x0C, 0x07, 0x42, 0x6F, 0x7A, 0x65,
8167+
0x6D, 0x61, 0x6E, 0x31, 0x11, 0x30, 0x0F, 0x06, 0x03, 0x55,
8168+
0x04, 0x0A, 0x0C, 0x08, 0x53, 0x61, 0x77, 0x74, 0x6F, 0x6F,
8169+
0x74, 0x68, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04,
8170+
0x0B, 0x0C, 0x0A, 0x43, 0x6F, 0x6E, 0x73, 0x75, 0x6C, 0x74,
8171+
0x69, 0x6E, 0x67, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55,
8172+
0x04, 0x03, 0x0C, 0x0F, 0x77, 0x77, 0x77, 0x2E, 0x77, 0x6F,
8173+
0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x31,
8174+
0x1F, 0x30, 0x1D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7,
8175+
0x0D, 0x01, 0x09, 0x01, 0x16, 0x10, 0x69, 0x6E, 0x66, 0x6F,
8176+
0x40, 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63,
8177+
0x6F, 0x6D, 0x30, 0x1E, 0x17, 0x0D, 0x32, 0x33, 0x31, 0x32,
8178+
0x31, 0x33, 0x32, 0x32, 0x31, 0x39, 0x32, 0x38, 0x5A, 0x17,
8179+
0x0D, 0x32, 0x36, 0x30, 0x39, 0x30, 0x38, 0x32, 0x32, 0x31,
8180+
0x39, 0x32, 0x38, 0x5A, 0x30, 0x81, 0x90, 0x31, 0x0B, 0x30,
8181+
0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53,
8182+
0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0C,
8183+
0x07, 0x4D, 0x6F, 0x6E, 0x74, 0x61, 0x6E, 0x61, 0x31, 0x10,
8184+
0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0C, 0x07, 0x42,
8185+
0x6F, 0x7A, 0x65, 0x6D, 0x61, 0x6E, 0x31, 0x10, 0x30, 0x0E,
8186+
0x06, 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x07, 0x77, 0x6F, 0x6C,
8187+
0x66, 0x53, 0x53, 0x4C, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03,
8188+
0x55, 0x04, 0x0B, 0x0C, 0x07, 0x53, 0x75, 0x70, 0x70, 0x6F,
8189+
0x72, 0x74, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04,
8190+
0x03, 0x0C, 0x0F, 0x77, 0x77, 0x77, 0x2E, 0x77, 0x6F, 0x6C,
8191+
0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x1F,
8192+
0x30, 0x1D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D,
8193+
0x01, 0x09, 0x01, 0x16, 0x10, 0x69, 0x6E, 0x66, 0x6F, 0x40,
8194+
0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F,
8195+
0x6D, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0D, 0x06, 0x09, 0x2A,
8196+
0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00,
8197+
0x03, 0x82, 0x01, 0x0F, 0x00, 0x30, 0x82, 0x01, 0x0A, 0x02,
8198+
0x82, 0x01, 0x01, 0x00, 0xC0, 0x95, 0x08, 0xE1, 0x57, 0x41,
8199+
0xF2, 0x71, 0x6D, 0xB7, 0xD2, 0x45, 0x41, 0x27, 0x01, 0x65,
8200+
0xC6, 0x45, 0xAE, 0xF2, 0xBC, 0x24, 0x30, 0xB8, 0x95, 0xCE,
8201+
0x2F, 0x4E, 0xD6, 0xF6, 0x1C, 0x88, 0xBC, 0x7C, 0x9F, 0xFB,
8202+
0xA8, 0x67, 0x7F, 0xFE, 0x5C, 0x9C, 0x51, 0x75, 0xF7, 0x8A,
8203+
0xCA, 0x07, 0xE7, 0x35, 0x2F, 0x8F, 0xE1, 0xBD, 0x7B, 0xC0,
8204+
0x2F, 0x7C, 0xAB, 0x64, 0xA8, 0x17, 0xFC, 0xCA, 0x5D, 0x7B,
8205+
0xBA, 0xE0, 0x21, 0xE5, 0x72, 0x2E, 0x6F, 0x2E, 0x86, 0xD8,
8206+
0x95, 0x73, 0xDA, 0xAC, 0x1B, 0x53, 0xB9, 0x5F, 0x3F, 0xD7,
8207+
0x19, 0x0D, 0x25, 0x4F, 0xE1, 0x63, 0x63, 0x51, 0x8B, 0x0B,
8208+
0x64, 0x3F, 0xAD, 0x43, 0xB8, 0xA5, 0x1C, 0x5C, 0x34, 0xB3,
8209+
0xAE, 0x00, 0xA0, 0x63, 0xC5, 0xF6, 0x7F, 0x0B, 0x59, 0x68,
8210+
0x78, 0x73, 0xA6, 0x8C, 0x18, 0xA9, 0x02, 0x6D, 0xAF, 0xC3,
8211+
0x19, 0x01, 0x2E, 0xB8, 0x10, 0xE3, 0xC6, 0xCC, 0x40, 0xB4,
8212+
0x69, 0xA3, 0x46, 0x33, 0x69, 0x87, 0x6E, 0xC4, 0xBB, 0x17,
8213+
0xA6, 0xF3, 0xE8, 0xDD, 0xAD, 0x73, 0xBC, 0x7B, 0x2F, 0x21,
8214+
0xB5, 0xFD, 0x66, 0x51, 0x0C, 0xBD, 0x54, 0xB3, 0xE1, 0x6D,
8215+
0x5F, 0x1C, 0xBC, 0x23, 0x73, 0xD1, 0x09, 0x03, 0x89, 0x14,
8216+
0xD2, 0x10, 0xB9, 0x64, 0xC3, 0x2A, 0xD0, 0xA1, 0x96, 0x4A,
8217+
0xBC, 0xE1, 0xD4, 0x1A, 0x5B, 0xC7, 0xA0, 0xC0, 0xC1, 0x63,
8218+
0x78, 0x0F, 0x44, 0x37, 0x30, 0x32, 0x96, 0x80, 0x32, 0x23,
8219+
0x95, 0xA1, 0x77, 0xBA, 0x13, 0xD2, 0x97, 0x73, 0xE2, 0x5D,
8220+
0x25, 0xC9, 0x6A, 0x0D, 0xC3, 0x39, 0x60, 0xA4, 0xB4, 0xB0,
8221+
0x69, 0x42, 0x42, 0x09, 0xE9, 0xD8, 0x08, 0xBC, 0x33, 0x20,
8222+
0xB3, 0x58, 0x22, 0xA7, 0xAA, 0xEB, 0xC4, 0xE1, 0xE6, 0x61,
8223+
0x83, 0xC5, 0xD2, 0x96, 0xDF, 0xD9, 0xD0, 0x4F, 0xAD, 0xD7,
8224+
0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x82, 0x01, 0x45, 0x30,
8225+
0x82, 0x01, 0x41, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E,
8226+
0x04, 0x16, 0x04, 0x14, 0xB3, 0x11, 0x32, 0xC9, 0x92, 0x98,
8227+
0x84, 0xE2, 0xC9, 0xF8, 0xD0, 0x3B, 0x6E, 0x03, 0x42, 0xCA,
8228+
0x1F, 0x0E, 0x8E, 0x3C, 0x30, 0x81, 0xD4, 0x06, 0x03, 0x55,
8229+
0x1D, 0x23, 0x04, 0x81, 0xCC, 0x30, 0x81, 0xC9, 0x80, 0x14,
8230+
0x27, 0x8E, 0x67, 0x11, 0x74, 0xC3, 0x26, 0x1D, 0x3F, 0xED,
8231+
0x33, 0x63, 0xB3, 0xA4, 0xD8, 0x1D, 0x30, 0xE5, 0xE8, 0xD5,
8232+
0xA1, 0x81, 0x9A, 0xA4, 0x81, 0x97, 0x30, 0x81, 0x94, 0x31,
8233+
0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
8234+
0x55, 0x53, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04,
8235+
0x08, 0x0C, 0x07, 0x4D, 0x6F, 0x6E, 0x74, 0x61, 0x6E, 0x61,
8236+
0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0C,
8237+
0x07, 0x42, 0x6F, 0x7A, 0x65, 0x6D, 0x61, 0x6E, 0x31, 0x11,
8238+
0x30, 0x0F, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x08, 0x53,
8239+
0x61, 0x77, 0x74, 0x6F, 0x6F, 0x74, 0x68, 0x31, 0x13, 0x30,
8240+
0x11, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x0A, 0x43, 0x6F,
8241+
0x6E, 0x73, 0x75, 0x6C, 0x74, 0x69, 0x6E, 0x67, 0x31, 0x18,
8242+
0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x0F, 0x77,
8243+
0x77, 0x77, 0x2E, 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C,
8244+
0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x09,
8245+
0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x01, 0x16,
8246+
0x10, 0x69, 0x6E, 0x66, 0x6F, 0x40, 0x77, 0x6F, 0x6C, 0x66,
8247+
0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x82, 0x14, 0x33,
8248+
0x44, 0x1A, 0xA8, 0x6C, 0x01, 0xEC, 0xF6, 0x60, 0xF2, 0x70,
8249+
0x51, 0x0A, 0x4C, 0xD1, 0x14, 0xFA, 0xBC, 0xE9, 0x44, 0x30,
8250+
0x0C, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x04, 0x05, 0x30, 0x03,
8251+
0x01, 0x01, 0xFF, 0x30, 0x1C, 0x06, 0x03, 0x55, 0x1D, 0x11,
8252+
0x04, 0x15, 0x30, 0x13, 0x82, 0x0B, 0x65, 0x78, 0x61, 0x6D,
8253+
0x70, 0x6C, 0x65, 0x2E, 0x63, 0x6F, 0x6D, 0x87, 0x04, 0x7F,
8254+
0x00, 0x00, 0x01, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x25,
8255+
0x04, 0x16, 0x30, 0x14, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05,
8256+
0x05, 0x07, 0x03, 0x01, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05,
8257+
0x05, 0x07, 0x03, 0x02, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86,
8258+
0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B, 0x05, 0x00, 0x03,
8259+
0x82, 0x01, 0x01, 0x00, 0x4A, 0xFF, 0xB9, 0xE5, 0x85, 0x9B,
8260+
0xDA, 0x53, 0x66, 0x7F, 0x07, 0x22, 0xBF, 0xB6, 0x19, 0xEA,
8261+
0x42, 0xEB, 0xA4, 0x11, 0x07, 0x62, 0xFF, 0x39, 0x5F, 0x33,
8262+
0x37, 0x3A, 0x87, 0x26, 0x71, 0x3D, 0x13, 0xB2, 0xCA, 0xB8,
8263+
0x64, 0x38, 0x7B, 0x8A, 0x99, 0x48, 0x0E, 0xA5, 0xA4, 0x6B,
8264+
0xB1, 0x99, 0x6E, 0xE0, 0x46, 0x51, 0xBD, 0x19, 0x52, 0xAD,
8265+
0xBC, 0xA6, 0x7E, 0x2A, 0x7A, 0x7C, 0x23, 0xA7, 0xCC, 0xDB,
8266+
0x5E, 0x43, 0x7D, 0x6B, 0x04, 0xC8, 0xB7, 0xDD, 0x95, 0xAD,
8267+
0xF0, 0x91, 0x80, 0x59, 0xC5, 0x19, 0x91, 0x26, 0x27, 0x91,
8268+
0xB8, 0x48, 0x1C, 0xEB, 0x55, 0xB6, 0xAA, 0x7D, 0xA4, 0x38,
8269+
0xF1, 0x03, 0xBC, 0x6C, 0x8B, 0xAA, 0x94, 0xD6, 0x3C, 0x05,
8270+
0x7A, 0x96, 0xC5, 0x06, 0xF1, 0x26, 0x14, 0x2E, 0x75, 0xFB,
8271+
0xDD, 0xE5, 0x35, 0xB3, 0x01, 0x2C, 0xB3, 0xAD, 0x62, 0x5A,
8272+
0x21, 0x9A, 0x08, 0xBE, 0x56, 0xFC, 0xF9, 0xA2, 0x42, 0x87,
8273+
0x86, 0xE5, 0xA9, 0xC5, 0x99, 0xCF, 0xAE, 0x14, 0xBE, 0xE0,
8274+
0xB9, 0x08, 0x24, 0x0D, 0x1D, 0x5C, 0xD6, 0x14, 0xE1, 0x4C,
8275+
0x9F, 0x40, 0xB3, 0xA9, 0xE9, 0x2D, 0x52, 0x8B, 0x4C, 0xBF,
8276+
0xAC, 0x44, 0x31, 0x67, 0xC1, 0x8D, 0x06, 0x85, 0xEC, 0x0F,
8277+
0xE4, 0x99, 0xD7, 0x4B, 0x7B, 0x21, 0x06, 0x66, 0xD4, 0xE4,
8278+
0xF5, 0x9D, 0xFF, 0x8E, 0xF0, 0x86, 0x39, 0x58, 0x1D, 0xA4,
8279+
0x5B, 0xE2, 0x63, 0xEF, 0x7C, 0xC9, 0x18, 0x87, 0xA8, 0x02,
8280+
0x25, 0x10, 0x3E, 0x87, 0x28, 0xF9, 0xF5, 0xEF, 0x47, 0x9E,
8281+
0xA5, 0x80, 0x08, 0x11, 0x90, 0x68, 0xFE, 0xD1, 0xA3, 0xA8,
8282+
0x51, 0xB9, 0x37, 0xFF, 0xD5, 0xCA, 0x7C, 0x87, 0x7F, 0x6B,
8283+
0xBC, 0x2C, 0x12, 0xC8, 0xC5, 0x85, 0x8B, 0xFC, 0x0C, 0xC6,
8284+
0xB9, 0x86, 0xB8, 0xC9, 0x04, 0xC3, 0x51, 0x37, 0xD2, 0x4F
8285+
};
8286+
CK_ATTRIBUTE tmpl[] = {
8287+
{ CKA_CLASS, &certificateClass, sizeof(certificateClass) },
8288+
{ CKA_CERTIFICATE_TYPE, &certType, sizeof(certType) },
8289+
{ CKA_TOKEN, &ckTrue, sizeof(ckTrue) },
8290+
{ CKA_LABEL, label, sizeof(label)-1 },
8291+
{ CKA_SUBJECT, subject, sizeof(subject)-1 },
8292+
{ CKA_ID, id, sizeof(id) },
8293+
{ CKA_VALUE, certificate, sizeof(certificate) },
8294+
};
8295+
8296+
ret = funcList->C_CreateObject(session, tmpl,
8297+
sizeof(tmpl) / sizeof(CK_ATTRIBUTE), &hTest);
8298+
CHECK_CKR(ret, "Create certificate object");
8299+
8300+
if (ret == CKR_OK) {
8301+
CK_BYTE dummyModulus[] = { 0x00, 0x01, 0x02 };
8302+
8303+
CK_ATTRIBUTE aSearchAttributes[] = {
8304+
{ CKA_KEY_TYPE, &rsaKeyType, sizeof(rsaKeyType) },
8305+
{ CKA_MODULUS, dummyModulus, sizeof(dummyModulus) },
8306+
{ CKA_CERTIFICATE_TYPE, &certType, sizeof(certType) }
8307+
};
8308+
8309+
ret = funcList->C_FindObjectsInit(session, aSearchAttributes,
8310+
sizeof(aSearchAttributes) /
8311+
sizeof(CK_ATTRIBUTE));
8312+
CHECK_CKR(ret, "C_FindObjectsInit");
8313+
}
8314+
if (ret == CKR_OK) {
8315+
ret = funcList->C_FindObjects(session, &hObjectFound, 1,
8316+
&ulObjectCount);
8317+
CHECK_CKR(ret, "C_FindObjects");
8318+
}
8319+
8320+
if (ret == CKR_OK) {
8321+
CHECK_COND(ulObjectCount == 0, ret, "Objects found");
8322+
}
8323+
8324+
if (ret == CKR_OK) {
8325+
ret = funcList->C_FindObjectsFinal(session);
8326+
CHECK_CKR(ret, "C_FindObjectsFinal");
8327+
}
8328+
8329+
funcList->C_DestroyObject(session, hTest);
8330+
8331+
return ret;
8332+
}
8333+
#endif
81418334

81428335
static CK_RV test_x509_find_by_type(void* args)
81438336
{
@@ -8679,6 +8872,9 @@ static TEST_FUNC testFunc[] = {
86798872
#endif
86808873
PKCS11TEST_FUNC_SESS_DECL(test_random),
86818874
PKCS11TEST_FUNC_SESS_DECL(test_x509),
8875+
#ifndef NO_RSA
8876+
PKCS11TEST_FUNC_SESS_DECL(test_x509_cert_find_fail),
8877+
#endif
86828878
PKCS11TEST_FUNC_SESS_DECL(test_x509_find_by_type),
86838879
};
86848880
static int testFuncCnt = sizeof(testFunc) / sizeof(*testFunc);

0 commit comments

Comments
 (0)