summaryrefslogtreecommitdiff
path: root/include/xmlsec/xkms.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/xmlsec/xkms.h')
-rw-r--r--include/xmlsec/xkms.h652
1 files changed, 652 insertions, 0 deletions
diff --git a/include/xmlsec/xkms.h b/include/xmlsec/xkms.h
new file mode 100644
index 00000000..5b196578
--- /dev/null
+++ b/include/xmlsec/xkms.h
@@ -0,0 +1,652 @@
+/**
+ * XML Security Library (http://www.aleksey.com/xmlsec).
+ *
+ * "XML Key Management Specification v 2.0" implementation
+ * http://www.w3.org/TR/xkms2/
+ *
+ * This is free software; see Copyright file in the source
+ * distribution for preciese wording.
+ *
+ * Copyright (C) 2002-2003 Aleksey Sanin <aleksey@aleksey.com>
+ */
+#ifndef __XMLSEC_XKMS_H__
+#define __XMLSEC_XKMS_H__
+
+#ifndef XMLSEC_NO_XKMS
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+#include <stdio.h>
+
+#include <libxml/tree.h>
+#include <libxml/parser.h>
+
+#include <xmlsec/xmlsec.h>
+#include <xmlsec/buffer.h>
+#include <xmlsec/list.h>
+#include <xmlsec/keys.h>
+#include <xmlsec/keysmngr.h>
+#include <xmlsec/keyinfo.h>
+#include <xmlsec/transforms.h>
+
+/************************************************************************
+ *
+ * Forward declarations. These internal xmlsec library structures are
+ * declared in "xmlsec/private/xkms.h" file.
+ *
+ ************************************************************************/
+typedef struct _xmlSecXkmsRespondWithKlass xmlSecXkmsRespondWithKlass,
+ *xmlSecXkmsRespondWithId;
+
+typedef struct _xmlSecXkmsServerRequestKlass xmlSecXkmsServerRequestKlass,
+ *xmlSecXkmsServerRequestId;
+
+
+/**
+ * xmlSecXkmsResultMajor:
+ * @xmlSecXkmsResultMajorSuccess: The operation succeeded.
+ * @xmlSecXkmsResultMajorVersionMismatch: The service does not support
+ * the protocol version specified
+ * in the request.
+ * @xmlSecXkmsResultMajorSender: An error occurred that was due
+ * to the message sent by the sender.
+ * @xmlSecXkmsResultMajorReceiver: An error occurred at the receiver.
+ * @xmlSecXkmsResultMajorRepresent: The service has not acted on the
+ * request. In order for the request
+ * to be acted upon the request MUST
+ * be represented with the specified
+ * nonce in accordance with the two
+ * phase protocol.
+ * @xmlSecXkmsResultMajorPending: The request has been accepted
+ * for processing and the service
+ * will return the result asynchronously.
+ *
+ * The values for ResultMajor attribute.
+ */
+typedef enum {
+ xmlSecXkmsResultMajorSuccess = 0,
+ xmlSecXkmsResultMajorVersionMismatch,
+ xmlSecXkmsResultMajorSender,
+ xmlSecXkmsResultMajorReceiver,
+ xmlSecXkmsResultMajorRepresent,
+ xmlSecXkmsResultMajorPending
+} xmlSecXkmsResultMajor;
+
+/**
+ * xmlSecXkmsResultMinor:
+ * @xmlSecXkmsResultMinorNone: No minor result code available.
+ * @xmlSecXkmsResultMinorNoMatch: No match was found for the search
+ * prototype provided.
+ * @xmlSecXkmsResultMinorTooManyResponses: The request resulted in the
+ * number of responses that
+ * exceeded either the ResponseLimit
+ * value specified in the request or
+ * some other limit determined by
+ * the service. The service MAY
+ * either return a subset of the
+ * possible responses or none at all.
+ * @xmlSecXkmsResultMinorIncomplete: Only part of the information
+ * requested could be provided.
+ * @xmlSecXkmsResultMinorFailure: The service attempted to perform
+ * the request but the operation
+ * failed for unspecified reasons.
+ * @xmlSecXkmsResultMinorRefused: The operation was refused. The
+ * service did not attempt to
+ * perform the request.
+ * @xmlSecXkmsResultMinorNoAuthentication: The operation was refused
+ * because the necessary authentication
+ * information was incorrect or missing.
+ * @xmlSecXkmsResultMinorMessageNotSupported: The receiver does not implement
+ * the specified operation.
+ * @xmlSecXkmsResultMinorUnknownResponseId: The ResponseId for which pending
+ * status was requested is unknown to
+ * the service.
+ * @xmlSecXkmsResultMinorSynchronous: The receiver does not support
+ * synchronous processing of this
+ * type of request.
+ *
+ * The values for ResultMinor attribute.
+ */
+typedef enum {
+ xmlSecXkmsResultMinorNone = 0,
+ xmlSecXkmsResultMinorNoMatch,
+ xmlSecXkmsResultMinorTooManyResponses,
+ xmlSecXkmsResultMinorIncomplete,
+ xmlSecXkmsResultMinorFailure,
+ xmlSecXkmsResultMinorRefused,
+ xmlSecXkmsResultMinorNoAuthentication,
+ xmlSecXkmsResultMinorMessageNotSupported,
+ xmlSecXkmsResultMinorUnknownResponseId,
+ xmlSecXkmsResultMinorSynchronous
+} xmlSecXkmsResultMinor;
+
+/**
+ * xmlSecXkmsKeyBindingStatus:
+ * @xmlSecXkmsKeyBindingStatusNone: The key status is not available.
+ * @xmlSecXkmsKeyBindingStatusValid: The key is valid.
+ * @xmlSecXkmsKeyBindingStatusInvalid: The key is not valid.
+ * @xmlSecXkmsKeyBindingStatusIndeterminate: Could not determine key status.
+ *
+ * The values for key binding StatusValue attribute.
+ */
+typedef enum {
+ xmlSecXkmsKeyBindingStatusNone,
+ xmlSecXkmsKeyBindingStatusValid,
+ xmlSecXkmsKeyBindingStatusInvalid,
+ xmlSecXkmsKeyBindingStatusIndeterminate
+} xmlSecXkmsKeyBindingStatus;
+
+/**
+ * xmlSecXkmsServerFormat:
+ * @xmlSecXkmsServerFormatUnknown: The format is unknown.
+ * @xmlSecXkmsServerFormatPlain: The request/response are not enveloped.
+ * @xmlSecXkmsServerFormatSoap1_1: The request/response are SOAP 1.1 encapsulated
+ * @xmlSecXkmsServerFormatSoap1_2: The request/response are SOAP 1.2 encapsulated.
+ *
+ * The xkms server request/response format.
+ */
+typedef enum {
+ xmlSecXkmsServerFormatUnknown = 0,
+ xmlSecXkmsServerFormatPlain,
+ xmlSecXkmsServerFormatSoap11,
+ xmlSecXkmsServerFormatSoap12
+} xmlSecXkmsServerFormat;
+
+XMLSEC_EXPORT xmlSecXkmsServerFormat xmlSecXkmsServerFormatFromString
+ (const xmlChar* str);
+XMLSEC_EXPORT const xmlChar* xmlSecXkmsServerFormatToString (xmlSecXkmsServerFormat format);
+
+/************************************************************************
+ *
+ * XKMS requests server side processing klass
+ *
+ ************************************************************************/
+/**
+ * xmlSecXkmsServerCtx:
+ * @userData: the pointer to user data (xmlsec and xmlsec-crypto libraries
+ * never touches this).
+ * @flags: the XML Encryption processing flags.
+ * @flags2: the XML Encryption processing flags.
+ * @keyInfoReadCtx: the reading key context.
+ * @keyInfoWriteCtx: the writing key context (not used for signature verification).
+ * @reserved0: reserved for the future.
+ * @reserved1: reserved for the future.
+ *
+ * XKMS context.
+ */
+struct _xmlSecXkmsServerCtx {
+ /* these data user can set before performing the operation */
+ void* userData;
+ xmlSecBitMask flags;
+ xmlSecBitMask flags2;
+ xmlSecKeyInfoCtx keyInfoReadCtx;
+ xmlSecKeyInfoCtx keyInfoWriteCtx;
+ xmlSecPtrList enabledRespondWithIds;
+ xmlSecPtrList enabledServerRequestIds;
+ xmlChar* expectedService;
+ xmlChar* idPrefix;
+ xmlSecSize idLen;
+
+ /* these data are returned */
+ xmlSecPtrList keys;
+ xmlSecXkmsResultMajor resultMajor;
+ xmlSecXkmsResultMinor resultMinor;
+ xmlSecXkmsServerRequestId requestId;
+ xmlChar* id;
+ xmlChar* service;
+ xmlChar* nonce;
+ xmlChar* originalRequestId;
+ xmlChar* pendingNotificationMechanism;
+ xmlChar* pendingNotificationIdentifier;
+ int responseLimit;
+ xmlSecBitMask responseMechanismMask;
+ xmlSecPtrListPtr compoundRequestContexts;
+
+ /* these are internal data, nobody should change that except us */
+ xmlNodePtr requestNode;
+ xmlNodePtr opaqueClientDataNode;
+ xmlNodePtr firtsMsgExtNode;
+ xmlNodePtr keyInfoNode;
+ xmlSecPtrList respWithList;
+
+ /* reserved for future */
+ void* reserved0;
+ void* reserved1;
+};
+
+XMLSEC_EXPORT xmlSecXkmsServerCtxPtr xmlSecXkmsServerCtxCreate (xmlSecKeysMngrPtr keysMngr);
+XMLSEC_EXPORT void xmlSecXkmsServerCtxDestroy (xmlSecXkmsServerCtxPtr ctx);
+XMLSEC_EXPORT int xmlSecXkmsServerCtxInitialize (xmlSecXkmsServerCtxPtr ctx,
+ xmlSecKeysMngrPtr keysMngr);
+XMLSEC_EXPORT void xmlSecXkmsServerCtxFinalize (xmlSecXkmsServerCtxPtr ctx);
+XMLSEC_EXPORT void xmlSecXkmsServerCtxReset (xmlSecXkmsServerCtxPtr ctx);
+XMLSEC_EXPORT int xmlSecXkmsServerCtxCopyUserPref (xmlSecXkmsServerCtxPtr dst,
+ xmlSecXkmsServerCtxPtr src);
+XMLSEC_EXPORT xmlNodePtr xmlSecXkmsServerCtxProcess (xmlSecXkmsServerCtxPtr ctx,
+ xmlNodePtr node,
+ xmlSecXkmsServerFormat format,
+ xmlDocPtr doc);
+XMLSEC_EXPORT int xmlSecXkmsServerCtxRequestRead (xmlSecXkmsServerCtxPtr ctx,
+ xmlNodePtr node);
+XMLSEC_EXPORT xmlNodePtr xmlSecXkmsServerCtxResponseWrite(xmlSecXkmsServerCtxPtr ctx,
+ xmlDocPtr doc);
+XMLSEC_EXPORT xmlNodePtr xmlSecXkmsServerCtxRequestUnwrap(xmlSecXkmsServerCtxPtr ctx,
+ xmlNodePtr node,
+ xmlSecXkmsServerFormat format);
+XMLSEC_EXPORT xmlNodePtr xmlSecXkmsServerCtxResponseWrap (xmlSecXkmsServerCtxPtr ctx,
+ xmlNodePtr node,
+ xmlSecXkmsServerFormat format,
+ xmlDocPtr doc);
+XMLSEC_EXPORT xmlNodePtr xmlSecXkmsServerCtxFatalErrorResponseCreate
+ (xmlSecXkmsServerCtxPtr ctx,
+ xmlSecXkmsServerFormat format,
+ xmlDocPtr doc);
+XMLSEC_EXPORT void xmlSecXkmsServerCtxSetResult (xmlSecXkmsServerCtxPtr ctx,
+ xmlSecXkmsResultMajor resultMajor,
+ xmlSecXkmsResultMinor resultMinor);
+XMLSEC_EXPORT void xmlSecXkmsServerCtxDebugDump (xmlSecXkmsServerCtxPtr ctx,
+ FILE* output);
+XMLSEC_EXPORT void xmlSecXkmsServerCtxDebugXmlDump (xmlSecXkmsServerCtxPtr ctx,
+ FILE* output);
+
+/************************************************************************
+ *
+ * xmlSecXkmsServerCtxPtr list
+ *
+ ************************************************************************/
+/**
+ * xmlSecXkmsServerCtxPtrListId:
+ *
+ * zmlSecXkmsServerCtx klasses list klass.
+ */
+#define xmlSecXkmsServerCtxPtrListId xmlSecXkmsServerCtxPtrListGetKlass()
+XMLSEC_EXPORT xmlSecPtrListId xmlSecXkmsServerCtxPtrListGetKlass
+ (void);
+
+/************************************************************************
+ *
+ * xmlSecXkmsServerCtxFlags
+ *
+ ************************************************************************/
+/**
+ * XMLSEC_XKMS_SERVER_FLAGS_STOP_ON_UNKNOWN_RESPONSE_MECHANISM
+ *
+ * If flag is set then we abort if an unknown <xkms:ResponseMechanism/>
+ * value is found.
+ */
+#define XMLSEC_XKMS_SERVER_FLAGS_STOP_ON_UNKNOWN_RESPONSE_MECHANISM 0x00000001
+
+/**
+ * XMLSEC_XKMS_SERVER_FLAGS_STOP_ON_UNKNOWN_RESPOND_WITH
+ *
+ * If flag is set then we abort if an unknown <xkms:RespondWith/>
+ * value is found.
+ */
+#define XMLSEC_XKMS_SERVER_FLAGS_STOP_ON_UNKNOWN_RESPOND_WITH 0x00000002
+
+/**
+ * XMLSEC_XKMS_SERVER_FLAGS_STOP_ON_UNKNOWN_KEY_USAGE
+ *
+ * If flag is set then we abort if an unknown <xkms:KeyUsage/>
+ * value is found.
+ */
+#define XMLSEC_XKMS_SERVER_FLAGS_STOP_ON_UNKNOWN_KEY_USAGE 0x00000004
+
+/************************************************************************
+ *
+ * XKMS ResponseMechanism element values.
+ *
+ ************************************************************************/
+/**
+ * XMLSEC_XKMS_RESPONSE_MECHANISM_MASK_REPRESENT:
+ *
+ * XKMS ResponseMechanism element value. The requestor is prepared to
+ * accept a response that uses asynchronous processing, i.e. the service
+ * MAY return the MajorResult code Pending.
+ */
+#define XMLSEC_XKMS_RESPONSE_MECHANISM_MASK_PENDING 0x00000001
+
+/**
+ * XMLSEC_XKMS_RESPONSE_MECHANISM_MASK_REPRESENT:
+ *
+ * XKMS ResponseMechanism element value. The requestor is prepared to
+ * accept a response that uses the two phase protocol, i.e. the service
+ * MAY return the MajorResult code Represent.
+ */
+#define XMLSEC_XKMS_RESPONSE_MECHANISM_MASK_REPRESENT 0x00000002
+
+/**
+ * XMLSEC_XKMS_RESPONSE_MECHANISM_MASK_REQUEST_SIGNATURE_VALUE:
+ *
+ * XKMS ResponseMechanism element value. The requestor is prepared to
+ * accept a response that carries a <RequestSignatureValue> element.
+ */
+#define XMLSEC_XKMS_RESPONSE_MECHANISM_MASK_REQUEST_SIGNATURE_VALUE 0x00000004
+
+/************************************************************************
+ *
+ * XKMS ResponseLimit element values
+ *
+ ************************************************************************/
+/**
+ * XMLSEC_XKMS_NO_RESPONSE_LIMIT:
+ *
+ * The ResponseLimit is not specified.
+ */
+#define XMLSEC_XKMS_NO_RESPONSE_LIMIT -1
+
+
+/************************************************************************
+ *
+ * XKMS KeyBinding reason values
+ *
+ ************************************************************************/
+/**
+ * XMLSEC_XKMS_KEY_BINDING_REASON_MASK_ISSUER_TRAST:
+ *
+ * The issuer of the information on which the key binding is based is
+ * considered to be trustworthy by the XKMS service.
+ *
+ * X.509 Equivalents
+ * - Valid: Certificate path anchored by trusted root successfully constructed.
+ * - Invalid: Certificate path could not be constructed to a trusted root.
+ */
+#define XMLSEC_XKMS_KEY_BINDING_REASON_MASK_ISSUER_TRAST 0x00000001
+
+/**
+ * XMLSEC_XKMS_KEY_BINDING_REASON_MASK_REVOCATION_STATUS:
+ *
+ * The XKMS service has affirmatively verified the status of the
+ * key binding with an authoritative source
+ *
+ * X.509 Equivalents
+ * - Valid: Certificate status validated using CRL or OCSP.
+ * - Invalid: Certificate status returned revoked or suspended.
+ */
+#define XMLSEC_XKMS_KEY_BINDING_REASON_MASK_REVOCATION_STATUS 0x00000002
+
+/**
+ * XMLSEC_XKMS_KEY_BINDING_REASON_MASK_VALIDITY_INTERVAL:
+ *
+ * The requested time instant was within the validity interval of
+ * the key binding
+ *
+ * X.509 Equivalents
+ * - Valid: The certificate chain was valid at the requested time instant.
+ * - Invalid: The requested time instant was before or after the certificate
+ * chain validity interval.
+ */
+#define XMLSEC_XKMS_KEY_BINDING_REASON_MASK_VALIDITY_INTERVAL 0x00000004
+
+/**
+ * XMLSEC_XKMS_KEY_BINDING_REASON_MASK_SIGNATURE:
+ *
+ * Signature on signed data provided by the client in the <Keyinfo> element was
+ * successfully verified.
+ *
+ * X.509 Equivalents
+ * - Valid: Certificate Signature verified.
+ * - Invalid: Certificate Signature verification failed.
+ */
+#define XMLSEC_XKMS_KEY_BINDING_REASON_MASK_SIGNATURE 0x00000008
+
+
+/************************************************************************
+ *
+ * XKMS RespondWith Klass
+ *
+ ************************************************************************/
+XMLSEC_EXPORT xmlSecPtrListPtr xmlSecXkmsRespondWithIdsGet (void);
+XMLSEC_EXPORT int xmlSecXkmsRespondWithIdsInit (void);
+XMLSEC_EXPORT void xmlSecXkmsRespondWithIdsShutdown(void);
+XMLSEC_EXPORT int xmlSecXkmsRespondWithIdsRegisterDefault
+ (void);
+XMLSEC_EXPORT int xmlSecXkmsRespondWithIdsRegister(xmlSecXkmsRespondWithId id);
+XMLSEC_EXPORT int xmlSecXkmsRespondWithNodeRead (xmlSecXkmsRespondWithId id,
+ xmlSecXkmsServerCtxPtr ctx,
+ xmlNodePtr node);
+XMLSEC_EXPORT int xmlSecXkmsRespondWithNodeWrite (xmlSecXkmsRespondWithId id,
+ xmlSecXkmsServerCtxPtr ctx,
+ xmlNodePtr node);
+XMLSEC_EXPORT void xmlSecXkmsRespondWithDebugDump (xmlSecXkmsRespondWithId id,
+ FILE* output);
+XMLSEC_EXPORT void xmlSecXkmsRespondWithDebugXmlDump
+ (xmlSecXkmsRespondWithId id,
+ FILE* output);
+XMLSEC_EXPORT int xmlSecXkmsRespondWithDefaultNodeRead
+ (xmlSecXkmsRespondWithId id,
+ xmlSecXkmsServerCtxPtr ctx,
+ xmlNodePtr node);
+XMLSEC_EXPORT int xmlSecXkmsRespondWithDefaultNodeWrite
+ (xmlSecXkmsRespondWithId id,
+ xmlSecXkmsServerCtxPtr ctx,
+ xmlNodePtr node);
+/************************************************************************
+ *
+ * XKMS RespondWith Klass List
+ *
+ ************************************************************************/
+/**
+ * xmlSecXkmsRespondWithIdListId:
+ *
+ * XKMS RespondWith klasses list klass.
+ */
+#define xmlSecXkmsRespondWithIdListId xmlSecXkmsRespondWithIdListGetKlass()
+XMLSEC_EXPORT xmlSecPtrListId xmlSecXkmsRespondWithIdListGetKlass
+ (void);
+XMLSEC_EXPORT int xmlSecXkmsRespondWithIdListFind (xmlSecPtrListPtr list,
+ xmlSecXkmsRespondWithId id);
+XMLSEC_EXPORT xmlSecXkmsRespondWithId xmlSecXkmsRespondWithIdListFindByNodeValue
+ (xmlSecPtrListPtr list,
+ xmlNodePtr node);
+XMLSEC_EXPORT int xmlSecXkmsRespondWithIdListWrite(xmlSecPtrListPtr list,
+ xmlSecXkmsServerCtxPtr ctx,
+ xmlNodePtr node);
+
+/********************************************************************
+ *
+ * XML Sec Library RespondWith Ids
+ *
+ *******************************************************************/
+/**
+ * xmlSecXkmsRespondWithIdUnknown:
+ *
+ * The "unknown" RespondWith id (NULL).
+ */
+#define xmlSecXkmsRespondWithIdUnknown NULL
+
+/**
+ * xmlSecXkmsRespondWithKeyNameId:
+ *
+ * The respond with KeyName klass.
+ */
+#define xmlSecXkmsRespondWithKeyNameId \
+ xmlSecXkmsRespondWithKeyNameGetKlass()
+XMLSEC_EXPORT xmlSecXkmsRespondWithId xmlSecXkmsRespondWithKeyNameGetKlass(void);
+
+/**
+ * xmlSecXkmsRespondWithKeyValueId:
+ *
+ * The respond with KeyValue klass.
+ */
+#define xmlSecXkmsRespondWithKeyValueId \
+ xmlSecXkmsRespondWithKeyValueGetKlass()
+XMLSEC_EXPORT xmlSecXkmsRespondWithId xmlSecXkmsRespondWithKeyValueGetKlass(void);
+
+/**
+ * xmlSecXkmsRespondWithPrivateKeyId:
+ *
+ * The respond with PrivateKey klass.
+ */
+#define xmlSecXkmsRespondWithPrivateKeyId \
+ xmlSecXkmsRespondWithPrivateKeyGetKlass()
+XMLSEC_EXPORT xmlSecXkmsRespondWithId xmlSecXkmsRespondWithPrivateKeyGetKlass(void);
+
+/**
+ * xmlSecXkmsRespondWithRetrievalMethodId:
+ *
+ * The respond with RetrievalMethod klass.
+ */
+#define xmlSecXkmsRespondWithRetrievalMethodId \
+ xmlSecXkmsRespondWithRetrievalMethodGetKlass()
+XMLSEC_EXPORT xmlSecXkmsRespondWithId xmlSecXkmsRespondWithRetrievalMethodGetKlass(void);
+
+/**
+ * xmlSecXkmsRespondWithX509CertId:
+ *
+ * The respond with X509Cert klass.
+ */
+#define xmlSecXkmsRespondWithX509CertId \
+ xmlSecXkmsRespondWithX509CertGetKlass()
+XMLSEC_EXPORT xmlSecXkmsRespondWithId xmlSecXkmsRespondWithX509CertGetKlass(void);
+
+/**
+ * xmlSecXkmsRespondWithX509ChainId:
+ *
+ * The respond with X509Chain klass.
+ */
+#define xmlSecXkmsRespondWithX509ChainId \
+ xmlSecXkmsRespondWithX509ChainGetKlass()
+XMLSEC_EXPORT xmlSecXkmsRespondWithId xmlSecXkmsRespondWithX509ChainGetKlass(void);
+
+/**
+ * xmlSecXkmsRespondWithX509CRLId:
+ *
+ * The respond with X509CRL klass.
+ */
+#define xmlSecXkmsRespondWithX509CRLId \
+ xmlSecXkmsRespondWithX509CRLGetKlass()
+XMLSEC_EXPORT xmlSecXkmsRespondWithId xmlSecXkmsRespondWithX509CRLGetKlass(void);
+
+
+/**
+ * xmlSecXkmsRespondWithPGPId:
+ *
+ * The respond with PGP klass.
+ */
+#define xmlSecXkmsRespondWithPGPId \
+ xmlSecXkmsRespondWithPGPGetKlass()
+XMLSEC_EXPORT xmlSecXkmsRespondWithId xmlSecXkmsRespondWithPGPGetKlass(void);
+
+/**
+ * xmlSecXkmsRespondWithSPKIId:
+ *
+ * The respond with SPKI klass.
+ */
+#define xmlSecXkmsRespondWithSPKIId \
+ xmlSecXkmsRespondWithSPKIGetKlass()
+XMLSEC_EXPORT xmlSecXkmsRespondWithId xmlSecXkmsRespondWithSPKIGetKlass(void);
+
+
+/************************************************************************
+ *
+ * XKMS ServerRequest Klass
+ *
+ ************************************************************************/
+XMLSEC_EXPORT xmlSecPtrListPtr xmlSecXkmsServerRequestIdsGet (void);
+XMLSEC_EXPORT int xmlSecXkmsServerRequestIdsInit (void);
+XMLSEC_EXPORT void xmlSecXkmsServerRequestIdsShutdown
+ (void);
+XMLSEC_EXPORT int xmlSecXkmsServerRequestIdsRegisterDefault
+ (void);
+XMLSEC_EXPORT int xmlSecXkmsServerRequestIdsRegister
+ (xmlSecXkmsServerRequestId id);
+XMLSEC_EXPORT int xmlSecXkmsServerRequestNodeRead (xmlSecXkmsServerRequestId id,
+ xmlSecXkmsServerCtxPtr ctx,
+ xmlNodePtr node);
+XMLSEC_EXPORT int xmlSecXkmsServerRequestExecute (xmlSecXkmsServerRequestId id,
+ xmlSecXkmsServerCtxPtr ctx);
+XMLSEC_EXPORT xmlNodePtr xmlSecXkmsServerRequestNodeWrite(xmlSecXkmsServerRequestId id,
+ xmlSecXkmsServerCtxPtr ctx,
+ xmlDocPtr doc,
+ xmlNodePtr node);
+XMLSEC_EXPORT void xmlSecXkmsServerRequestDebugDump(xmlSecXkmsServerRequestId id,
+ FILE* output);
+XMLSEC_EXPORT void xmlSecXkmsServerRequestDebugXmlDump
+ (xmlSecXkmsServerRequestId id,
+ FILE* output);
+
+/************************************************************************
+ *
+ * XKMS ServerRequest Klass List
+ *
+ ************************************************************************/
+/**
+ * xmlSecXkmsServerRequestIdListId:
+ *
+ * XKMS ServerRequest klasses list klass.
+ */
+#define xmlSecXkmsServerRequestIdListId xmlSecXkmsServerRequestIdListGetKlass()
+XMLSEC_EXPORT xmlSecPtrListId xmlSecXkmsServerRequestIdListGetKlass
+ (void);
+XMLSEC_EXPORT int xmlSecXkmsServerRequestIdListFind
+ (xmlSecPtrListPtr list,
+ xmlSecXkmsServerRequestId id);
+XMLSEC_EXPORT xmlSecXkmsServerRequestId xmlSecXkmsServerRequestIdListFindByName
+ (xmlSecPtrListPtr list,
+ const xmlChar* name);
+XMLSEC_EXPORT xmlSecXkmsServerRequestId xmlSecXkmsServerRequestIdListFindByNode
+ (xmlSecPtrListPtr list,
+ xmlNodePtr node);
+
+/**
+ * xmlSecXkmsServerRequestIdUnknown:
+ *
+ * The "unknown" ServerRequest id (NULL).
+ */
+#define xmlSecXkmsServerRequestIdUnknown NULL
+
+/**
+ * xmlSecXkmsServerRequestResultId:
+ *
+ * The Result response klass.
+ */
+#define xmlSecXkmsServerRequestResultId \
+ xmlSecXkmsServerRequestResultGetKlass()
+XMLSEC_EXPORT xmlSecXkmsServerRequestId xmlSecXkmsServerRequestResultGetKlass(void);
+
+/**
+ * xmlSecXkmsServerRequestStatusId:
+ *
+ * The StatusRequest klass.
+ */
+#define xmlSecXkmsServerRequestStatusId \
+ xmlSecXkmsServerRequestStatusGetKlass()
+XMLSEC_EXPORT xmlSecXkmsServerRequestId xmlSecXkmsServerRequestStatusGetKlass(void);
+
+/**
+ * xmlSecXkmsServerRequestCompoundId:
+ *
+ * The CompoundRequest klass.
+ */
+#define xmlSecXkmsServerRequestCompoundId \
+ xmlSecXkmsServerRequestCompoundGetKlass()
+XMLSEC_EXPORT xmlSecXkmsServerRequestId xmlSecXkmsServerRequestCompoundGetKlass(void);
+
+/**
+ * xmlSecXkmsServerRequestLocateId:
+ *
+ * The LocateRequest klass.
+ */
+#define xmlSecXkmsServerRequestLocateId \
+ xmlSecXkmsServerRequestLocateGetKlass()
+XMLSEC_EXPORT xmlSecXkmsServerRequestId xmlSecXkmsServerRequestLocateGetKlass(void);
+
+/**
+ * xmlSecXkmsServerRequestValidateId:
+ *
+ * The ValidateRequest klass.
+ */
+#define xmlSecXkmsServerRequestValidateId \
+ xmlSecXkmsServerRequestValidateGetKlass()
+XMLSEC_EXPORT xmlSecXkmsServerRequestId xmlSecXkmsServerRequestValidateGetKlass(void);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* XMLSEC_NO_XKMS */
+
+#endif /* __XMLSEC_XKMS_H__ */
+