static PKIX_PL_Cert * createCert(char *inFileName) { PKIX_PL_ByteArray *byteArray = NULL; void *buf = NULL; PRFileDesc *inFile = NULL; PKIX_UInt32 len; SECItem certDER; SECStatus rv; /* default: NULL cert (failure case) */ PKIX_PL_Cert *cert = NULL; PKIX_TEST_STD_VARS(); certDER.data = NULL; inFile = PR_Open(inFileName, PR_RDONLY, 0); if (!inFile){ pkixTestErrorMsg = "Unable to open cert file"; goto cleanup; } else { rv = SECU_ReadDERFromFile(&certDER, inFile, PR_FALSE); if (!rv){ buf = (void *)certDER.data; len = certDER.len; PKIX_TEST_EXPECT_NO_ERROR (PKIX_PL_ByteArray_Create (buf, len, &byteArray, plContext)); PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Cert_Create (byteArray, &cert, plContext)); SECITEM_FreeItem(&certDER, PR_FALSE); } else { pkixTestErrorMsg = "Unable to read DER from cert file"; goto cleanup; } } cleanup: if (inFile){ PR_Close(inFile); } if (PKIX_TEST_ERROR_RECEIVED){ SECITEM_FreeItem(&certDER, PR_FALSE); } PKIX_TEST_DECREF_AC(byteArray); PKIX_TEST_RETURN(); return (cert); }
static void test_SubjKeyId_AuthKeyId(void) { PKIX_ComCertSelParams *goodParams = NULL; PKIX_PL_ByteArray *setKeyId = NULL; PKIX_PL_ByteArray *getKeyId = NULL; PKIX_Boolean isEqual = PKIX_FALSE; PKIX_TEST_STD_VARS(); /* Subject Key Identifier */ subTest("PKIX_PL_ByteArray_Create"); PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_ByteArray_Create((void *)"66099", 1, &setKeyId, plContext)); subTest("PKIX_ComCertSelParams_Create"); PKIX_TEST_EXPECT_NO_ERROR(PKIX_ComCertSelParams_Create(&goodParams, plContext)); subTest("PKIX_ComCertSelParams_SetSubjectKeyIdentifier"); PKIX_TEST_EXPECT_NO_ERROR(PKIX_ComCertSelParams_SetSubjKeyIdentifier(goodParams, setKeyId, plContext)); subTest("PKIX_ComCertSelParams_GetSubjectKeyIdentifier"); PKIX_TEST_EXPECT_NO_ERROR(PKIX_ComCertSelParams_GetSubjKeyIdentifier(goodParams, &getKeyId, plContext)); PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Object_Equals((PKIX_PL_Object *)setKeyId, (PKIX_PL_Object *)getKeyId, &isEqual, plContext)); if (isEqual == PKIX_FALSE) { testError("unexpected Subject Key Id mismatch <expect equal>"); } PKIX_TEST_DECREF_BC(setKeyId); PKIX_TEST_DECREF_BC(getKeyId); /* Authority Key Identifier */ subTest("PKIX_PL_ByteArray_Create"); PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_ByteArray_Create((void *)"11022", 1, &setKeyId, plContext)); subTest("PKIX_ComCertSelParams_SetAuthorityKeyIdentifier"); PKIX_TEST_EXPECT_NO_ERROR(PKIX_ComCertSelParams_SetAuthorityKeyIdentifier(goodParams, setKeyId, plContext)); subTest("PKIX_ComCertSelParams_GetAuthorityKeyIdentifier"); PKIX_TEST_EXPECT_NO_ERROR(PKIX_ComCertSelParams_GetAuthorityKeyIdentifier(goodParams, &getKeyId, plContext)); PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Object_Equals((PKIX_PL_Object *)setKeyId, (PKIX_PL_Object *)getKeyId, &isEqual, plContext)); if (isEqual == PKIX_FALSE) { testError("unexpected Auth Key Id mismatch <expect equal>"); } cleanup: PKIX_TEST_DECREF_AC(setKeyId); PKIX_TEST_DECREF_AC(getKeyId); PKIX_TEST_DECREF_AC(goodParams); PKIX_TEST_RETURN(); }
PKIX_PL_CRL * createCRL( char *dirName, char *crlFileName, void *plContext) { PKIX_PL_ByteArray *byteArray = NULL; PKIX_PL_CRL *crl = NULL; PKIX_Error *error = NULL; PRFileDesc *inFile = NULL; SECItem crlDER; void *buf = NULL; PKIX_UInt32 len; SECStatus rv; char *pathName = NULL; PKIX_TEST_STD_VARS(); crlDER.data = NULL; pathName = catDirName(dirName, crlFileName, plContext); inFile = PR_Open(pathName, PR_RDONLY, 0); if (!inFile){ pkixTestErrorMsg = "Unable to open crl file"; goto cleanup; } else { rv = SECU_ReadDERFromFile(&crlDER, inFile, PR_FALSE); if (!rv){ buf = (void *)crlDER.data; len = crlDER.len; error = PKIX_PL_ByteArray_Create (buf, len, &byteArray, plContext); if (error){ pkixTestErrorMsg = "PKIX_PL_ByteArray_Create failed"; goto cleanup; } error = PKIX_PL_CRL_Create(byteArray, &crl, plContext); if (error){ pkixTestErrorMsg = "PKIX_PL_Crl_Create failed"; goto cleanup; } SECITEM_FreeItem(&crlDER, PR_FALSE); } else { pkixTestErrorMsg = "Unable to read DER from crl file"; goto cleanup; } } cleanup: PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Free(pathName, plContext)); if (inFile){ PR_Close(inFile); } if (error){ SECITEM_FreeItem(&crlDER, PR_FALSE); } PKIX_TEST_DECREF_AC(byteArray); PKIX_TEST_RETURN(); return (crl); }
/* * FUNCTION: pkix_pl_CollectionCertStoreContext_CreateCRL * DESCRIPTION: * * Creates CRL using data file path name pointed to by "crlFileName" and * stores it at "pCrl". If the CRL can not be decoded, NULL is stored * at "pCrl". * * PARAMETERS * "crlFileName" - Address of CRL data file path name. Must be non-NULL. * "pCrl" - Address where object pointer will be stored. Must be non-NULL. * "plContext" - Platform-specific context pointer. * THREAD SAFETY: * Thread Safe (see Thread Safety Definitions in Programmer's Guide) * RETURNS: * Returns NULL if the function succeeds. * Returns a CollectionCertStoreContext Error if the function fails in * a non-fatal way. * Returns a Fatal Error if the function fails in an unrecoverable way. */ static PKIX_Error * pkix_pl_CollectionCertStoreContext_CreateCRL( const char *crlFileName, PKIX_PL_CRL **pCrl, void *plContext) { PKIX_PL_ByteArray *byteArray = NULL; PKIX_PL_CRL *crl = NULL; PRFileDesc *inFile = NULL; SECItem crlDER; void *buf = NULL; PKIX_UInt32 len; SECStatus rv; PKIX_ENTER(COLLECTIONCERTSTORECONTEXT, "pkix_pl_CollectionCertStoreContext_CreateCRL"); PKIX_NULLCHECK_TWO(crlFileName, pCrl); *pCrl = NULL; crlDER.data = NULL; PKIX_COLLECTIONCERTSTORECONTEXT_DEBUG("\t\t Calling PR_Open.\n"); inFile = PR_Open(crlFileName, PR_RDONLY, 0); if (!inFile){ PKIX_ERROR(PKIX_UNABLETOOPENCRLFILE); } else { PKIX_COLLECTIONCERTSTORECONTEXT_DEBUG ("\t\t Calling SECU_ReadDerFromFile.\n"); rv = SECU_ReadDERFromFile(&crlDER, inFile, PR_FALSE); if (!rv){ buf = (void *)crlDER.data; len = crlDER.len; PKIX_CHECK(PKIX_PL_ByteArray_Create (buf, len, &byteArray, plContext), PKIX_BYTEARRAYCREATEFAILED); PKIX_CHECK(PKIX_PL_CRL_Create (byteArray, &crl, plContext), PKIX_CRLCREATEFAILED); PKIX_COLLECTIONCERTSTORECONTEXT_DEBUG ("\t\t Calling SECITEM_FreeItem.\n"); SECITEM_FreeItem(&crlDER, PR_FALSE); } else { PKIX_ERROR(PKIX_UNABLETOREADDERFROMCRLFILE); } } *pCrl = crl; cleanup: if (inFile){ PKIX_COLLECTIONCERTSTORECONTEXT_DEBUG ("\t\t Calling PR_CloseDir.\n"); PR_Close(inFile); } if (PKIX_ERROR_RECEIVED){ PKIX_COLLECTIONCERTSTORECONTEXT_DEBUG ("\t\t Calling SECITEM_FreeItem).\n"); SECITEM_FreeItem(&crlDER, PR_FALSE); PKIX_DECREF(crl); if (crlDER.data != NULL) { SECITEM_FreeItem(&crlDER, PR_FALSE); } } PKIX_DECREF(byteArray); PKIX_RETURN(COLLECTIONCERTSTORECONTEXT); }
static PKIX_PL_Cert * createCert(char *inFileName) { PKIX_PL_ByteArray *byteArray = NULL; PKIX_PL_Cert *cert = NULL; PKIX_Error *error = NULL; PRFileDesc *inFile = NULL; SECItem certDER; void *buf = NULL; PKIX_UInt32 len; SECStatus rv = SECFailure; certDER.data = NULL; inFile = PR_Open(inFileName, PR_RDONLY, 0); if (!inFile){ printFailure("Unable to open cert file"); goto cleanup; } else { rv = SECU_ReadDERFromFile(&certDER, inFile, PR_FALSE); if (!rv){ buf = (void *)certDER.data; len = certDER.len; error = PKIX_PL_ByteArray_Create (buf, len, &byteArray, plContext); if (error){ printFailure("PKIX_PL_ByteArray_Create failed"); goto cleanup; } error = PKIX_PL_Cert_Create (byteArray, &cert, plContext); if (error){ printFailure("PKIX_PL_Cert_Create failed"); goto cleanup; } } else { printFailure("Unable to read DER from cert file"); goto cleanup; } } cleanup: if (inFile){ PR_Close(inFile); } if (rv == SECSuccess){ SECITEM_FreeItem(&certDER, PR_FALSE); } if (byteArray){ PKIX_PL_Object_DecRef((PKIX_PL_Object *)(byteArray), plContext); } return (cert); }