static
void testGetSetRevocationCheckers(
        PKIX_ProcessingParams *goodObject,
        PKIX_ProcessingParams *equalObject){

        PKIX_RevocationChecker *checker = NULL;
        PKIX_List *setCheckersList = NULL;
        PKIX_List *getCheckersList = NULL;
        PKIX_PL_Date *date = NULL;
        char *asciiDate = "040329134847Z";

        PKIX_TEST_STD_VARS();
        subTest("PKIX_ProcessingParams_Get/SetRevocationCheckers");

        date = createDate(asciiDate, plContext);

        PKIX_TEST_EXPECT_NO_ERROR(PKIX_RevocationChecker_Create
                    (userChecker2cb,
                    (PKIX_PL_Object *) date,
                    &checker,
                    plContext));

        PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_Create
                (&setCheckersList, plContext));

        PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_AppendItem
                    (setCheckersList,
                    (PKIX_PL_Object *) checker,
                    plContext));
        PKIX_TEST_DECREF_BC(checker);

        PKIX_TEST_EXPECT_NO_ERROR(PKIX_ProcessingParams_SetRevocationCheckers
                    (goodObject, setCheckersList, plContext));

        PKIX_TEST_EXPECT_NO_ERROR(PKIX_RevocationChecker_Create
                    (userChecker2cb,
                    (PKIX_PL_Object *) date,
                    &checker,
                    plContext));

        PKIX_TEST_EXPECT_NO_ERROR(PKIX_ProcessingParams_AddRevocationChecker
                    (goodObject, checker, plContext));

        PKIX_TEST_EXPECT_NO_ERROR(PKIX_ProcessingParams_GetRevocationCheckers
                    (goodObject, &getCheckersList, plContext));

cleanup:

        PKIX_TEST_DECREF_AC(setCheckersList);
        PKIX_TEST_DECREF_AC(getCheckersList);
        PKIX_TEST_DECREF_AC(date);
        PKIX_TEST_DECREF_BC(checker);

        PKIX_TEST_RETURN();
}
Exemple #2
0
PKIX_Error *
PKIX_OcspChecker_Initialize(
    PKIX_PL_Date *validityTime,
    void *passwordInfo,
    void *responder,
    PKIX_RevocationChecker **pChecker,
    void *plContext)
{
    PKIX_OcspChecker *oChecker = NULL;

    PKIX_ENTER(OCSPCHECKER, "PKIX_OcspChecker_Initialize");
    PKIX_NULLCHECK_ONE(pChecker);

    PKIX_CHECK(pkix_OcspChecker_Create
               (validityTime, passwordInfo, responder, &oChecker, plContext),
               PKIX_OCSPCHECKERCREATEFAILED);

    PKIX_CHECK(PKIX_RevocationChecker_Create
               (pkix_OcspChecker_Check,
                (PKIX_PL_Object *)oChecker,
                pChecker,
                plContext),
               PKIX_REVOCATIONCHECKERCREATEFAILED);

cleanup:

    PKIX_DECREF(oChecker);

    PKIX_RETURN(OCSPCHECKER);
}
/*
 * FUNCTION: pkix_RevocationChecker_Duplicate
 * (see comments for PKIX_PL_DuplicateCallback in pkix_pl_system.h)
 */
static PKIX_Error *
pkix_RevocationChecker_Duplicate(
        PKIX_PL_Object *object,
        PKIX_PL_Object **pNewObject,
        void *plContext)
{
        PKIX_RevocationChecker *checker = NULL;
        PKIX_RevocationChecker *checkerDuplicate = NULL;
        PKIX_List *dupLeafList = NULL;
        PKIX_List *dupChainList = NULL;

        PKIX_ENTER(REVOCATIONCHECKER, "pkix_RevocationChecker_Duplicate");
        PKIX_NULLCHECK_TWO(object, pNewObject);

        PKIX_CHECK(pkix_CheckType
                    (object, PKIX_REVOCATIONCHECKER_TYPE, plContext),
                    PKIX_OBJECTNOTCERTCHAINCHECKER);

        checker = (PKIX_RevocationChecker *)object;

        if (checker->leafMethodList){
                PKIX_CHECK(PKIX_PL_Object_Duplicate
                            ((PKIX_PL_Object *)checker->leafMethodList,
                            (PKIX_PL_Object **)&dupLeafList,
                            plContext),
                            PKIX_OBJECTDUPLICATEFAILED);
        }
        if (checker->chainMethodList){
                PKIX_CHECK(PKIX_PL_Object_Duplicate
                            ((PKIX_PL_Object *)checker->chainMethodList,
                            (PKIX_PL_Object **)&dupChainList,
                            plContext),
                            PKIX_OBJECTDUPLICATEFAILED);
        }

        PKIX_CHECK(
            PKIX_RevocationChecker_Create(checker->leafMethodListFlags,
                                          checker->chainMethodListFlags,
                                          &checkerDuplicate,
                                          plContext),
            PKIX_REVOCATIONCHECKERCREATEFAILED);

        checkerDuplicate->leafMethodList = dupLeafList;
        checkerDuplicate->chainMethodList = dupChainList;
        dupLeafList = NULL;
        dupChainList = NULL;

        *pNewObject = (PKIX_PL_Object *)checkerDuplicate;

cleanup:
        PKIX_DECREF(dupLeafList);
        PKIX_DECREF(dupChainList);

        PKIX_RETURN(REVOCATIONCHECKER);
}
/*
 * FUNCTION: pkix_RevocationChecker_Duplicate
 * (see comments for PKIX_PL_DuplicateCallback in pkix_pl_system.h)
 */
static PKIX_Error *
pkix_RevocationChecker_Duplicate(
        PKIX_PL_Object *object,
        PKIX_PL_Object **pNewObject,
        void *plContext)
{
        PKIX_RevocationChecker *checker = NULL;
        PKIX_RevocationChecker *checkerDuplicate = NULL;
        PKIX_PL_Object *contextDuplicate = NULL;

        PKIX_ENTER(REVOCATIONCHECKER, "pkix_RevocationChecker_Duplicate");
        PKIX_NULLCHECK_TWO(object, pNewObject);

        PKIX_CHECK(pkix_CheckType
                    (object, PKIX_REVOCATIONCHECKER_TYPE, plContext),
                    PKIX_OBJECTNOTCERTCHAINCHECKER);

        checker = (PKIX_RevocationChecker *)object;

        if (checker->revCheckerContext){
                PKIX_CHECK(PKIX_PL_Object_Duplicate
                            ((PKIX_PL_Object *)checker->revCheckerContext,
                            (PKIX_PL_Object **)&contextDuplicate,
                            plContext),
                            PKIX_OBJECTDUPLICATEFAILED);
        }

        PKIX_CHECK(PKIX_RevocationChecker_Create
                    (checker->checkCallback,
                    contextDuplicate,
                    &checkerDuplicate,
                    plContext),
                    PKIX_REVOCATIONCHECKERCREATEFAILED);

        *pNewObject = (PKIX_PL_Object *)checkerDuplicate;

cleanup:

        PKIX_DECREF(contextDuplicate);

        PKIX_RETURN(REVOCATIONCHECKER);
}