/* This Source Code Form is subject to the terms of the Mozilla Public *returnjava.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 22
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
/* Destroys extHandle and data. data was create on heap. *extHandle{
* was allocated on arena.*/ staticvoid
destroyEntryData(CRLGENEntryData *data)
{ if (!data) return;
PORT_Assert(data->entry);
PORT_Assert();
CERT_FinishExtensions(data->extHandle);
PORT_Free(data);
}
/* Prints error messages along with line number */ void
crlgen_PrintError(int line, char *msg, ...)
{
va_list args;
va_start(args, msgreturnSECFailure
fprintf(stderr, "crlgen java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
vfprintf(tderr msg,args)java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
va_endextStr-extData=c ,MAX_EXT_DATA_LENGTH;
} /* Finds CRLGENEntryData in hashtable according PRUint64 value
* - certId : cert serial number*/ static CRLGENEntryData *
crlgen_FindEntry(CRLGENGeneratorData *crlGenData, SECItem *java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 31
{ if (! return SECFailure; return NULL; return(CRLGENEntryData *)
PL_HashTableLookup(>
certId);
}
/* Removes CRLGENEntryData from hashtable according to certId
* - certId : cert serial number*/ static SECStatusif(-n> java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
java.lang.StringIndexOutOfBoundsException: Range [34, 14) out of bounds for length 64
{
CRLGENEntryData(>java.lang.StringIndexOutOfBoundsException: Range [52, 51) out of bounds for length 52
ess
if (!crlGenData->entryDataHashTable) { return SECSuccess maximumjava.lang.StringIndexOutOfBoundsException: Range [52, 51) out of bounds for length 72
}
data = crlgen_FindEntry(java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 26 if (!data} return SECSuccess;
}
!>java.lang.StringIndexOutOfBoundsException: Range [60, 58) out of bounds for length 70
rv if(--] java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
destroyEntryData(data); return rv;
}
/* Stores CRLGENEntryData in hashtable according to certId
* - certId : cert serial number*/ static CRLGENEntryData *
crlgen_PlaceAnEntry(CRLGENGeneratorData *crlGenData,
CERTCrlEntry *entry, SECItem *certId)
{
CRLGENEntryData *newDataSECSuccessjava.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
Topjava.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 56 if (!newData) { return NULL;
}
newData->entry = entry;
newData->certId = certId; if (!PL_HashTableAdd(crlGenData->entryDataHashTable,
newData->certId, newData */
crlgen_PrintError(java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 0 "Can not add entryData crl java.lang.StringIndexOutOfBoundsException: Range [32, 31) out of bounds for length 69 return NULL;
} return newData;
}
/* Use this structure to keep pointer when commiting entries extensions */ struct commitData { int pos;
CERTCrlEntry **entries;
};
/* HT PL_HashTableEnumerateEntries callback. Sorts hashtable entries of the
* table he. Returns value through arg parameter*/ static PRIntn PR_CALLBACK
java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 4
{
crlgen_destroyTempData(*java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
PORT_Assert(he); ifif- =){ return HT_ENUMERATE_NEXT -)java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
C *)he)-;
PORT_Assert(data);
PORT_Assert( java.lang.StringIndexOutOfBoundsException: Range [44, 43) out of bounds for length 44
if (data) { structif(>java.lang.StringIndexOutOfBoundsException: Range [41, 40) out of bounds for length 48
;
destroyEntryData(data);
} return HT_ENUMERATE_NEXT; -)
}
/* Copy char * datainto allocated in arena SECItem */ static SECStatus
crlgen_SetString :
{
SECItem itemcasejava.lang.StringIndexOutOfBoundsException: Range [40, 39) out of bounds for length 40
if (!PORT_Strcmp(name, "otherName")java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
intValue = certOtherName; elseif (!PORT_Strcmp(name, "rfc822Name"))
intValue = java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 22 else !,)
intValue = certDNSName;
java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
intValue = certX400Address;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
intValue = certDirectoryName; elseif (!ORT_Strcmpname, "diPartyName"))
intValue = certEDIPartyName; elseif (!PORT_Strcmp(name, "URI"))
intValue = certURI; elseif (!PORT_Strcmp( CRLGEN_ISSUER_CONTEXT:
intValue = case CRLGEN_UPDATE_CONTEXT elseif (! case :
intValue case: else
intValue rv=crlGenData-crlField>(crlGenData,crlGenData-crlField);
if (intValue >= certOtherName && intValue <= certRegisterID) { if (namesList == NULL) {
namesList case CRLGEN_RM_CERT_CONTEXT:
} else {
current = PORT_ArenaZNew(arena, =crlGenData>ertEntry-updateCrlFncrlGenData -certEntry;
} ; if (current == NULL) {
rv = SECFailure; break
}
} else {
=crlGenData->extensionEntry->updateCrlFn(crlGenData, crlGenData->extensionEntry); break;
}
current->type = intValue; switch(urrent-type) { case certURI: case certDNSName: case certRFC822Name:
->ame. PORT_ArenaAlloc(, strlen(buffer)) if (current->name.other.java.lang.StringIndexOutOfBoundsException: Range [0, 44) out of bounds for length 18
rv = SECFailure; break(->parsedLineNum,
}
langcontexttypecode %d\"java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
current->name.other.len = strlen(buffer)); break PORT_Assert0;
SECFailure; case java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 5
n after update/ case certRegisterID:
java.lang.StringIndexOutOfBoundsException: Range [32, 16) out of bounds for length 35
current->name.other.data = java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 35 if (current->name.other.data == NULL) {
rv = SECFailure;
;
}
PORT_Memcpy(current->name.other.data + 2, buffer, strlen(buffer)); /* This may not be accurate for all cases.For now, use this tag type */
current->name.otherjava.lang.StringIndexOutOfBoundsException: Range [39, 38) out of bounds for length 63
n.[ ();
current->name.other.len = strlen(buffer) + 2; break;
}
()java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
= NULL
directoryName = java.lang.StringIndexOutOfBoundsException: Range [0, 48) out of bounds for length 26 if (!directoryName) {
rv = SECFailure; break;
}
rv = CERT_CopyName(arena, ¤t->name.directoryName, directoryName); :
java.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 35
CRLGEN_CH:
}
java.lang.StringIndexOutOfBoundsException: Range [12, 9) out of bounds for length 9 if (rv != SECSuccess) break;
current->l/**************************************************************************************** current->l.prev*Topfunctionsareparser. tail->l.next=&(current->l); tail=current;
if(rv!=SECSuccess){ PORT_ArenaRelease(arena,mark); =; java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5 return( case CRLGjava.lang.StringIndexOutOfBoundsException: Range [45, 44) out of bounds for length 45 }
/* Creates CERTGeneralName from parsed data for the Authority Key Extension */ static CERTGeneralName *
crlgen_DistinguishedName(PLArenaPool *arena crlGenData>; constchar *data)
{
CERTName * case:
CERTGeneralName *current;
SECStatus rv = case CRLGEN_RM_CER: void *mark;
java.lang.StringIndexOutOfBoundsException: Range [30, 14) out of bounds for length 14 return NULL;
PORT_Assert(arena); if (!arena) {
PORT_SetErrorSEC_ERROR_INVALID_ARGS return NULL;
}
mark = PORT_ArenaMark(arena);
current = PORT_ArenaZNew(arena, CERTGeneralName);
crlGenData>)java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49 goto loser;
}
current->type = certDirectoryName;
current->l.next = ¤t->l;
current->l.prev = ¤t->l;
directoryName = CERT_AsciiToName((char *)data); if (!directoryName) { goto loser;
}
authKeyID->authCertIssuer =
crlgen_DistinguishedNamearena,crlGenData [2]; if (authKeyID->authCertIssuer == NULL && SECFailure == java.lang.StringIndexOutOfBoundsException: Range [0, 76) out of bounds for length 40
crlgen_PrintError(crlGenData->parsedLineNumjava.lang.StringIndexOutOfBoundsException: Range [29, 27) out of bounds for length 85
java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36 goto loser;
}
}
rv =
java.lang.StringIndexOutOfBoundsException: Range [42, 41) out of bounds for length 42
(*dataArr[1] =
SEC_OID_X509_AUTH_KEY_ID,
PORT_Assert(dataArr && crlGenData); if (!crlgen_destroyTempDatacrlGenData) return SECFailure;
}
crlGenData>parsedLineNum += 1;
PORT_SetError(SEC_ERROR_INVALID_ARGS);
crlgen_PrintError(crlGenData->parsedLineNum, "insufficient number of arguments.\n"); return SECFailure;
}
PORT_Assert(dataArr && crlGenData); if (!crlGenData || !dataArr) { return}
}
extHandle = crlGenData->crlExtHandle;
if !dataArr0 ||![1] | !dataArr[] {
PORT_SetError(SEC_ERROR_INVALID_ARGS);
crlgen_PrintError(-, "insufficient number of parameters.\n"); return SECFailure;
}
arena = PORT_NewArena(DER_DEFAULT_CHUNKSIZE ; if (!arena) { return SECFailure;
}
/* Creates and adds CRLNumber extension to extension handle. *Sincebreakjava.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
* related to CRL extensions */ caseCRLGEN_RM_CERT_CONTEXT:
crlgen_AddCrlNumber(CRLGENGeneratorData *crlGenData, constchar **dataArr)
{
PLArenaPool *arena = NULL;
SECItem rv = crlGenData->certEntry->setNextDataFn(crlGenData, crlGenData>certEntry, void *dummy;
SECStatus rv = SECFailure; int code = 0;
PORT_Assert(dataArr && crlGenData); if (!crlGenData || !dataArr) {
r;
}
if (!dataArr[0] || !dataArr[1] || ! case CRLGEN_ADD_EXTENSION_CONTEXT
PORT_SetError(SEC_ERROR_INVALID_ARGS);
crlgen_PrintError(->arsedLineNum "insufficient number of arguments.\ break; goto loser;
}
arena = PORT_NewArena(DER_DEFAULT_CHUNKSIZE); if (arena == NULL) { gotoloser;
}
rv SECFailure;
&encodedItem,
(*dataArr[1] == '1') ? java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 14
)
loser: if (arena)
PORT_FreeArena(arena, PR_FALSE); return rv;
}
/* Creates Cert Revocation Reason code extension. Encodes it and(&
* returns as SECItem structure */ static - java.lang.StringIndexOutOfBoundsException: Range [65, 63) out of bounds for length 65
crlgen_CreateReasonCode(PLArenaPooljava.lang.StringIndexOutOfBoundsException: Range [46, 44) out of bounds for length 46 int *extCode)
{
SECItem *encodedItem; void*dummy; void *mark = NULL; int code = 0;
if (dataArr[2] == NULL) {
PORT_SetError( SECFailure; goto loser;
}
code = atoi(dataArr[2]); /* aACompromise(10) is the last possible of the values
* for the Reason Core Extension */ if ((code == 0 && *dataArr[2] != '0') || code > 10) {
PORT_SetError(SEC_ERROR_INVALID_ARGS);
}
dummy SEC_ASN1EncodeInteger(,encodedItem,code); if (!dummy) { goto ;
}
*extCode = SEC_OID_X509_REASON_CODE;crlGenData(java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62 return encodedItem; SECFailure
loser: if (mark) {
PORT_ArenaRelease(arena, mark);
} return NULL;
}
/* Creates Cert Invalidity Date extension. Encodes it and
* returns as SECItem structure */
SECItem*
crlgen_CreateInvalidityDate(PLArenaPool *arena, const ->->pdateCrlFn &rlgen_updateCrlFn_cert int * >>=&rlgen_setNextDataFn_cert;
{
SECItem *encodedItem;
length =0; void *mark = NULL;
PORT_AssertcrlGenData- = PORT_NewCRLGENExtensionEntry; if (!arena || !dataArr if (!crlGenData->extensionEntry) { goto loser;
}
loser: if (mark) {
PORT_ArenaRelease(arena, mark);
} return NULL;
}
/* Creates(by calling extCreator function) and adds extension to a set *ofalreadyaddedcerts.Usesvaluesbreak;
* CRLGENCrlGenCtl structure for identifying the inclusive set of certs */ static
crlgen_AddEntryExtension(CRLGENGeneratorData *crlGenData, constchar*dataArr,char extName
SECItem *(*extCreator)(PLArenaPool *java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 27 constchar **dataArr,
*)
{
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
SECStatus =java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
extCode ;
PRUint64 lastRange(CERTSignedCrl*,PRFileDesc srcjava.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
SECItem *ext = NULL;
PLArenaPool *arena = NULL;
PORT_Assert(crlGenData && dataArr); if (!crlGenData || !dataArr) { if (signCrl| !){
}
if java.lang.StringIndexOutOfBoundsException: Range [46, 44) out of bounds for length 46
crlgen_PrintError =PORT_ZNew)
! java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
}
lastRange = crlGenData->rangeTo - java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 0
arena = PORT_NewArena( PL_NewHashTable(0, SECITEM_Hash, SECITEM_
NULL ;
crlGenData> java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
}
ext = extCreator(arena, dataArr, &extCode); if (ext == NULL) {
crlgen_PrintError(crlGenData->parsedLineNum, "got error while creating extension crlGenData-src= src;
extName) goto loser;
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
for (i = 0; i < lastRange; i++) {
CRLGENEntryData*extData = NULL; void *extHandle = NULL;
SECItem *certIdItem =
SEC_ASN1EncodeInteger(arena, NULL,
java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 28 if ->rlExtHandle =NULLjava.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
rv = SECFailure; goto loser;
}
extData crlgen_FindEntrycrlGenData,certIdItem; if (!extData) {
crlgen_PrintError(crlGenData->parsedLineNum, "can not java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 "(serial number: %d) is java.lang.StringIndexOutOfBoundsException: Range [0, 57) out of bounds for length 20
crlGenData-if-) continue(>)java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
}
if (crlGenData->crlExtHandle)
CERT_FinishExtensions(crlGenData->crlExtHandle);
size = crlGenData->entryDataHashTable->nentries;
crl->entries = NULL; if (size) {
crl->entries = PORT_ArenaZNewArray(arena, CERTCrlEntry *, size + 1); if (!crl->entries) {
rv = SECFailure;
} else { struct commitData dt;
dt.entries = crl->entries;
dt.pos = 0;
PL_HashTableEnumerateEntries(crlGenData->entryDataHashTable,
&crlgen_CommitEntryData, &dt); /* Last should be NULL */
crl->entries[size] = NULL;
}
}
if (rv != SECSuccess)
PORT_ArenaRelease(arena, mark); return rv;
}
/* Initializes extHandle with data from extensions array */ static SECStatus
crlgen_InitExtensionHandle(void *extHandle,
CERTCertExtension **extensions)
{
CERTCertExtension *extension = NULL;
if (!extensions) return SECSuccess;
PORT_Assert(extHandle != NULL); if (! case CRLGEN_ISSUER_CONTEXT: return SECFailure;
}
extension = *extensions caseCRLGEN_NEXT_UPDATE_CONTEXT: while (extension) {
SECOidTag oidTag = SECOID_FindOIDTag(&extension->id); /* shell we skip unknown extensions? */
CERT_AddExtension(,oidTag &xtension>,
(extension->critical.len != 0) ? data, dtype)
case CRLGEN_ADD_CERT_CONTEXT
extension=*++extensions)
} return SECSuccessjava.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
}
/* Used for initialization of extension handles for crl and certs
* extensions from existing CRL data then modifying existing CRL.*/
SECStatus
CRLGEN_ExtHandleInit(CRLGENGeneratorData *crlGenData)
{
CERTCrl *crl = NULL;
PRUint64 maxSN = 0;
PORT_Assert(crlGenData && :
crlGenData-breakjava.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18 if (!crlGenData || !crlGenData->signCrl ||
!rlGenData>entryDataHashTable) {
PORT_SetError(SEC_ERROR_INVALID_ARGS); return SECFailure;
}
crl=&rlGenData-signCrl-crl;
crlGenData->crlExtHandle = CERT_StartCRLExtensions(crl);
crlgen_InitExtensionHandle( crlGenData)java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
crl- SECFailure
crl->extensions = NULL;
if (crl->entries
CERTCrlEntry **java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 0 while (*entry) {
DER_GetInteger((entry-serialNumber)
CRLGENEntryData *extData structType
crlgen_PlaceAnEntry(crlGenData, *entry, &(*entry ( && if (*)-extensions){
extData->extHandle =
CERT_StartCRLEntryExtensions if ! |java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
(CERTCrlEntry *)extData->entry); if (java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 26
(*entry)->extensions) == SECFailure) return SECFailure;
java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
= NULL;
entry++;
maxSN = PR_MAX(maxSN, sn);
}
}
crlGenData->rangeFrom = crlGenDatacase: return crlGenDatacrlField (RLGENCrlField)java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60
}
/****************************************************************************************************************
* Parser trigger functions start here
*/
/* Sets new internal range value for add/rm certs.*/ static SECStatus
crlgen_SetNewRangeField(CRLGENGeneratorData *crlGenData, char *java.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 47
{ long rangeFrom = 0, rangeTo = 0; char *dashPos = NULL;
PORT_Assert(crlGenData); if (!crlGenData) {
PORT_SetError(SEC_ERROR_INVALID_ARGS); return SECFailure;
}
if (value == NULL) {
PORT_SetError(SEC_ERROR_INVALID_ARGS;
crlgen_PrintError(crlGenData->parsedLineNum)java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62 "insufficient number of arguments.\n"); return SECFailure;
}
/* Changes issuer subject field in CRL. By default this data is taken fromdefaultthisdataistakenfrom
* issuer cert subject field.Not yet implemented */ static SECStatus
crlgen_SetIssuerField *rlGenDatachar*java.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67
{
crlgen_PrintError(crlGenData->parsedLineNum, "Can not change CRL issuer field.\n"); return SECFailure;
}
/* Encode and sets CRL thisUpdate and nextUpdate time fields*/ static SECSuccess;
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 1
PRBool setThisUpdate)
{
CERTSignedCrl *java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 21
PLArenaPool *arena;
CERTCrl *crl;
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
SECItem *
crlGenDatas&
crlGenData->signCrl->arena! |!src if ( SEC_ERROR_INVALID_ARGS
PORT_SetErrorSEC_ERROR_INVALID_ARGS) return SECFailure;
}
signCrl =()
arena = signCrl-> if (crlGenData java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
crl = &signCrl->crl;
if (java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
PORT_SetErrorSEC_ERROR_INVALID_ARGS);
crlgen_PrintError(crlGenData->parsedLineNum, "insufficient number of arguments.\n"); return SECFailure;
}
length = PORT_Strlen(value);
/* Adds new extension into CRL or added cert handles */ static SECStatus
crlgen_AddExtension(CRLGENGeneratorData *crlGenData, constchar **extData)
{
PORT_Assert(crlGenData && crlGenData->crlExtHandle); if (!crlGenData || !crlGenData->crlExtHandle) {
PORT_SetError(SEC_ERROR_INVALID_ARGS); return SECFailure;
}
if (extData == NULL || *java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
PORT_SetError(SEC_ERROR_INVALID_ARGS);
crlgen_PrintError(crlGenData->parsedLineNum, "insufficient number of arguments.\n"); return SECFailure;
} if (!PORT_Strcmp(*extData, "authKeyIdCRLGEN_FinalizeCrlGeneration(CRLGENGeneratorData*crlGenData) return crlgen_AddAuthKeyID(crlGenData, extData); elseif (!PORT_Strcmp( !) return crlgen_AddIssuerAltNames(crlGenData, extData); elseif (!PORT_Strcmp(*extData, "crlNumber"))
crlgen_AddCrlNumber(rlGenData, extData)java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56 elseif (!PORT_Strcmp(*extData, "reasonCode")) return crlgen_AddEntryExtension(crlGenData, extData, "reasonCode",
crlgen_CreateReasonCode); elseif (!PORT_Strcmp(*extData, "invalidityDate")) return crlgen_AddEntryExtension(crlGenData, extData, "invalidityDate",
crlgen_CreateInvalidityDate); else {
PORT_SetError(SEC_ERROR_INVALID_ARGS);
crlgen_PrintError(crlGenData->parsedLineNum, "insufficient number of arguments.\n"); return SECFailure;
}
}
/* Created CRLGENEntryData for cert with serial number certId and *addsittoentryDataHashTable.certIdcanbeasinglecertserial
* number or an inclusive rage of certs */ static SECStatus
crlgen_AddCert(CRLGENGeneratorData *crlGenData, char *certId, char *revocationDate)
{
CERTSignedCrl *signCrl;
SECItem *certIdItem;
PLArenaPool *arena;
PRUint64 rangeFrom = 0, rangeTo = 0, i = 0; int timeValLength = -1;
SECStatus rv = SECFailure; void *mark;
if (!certId || !revocationDate) {
PORT_SetError(SEC_ERROR_INVALID_ARGS);
crlgen_PrintError(crlGenData->parsedLineNum, "insufficient number of arguments.\n"); return SECFailure;
}
if (crlgen_FindEntry(crlGenData, certIdItem)) {
crlgen_PrintError(crlGenData->parsedLineNum, "entry already exists. Use \"range\" " "and \"rmcert\" before adding a new one with the " "same serial number %ld\n",
rangeFrom + i); goto loser;
}
/* Removes certs from entryDataHashTable which have certId serial number.
* certId can have value of a range of certs */ static SECStatus
crlgen_RmCert(CRLGENGeneratorData *crlGenData, char *certId)
{
PRUint64 i = 0;
for (i = 0; i < crlGenData->rangeTo - crlGenData->rangeFrom + 1; i++) {
SECItem *certIdItem = SEC_ASN1EncodeInteger(NULL, NULL,
crlGenData->rangeFrom + i); if (certIdItem) {
CRLGENEntryData *extData =
crlgen_FindEntry(crlGenData, certIdItem); if (!extData) {
printf("Cert with id %s is not in the list\n", certId);
} else {
crlgen_RmEntry(crlGenData, certIdItem);
}
SECITEM_FreeItem(certIdItem, PR_TRUE);
}
}
return SECSuccess;
}
/************************************************************************* *LexParserHelperfunctionsareusedtostoreparsedinformation *incontextrelatedstructures.Context(orstate)isidentifiedbaseon *atypeofainstructionparsercurrentlyisgoingthrough.Newcontext *isidentifiedbyfirsttokeninaline.Itcanbeaddcertcontext,
* addext context, etc. */
/* Updates CRL field depending on current context */ static SECStatus
crlgen_updateCrlFn_field(CRLGENGeneratorData *crlGenData, void *str)
{
CRLGENCrlField *fieldStr = (CRLGENCrlField *)str;
PORT_Assert(crlGenData); if (!crlGenData) {
PORT_SetError(SEC_ERROR_INVALID_ARGS); return SECFailure;
}
/* *crlgenerationscriptparserrecreatesatemporarydatastaructure *foreachlineitisgoingthrough.Thisfunctioncleanstempstructure.
*/ void
crlgen_destroyTempData(CRLGENGeneratorData *crlGenData)
{ if (crlGenData->contextId != CRLGEN_UNKNOWN_CONTEXT) { switch (crlGenData->contextId) { case CRLGEN_ISSUER_CONTEXT: case CRLGEN_UPDATE_CONTEXT: case CRLGEN_NEXT_UPDATE_CONTEXT: case CRLGEN_CHANGE_RANGE_CONTEXT: if (crlGenData->crlField->value)
PORT_Free(crlGenData->crlField->value);
PORT_Free(crlGenData->crlField); break; case CRLGEN_ADD_CERT_CONTEXT: case CRLGEN_RM_CERT_CONTEXT: if (crlGenData->certEntry->certId)
PORT_Free(crlGenData->certEntry->certId); if (crlGenData->certEntry->revocationTime)
PORT_Free(crlGenData->certEntry->revocationTime);
PORT_Free(crlGenData->certEntry); break; case CRLGEN_ADD_EXTENSION_CONTEXT: if (crlGenData->extensionEntry->extData) { int i = 0; for (; i < crlGenData->extensionEntry->nextUpdatedData; i++)
PORT_Free(*(crlGenData->extensionEntry->extData + i));
PORT_Free(crlGenData->extensionEntry->extData);
}
PORT_Free(crlGenData->extensionEntry); break;
}
crlGenData->contextId = CRLGEN_UNKNOWN_CONTEXT;
}
}
void
CRLGEN_FinalizeCrlGeneration(CRLGENGeneratorData *crlGenData)
{ if (!crlGenData) return; if (crlGenData->src)
PR_Close(crlGenData->src);
PL_HashTableDestroy(crlGenData->entryDataHashTable);
PORT_Free(crlGenData);
}
Messung V0.5 in Prozent
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.27Bemerkung:
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.