/*
* Copyright 1999-2006 University of Chicago
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef HEADER_PROXYPOLICY_H
#define HEADER_PROXYPOLICY_H
/**
* @file proxypolicy.h
* @brief Proxy Policy
* @author Sam Meder
* @author Sam Lang
*/
/**
* @defgroup proxypolicy ProxyPolicy
* @ingroup globus_gsi_proxy_ssl_api
* @brief ProxyPolicy
*
* The proxypolicy set of data structures
* and functions provides an interface to generating
* a PROXYPOLICY structure which is maintained as
* a field in the PROXYCERTINFO structure,
* and ultimately gets written to a DER encoded string.
*
* Further Information about proxy policies
* is available in the X.509 Proxy Certificate Profile document.
*/
#include
#include
#include
#ifdef __cplusplus
extern "C" {
#endif
#define ANY_LANGUAGE_OID "1.3.6.1.5.5.7.21.0"
#define ANY_LANGUAGE_SN "ANY_LANGUAGE"
#define ANY_LANGUAGE_LN "Any Language"
#define IMPERSONATION_PROXY_OID "1.3.6.1.5.5.7.21.1"
#define IMPERSONATION_PROXY_SN "IMPERSONATION_PROXY"
#define IMPERSONATION_PROXY_LN "GSI impersonation proxy"
#define INDEPENDENT_PROXY_OID "1.3.6.1.5.5.7.21.2"
#define INDEPENDENT_PROXY_SN "INDEPENDENT_PROXY"
#define INDEPENDENT_PROXY_LN "GSI independent proxy"
#define LIMITED_PROXY_OID "1.3.6.1.4.1.3536.1.1.1.9"
#define LIMITED_PROXY_SN "LIMITED_PROXY"
#define LIMITED_PROXY_LN "GSI limited proxy"
/* Used for error handling */
#define ASN1_F_PROXYPOLICY_NEW 450
#define ASN1_F_D2I_PROXYPOLICY 451
/* data structures */
/**
* @ingroup proxypolicy
*
* @note NOTE: The API provides functions to manipulate
* the fields of a PROXYPOLICY. Accessing the fields
* directly will not work.
*
* This typedef maintains information about the policies
* that have been placed on a proxy certificate
*
* @param policy_language defines which policy language
* is to be used to define the policies
* @param policy the policy that determines the policies
* on a certificate
*/
struct PROXYPOLICY_st
{
ASN1_OBJECT * policy_language;
ASN1_OCTET_STRING * policy;
};
typedef struct PROXYPOLICY_st PROXYPOLICY;
#ifdef DECLARE_STACK_OF
DECLARE_STACK_OF(PROXYPOLICY)
#endif
DECLARE_ASN1_FUNCTIONS(PROXYPOLICY)
/* functions */
#if OPENSSL_VERSION_NUMBER < 0x10000000L
ASN1_METHOD * PROXYPOLICY_asn1_meth();
#endif
PROXYPOLICY * PROXYPOLICY_dup(
#if OPENSSL_VERSION_NUMBER >= 0x30000000L
const
#endif
PROXYPOLICY * policy);
int PROXYPOLICY_cmp(
const PROXYPOLICY * a,
const PROXYPOLICY * b);
int PROXYPOLICY_print(
BIO * bp,
PROXYPOLICY * policy);
int PROXYPOLICY_print_fp(
FILE * fp,
PROXYPOLICY * policy);
int PROXYPOLICY_set_policy_language(
PROXYPOLICY * policy,
ASN1_OBJECT * policy_language);
ASN1_OBJECT * PROXYPOLICY_get_policy_language(
PROXYPOLICY * policy);
int PROXYPOLICY_set_policy(
PROXYPOLICY * proxypolicy,
unsigned char * policy,
int length);
unsigned char * PROXYPOLICY_get_policy(
PROXYPOLICY * policy,
int * length);
X509V3_EXT_METHOD * PROXYPOLICY_x509v3_ext_meth();
STACK_OF(CONF_VALUE) * i2v_PROXYPOLICY(
struct v3_ext_method * method,
PROXYPOLICY * ext,
STACK_OF(CONF_VALUE) * extlist);
#ifdef __cplusplus
}
#endif
#endif /* HEADER_PROXYPOLICY_H */