gridsite.h File Reference

Go to the source code of this file.

## Data Structures

struct | GRSTgaclCred
struct | GRSTgaclEntry
struct | GRSTgaclAcl
struct | GRSTgaclUser
struct | GRSTasn1TagList
struct | GRSTx509Cert
struct | GRSTx509Chain
struct | GRSThtcpCountstr
struct | GRSThtcpMessage
struct | GRSThttpCharsList
struct | GRSThttpBody

## Typedefs

typedef int | GRSTgaclAction
typedef unsigned int | GRSTgaclPerm

## Functions

| __attribute__ ((deprecated)) typedef struct
int | GRSTx509CertLoad (GRSTx509Cert *, X509 *)
int | GRSTx509ChainLoad (GRSTx509Chain **chain, STACK_OF(X509) *certstack, X509 *lastcert, char *capath, char *vomsdir)
int | GRSTx509ChainLoadCheck (GRSTx509Chain **, STACK_OF(X509) *, X509 *, char *, char *)
| Check certificate chain for GSI proxy acceptability. More...
int | GRSTx509ChainFree (GRSTx509Chain *)
int | GRSTgaclInit (void)
GRSTgaclCred * | GRSTgaclCredCreate (char *, char *)
int | GRSTgaclCredFree (GRSTgaclCred *)
int | GRSTgaclEntryAddCred (GRSTgaclEntry *, GRSTgaclCred *)
int | GRSTgaclEntryDelCred (GRSTgaclEntry *, GRSTgaclCred *)
int | GRSTgaclCredCredPrint (GRSTgaclCred *, FILE *)
int | GRSTgaclCredCmpAuri (GRSTgaclCred *, GRSTgaclCred *)
GRSTgaclEntry * | GRSTgaclEntryNew (void)
int | GRSTgaclEntryFree (GRSTgaclEntry *)
int | GRSTgaclAclAddEntry (GRSTgaclAcl *, GRSTgaclEntry *)
int | GRSTgaclEntryPrint (GRSTgaclEntry *, FILE *)
int | GRSTgaclPermPrint (GRSTgaclPerm, FILE *)
int | GRSTgaclEntryAllowPerm (GRSTgaclEntry *, GRSTgaclPerm)
int | GRSTgaclEntryUnallowPerm (GRSTgaclEntry *, GRSTgaclPerm)
int | GRSTgaclEntryDenyPerm (GRSTgaclEntry *, GRSTgaclPerm)
int | GRSTgaclEntryUndenyPerm (GRSTgaclEntry *, GRSTgaclPerm)
char * | GRSTgaclPermToChar (GRSTgaclPerm)
GRSTgaclPerm | GRSTgaclPermFromChar (char *)
GRSTgaclAcl * | GRSTgaclAclNew (void)
int | GRSTgaclAclFree (GRSTgaclAcl *)
int | GRSTgaclAclPrint (GRSTgaclAcl *, FILE *)
int | GRSTgaclAclSave (GRSTgaclAcl *, char *)
GRSTgaclAcl * | GRSTgaclAclLoadFile (char *)
char * | GRSTgaclFileFindAclname (char *)
GRSTgaclAcl * | GRSTgaclAclLoadforFile (char *)
int | GRSTgaclFileIsAcl (char *)
GRSTgaclUser * | GRSTgaclUserNew (GRSTgaclCred *)
int | GRSTgaclUserFree (GRSTgaclUser *)
int | GRSTgaclUserAddCred (GRSTgaclUser *, GRSTgaclCred *)
int | GRSTgaclUserHasCred (GRSTgaclUser *, GRSTgaclCred *)
char *int | GRSTgaclUserLoadDNlists (GRSTgaclUser *, char *)
GRSTgaclCred * | GRSTgaclUserFindCredtype (GRSTgaclUser *, char *)
GRSTgaclUser *int | GRSTgaclUserHasAURI (GRSTgaclUser *, char *)
GRSTgaclPerm | GRSTgaclAclTestUser (GRSTgaclAcl *, GRSTgaclUser *)
GRSTgaclPerm | GRSTgaclAclTestexclUser (GRSTgaclAcl *, GRSTgaclUser *)
char * | GRSThttpUrlDecode (char *)
char * | GRSThttpUrlEncode (char *)
char * | GRSThttpUrlMildencode (char *)
int | GRSTx509NameCmp (char *, char *)
| Compare X509 Distinguished Name strings. More...
int | GRSTx509KnownCriticalExts (X509 *)
| Check critical extensions. More...
int | GRSTx509IsCA (X509 *)
| Check if certificate can be used as a CA to sign standard X509 certs. More...
int | GRSTx509CheckChain (int *, X509_STORE_CTX *)
int | GRSTx509VerifyCallback (int, X509_STORE_CTX *)
| Example VerifyCallback routine. More...
char X509 | STACK_OF (X509) *
char char X509 *char * | GRSTx509CachedProxyFind (char *, char *, char *)
| Find a proxy file in the proxy cache. More...
char * | GRSTx509FindProxyFileName (void)
| Find proxy file name of the current user. More...
int | GRSTx509MakeProxyCert (char **, FILE *, char *, char *, char *, int)
| Make a GSI Proxy chain from a request, certificate and private key. More...
char * | GRSTx509CachedProxyKeyFind (char *, char *, char *, STACK_OF(X509) *)
| Find a temporary proxy private key file in the proxy cache. More...
int | GRSTx509ProxyDestroy (char *, char *, char *)
| Destroy stored GSI proxy files. More...
int | GRSTx509ProxyGetTimes (char *, char *, char *, time_t *, time_t *)
| Get start and finish validity times of stored GSI proxy file. More...
int | GRSTx509CreateProxyRequest (char **, char **, char *)
| Create a X.509 request for a GSI proxy and its private key. More...
int | GRSTx509CreateProxyRequestKS (char **reqtxt, char **keytxt, char *ocspurl, int keysize)
int | GRSTx509MakeProxyRequest (char **, char *, char *, char *)
| Create a X.509 request for a GSI proxy and its private key. More...
int | GRSTx509MakeProxyRequestKS (char **reqtxt, char *proxydir, char *delegation_id, char *user_dn, int keysize)
char * | GRSTx509MakeDelegationID (void)
| Returns a Delegation ID based on hash of GRST_CRED_0, ... More...
int | GRSTx509StringToChain (STACK_OF(X509) **, char *)
| Create a stack of X509 certificate from a PEM-encoded string. More...
char * | GRSTx509MakeProxyFileName (char *, STACK_OF(X509) *)
| Return the short file name for the given delegation_id and user_dn. More...
int | GRSTx509CacheProxy (char *, char *, char *, char *)
| Store a GSI proxy chain in the proxy cache, along with the private key. More...
int | GRST_is_id_safe (const char *)
void | GRSThttpBodyInit (GRSThttpBody *)
void | GRSThttpPrintf (GRSThttpBody *, char *,...)
int | GRSThttpCopy (GRSThttpBody *, char *)
void | GRSThttpWriteOut (GRSThttpBody *)
int | GRSThttpPrintHeaderFooter (GRSThttpBody *, char *, char *)
int | GRSThttpPrintHeader (GRSThttpBody *, char *)
int | GRSThttpPrintFooter (GRSThttpBody *, char *)
char * | GRSThttpGetCGI (char *)
time_t | GRSTasn1TimeToTimeT (char *, size_t)
| ASN1 time string (in a char *) to time_t. More...
int | GRSTasn1SearchTaglist (struct GRSTasn1TagList taglist[], int, char *)
int | GRSTasn1ParseDump (BIO *, unsigned char *, long, struct GRSTasn1TagList taglist[], int, int *)
int | GRSTasn1GetX509Name (char *, int, char *, char *, struct GRSTasn1TagList taglist[], int)
int | GRSThtcpNOPrequestMake (char **, int *, unsigned int)
int | GRSThtcpNOPresponseMake (char **, int *, unsigned int)
int | GRSThtcpTSTrequestMake (char **, int *, unsigned int, char *, char *, char *)
int | GRSThtcpTSTresponseMake (char **, int *, unsigned int, char *, char *, char *)
int | GRSThtcpMessageParse (GRSThtcpMessage *, char *, int)

