Back to index

lightning-sunbird  0.9+nobinonly
Functions | Variables
pppolicy.c File Reference
#include "seccomon.h"
#include "secport.h"
#include "secder.h"
#include "cert.h"
#include "secoid.h"
#include "secasn1.h"
#include "secerr.h"
#include "nspr.h"
#include "secutil.h"

Go to the source code of this file.

Functions

static CERTCertificatePoliciessecu_DecodeCertificatePoliciesExtension (SECItem *extnValue)
static char * itemToString (SECItem *item)
static SECStatus secu_PrintUserNoticeQualifier (FILE *out, SECItem *qualifierValue, char *msg, int level)
static SECStatus secu_PrintPolicyQualifier (FILE *out, CERTPolicyQualifier *policyQualifier, char *msg, int level)
static SECStatus secu_PrintPolicyInfo (FILE *out, CERTPolicyInfo *policyInfo, char *msg, int level)
void SECU_PrintPolicy (FILE *out, SECItem *value, char *msg, int level)
void SECU_PrintPrivKeyUsagePeriodExtension (FILE *out, SECItem *value, char *msg, int level)

Variables

static const SEC_ASN1Template secu_PolicyQualifierTemplate []
static const SEC_ASN1Template secu_PolicyInfoTemplate []
static const SEC_ASN1Template secu_CertificatePoliciesTemplate []

Function Documentation

static char* itemToString ( SECItem *  item) [static]

Definition at line 161 of file pppolicy.c.

{
    char *string;

    string = PORT_ZAlloc(item->len+1);
    if (string == NULL) return NULL;
    PORT_Memcpy(string,item->data,item->len);
    string[item->len] = 0;
    return string;
}

Here is the call graph for this function:

Here is the caller graph for this function:

static CERTCertificatePolicies* secu_DecodeCertificatePoliciesExtension ( SECItem *  extnValue) [static]

Definition at line 94 of file pppolicy.c.

{
    PRArenaPool *arena = NULL;
    SECStatus rv;
    CERTCertificatePolicies *policies;
    CERTPolicyInfo **policyInfos, *policyInfo;
    CERTPolicyQualifier **policyQualifiers, *policyQualifier;
    SECItem newExtnValue;
    
    /* make a new arena */
    arena = PORT_NewArena(DER_DEFAULT_CHUNKSIZE);
    
    if ( !arena ) {
       goto loser;
    }

    /* allocate the certifiate policies structure */
    policies = PORT_ArenaZNew(arena, CERTCertificatePolicies);
    if ( policies == NULL ) {
       goto loser;
    }
    
    policies->arena = arena;

    /* copy the DER into the arena, since Quick DER returns data that points
       into the DER input, which may get freed by the caller */
    rv = SECITEM_CopyItem(arena, &newExtnValue, extnValue);
    if ( rv != SECSuccess ) {
       goto loser;
    }

    /* decode the policy info */
    rv = SEC_QuickDERDecodeItem(arena, policies, 
                                secu_CertificatePoliciesTemplate,
                             &newExtnValue);

    if ( rv != SECSuccess ) {
       goto loser;
    }

    /* initialize the oid tags */
    policyInfos = policies->policyInfos;
    while (policyInfos != NULL && *policyInfos != NULL ) {
       policyInfo = *policyInfos;
       policyInfo->oid = SECOID_FindOIDTag(&policyInfo->policyID);
       policyQualifiers = policyInfo->policyQualifiers;
       while ( policyQualifiers && *policyQualifiers != NULL ) {
           policyQualifier = *policyQualifiers;
           policyQualifier->oid =
              SECOID_FindOIDTag(&policyQualifier->qualifierID);
           policyQualifiers++;
       }
       policyInfos++;
    }

    return(policies);
    
loser:
    if ( arena != NULL ) {
       PORT_FreeArena(arena, PR_FALSE);
    }
    
    return(NULL);
}

Here is the call graph for this function:

Here is the caller graph for this function:

void SECU_PrintPolicy ( FILE out,
SECItem *  value,
char *  msg,
int  level 
)

Definition at line 244 of file pppolicy.c.

{
   CERTCertificatePolicies *policies = NULL;
   CERTPolicyInfo **policyInfos;

   if (msg) {
       SECU_Indent(out, level);
       fprintf(out,"%s: \n",msg);
       level++;
   }
   policies = secu_DecodeCertificatePoliciesExtension(value);
   if (policies == NULL) {
       SECU_PrintAny(out, value, "Invalid Policy Data", level);
       return;
   }

   policyInfos = policies->policyInfos;
   while (policyInfos && *policyInfos != NULL) {
       secu_PrintPolicyInfo(out,*policyInfos,"",level);
       policyInfos++;
   }

   CERT_DestroyCertificatePoliciesExtension(policies);
}

