Back to index

lightning-sunbird  0.9+nobinonly
Functions
servget.c File Reference
#include "cmmf.h"
#include "cmmfi.h"
#include "secitem.h"
#include "keyhi.h"
#include "secder.h"

Go to the source code of this file.

Functions

CRMFEncryptedKeyChoice CRMF_EncryptedKeyGetChoice (CRMFEncryptedKey *inEncrKey)
CRMFEncryptedValue * CRMF_EncryptedKeyGetEncryptedValue (CRMFEncryptedKey *inEncrKey)
static SECItem * crmf_get_encvalue_bitstring (SECItem *srcItem)
SECItem * CRMF_EncryptedValueGetEncSymmKey (CRMFEncryptedValue *inEncValue)
SECItem * CRMF_EncryptedValueGetEncValue (CRMFEncryptedValue *inEncrValue)
static SECAlgorithmID * crmf_get_encvalue_algid (SECAlgorithmID *srcAlg)
SECAlgorithmID * CRMF_EncryptedValueGetIntendedAlg (CRMFEncryptedValue *inEncValue)
SECAlgorithmID * CRMF_EncryptedValueGetKeyAlg (CRMFEncryptedValue *inEncValue)
SECAlgorithmID * CRMF_EncryptedValueGetSymmAlg (CRMFEncryptedValue *inEncValue)
SECItem * CRMF_EncryptedValueGetValueHint (CRMFEncryptedValue *inEncValue)
SECStatus CRMF_PKIArchiveOptionsGetArchiveRemGenPrivKey (CRMFPKIArchiveOptions *inOpt, PRBool *destVal)
CRMFEncryptedKey * CRMF_PKIArchiveOptionsGetEncryptedPrivKey (CRMFPKIArchiveOptions *inOpts)
SECItem * CRMF_PKIArchiveOptionsGetKeyGenParameters (CRMFPKIArchiveOptions *inOptions)
CRMFPKIArchiveOptionsType CRMF_PKIArchiveOptionsGetOptionType (CRMFPKIArchiveOptions *inOptions)
static SECStatus crmf_extract_long_from_item (SECItem *intItem, long *destLong)
SECStatus CRMF_POPOPrivGetKeySubseqMess (CRMFPOPOPrivKey *inKey, CRMFSubseqMessOptions *destOpt)
CRMFPOPOPrivKeyChoice CRMF_POPOPrivKeyGetChoice (CRMFPOPOPrivKey *inPrivKey)
SECStatus CRMF_POPOPrivKeyGetDHMAC (CRMFPOPOPrivKey *inKey, SECItem *destMAC)
SECStatus CRMF_POPOPrivKeyGetThisMessage (CRMFPOPOPrivKey *inKey, SECItem *destString)
SECAlgorithmID * CRMF_POPOSigningKeyGetAlgID (CRMFPOPOSigningKey *inSignKey)
SECItem * CRMF_POPOSigningKeyGetInput (CRMFPOPOSigningKey *inSignKey)
SECItem * CRMF_POPOSigningKeyGetSignature (CRMFPOPOSigningKey *inSignKey)
static SECStatus crmf_copy_poposigningkey (PRArenaPool *poolp, CRMFPOPOSigningKey *inPopoSignKey, CRMFPOPOSigningKey *destPopoSignKey)
static SECStatus crmf_copy_popoprivkey (PRArenaPool *poolp, CRMFPOPOPrivKey *srcPrivKey, CRMFPOPOPrivKey *destPrivKey)
static CRMFProofOfPossession * crmf_copy_pop (PRArenaPool *poolp, CRMFProofOfPossession *srcPOP)
static CRMFCertReqMsg * crmf_copy_cert_req_msg (CRMFCertReqMsg *srcReqMsg)
CRMFCertReqMsg * CRMF_CertReqMessagesGetCertReqMsgAtIndex (CRMFCertReqMessages *inReqMsgs, int index)
int CRMF_CertReqMessagesGetNumMessages (CRMFCertReqMessages *inCertReqMsgs)
CRMFCertRequest * CRMF_CertReqMsgGetCertRequest (CRMFCertReqMsg *inCertReqMsg)
SECStatus CRMF_CertReqMsgGetID (CRMFCertReqMsg *inCertReqMsg, long *destID)
SECStatus CRMF_CertReqMsgGetPOPKeyAgreement (CRMFCertReqMsg *inCertReqMsg, CRMFPOPOPrivKey **destKey)
SECStatus CRMF_CertReqMsgGetPOPKeyEncipherment (CRMFCertReqMsg *inCertReqMsg, CRMFPOPOPrivKey **destKey)
SECStatus CRMF_CertReqMsgGetPOPOSigningKey (CRMFCertReqMsg *inCertReqMsg, CRMFPOPOSigningKey **destKey)
static SECStatus crmf_copy_name (CERTName *destName, CERTName *srcName)
SECStatus CRMF_CertRequestGetCertTemplateIssuer (CRMFCertRequest *inCertReq, CERTName *destIssuer)
SECStatus CRMF_CertRequestGetCertTemplateIssuerUID (CRMFCertRequest *inCertReq, SECItem *destIssuerUID)
SECStatus CRMF_CertRequestGetCertTemplatePublicKey (CRMFCertRequest *inCertReq, CERTSubjectPublicKeyInfo *destPublicKey)
SECStatus CRMF_CertRequestGetCertTemplateSerialNumber (CRMFCertRequest *inCertReq, long *serialNumber)
SECStatus CRMF_CertRequestGetCertTemplateSigningAlg (CRMFCertRequest *inCertReq, SECAlgorithmID *destAlg)
SECStatus CRMF_CertRequestGetCertTemplateSubject (CRMFCertRequest *inCertReq, CERTName *destSubject)
SECStatus CRMF_CertRequestGetCertTemplateSubjectUID (CRMFCertRequest *inCertReq, SECItem *destSubjectUID)
SECStatus CRMF_CertRequestGetCertTemplateVersion (CRMFCertRequest *inCertReq, long *version)
static SECStatus crmf_copy_validity (CRMFGetValidity *destValidity, CRMFOptionalValidity *src)
SECStatus CRMF_CertRequestGetCertTemplateValidity (CRMFCertRequest *inCertReq, CRMFGetValidity *destValidity)
CRMFControl * CRMF_CertRequestGetControlAtIndex (CRMFCertRequest *inCertReq, int index)
static SECItem * crmf_copy_control_value (CRMFControl *inControl)
SECItem * CRMF_ControlGetAuthenticatorControlValue (CRMFControl *inControl)
CRMFControlType CRMF_ControlGetControlType (CRMFControl *inControl)
CRMFPKIArchiveOptions * CRMF_ControlGetPKIArchiveOptions (CRMFControl *inControl)
SECItem * CRMF_ControlGetRegTokenControlValue (CRMFControl *inControl)
CRMFCertExtension * CRMF_CertRequestGetExtensionAtIndex (CRMFCertRequest *inCertReq, int index)

