rv = EncodeAndAddExtensionValue
rv = SECU_EncodeAndAddExtensionValue
AddAuthKeyID (void *extHandle){    CERTAuthKeyID *authKeyID = NULL;        PRArenaPool *arena = NULL;    SECStatus rv = SECSuccess;    char buffer[512];    do {	arena = PORT_NewArena(DER_DEFAULT_CHUNKSIZE);	if ( !arena ) {	    SECU_PrintError(progName, "out of memory");	    GEN_BREAK (SECFailure);	}	if (GetYesNo ("Enter value for the authKeyID extension [y/n]?\n") == 0)	    break;		authKeyID = PORT_ArenaZAlloc (arena, sizeof (CERTAuthKeyID));	if (authKeyID == NULL) {	    GEN_BREAK (SECFailure);	}	rv = GetString (arena, "Enter value for the key identifier fields, enter to omit:",			&authKeyID->keyID);	if (rv != SECSuccess)	    break;	authKeyID->authCertIssuer = GetGeneralName (arena);	if (authKeyID->authCertIssuer == NULL && SECFailure == PORT_GetError ())		break;		rv = GetString (arena, "Enter value for the authCertSerial field, enter to omit:",			&authKeyID->authCertSerialNumber);	buffer[0] = 'n';	puts ("Is this a critical extension [y/n]? ");	gets (buffer);		rv = EncodeAndAddExtensionValue	    (arena, extHandle, authKeyID,	     (buffer[0] == 'y' || buffer[0] == 'Y') ? PR_TRUE : PR_FALSE,	     SEC_OID_X509_AUTH_KEY_ID, 	     (EXTEN_VALUE_ENCODER) CERT_EncodeAuthKeyID);	if (rv)	    break;	    } while (0);    if (arena)	PORT_FreeArena (arena, PR_FALSE);    return (rv);}   