## Variables

int(* | GRSTerrorLogFunc )(char *, int, int, char *,...)
| GRSTgaclNamevalue
| int
| size_t

## Typedef Documentation

## GRSTgaclAction

typedef int GRSTgaclAction

## GRSTgaclPerm

typedef unsigned int GRSTgaclPerm

## Function Documentation

## __attribute__()

__attribute__ | ( | (deprecated) |  | ) |

## GRST_is_id_safe()

int GRST_is_id_safe | ( | const char * |  | ) |

## GRSTasn1GetX509Name()

int GRSTasn1GetX509Name | ( | char * | ,
|  | int | ,
|  | char * | ,
|  | char * | ,
|  | struct GRSTasn1TagList | taglist[],
|  | int |
| ) |  |

## GRSTasn1ParseDump()

int GRSTasn1ParseDump | ( | BIO * | ,
|  | unsigned char * | ,
|  | long | ,
|  | struct GRSTasn1TagList | taglist[],
|  | int | ,
|  | int * |
| ) |  |

## GRSTasn1SearchTaglist()

int GRSTasn1SearchTaglist | ( | struct GRSTasn1TagList | taglist[],
|  | int | ,
|  | char * |
| ) |  |

## GRSTasn1TimeToTimeT()

time_t GRSTasn1TimeToTimeT | ( | char * | asn1time,
|  | size_t | len
| ) |  |

