rv = SEC_ASN1DecodeItem
rv = SEC_QuickDERDecodeItem
CERT_DecodeAuthKeyID (PRArenaPool *arena, SECItem *encodedValue){    CERTAuthKeyID * value = NULL;    SECStatus       rv    = SECFailure;    void *          mark;    PORT_Assert (arena);       do {	mark = PORT_ArenaMark (arena);        value = (CERTAuthKeyID*)PORT_ArenaZAlloc (arena, sizeof (*value));	value->DERAuthCertIssuer = NULL;	if (value == NULL)	    break;	rv = SEC_ASN1DecodeItem	     (arena, value, CERTAuthKeyIDTemplate, encodedValue);	if (rv != SECSuccess)	    break;        value->authCertIssuer = cert_DecodeGeneralNames (arena, value->DERAuthCertIssuer);	if (value->authCertIssuer == NULL)	    break;		/* what if the general name contains other format but not URI ?	   hl	 */	if ((value->authCertSerialNumber.data && !value->authCertIssuer) ||	    (!value->authCertSerialNumber.data && value->authCertIssuer)){	    PORT_SetError (SEC_ERROR_EXTENSION_VALUE_INVALID);	    break;	}    } while (0);    if (rv != SECSuccess) {	PORT_ArenaRelease (arena, mark);	return ((CERTAuthKeyID *)NULL);	        }     PORT_ArenaUnmark(arena, mark);    return (value);}