/usr/include/xmlsec1/xmlsec/keysmngr.h is in libxmlsec1-dev 1.2.23-0.1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 | /**
* XML Security Library (http://www.aleksey.com/xmlsec).
*
* Keys Manager
*
* This is free software; see Copyright file in the source
* distribution for preciese wording.
*
* Copyright (C) 2002-2016 Aleksey Sanin <aleksey@aleksey.com>. All Rights Reserved.
*/
#ifndef __XMLSEC_KEYSMGMR_H__
#define __XMLSEC_KEYSMGMR_H__
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#include <xmlsec/xmlsec.h>
#include <xmlsec/list.h>
#include <xmlsec/keys.h>
#include <xmlsec/keysdata.h>
#include <xmlsec/keyinfo.h>
typedef const struct _xmlSecKeyKlass xmlSecKeyKlass,
*xmlSecKeyId;
typedef const struct _xmlSecKeyStoreKlass xmlSecKeyStoreKlass,
*xmlSecKeyStoreId;
/****************************************************************************
*
* Keys Manager
*
***************************************************************************/
XMLSEC_EXPORT xmlSecKeysMngrPtr xmlSecKeysMngrCreate (void);
XMLSEC_EXPORT void xmlSecKeysMngrDestroy (xmlSecKeysMngrPtr mngr);
XMLSEC_EXPORT xmlSecKeyPtr xmlSecKeysMngrFindKey (xmlSecKeysMngrPtr mngr,
const xmlChar* name,
xmlSecKeyInfoCtxPtr keyInfoCtx);
XMLSEC_EXPORT int xmlSecKeysMngrAdoptKeysStore (xmlSecKeysMngrPtr mngr,
xmlSecKeyStorePtr store);
XMLSEC_EXPORT xmlSecKeyStorePtr xmlSecKeysMngrGetKeysStore (xmlSecKeysMngrPtr mngr);
XMLSEC_EXPORT int xmlSecKeysMngrAdoptDataStore (xmlSecKeysMngrPtr mngr,
xmlSecKeyDataStorePtr store);
XMLSEC_EXPORT xmlSecKeyDataStorePtr xmlSecKeysMngrGetDataStore (xmlSecKeysMngrPtr mngr,
xmlSecKeyDataStoreId id);
/**
* xmlSecGetKeyCallback:
* @keyInfoNode: the pointer to <dsig:KeyInfo/> node.
* @keyInfoCtx: the pointer to <dsig:KeyInfo/> node processing context.
*
* Reads the <dsig:KeyInfo/> node @keyInfoNode and extracts the key.
*
* Returns: the pointer to key or NULL if the key is not found or
* an error occurs.
*/
typedef xmlSecKeyPtr (*xmlSecGetKeyCallback) (xmlNodePtr keyInfoNode,
xmlSecKeyInfoCtxPtr keyInfoCtx);
/**
* xmlSecKeysMngr:
* @keysStore: the key store (list of keys known to keys manager).
* @storesList: the list of key data stores known to keys manager.
* @getKey: the callback used to read <dsig:KeyInfo/> node.
*
* The keys manager structure.
*/
struct _xmlSecKeysMngr {
xmlSecKeyStorePtr keysStore;
xmlSecPtrList storesList;
xmlSecGetKeyCallback getKey;
};
XMLSEC_EXPORT xmlSecKeyPtr xmlSecKeysMngrGetKey (xmlNodePtr keyInfoNode,
xmlSecKeyInfoCtxPtr keyInfoCtx);
/**************************************************************************
*
* xmlSecKeyStore
*
*************************************************************************/
/**
* xmlSecKeyStore:
* @id: the store id (#xmlSecKeyStoreId).
* @reserved0: reserved for the future.
* @reserved1: reserved for the future.
*
* The keys store.
*/
struct _xmlSecKeyStore {
xmlSecKeyStoreId id;
/* for the future */
void* reserved0;
void* reserved1;
};
XMLSEC_EXPORT xmlSecKeyStorePtr xmlSecKeyStoreCreate (xmlSecKeyStoreId id);
XMLSEC_EXPORT void xmlSecKeyStoreDestroy (xmlSecKeyStorePtr store);
XMLSEC_EXPORT xmlSecKeyPtr xmlSecKeyStoreFindKey (xmlSecKeyStorePtr store,
const xmlChar* name,
xmlSecKeyInfoCtxPtr keyInfoCtx);
/**
* xmlSecKeyStoreGetName:
* @store: the pointer to store.
*
* Macro. Returns key store name.
*/
#define xmlSecKeyStoreGetName(store) \
((xmlSecKeyStoreIsValid((store))) ? \
xmlSecKeyStoreKlassGetName((store)->id) : NULL)
/**
* xmlSecKeyStoreIsValid:
* @store: the pointer to store.
*
* Macro. Returns 1 if @store is not NULL and @store->id is not NULL
* or 0 otherwise.
*/
#define xmlSecKeyStoreIsValid(store) \
((( store ) != NULL) && ((( store )->id) != NULL))
/**
* xmlSecKeyStoreCheckId:
* @store: the pointer to store.
* @storeId: the store Id.
*
* Macro. Returns 1 if @store is valid and @store's id is equal to @storeId.
*/
#define xmlSecKeyStoreCheckId(store, storeId) \
(xmlSecKeyStoreIsValid(( store )) && \
((( store )->id) == ( storeId )))
/**
* xmlSecKeyStoreCheckSize:
* @store: the pointer to store.
* @size: the expected size.
*
* Macro. Returns 1 if @store is valid and @stores's object has at least @size bytes.
*/
#define xmlSecKeyStoreCheckSize(store, size) \
(xmlSecKeyStoreIsValid(( store )) && \
(( store )->id->objSize >= size))
/**************************************************************************
*
* xmlSecKeyStoreKlass
*
*************************************************************************/
/**
* xmlSecKeyStoreIdUnknown:
*
* The "unknown" id.
*/
#define xmlSecKeyStoreIdUnknown ((xmlSecKeyDataStoreId)NULL)
/**
* xmlSecKeyStoreInitializeMethod:
* @store: the store.
*
* Keys store specific initialization method.
*
* Returns: 0 on success or a negative value if an error occurs.
*/
typedef int (*xmlSecKeyStoreInitializeMethod) (xmlSecKeyStorePtr store);
/**
* xmlSecKeyStoreFinalizeMethod:
* @store: the store.
*
* Keys store specific finalization (destroy) method.
*/
typedef void (*xmlSecKeyStoreFinalizeMethod) (xmlSecKeyStorePtr store);
/**
* xmlSecKeyStoreFindKeyMethod:
* @store: the store.
* @name: the desired key name.
* @keyInfoCtx: the pointer to key info context.
*
* Keys store specific find method. The caller is responsible for destroying
* the returned key using #xmlSecKeyDestroy method.
*
* Returns: the pointer to a key or NULL if key is not found or an error occurs.
*/
typedef xmlSecKeyPtr (*xmlSecKeyStoreFindKeyMethod) (xmlSecKeyStorePtr store,
const xmlChar* name,
xmlSecKeyInfoCtxPtr keyInfoCtx);
/**
* xmlSecKeyStoreKlass:
* @klassSize: the store klass size.
* @objSize: the store obj size.
* @name: the store's name.
* @initialize: the store's initialization method.
* @finalize: the store's finalization (destroy) method.
* @findKey: the store's find method.
* @reserved0: reserved for the future.
* @reserved1: reserved for the future.
*
* The keys store id (klass).
*/
struct _xmlSecKeyStoreKlass {
xmlSecSize klassSize;
xmlSecSize objSize;
/* data */
const xmlChar* name;
/* constructors/destructor */
xmlSecKeyStoreInitializeMethod initialize;
xmlSecKeyStoreFinalizeMethod finalize;
xmlSecKeyStoreFindKeyMethod findKey;
/* for the future */
void* reserved0;
void* reserved1;
};
/**
* xmlSecKeyStoreKlassGetName:
* @klass: the pointer to store klass.
*
* Macro. Returns store klass name.
*/
#define xmlSecKeyStoreKlassGetName(klass) \
(((klass)) ? ((klass)->name) : NULL)
/****************************************************************************
*
* Simple Keys Store
*
***************************************************************************/
/**
* xmlSecSimpleKeysStoreId:
*
* A simple keys store klass id.
*/
#define xmlSecSimpleKeysStoreId xmlSecSimpleKeysStoreGetKlass()
XMLSEC_EXPORT xmlSecKeyStoreId xmlSecSimpleKeysStoreGetKlass (void);
XMLSEC_EXPORT int xmlSecSimpleKeysStoreAdoptKey (xmlSecKeyStorePtr store,
xmlSecKeyPtr key);
XMLSEC_EXPORT int xmlSecSimpleKeysStoreLoad (xmlSecKeyStorePtr store,
const char *uri,
xmlSecKeysMngrPtr keysMngr);
XMLSEC_EXPORT int xmlSecSimpleKeysStoreSave (xmlSecKeyStorePtr store,
const char *filename,
xmlSecKeyDataType type);
XMLSEC_EXPORT xmlSecPtrListPtr xmlSecSimpleKeysStoreGetKeys (xmlSecKeyStorePtr store);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* __XMLSEC_KEYSMGMR_H__ */
|