ASN1 time string (in a char *) to time_t.

(Use ASN1_STRING_data() to convert ASN1_GENERALIZEDTIME to char * if necessary)

## GRSTgaclAclAddEntry()

int GRSTgaclAclAddEntry | ( | GRSTgaclAcl * | ,
|  | GRSTgaclEntry * |
| ) |  |

## GRSTgaclAclFree()

int GRSTgaclAclFree | ( | GRSTgaclAcl * |  | ) |

## GRSTgaclAclLoadFile()

GRSTgaclAcl* GRSTgaclAclLoadFile | ( | char * |  | ) |

## GRSTgaclAclLoadforFile()

GRSTgaclAcl* GRSTgaclAclLoadforFile | ( | char * |  | ) |

## GRSTgaclAclNew()

GRSTgaclAcl* GRSTgaclAclNew | ( | void |  | ) |

## GRSTgaclAclPrint()

int GRSTgaclAclPrint | ( | GRSTgaclAcl * | ,
|  | FILE * |
| ) |  |

## GRSTgaclAclSave()

int GRSTgaclAclSave | ( | GRSTgaclAcl * | ,
|  | char * |
| ) |  |

## GRSTgaclAclTestexclUser()

GRSTgaclPerm GRSTgaclAclTestexclUser | ( | GRSTgaclAcl * | ,
|  | GRSTgaclUser * |
| ) |  |

## GRSTgaclAclTestUser()

GRSTgaclPerm GRSTgaclAclTestUser | ( | GRSTgaclAcl * | ,
|  | GRSTgaclUser * |
| ) |  |

## GRSTgaclCredCmpAuri()

int GRSTgaclCredCmpAuri | ( | GRSTgaclCred * | ,
|  | GRSTgaclCred * |
| ) |  |

## GRSTgaclCredCreate()

GRSTgaclCred* GRSTgaclCredCreate | ( | char * | ,
|  | char * |
| ) |  |

## GRSTgaclCredCredPrint()

int GRSTgaclCredCredPrint | ( | GRSTgaclCred * | ,
|  | FILE * |
| ) |  |

## GRSTgaclCredFree()

int GRSTgaclCredFree | ( | GRSTgaclCred * |  | ) |

## GRSTgaclEntryAddCred()

int GRSTgaclEntryAddCred | ( | GRSTgaclEntry * | ,
|  | GRSTgaclCred * |
| ) |  |

## GRSTgaclEntryAllowPerm()

int GRSTgaclEntryAllowPerm | ( | GRSTgaclEntry * | ,
|  | GRSTgaclPerm |
| ) |  |

## GRSTgaclEntryDelCred()

int GRSTgaclEntryDelCred | ( | GRSTgaclEntry * | ,
|  | GRSTgaclCred * |
| ) |  |

## GRSTgaclEntryDenyPerm()

int GRSTgaclEntryDenyPerm | ( | GRSTgaclEntry * | ,
|  | GRSTgaclPerm |
| ) |  |

## GRSTgaclEntryFree()

int GRSTgaclEntryFree | ( | GRSTgaclEntry * |  | ) |

## GRSTgaclEntryNew()

GRSTgaclEntry* GRSTgaclEntryNew | ( | void |  | ) |

## GRSTgaclEntryPrint()

int GRSTgaclEntryPrint | ( | GRSTgaclEntry * | ,
|  | FILE * |
| ) |  |

## GRSTgaclEntryUnallowPerm()

