diff options
Diffstat (limited to 'libxmlsec/include/tokens.h')
-rw-r--r-- | libxmlsec/include/tokens.h | 183 |
1 files changed, 183 insertions, 0 deletions
diff --git a/libxmlsec/include/tokens.h b/libxmlsec/include/tokens.h new file mode 100644 index 000000000000..c7c0fa1ed500 --- /dev/null +++ b/libxmlsec/include/tokens.h @@ -0,0 +1,183 @@ +/** + * XMLSec library + * + * This is free software; see Copyright file in the source + * distribution for preciese wording. + * + * Copyright (c) 2003 Sun Microsystems, Inc. All rights reserved. + * + * Contributor(s): _____________________________ + * + */ +#ifndef __XMLSEC_NSS_TOKENS_H__ +#define __XMLSEC_NSS_TOKENS_H__ + +#include <string.h> + +#include <nss.h> +#include <pk11func.h> + +#include <xmlsec/xmlsec.h> +#include <xmlsec/list.h> + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/** + * xmlSecNssKeySlotListId + * + * The crypto mechanism list klass + */ +#define xmlSecNssKeySlotListId xmlSecNssKeySlotListGetKlass() +XMLSEC_CRYPTO_EXPORT xmlSecPtrListId xmlSecNssKeySlotListGetKlass( void ) ; + +/******************************************* + * KeySlot interfaces + *******************************************/ +/** + * Internal NSS key slot data + * @mechanismList: the mechanisms that the slot bound with. + * @slot: the pkcs slot + * + * This context is located after xmlSecPtrList + */ +typedef struct _xmlSecNssKeySlot xmlSecNssKeySlot ; +typedef struct _xmlSecNssKeySlot* xmlSecNssKeySlotPtr ; + +struct _xmlSecNssKeySlot { + CK_MECHANISM_TYPE_PTR mechanismList ; /* mech. array, NULL ternimated */ + PK11SlotInfo* slot ; +} ; + +XMLSEC_CRYPTO_EXPORT int +xmlSecNssKeySlotSetMechList( + xmlSecNssKeySlotPtr keySlot , + CK_MECHANISM_TYPE_PTR mechanismList +) ; + +XMLSEC_CRYPTO_EXPORT int +xmlSecNssKeySlotEnableMech( + xmlSecNssKeySlotPtr keySlot , + CK_MECHANISM_TYPE mechanism +) ; + +XMLSEC_CRYPTO_EXPORT int +xmlSecNssKeySlotDisableMech( + xmlSecNssKeySlotPtr keySlot , + CK_MECHANISM_TYPE mechanism +) ; + +XMLSEC_CRYPTO_EXPORT CK_MECHANISM_TYPE_PTR +xmlSecNssKeySlotGetMechList( + xmlSecNssKeySlotPtr keySlot +) ; + +XMLSEC_CRYPTO_EXPORT int +xmlSecNssKeySlotSetSlot( + xmlSecNssKeySlotPtr keySlot , + PK11SlotInfo* slot +) ; + +XMLSEC_CRYPTO_EXPORT int +xmlSecNssKeySlotInitialize( + xmlSecNssKeySlotPtr keySlot , + PK11SlotInfo* slot +) ; + +XMLSEC_CRYPTO_EXPORT void +xmlSecNssKeySlotFinalize( + xmlSecNssKeySlotPtr keySlot +) ; + +XMLSEC_CRYPTO_EXPORT PK11SlotInfo* +xmlSecNssKeySlotGetSlot( + xmlSecNssKeySlotPtr keySlot +) ; + +XMLSEC_CRYPTO_EXPORT xmlSecNssKeySlotPtr +xmlSecNssKeySlotCreate() ; + +XMLSEC_CRYPTO_EXPORT int +xmlSecNssKeySlotCopy( + xmlSecNssKeySlotPtr newKeySlot , + xmlSecNssKeySlotPtr keySlot +) ; + +XMLSEC_CRYPTO_EXPORT xmlSecNssKeySlotPtr +xmlSecNssKeySlotDuplicate( + xmlSecNssKeySlotPtr keySlot +) ; + +XMLSEC_CRYPTO_EXPORT void +xmlSecNssKeySlotDestroy( + xmlSecNssKeySlotPtr keySlot +) ; + +XMLSEC_CRYPTO_EXPORT int +xmlSecNssKeySlotBindMech( + xmlSecNssKeySlotPtr keySlot , + CK_MECHANISM_TYPE type +) ; + +XMLSEC_CRYPTO_EXPORT int +xmlSecNssKeySlotSupportMech( + xmlSecNssKeySlotPtr keySlot , + CK_MECHANISM_TYPE type +) ; + + +/************************************************************************ + * PKCS#11 crypto token interfaces + * + * A PKCS#11 slot repository will be defined internally. From the + * repository, a user can specify a particular slot for a certain crypto + * mechanism. + * + * In some situation, some cryptographic operation should act in a user + * designated devices. The interfaces defined here provide the way. If + * the user do not initialize the repository distinctly, the interfaces + * use the default functions provided by NSS itself. + * + ************************************************************************/ +/** + * Initialize NSS pkcs#11 slot repository + * + * Returns 0 if success or -1 if an error occurs. + */ +XMLSEC_CRYPTO_EXPORT int xmlSecNssSlotInitialize( void ) ; + +/** + * Shutdown and destroy NSS pkcs#11 slot repository + */ +XMLSEC_CRYPTO_EXPORT void xmlSecNssSlotShutdown() ; + +/** + * Get PKCS#11 slot handler + * @type the mechanism that the slot must support. + * + * Returns a pointer to PKCS#11 slot or NULL if an error occurs. + * + * Notes: The returned handler must be destroied distinctly. + */ +XMLSEC_CRYPTO_EXPORT PK11SlotInfo* xmlSecNssSlotGet( CK_MECHANISM_TYPE type ) ; + +/** + * Adopt a pkcs#11 slot with a mechanism into the repository + * @slot: the pkcs#11 slot. + * @mech: the mechanism. + * + * If @mech is available( @mech != CKM_INVALID_MECHANISM ), every operation with + * this mechanism only can perform on the @slot. + * + * Returns 0 if success or -1 if an error occurs. + */ +XMLSEC_CRYPTO_EXPORT int xmlSecNssSlotAdopt( PK11SlotInfo* slot, CK_MECHANISM_TYPE mech ) ; + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* __XMLSEC_NSS_TOKENS_H__ */ + + |