Here is the caller graph for this function:

static SECStatus secu_PrintPolicyInfo ( FILE out,
CERTPolicyInfo policyInfo,
char *  msg,
int  level 
) [static]

Definition at line 229 of file pppolicy.c.

{
   CERTPolicyQualifier **policyQualifiers;

   policyQualifiers = policyInfo->policyQualifiers;
   SECU_PrintObjectID(out, &policyInfo->policyID , "Policy Name", level);
   
   while (policyQualifiers && *policyQualifiers != NULL) {
       secu_PrintPolicyQualifier(out,*policyQualifiers,"",level+1);
       policyQualifiers++;
   }
   return SECSuccess;
}

Here is the call graph for this function:

Here is the caller graph for this function:

static SECStatus secu_PrintPolicyQualifier ( FILE out,
CERTPolicyQualifier policyQualifier,
char *  msg,
int  level 
) [static]

Definition at line 202 of file pppolicy.c.

{
   SECStatus rv;
   SECItem * qualifierValue = &policyQualifier->qualifierValue;

   SECU_PrintObjectID(out, &policyQualifier->qualifierID , 
                                   "Policy Qualifier Name", level);
   if (!qualifierValue->data) {
       SECU_Indent(out, level);
       fprintf(out,"Error: missing qualifier\n");
   } else 
   switch (policyQualifier->oid) {
   case SEC_OID_PKIX_USER_NOTICE_QUALIFIER:
       rv = secu_PrintUserNoticeQualifier(out, qualifierValue, msg, level);
       if (SECSuccess == rv)
          break;
       /* fall through on error */
   case SEC_OID_PKIX_CPS_POINTER_QUALIFIER:
   default:
       SECU_PrintAny(out, qualifierValue, "Policy Qualifier Data", level);
       break;
   }
   return SECSuccess;
}

Here is the call graph for this function:

Here is the caller graph for this function:

void SECU_PrintPrivKeyUsagePeriodExtension ( FILE out,
SECItem *  value,
char *  msg,
int  level 
)

Definition at line 271 of file pppolicy.c.

{
    CERTPrivKeyUsagePeriod * prd;
    PLArenaPool * arena = PORT_NewArena(DER_DEFAULT_CHUNKSIZE);

    if ( !arena ) {
       goto loser;
    }
    prd = CERT_DecodePrivKeyUsagePeriodExtension(arena, value);
    if (!prd) {
       goto loser;
    }
    if (prd->notBefore.data) {
       SECU_PrintGeneralizedTime(out, &prd->notBefore, "Not Before", level);
    }
    if (prd->notAfter.data) {
       SECU_PrintGeneralizedTime(out, &prd->notAfter,  "Not After ", level);
    }
    if (!prd->notBefore.data && !prd->notAfter.data) {
       SECU_Indent(out, level);
       fprintf(out, "Error: notBefore or notAfter MUST be present.\n");
loser:
       SECU_PrintAny(out, value, msg, level);
    }
    if (arena) {
       PORT_FreeArena(arena, PR_FALSE);
    }
}

Here is the caller graph for this function:

static SECStatus secu_PrintUserNoticeQualifier ( FILE out,
SECItem *  qualifierValue,
char *  msg,
int  level 
) [static]

Definition at line 173 of file pppolicy.c.

{
    CERTUserNotice *userNotice = NULL;
    if (qualifierValue)
       userNotice = CERT_DecodeUserNotice(qualifierValue);
    if (userNotice) {
       if (userNotice->noticeReference.organization.len != 0) {
            char *string = 
                   itemToString(&userNotice->noticeReference.organization);
            SECItem **itemList = userNotice->noticeReference.noticeNumbers;

           while (itemList && *itemList) {
              SECU_PrintInteger(out,*itemList,string,level+1);
               itemList++;
           }
           PORT_Free(string);
       }
       if (userNotice->displayText.len != 0) {
           SECU_PrintString(out,&userNotice->displayText,
                          "Display Text", level+1);
       }
       CERT_DestroyUserNotice(userNotice);
       return SECSuccess;
    }
    return SECFailure;      /* caller will print this value */
}

Here is the call graph for this function:

Here is the caller graph for this function:


Variable Documentation

Initial value:

Definition at line 86 of file pppolicy.c.

Initial value:

Definition at line 75 of file pppolicy.c.

Initial value:

Definition at line 65 of file pppolicy.c.