int GRSTgaclEntryUnallowPerm | ( | GRSTgaclEntry * | ,
|  | GRSTgaclPerm |
| ) |  |

## GRSTgaclEntryUndenyPerm()

int GRSTgaclEntryUndenyPerm | ( | GRSTgaclEntry * | ,
|  | GRSTgaclPerm |
| ) |  |

## GRSTgaclFileFindAclname()

char* GRSTgaclFileFindAclname | ( | char * |  | ) |

## GRSTgaclFileIsAcl()

int GRSTgaclFileIsAcl | ( | char * |  | ) |

## GRSTgaclInit()

int GRSTgaclInit | ( | void |  | ) |

## GRSTgaclPermFromChar()

GRSTgaclPerm GRSTgaclPermFromChar | ( | char * |  | ) |

## GRSTgaclPermPrint()

int GRSTgaclPermPrint | ( | GRSTgaclPerm | ,
|  | FILE * |
| ) |  |

## GRSTgaclPermToChar()

char* GRSTgaclPermToChar | ( | GRSTgaclPerm |  | ) |

## GRSTgaclUserAddCred()

int GRSTgaclUserAddCred | ( | GRSTgaclUser * | ,
|  | GRSTgaclCred * |
| ) |  |

## GRSTgaclUserFindCredtype()

GRSTgaclCred* GRSTgaclUserFindCredtype | ( | GRSTgaclUser * | ,
|  | char * |
| ) |  |

## GRSTgaclUserFree()

int GRSTgaclUserFree | ( | GRSTgaclUser * |  | ) |

## GRSTgaclUserHasAURI()

GRSTgaclUser* int GRSTgaclUserHasAURI | ( | GRSTgaclUser * | ,
|  | char * |
| ) |  |

## GRSTgaclUserHasCred()

int GRSTgaclUserHasCred | ( | GRSTgaclUser * | ,
|  | GRSTgaclCred * |
| ) |  |

## GRSTgaclUserLoadDNlists()

char* int GRSTgaclUserLoadDNlists | ( | GRSTgaclUser * | ,
|  | char * |
| ) |  |

## GRSTgaclUserNew()

GRSTgaclUser* GRSTgaclUserNew | ( | GRSTgaclCred * |  | ) |

## GRSThtcpMessageParse()

int GRSThtcpMessageParse | ( | GRSThtcpMessage * | ,
|  | char * | ,
|  | int |
| ) |  |

## GRSThtcpNOPrequestMake()

int GRSThtcpNOPrequestMake | ( | char ** | ,
|  | int * | ,
|  | unsigned int |
| ) |  |

## GRSThtcpNOPresponseMake()

int GRSThtcpNOPresponseMake | ( | char ** | ,
|  | int * | ,
|  | unsigned int |
| ) |  |

## GRSThtcpTSTrequestMake()

int GRSThtcpTSTrequestMake | ( | char ** | ,
|  | int * | ,
|  | unsigned int | ,
|  | char * | ,
|  | char * | ,
|  | char * |
| ) |  |

## GRSThtcpTSTresponseMake()

int GRSThtcpTSTresponseMake | ( | char ** | ,
|  | int * | ,
|  | unsigned int | ,
|  | char * | ,
|  | char * | ,
|  | char * |
| ) |  |

## GRSThttpBodyInit()

void GRSThttpBodyInit | ( | GRSThttpBody * |  | ) |

## GRSThttpCopy()

int GRSThttpCopy | ( | GRSThttpBody * | ,
|  | char * |
| ) |  |

## GRSThttpGetCGI()

char* GRSThttpGetCGI | ( | char * |  | ) |

## GRSThttpPrintf()

void GRSThttpPrintf | ( | GRSThttpBody * | ,
|  | char * | ,
|  |  | ...
| ) |  |

## GRSThttpPrintFooter()

int GRSThttpPrintFooter | ( | GRSThttpBody * | ,
|  | char * |
| ) |  |

## GRSThttpPrintHeader()

int GRSThttpPrintHeader | ( | GRSThttpBody * | ,
|  | char * |
| ) |  |

## GRSThttpPrintHeaderFooter()

int GRSThttpPrintHeaderFooter | ( | GRSThttpBody * | ,
|  | char * | ,
|  | char * |
| ) |  |

## GRSThttpUrlDecode()

char* GRSThttpUrlDecode | ( | char * |  | ) |

## GRSThttpUrlEncode()