Function Documentation

CRMFCertReqMsg* CRMF_CertReqMessagesGetCertReqMsgAtIndex ( CRMFCertReqMessages *  inReqMsgs,
int  index 
)

Definition at line 536 of file servget.c.

{
    int numMsgs;

    PORT_Assert(inReqMsgs != NULL && index >= 0);
    if (inReqMsgs == NULL) {
        return NULL;
    }
    numMsgs = CRMF_CertReqMessagesGetNumMessages(inReqMsgs);
    if (index < 0 || index >= numMsgs) {
        return NULL;
    }
    return crmf_copy_cert_req_msg(inReqMsgs->messages[index]);
}

Here is the call graph for this function:

Here is the caller graph for this function:

int CRMF_CertReqMessagesGetNumMessages ( CRMFCertReqMessages *  inCertReqMsgs)

Definition at line 553 of file servget.c.

{
    int numMessages = 0;

    PORT_Assert(inCertReqMsgs != NULL);
    if (inCertReqMsgs == NULL) {
        return 0;
    }
    while (inCertReqMsgs->messages[numMessages] != NULL) {
        numMessages++;
    }
    return numMessages;
}

Here is the caller graph for this function:

CRMFCertRequest* CRMF_CertReqMsgGetCertRequest ( CRMFCertReqMsg *  inCertReqMsg)

Definition at line 568 of file servget.c.

{
    PRArenaPool     *poolp      = NULL;
    CRMFCertRequest *newCertReq = NULL;

    PORT_Assert(inCertReqMsg != NULL);

    poolp = PORT_NewArena(CRMF_DEFAULT_ARENA_SIZE);
    if (poolp == NULL) {
        goto loser;
    }
    newCertReq = crmf_copy_cert_request(poolp, inCertReqMsg->certReq);
    if (newCertReq == NULL) {
        goto loser;
    }
    newCertReq->poolp = poolp;
    return newCertReq;
 loser:
    if (poolp != NULL) {
        PORT_FreeArena(poolp, PR_FALSE);
    }
    return NULL;
}

Here is the call graph for this function:

Here is the caller graph for this function:

SECStatus CRMF_CertReqMsgGetID ( CRMFCertReqMsg *  inCertReqMsg,
long destID 
)

Definition at line 593 of file servget.c.

{
    PORT_Assert(inCertReqMsg != NULL && destID != NULL);
    if (inCertReqMsg == NULL || inCertReqMsg->certReq == NULL) {
        return SECFailure;
    }
    return crmf_extract_long_from_item(&inCertReqMsg->certReq->certReqId, 
                                   destID);
}

Here is the call graph for this function:

Here is the caller graph for this function:

SECStatus CRMF_CertReqMsgGetPOPKeyAgreement ( CRMFCertReqMsg *  inCertReqMsg,
CRMFPOPOPrivKey **  destKey 
)

Definition at line 604 of file servget.c.

{
    PORT_Assert(inCertReqMsg != NULL && destKey != NULL);
    if (inCertReqMsg == NULL || destKey == NULL ||
       CRMF_CertReqMsgGetPOPType(inCertReqMsg) != crmfKeyAgreement) {
        return SECFailure;
    }
    *destKey = PORT_ZNew(CRMFPOPOPrivKey);
    if (*destKey == NULL) {
        return SECFailure;
    }
    return crmf_copy_popoprivkey(NULL,
                             &inCertReqMsg->pop->popChoice.keyAgreement,
                             *destKey);
}

Here is the call graph for this function:

SECStatus CRMF_CertReqMsgGetPOPKeyEncipherment ( CRMFCertReqMsg *  inCertReqMsg,
CRMFPOPOPrivKey **  destKey 
)

