/********************************************************************* * * Authors: Vincenzo Ciaschini - Vincenzo.Ciaschini@cnaf.infn.it * * Copyright (c) Members of the EGEE Collaboration. 2004-2010. * See http://www.eu-egee.org/partners/ for details on the copyright holders. * * 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. * * Parts of this code may be based upon or even include verbatim pieces, * originally written by other people, in which case the original header * follows. * *********************************************************************/ #ifndef VOMS_PROXY_H #define VOMS_PROXY_H #ifdef __cplusplus extern "C" { #endif #include #include #include #include "newformat.h" struct VOMSProxyArguments { X509_REQ *proxyrequest; char *proxyfilename; char *filename; AC **aclist; int proxyversion; char *data; int datalen; char *newsubject; int newsubjectlen; X509 *cert; EVP_PKEY *key; int bits; char *policyfile; char *policylang; char *policytext; int pathlength; int hours; int minutes; int limited; char *voID; void (*callback)(int, int, void*); STACK_OF(X509_EXTENSION) *extensions; STACK_OF(X509) *chain; int pastproxy; char *keyusage; char *netscape; char *exkusage; char *newissuer; char *newserial; int selfsigned; }; struct VOMSProxy { X509 *cert; STACK_OF(X509) *chain; EVP_PKEY *key; }; struct VOMSProxyArguments *VOMS_MakeProxyArguments(); void VOMS_FreeProxyArguments(struct VOMSProxyArguments *args); void VOMS_FreeProxy(struct VOMSProxy *proxy); struct VOMSProxy *VOMS_AllocProxy(); int VOMS_WriteProxy(const char *filename, struct VOMSProxy *proxy); struct VOMSProxy *VOMS_MakeProxy(struct VOMSProxyArguments *args, int *warning, void **additional); X509_EXTENSION *CreateProxyExtension(char * name, char *data, int datalen, int crit); char *ProxyCreationError(int error, void *additional); #define PROXY_ERROR_IS_WARNING(error) (error >= 1000) #define PROXY_NO_ERROR 0 #define PROXY_ERROR_OPEN_FILE 1 #define PROXY_ERROR_STAT_FILE 2 #define PROXY_ERROR_OUT_OF_MEMORY 3 #define PROXY_ERROR_FILE_READ 4 #define PROXY_ERROR_UNKNOWN_BIT 5 #define PROXY_ERROR_UNKNOWN_EXTENDED_BIT 6 #define PROXY_WARNING_GSI_ASSUMED 1000 #define PROXY_WARNING_GENERIC_LANGUAGE_ASSUMED 1001 #ifdef __cplusplus } #endif #endif