char* GRSThttpUrlEncode | ( | char * |  | ) |

## GRSThttpUrlMildencode()

char* GRSThttpUrlMildencode | ( | char * |  | ) |

## GRSThttpWriteOut()

void GRSThttpWriteOut | ( | GRSThttpBody * |  | ) |

## GRSTx509CachedProxyFind()

char char X509* char* GRSTx509CachedProxyFind | ( | char * | proxydir,
|  | char * | delegation_id,
|  | char * | user_dn
| ) |  |

Find a proxy file in the proxy cache.

Returns the full path and file name of proxy file associated with given delegation ID and user DN.

Return a pointer to a malloc'd string with the full path of the proxy file corresponding to the given delegation_id, or NULL if not found.

## GRSTx509CachedProxyKeyFind()

char* GRSTx509CachedProxyKeyFind | ( | char * | proxydir,
|  | char * | delegation_id,
|  | char * | user_dn,
|  | STACK_OF(X509) * | certstack
| ) |  |

Find a temporary proxy private key file in the proxy cache.

Returns the full path and file name of the private key file associated with given delegation ID and user DN.

Return a pointer to a malloc'd string with the full path of the private proxy key corresponding to the given delegation_id, or NULL if not found.

## GRSTx509CacheProxy()

int GRSTx509CacheProxy | ( | char * | proxydir,
|  | char * | delegation_id,
|  | char * | user_dn,
|  | char * | proxychain
| ) |  |

Store a GSI proxy chain in the proxy cache, along with the private key.

Returns GRST_RET_OK on success, non-zero otherwise. The existing private key with the same delegation ID and user DN is moved out of the temporary cache.

## GRSTx509CertLoad()

int GRSTx509CertLoad | ( | GRSTx509Cert * | ,
|  | X509 * |
| ) |  |

## GRSTx509ChainFree()

int GRSTx509ChainFree | ( | GRSTx509Chain * |  | ) |

## GRSTx509ChainLoad()

int GRSTx509ChainLoad | ( | GRSTx509Chain ** | chain,
|  | STACK_OF(X509) * | certstack,
|  | X509 * | lastcert,
|  | char * | capath,
|  | char * | vomsdir
| ) |  |

## GRSTx509ChainLoadCheck()

int GRSTx509ChainLoadCheck | ( | GRSTx509Chain ** | chain,
|  | STACK_OF(X509) * | certstack,
|  | X509 * | lastcert,
|  | char * | capath,
|  | char * | vomsdir
| ) |  |

Check certificate chain for GSI proxy acceptability.

Returns GRST_RET_OK if valid; caNl errors otherwise.

The GridSite version handles old and new style Globus proxies, and proxies derived from user certificates issued with "X509v3 Basic Constraints: CA:FALSE" (eg UK e-Science CA)

TODO: we do not yet check ProxyCertInfo and ProxyCertPolicy extensions (although via GRSTx509KnownCriticalExts() we can accept them.)

## GRSTx509CheckChain()

int GRSTx509CheckChain | ( | int * | ,
|  | X509_STORE_CTX * |
| ) |  |

## GRSTx509CreateProxyRequest()

int GRSTx509CreateProxyRequest | ( | char ** | ,
|  | char ** | ,
|  | char * |
| ) |  |

Create a X.509 request for a GSI proxy and its private key.

Returns GRST_RET_OK on success, non-zero otherwise. Request string and private key are PEM encoded strings

## GRSTx509CreateProxyRequestKS()

int GRSTx509CreateProxyRequestKS | ( | char ** | reqtxt,
|  | char ** | keytxt,
|  | char * | ocspurl,
|  | int | keysize
| ) |  |

## GRSTx509FindProxyFileName()

char* GRSTx509FindProxyFileName | ( | void |  | ) |

Find proxy file name of the current user.

Return a string with the proxy file name or NULL if not present. This function does not check if the proxy has expired.

## GRSTx509IsCA()

int GRSTx509IsCA | ( | X509 * | cert | ) |

Check if certificate can be used as a CA to sign standard X509 certs.

Return GRST_RET_OK if true; GRST_RET_FAILED if not.

## GRSTx509KnownCriticalExts()

int GRSTx509KnownCriticalExts | ( | X509 * | cert | ) |

Check critical extensions.

Returning GRST_RET_OK if all of extensions are known to us or OpenSSL; GRST_REF_FAILED otherwise.

