rv = SEC_ASN1DecodeItem
rv = SEC_QuickDERDecodeItem
SECStatus CERT_DecodeBasicConstraintValue   (CERTBasicConstraints *value, SECItem *encodedValue){    EncodedContext decodeContext;    PRArenaPool *our_pool;    SECStatus rv = SECSuccess;    do {	PORT_Memset (&decodeContext, 0, sizeof (decodeContext));	/* initialize the value just in case we got "0x30 00", or when the	   pathLenConstraint is omitted.         */	decodeContext.isCA.data =&hexFalse;	decodeContext.isCA.len = 1;		our_pool = PORT_NewArena (SEC_ASN1_DEFAULT_ARENA_SIZE);	if (our_pool == NULL) {	    PORT_SetError (SEC_ERROR_NO_MEMORY);	    GEN_BREAK (SECFailure);	}	rv = SEC_ASN1DecodeItem	     (our_pool, &decodeContext, CERTBasicConstraintsTemplate, encodedValue);	if (rv == SECFailure)	    break;		value->isCA = (PRBool)(*decodeContext.isCA.data);	if (decodeContext.pathLenConstraint.data == NULL) {	    /* if the pathLenConstraint is not encoded, and the current setting	      is CA, then the pathLenConstraint should be set to a negative number	      for unlimited certificate path.	     */	    if (value->isCA)		value->pathLenConstraint = CERT_UNLIMITED_PATH_CONSTRAINT;	}	else if (value->isCA)	    value->pathLenConstraint = DER_GetUInteger (&decodeContext.pathLenConstraint);	else {	    /* here we get an error where the subject is not a CA, but	       the pathLenConstraint is set */	    PORT_SetError (SEC_ERROR_BAD_DER);	    GEN_BREAK (SECFailure);	    break;	}	     } while (0);    PORT_FreeArena (our_pool, PR_FALSE);    return (rv);}