Definition at line 622 of file servget.c.

{
    PORT_Assert(inCertReqMsg != NULL && destKey != NULL);
    if (inCertReqMsg == NULL || destKey == NULL ||
       CRMF_CertReqMsgGetPOPType(inCertReqMsg) != crmfKeyEncipherment) {
        return SECFailure;
    }
    *destKey = PORT_ZNew(CRMFPOPOPrivKey);
    if (destKey == NULL) {
       return SECFailure;
    }
    return crmf_copy_popoprivkey(NULL,
                             &inCertReqMsg->pop->popChoice.keyEncipherment,
                             *destKey);
}

Here is the call graph for this function:

Here is the caller graph for this function:

SECStatus CRMF_CertReqMsgGetPOPOSigningKey ( CRMFCertReqMsg *  inCertReqMsg,
CRMFPOPOSigningKey **  destKey 
)

Definition at line 640 of file servget.c.

{
    CRMFProofOfPossession *pop;
    PORT_Assert(inCertReqMsg != NULL);
    if (inCertReqMsg  == NULL) {
        return SECFailure;
    }
    pop = inCertReqMsg->pop;;
    if (pop->popUsed != crmfSignature) {
        return SECFailure;
    }
    *destKey = PORT_ZNew(CRMFPOPOSigningKey);
    if (*destKey == NULL) {
        return SECFailure;
    }
    return crmf_copy_poposigningkey(NULL,&pop->popChoice.signature, *destKey);
}

Here is the call graph for this function:

Here is the caller graph for this function:

SECStatus CRMF_CertRequestGetCertTemplateIssuer ( CRMFCertRequest *  inCertReq,
CERTName *  destIssuer 
)

Definition at line 683 of file servget.c.

{
    PORT_Assert(inCertReq != NULL);
    if (inCertReq == NULL) {
        return SECFailure;
    }
    if (CRMF_DoesRequestHaveField(inCertReq, crmfIssuer)) {
        return crmf_copy_name(destIssuer, 
                           inCertReq->certTemplate.issuer);
    }
    return SECFailure;
}

Here is the call graph for this function:

SECStatus CRMF_CertRequestGetCertTemplateIssuerUID ( CRMFCertRequest *  inCertReq,
SECItem *  destIssuerUID 
)

Definition at line 698 of file servget.c.

{
    PORT_Assert(inCertReq != NULL);
    if (inCertReq == NULL) {
        return SECFailure;
    }
    if (CRMF_DoesRequestHaveField(inCertReq, crmfIssuerUID)) {
        return crmf_make_bitstring_copy(NULL, destIssuerUID,
                                   &inCertReq->certTemplate.issuerUID);
    }
    return SECFailure;
}

Here is the call graph for this function:

SECStatus CRMF_CertRequestGetCertTemplatePublicKey ( CRMFCertRequest *  inCertReq,
CERTSubjectPublicKeyInfo *  destPublicKey 
)

Definition at line 713 of file servget.c.

{
    PORT_Assert (inCertReq != NULL);
    if (inCertReq == NULL) {
        return SECFailure;
    }
    if (CRMF_DoesRequestHaveField(inCertReq, crmfPublicKey)) {
        return SECKEY_CopySubjectPublicKeyInfo(NULL, destPublicKey,
                                   inCertReq->certTemplate.publicKey);
    }
    return SECFailure;
}

Here is the call graph for this function:

Here is the caller graph for this function:

SECStatus CRMF_CertRequestGetCertTemplateSerialNumber ( CRMFCertRequest *  inCertReq,
long serialNumber 
)

Definition at line 728 of file servget.c.

{
    PORT_Assert(inCertReq != NULL);
    if (inCertReq == NULL) {
        return SECFailure;
    }
    if (CRMF_DoesRequestHaveField(inCertReq, crmfSerialNumber)) {
        return 
         crmf_extract_long_from_item(&inCertReq->certTemplate.serialNumber,
                                  serialNumber);
    }
    return SECFailure;
}

Here is the call graph for this function:

SECStatus CRMF_CertRequestGetCertTemplateSigningAlg ( CRMFCertRequest *  inCertReq,
SECAlgorithmID *  destAlg 
)

Definition at line 744 of file servget.c.

{
    PORT_Assert(inCertReq != NULL);
    if (inCertReq == NULL) {
        return SECFailure;
    }
    if (CRMF_DoesRequestHaveField(inCertReq, crmfSigningAlg)) {
        return SECOID_CopyAlgorithmID(NULL, destAlg, 
                                  inCertReq->certTemplate.signingAlg);
    }
    return SECFailure;
}

Here is the call graph for this function:

SECStatus CRMF_CertRequestGetCertTemplateSubject ( CRMFCertRequest *  inCertReq,
CERTName *  destSubject 
)

Definition at line 759 of file servget.c.

{
  PORT_Assert(inCertReq != NULL);
  if (inCertReq == NULL) {
      return SECFailure;
  }
  if (CRMF_DoesRequestHaveField(inCertReq, crmfSubject)) {
      return crmf_copy_name(destSubject, inCertReq->certTemplate.subject);
  }
  return SECFailure;
}

Here is the call graph for this function:

Here is the caller graph for this function:

SECStatus CRMF_CertRequestGetCertTemplateSubjectUID ( CRMFCertRequest *  inCertReq,
SECItem *  destSubjectUID 
)

Definition at line 773 of file servget.c.

{
    PORT_Assert(inCertReq != NULL);
    if (inCertReq == NULL) {
        return SECFailure;
    }
    if (CRMF_DoesRequestHaveField(inCertReq, crmfSubjectUID)) {
        return crmf_make_bitstring_copy(NULL, destSubjectUID, 
                                   &inCertReq->certTemplate.subjectUID);
    }
    return SECFailure;
}

Here is the call graph for this function:

SECStatus CRMF_CertRequestGetCertTemplateValidity ( CRMFCertRequest *  inCertReq,
CRMFGetValidity *  destValidity 
)

Definition at line 827 of file servget.c.

{
    PORT_Assert(inCertReq != NULL);
    if (inCertReq == NULL) {
        return SECFailure;
    }
    if (CRMF_DoesRequestHaveField(inCertReq, crmfValidity)) {
        return crmf_copy_validity(destValidity, 
                              inCertReq->certTemplate.validity);
    }
    return SECFailure;
}

Here is the call graph for this function:

Here is the caller graph for this function:

SECStatus CRMF_CertRequestGetCertTemplateVersion ( CRMFCertRequest *  inCertReq,
long version 
)

Definition at line 788 of file servget.c.

{
    PORT_Assert (inCertReq != NULL);
    if (inCertReq == NULL) {
        return SECFailure;
    }
    if (CRMF_DoesRequestHaveField(inCertReq, crmfVersion)) {
        return crmf_extract_long_from_item(&inCertReq->certTemplate.version,
                                      version);
    } 
    return SECFailure;
}

Here is the call graph for this function:

Here is the caller graph for this function:

CRMFControl* CRMF_CertRequestGetControlAtIndex ( CRMFCertRequest *  inCertReq,
int  index 
)

Definition at line 842 of file servget.c.

{
    CRMFControl *newControl, *srcControl;
    int          numControls;
    SECStatus    rv;

    PORT_Assert(inCertReq != NULL);
    if (inCertReq == NULL) {
        return NULL;
    }
    numControls = CRMF_CertRequestGetNumControls(inCertReq);
    if (index >= numControls || index < 0) {
        return NULL;
    }
    newControl = PORT_ZNew(CRMFControl);
    if (newControl == NULL) {
        return NULL;
    }
    srcControl = inCertReq->controls[index];
    newControl->tag = srcControl->tag;
    rv = SECITEM_CopyItem (NULL, &newControl->derTag, &srcControl->derTag);
    if (rv != SECSuccess) {
        goto loser;
    }

    rv = SECITEM_CopyItem(NULL, &newControl->derValue, 
                       &srcControl->derValue);
    if (rv != SECSuccess) {
        goto loser;
    }
    /* Copy over the PKIArchiveOptions stuff */
    switch (srcControl->tag) {
    case SEC_OID_PKIX_REGCTRL_REGTOKEN:
    case SEC_OID_PKIX_REGCTRL_AUTHENTICATOR:
        /* No further processing necessary for these types. */
        rv = SECSuccess;
       break;
    case SEC_OID_PKIX_REGCTRL_OLD_CERT_ID:
    case SEC_OID_PKIX_REGCTRL_PKIPUBINFO:
    case SEC_OID_PKIX_REGCTRL_PROTOCOL_ENC_KEY:
        /* These aren't supported yet, so no post-processing will
        * be done at this time.  But we don't want to fail in case
        * we read in DER that has one of these options.
        */
        rv = SECSuccess;
       break;
    case SEC_OID_PKIX_REGCTRL_PKI_ARCH_OPTIONS:
        rv = crmf_copy_pkiarchiveoptions(NULL, 
                                    &newControl->value.archiveOptions,
                                    &srcControl->value.archiveOptions);
       break;
    default:
        rv = SECFailure;
    }
    if (rv != SECSuccess) {
        goto loser;
    }
    return newControl;
 loser:
    if (newControl != NULL) {
        CRMF_DestroyControl(newControl);
    }
    return NULL;
}

Here is the call graph for this function:

CRMFCertExtension* CRMF_CertRequestGetExtensionAtIndex ( CRMFCertRequest *  inCertReq,
int  index 
)

Definition at line 995 of file servget.c.

{
    int numExtensions;

    PORT_Assert(inCertReq != NULL);
    numExtensions = CRMF_CertRequestGetNumberOfExtensions(inCertReq);
    if (index >= numExtensions || index < 0) {
        return NULL;
    }
    return 
      crmf_copy_cert_extension(NULL, 
                            inCertReq->certTemplate.extensions[index]);
}

Here is the call graph for this function:

Here is the caller graph for this function:

SECItem* CRMF_ControlGetAuthenticatorControlValue ( CRMFControl *  inControl)

Definition at line 914 of file servget.c.

{
    PORT_Assert (inControl!= NULL);
    if (inControl == NULL ||
       CRMF_ControlGetControlType(inControl) != crmfAuthenticatorControl) {
        return NULL;
    }
    return crmf_copy_control_value(inControl);
}

Here is the call graph for this function:

CRMFControlType CRMF_ControlGetControlType ( CRMFControl *  inControl)

Definition at line 925 of file servget.c.

Here is the caller graph for this function:

CRMFPKIArchiveOptions* CRMF_ControlGetPKIArchiveOptions ( CRMFControl *  inControl)

Definition at line 956 of file servget.c.

{
    CRMFPKIArchiveOptions *newOpt = NULL;
    SECStatus rv;

    PORT_Assert(inControl != NULL);
    if (inControl == NULL ||
       CRMF_ControlGetControlType(inControl) != crmfPKIArchiveOptionsControl){
        goto loser;
    }
    newOpt = PORT_ZNew(CRMFPKIArchiveOptions);
    if (newOpt == NULL) {
        goto loser;
    }
    rv = crmf_copy_pkiarchiveoptions(NULL, newOpt, 
                                 &inControl->value.archiveOptions);
    if (rv != SECSuccess) {
        goto loser;
    }

 loser:
    if (newOpt != NULL) {
        CRMF_DestroyPKIArchiveOptions(newOpt);
    }
    return NULL;
}

Here is the call graph for this function:

SECItem* CRMF_ControlGetRegTokenControlValue ( CRMFControl *  inControl)

Definition at line 984 of file servget.c.

{
    PORT_Assert(inControl != NULL);
    if (inControl == NULL ||
       CRMF_ControlGetControlType(inControl) != crmfRegTokenControl) {
        return NULL;
    }
    return crmf_copy_control_value(inControl);;
}

Here is the call graph for this function:

static CRMFCertReqMsg* crmf_copy_cert_req_msg ( CRMFCertReqMsg *  srcReqMsg) [static]

Definition at line 500 of file servget.c.

{
    CRMFCertReqMsg *newReqMsg;
    PRArenaPool    *poolp;

    poolp = PORT_NewArena(CRMF_DEFAULT_ARENA_SIZE);
    if (poolp == NULL) {
        return NULL;
    }
    newReqMsg = PORT_ArenaZNew(poolp, CRMFCertReqMsg);
    if (newReqMsg == NULL) {
        goto loser;
    }

    newReqMsg->poolp = poolp;
    newReqMsg->certReq = crmf_copy_cert_request(poolp, srcReqMsg->certReq);
    if (newReqMsg->certReq == NULL) {
        goto loser;
    }
    newReqMsg->pop = crmf_copy_pop(poolp, srcReqMsg->pop);
    if (newReqMsg->pop == NULL) {
        goto loser;
    }
    /* None of my set/get routines operate on the regInfo field, so
     * for now, that won't get copied over.
     */
    return newReqMsg;

 loser:
    if (newReqMsg != NULL) {
        CRMF_DestroyCertReqMsg(newReqMsg);
    }
    return NULL;
}

Here is the call graph for this function:

Here is the caller graph for this function:

static SECItem* crmf_copy_control_value ( CRMFControl *  inControl) [static]

Definition at line 908 of file servget.c.

{
    return SECITEM_DupItem(&inControl->derValue);
}

Here is the call graph for this function:

Here is the caller graph for this function:

static SECStatus crmf_copy_name ( CERTName *  destName,
CERTName *  srcName 
) [static]

Definition at line 660 of file servget.c.

{
  PRArenaPool *poolp = NULL;
  SECStatus rv;

  if (destName->arena != NULL) {
    poolp = destName->arena;
  } else {
    poolp = PORT_NewArena(CRMF_DEFAULT_ARENA_SIZE);
  }
  if (poolp == NULL) {
    return SECFailure;
  }
  /* Need to do this so that CERT_CopyName doesn't free out
   * the arena from underneath us.
   */
  destName->arena = NULL;
  rv = CERT_CopyName(poolp, destName, srcName); 
  destName->arena = poolp;
  return rv;
}

Here is the call graph for this function:

Here is the caller graph for this function:

static CRMFProofOfPossession* crmf_copy_pop ( PRArenaPool poolp,
CRMFProofOfPossession *  srcPOP 
) [static]

Definition at line 450 of file servget.c.

{
    CRMFProofOfPossession *newPOP;
    SECStatus              rv;

    /* 
     * Proof Of Possession structures are always part of the Request
     * message, so there will always be an arena for allocating memory.
     */
    if (poolp == NULL) {
        return NULL;
    }
    newPOP = PORT_ArenaZNew(poolp, CRMFProofOfPossession);
    if (newPOP == NULL) {
        return NULL;
    }
    switch (srcPOP->popUsed) {
    case crmfRAVerified:
        newPOP->popChoice.raVerified.data = NULL;
       newPOP->popChoice.raVerified.len  = 0;
       break;
    case crmfSignature:
        rv = crmf_copy_poposigningkey(poolp, &srcPOP->popChoice.signature,
                                  &newPOP->popChoice.signature);
       if (rv != SECSuccess) {
           goto loser;
       }
       break;
    case crmfKeyEncipherment:
    case crmfKeyAgreement:
        /* We've got a union, so a pointer to one, is a pointer to the
        * other one.
        */
        rv = crmf_copy_popoprivkey(poolp, &srcPOP->popChoice.keyEncipherment,
                               &newPOP->popChoice.keyEncipherment);
       if (rv != SECSuccess) {
           goto loser;
       }
       break;
    default:
        goto loser;
    }
    newPOP->popUsed = srcPOP->popUsed;
    return newPOP;

 loser:
    return NULL;
}

Here is the call graph for this function:

Here is the caller graph for this function:

static SECStatus crmf_copy_popoprivkey ( PRArenaPool poolp,
CRMFPOPOPrivKey *  srcPrivKey,
CRMFPOPOPrivKey *  destPrivKey 
) [static]

Definition at line 419 of file servget.c.

{
    SECStatus        rv;

    destPrivKey->messageChoice = srcPrivKey->messageChoice;
    switch (destPrivKey->messageChoice) {
    case crmfThisMessage:
    case crmfDHMAC:
        /* I've got a union, so taking the address of one, will also give
        * me a pointer to the other (eg, message.dhMAC)
        */
        rv = crmf_make_bitstring_copy(poolp, &destPrivKey->message.thisMessage,
                                  &srcPrivKey->message.thisMessage);
       break;
    case crmfSubsequentMessage:
        rv = SECITEM_CopyItem(poolp, &destPrivKey->message.subsequentMessage,
                           &srcPrivKey->message.subsequentMessage);
       break;
    default:
        rv = SECFailure;
    }

    if (rv != SECSuccess && poolp == NULL) {
        CRMF_DestroyPOPOPrivKey(destPrivKey);
    }
    return rv;
}

Here is the call graph for this function:

Here is the caller graph for this function:

static SECStatus crmf_copy_poposigningkey ( PRArenaPool poolp,
CRMFPOPOSigningKey *  inPopoSignKey,
CRMFPOPOSigningKey *  destPopoSignKey 
) [static]

Definition at line 379 of file servget.c.

{
    SECStatus rv;

    /* We don't support use of the POPOSigningKeyInput, so we'll only 
     * store away the DER encoding.
     */
    if (inPopoSignKey->derInput.data != NULL) {
        rv = SECITEM_CopyItem(poolp, &destPopoSignKey->derInput, 
                           &inPopoSignKey->derInput);
    }
    destPopoSignKey->algorithmIdentifier = (poolp == NULL) ? 
                                         PORT_ZNew(SECAlgorithmID) :
                                         PORT_ArenaZNew(poolp, SECAlgorithmID);

    if (destPopoSignKey->algorithmIdentifier == NULL) {
        goto loser;
    }
    rv = SECOID_CopyAlgorithmID(poolp, destPopoSignKey->algorithmIdentifier,
                            inPopoSignKey->algorithmIdentifier);
    if (rv != SECSuccess) {
        goto loser;
    }
    
    rv = crmf_make_bitstring_copy(poolp, &destPopoSignKey->signature, 
                              &inPopoSignKey->signature);
    if (rv != SECSuccess) {
        goto loser;
    }
    return SECSuccess;
 loser:
    if (poolp == NULL) {
        CRMF_DestroyPOPOSigningKey(destPopoSignKey);
    }
    return SECFailure;
}

Here is the call graph for this function:

Here is the caller graph for this function:

static SECStatus crmf_copy_validity ( CRMFGetValidity *  destValidity,
CRMFOptionalValidity *  src 
) [static]

Definition at line 803 of file servget.c.

{
    SECStatus rv;
    
    destValidity->notBefore = destValidity->notAfter = NULL;
    if (src->notBefore.data != NULL) {
        rv = crmf_create_prtime(&src->notBefore, 
                            &destValidity->notBefore);
       if (rv != SECSuccess) {
           return rv;
       }
    }
    if (src->notAfter.data != NULL) {
        rv = crmf_create_prtime(&src->notAfter,
                            &destValidity->notAfter);
       if (rv != SECSuccess) {
           return rv;
       }
    }
    return SECSuccess;
}

Here is the call graph for this function:

Here is the caller graph for this function:

CRMFEncryptedKeyChoice CRMF_EncryptedKeyGetChoice ( CRMFEncryptedKey *  inEncrKey)

Definition at line 46 of file servget.c.

{
    PORT_Assert(inEncrKey != NULL);
    if (inEncrKey == NULL) {
        return crmfNoEncryptedKeyChoice;
    }
    return inEncrKey->encKeyChoice;
}

Here is the caller graph for this function:

CRMFEncryptedValue* CRMF_EncryptedKeyGetEncryptedValue ( CRMFEncryptedKey *  inEncrKey)

Definition at line 56 of file servget.c.

{
    CRMFEncryptedValue *newEncrValue = NULL;
    SECStatus           rv;

    PORT_Assert(inEncrKey != NULL);
    if (inEncrKey == NULL ||
       CRMF_EncryptedKeyGetChoice(inEncrKey) != crmfEncryptedValueChoice) {
        goto loser;
    }
    newEncrValue = PORT_ZNew(CRMFEncryptedValue);
    if (newEncrValue == NULL) {
        goto loser;
    }
    rv = crmf_copy_encryptedvalue(NULL, &inEncrKey->value.encryptedValue,
                              newEncrValue);
    if (rv != SECSuccess) {
        goto loser;
    }
    return newEncrValue;
 loser:
    if (newEncrValue != NULL) {
        CRMF_DestroyEncryptedValue(newEncrValue);
    }
    return NULL;
}

Here is the call graph for this function:

SECItem* CRMF_EncryptedValueGetEncSymmKey ( CRMFEncryptedValue *  inEncValue)

Definition at line 109 of file servget.c.

{
    if (inEncValue == NULL) {
        return NULL;
    }
    return crmf_get_encvalue_bitstring(&inEncValue->encSymmKey);
}