Since this function relies on functionality (X509_supported_extension) introduced in 0.9.7, then we do nothing and report an error (GRST_RET_FAILED) if one of the associated defines (X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION) is absent.

## GRSTx509MakeDelegationID()

char* GRSTx509MakeDelegationID | ( | void |  | ) |

Returns a Delegation ID based on hash of GRST_CRED_0, ...

Returns a malloc'd string with Delegation ID made by SHA1-hashing the values of the compact credentials exported by mod_gridsite

## GRSTx509MakeProxyCert()

int GRSTx509MakeProxyCert | ( | char ** | proxychain,
|  | FILE * | debugfp,
|  | char * | reqtxt,
|  | char * | cert,
|  | char * | key,
|  | int | minutes
| ) |  |

Make a GSI Proxy chain from a request, certificate and private key.

The proxy chain is returned in *proxychain. If debugfp is non-NULL, errors are output to that file pointer. The proxy will expired in the given number of minutes starting from the current time.

## GRSTx509MakeProxyFileName()

char* GRSTx509MakeProxyFileName | ( | char * | delegation_id,
|  | STACK_OF(X509) * | certstack
| ) |  |

Return the short file name for the given delegation_id and user_dn.

Returns a malloc'd string with the short file name (no paths) that derived from the hashed delegation_id and user_dn

File name is SHA1_HASH(DelegationID)+"-"+SHA1_HASH(DN) where DN is DER encoded version of user_dn with any trailing CN=proxy removed Hashes are the most significant 8 bytes, in lowercase hexadecimal.

## GRSTx509MakeProxyRequest()

int GRSTx509MakeProxyRequest | ( | char ** | ,
|  | char * | ,
|  | char * | ,
|  | char * |
| ) |  |

Create a X.509 request for a GSI proxy and its private key.

Returns GRST_RET_OK on success, non-zero otherwise. Request string and private key are PEM encoded strings

## GRSTx509MakeProxyRequestKS()

int GRSTx509MakeProxyRequestKS | ( | char ** | reqtxt,
|  | char * | proxydir,
|  | char * | delegation_id,
|  | char * | user_dn,
|  | int | keysize
| ) |  |

## GRSTx509NameCmp()

int GRSTx509NameCmp | ( | char * | a,
|  | char * | b
| ) |  |

Compare X509 Distinguished Name strings.

This function attempts to do with string representations what would ideally be done with OIDs/values. In particular, we equate "/Email=" == "/emailAddress=" to deal with this important change between OpenSSL 0.9.6 and 0.9.7. Other than that, it is currently the same as ordinary strcasecmp(3) (for consistency with EDG/LCG/EGEE gridmapdir case insensitivity.)

## GRSTx509ProxyDestroy()

int GRSTx509ProxyDestroy | ( | char * | proxydir,
|  | char * | delegation_id,
|  | char * | user_dn
| ) |  |

Destroy stored GSI proxy files.

Returns GRST_RET_OK on success, non-zero otherwise. (Including GRST_RET_NO_SUCH_FILE if the private key or cert chain were not found.)

## GRSTx509ProxyGetTimes()

int GRSTx509ProxyGetTimes | ( | char * | proxydir,
|  | char * | delegation_id,
|  | char * | user_dn,
|  | time_t * | start,
|  | time_t * | finish
| ) |  |

Get start and finish validity times of stored GSI proxy file.

Returns GRST_RET_OK on success, non-zero otherwise. (Including GRST_RET_NO_SUCH_FILE if the cert chain was not found.)

## GRSTx509StringToChain()

int GRSTx509StringToChain | ( | STACK_OF(X509) ** | certstack,
|  | char * | certstring
| ) |  |

Create a stack of X509 certificate from a PEM-encoded string.

Creates a dynamically allocated stack of X509 certificate objects by walking through the PEM-encoded X509 certificates.

Returns GRST_RET_OK on success, non-zero otherwise.

## GRSTx509VerifyCallback()

int GRSTx509VerifyCallback | ( | int | ,
|  | X509_STORE_CTX * |
| ) |  |

Example VerifyCallback routine.

## STACK_OF()

char STACK_OF | ( | X509 |  | ) |

## Variable Documentation

## GRSTerrorLogFunc

int(* GRSTerrorLogFunc) (char *, int, int, char *,...)

## GRSTgaclNamevalue

GRSTgaclNamevalue

## int

int

## size_t

size_t