Here is the call graph for this function:

SECItem* CRMF_EncryptedValueGetEncValue ( CRMFEncryptedValue *  inEncrValue)

Definition at line 118 of file servget.c.

{
    if (inEncrValue == NULL || inEncrValue->encValue.data == NULL) {
        return NULL;
    }
    return crmf_get_encvalue_bitstring(&inEncrValue->encValue);
}

Here is the call graph for this function:

SECAlgorithmID* CRMF_EncryptedValueGetIntendedAlg ( CRMFEncryptedValue *  inEncValue)

Definition at line 143 of file servget.c.

{
    if (inEncValue == NULL) {
        return NULL;
    }
    return crmf_get_encvalue_algid(inEncValue->intendedAlg);
}

Here is the call graph for this function:

SECAlgorithmID* CRMF_EncryptedValueGetKeyAlg ( CRMFEncryptedValue *  inEncValue)

Definition at line 152 of file servget.c.

{
    if (inEncValue == NULL) {
        return NULL;
    }
    return crmf_get_encvalue_algid(inEncValue->keyAlg);
}

Here is the call graph for this function:

SECAlgorithmID* CRMF_EncryptedValueGetSymmAlg ( CRMFEncryptedValue *  inEncValue)

Definition at line 161 of file servget.c.

{
    if (inEncValue == NULL) {
        return NULL;
    }
    return crmf_get_encvalue_algid(inEncValue->symmAlg);
}

Here is the call graph for this function:

SECItem* CRMF_EncryptedValueGetValueHint ( CRMFEncryptedValue *  inEncValue)

Definition at line 170 of file servget.c.

{
    if (inEncValue == NULL || inEncValue->valueHint.data == NULL) {
        return NULL;
    }
    return SECITEM_DupItem(&inEncValue->valueHint);
}

Here is the call graph for this function:

static SECStatus crmf_extract_long_from_item ( SECItem *  intItem,
long destLong 
) [static]

Definition at line 242 of file servget.c.

{
    *destLong = DER_GetInteger(intItem);
    return (*destLong == -1) ? SECFailure : SECSuccess;
}

Here is the call graph for this function:

Here is the caller graph for this function:

static SECAlgorithmID* crmf_get_encvalue_algid ( SECAlgorithmID *  srcAlg) [static]

Definition at line 127 of file servget.c.

{
    SECStatus       rv;
    SECAlgorithmID *newAlgID;
    
    if (srcAlg == NULL) {
        return NULL;
    }
    rv = crmf_copy_encryptedvalue_secalg(NULL, srcAlg, &newAlgID);
    if (rv != SECSuccess) {
        return NULL;
    }
    return newAlgID;
}

Here is the call graph for this function:

Here is the caller graph for this function:

static SECItem* crmf_get_encvalue_bitstring ( SECItem *  srcItem) [static]

Definition at line 84 of file servget.c.

{
    SECItem   *newItem = NULL;
    SECStatus rv;
    
    if (srcItem->data == NULL) {
        return NULL;
    }
    newItem = PORT_ZNew(SECItem);
    if (newItem == NULL) {
        goto loser;
    }
    rv = crmf_make_bitstring_copy(NULL, newItem, srcItem);
    if (rv != SECSuccess) {
        goto loser;
    }
    return newItem;
 loser:
    if (newItem != NULL) {
        SECITEM_FreeItem(newItem, PR_TRUE);
    }
    return NULL;
}

Here is the call graph for this function:

Here is the caller graph for this function:

SECStatus CRMF_PKIArchiveOptionsGetArchiveRemGenPrivKey ( CRMFPKIArchiveOptions *  inOpt,
PRBool destVal 
)

Definition at line 179 of file servget.c.

{
    if (inOpt == NULL || destVal == NULL ||
       CRMF_PKIArchiveOptionsGetOptionType(inOpt) != crmfArchiveRemGenPrivKey){
        return SECFailure;
    }
    *destVal = (inOpt->option.archiveRemGenPrivKey.data[0] == hexFalse) 
                                                                 ? PR_FALSE:
                                                                   PR_TRUE;
    return SECSuccess;
}

Here is the call graph for this function:

CRMFEncryptedKey* CRMF_PKIArchiveOptionsGetEncryptedPrivKey ( CRMFPKIArchiveOptions *  inOpts)

Definition at line 193 of file servget.c.

{
    CRMFEncryptedKey *newEncrKey = NULL;
    SECStatus         rv;

    PORT_Assert(inOpts != NULL);
    if (inOpts == NULL ||
       CRMF_PKIArchiveOptionsGetOptionType(inOpts) != crmfEncryptedPrivateKey){
        return NULL;
    }
    newEncrKey = PORT_ZNew(CRMFEncryptedKey);
    if (newEncrKey == NULL) {
        goto loser;
    }
    rv = crmf_copy_encryptedkey(NULL, &inOpts->option.encryptedKey,
                            newEncrKey);
    if (rv != SECSuccess) {
        goto loser;
    }
    return newEncrKey;
 loser:
    if (newEncrKey != NULL) {
        CRMF_DestroyEncryptedKey(newEncrKey);
    }
    return NULL;
}

Here is the call graph for this function:

SECItem* CRMF_PKIArchiveOptionsGetKeyGenParameters ( CRMFPKIArchiveOptions *  inOptions)

Definition at line 221 of file servget.c.

{
    if (inOptions == NULL ||
       CRMF_PKIArchiveOptionsGetOptionType(inOptions) != crmfKeyGenParameters ||
       inOptions->option.keyGenParameters.data == NULL) {
        return NULL;
    }
    return SECITEM_DupItem(&inOptions->option.keyGenParameters);
}

Here is the call graph for this function:

CRMFPKIArchiveOptionsType CRMF_PKIArchiveOptionsGetOptionType ( CRMFPKIArchiveOptions *  inOptions)

Definition at line 232 of file servget.c.

{
    PORT_Assert (inOptions != NULL);
    if (inOptions == NULL) {
        return crmfNoArchiveOptions;
    }
    return inOptions->archOption;
}

Here is the caller graph for this function:

SECStatus CRMF_POPOPrivGetKeySubseqMess ( CRMFPOPOPrivKey *  inKey,
CRMFSubseqMessOptions destOpt 
)

Definition at line 249 of file servget.c.

{
    long      value;
    SECStatus rv;

    PORT_Assert(inKey != NULL);
    if (inKey == NULL ||
       inKey->messageChoice != crmfSubsequentMessage) {
        return SECFailure;
    }
    rv = crmf_extract_long_from_item(&inKey->message.subsequentMessage,&value);
    if (rv != SECSuccess) {
        return SECFailure;
    }
    switch (value) {
    case 0:
        *destOpt = crmfEncrCert;
       break;
    case 1:
        *destOpt = crmfChallengeResp;
       break;
    default:
        rv = SECFailure;
    }
    if (rv != SECSuccess) {
        return rv;
    }
    return SECSuccess;
}

Here is the call graph for this function:

CRMFPOPOPrivKeyChoice CRMF_POPOPrivKeyGetChoice ( CRMFPOPOPrivKey *  inPrivKey)

Definition at line 281 of file servget.c.

{
    PORT_Assert(inPrivKey != NULL);
    if (inPrivKey != NULL) {
        return inPrivKey->messageChoice;
    }
    return crmfNoMessage;
}

Here is the caller graph for this function:

SECStatus CRMF_POPOPrivKeyGetDHMAC ( CRMFPOPOPrivKey *  inKey,
SECItem *  destMAC 
)

Definition at line 291 of file servget.c.

{
    PORT_Assert(inKey != NULL);
    if (inKey == NULL || inKey->message.dhMAC.data == NULL) {
        return SECFailure;
    }
    return crmf_make_bitstring_copy(NULL, destMAC, &inKey->message.dhMAC);
}

Here is the call graph for this function:

SECStatus CRMF_POPOPrivKeyGetThisMessage ( CRMFPOPOPrivKey *  inKey,
SECItem *  destString 
)

Definition at line 301 of file servget.c.

{
    PORT_Assert(inKey != NULL);
    if (inKey == NULL           ||
       inKey->messageChoice != crmfThisMessage) {
        return SECFailure;
    }

    return crmf_make_bitstring_copy(NULL, destString, 
                                &inKey->message.thisMessage);
}

Here is the call graph for this function:

SECAlgorithmID* CRMF_POPOSigningKeyGetAlgID ( CRMFPOPOSigningKey *  inSignKey)

Definition at line 315 of file servget.c.

{
    SECAlgorithmID *newAlgId = NULL;
    SECStatus       rv;

    PORT_Assert(inSignKey != NULL);
    if (inSignKey == NULL) {
        return NULL;
    }
    newAlgId = PORT_ZNew(SECAlgorithmID);
    if (newAlgId == NULL) {
        goto loser;
    }
    rv = SECOID_CopyAlgorithmID(NULL, newAlgId, 
                            inSignKey->algorithmIdentifier);
    if (rv != SECSuccess) {
        goto loser;
    }
    return newAlgId;

 loser:
    if (newAlgId != NULL) {
        SECOID_DestroyAlgorithmID(newAlgId, PR_TRUE);
    }
    return NULL;
}

Here is the call graph for this function:

Here is the caller graph for this function:

SECItem* CRMF_POPOSigningKeyGetInput ( CRMFPOPOSigningKey *  inSignKey)

Definition at line 343 of file servget.c.

{
    PORT_Assert(inSignKey != NULL);
    if (inSignKey == NULL || inSignKey->derInput.data == NULL) {
        return NULL;
    }
    return SECITEM_DupItem(&inSignKey->derInput);
}

Here is the call graph for this function:

SECItem* CRMF_POPOSigningKeyGetSignature ( CRMFPOPOSigningKey *  inSignKey)

Definition at line 353 of file servget.c.

{
    SECItem   *newSig = NULL;
    SECStatus  rv;

    PORT_Assert(inSignKey != NULL);
    if (inSignKey == NULL) {
        return NULL;
    }
    newSig = PORT_ZNew(SECItem);
    if (newSig == NULL) {
        goto loser;
    }
    rv = crmf_make_bitstring_copy(NULL, newSig, &inSignKey->signature);
    if (rv != SECSuccess) {
        goto loser;
    }
    return newSig;
 loser:
    if (newSig != NULL) {
        SECITEM_FreeItem(newSig, PR_TRUE);
    }
    return NULL;
}

Here is the call graph for this function:

Here is the caller graph for this function: