diff options
Diffstat (limited to 'include/xmlsec/mscng')
-rw-r--r-- | include/xmlsec/mscng/Makefile.am | 16 | ||||
-rw-r--r-- | include/xmlsec/mscng/app.h | 100 | ||||
-rw-r--r-- | include/xmlsec/mscng/certkeys.h | 33 | ||||
-rw-r--r-- | include/xmlsec/mscng/crypto.h | 515 | ||||
-rw-r--r-- | include/xmlsec/mscng/keysstore.h | 41 | ||||
-rw-r--r-- | include/xmlsec/mscng/symbols.h | 125 | ||||
-rw-r--r-- | include/xmlsec/mscng/x509.h | 83 |
7 files changed, 913 insertions, 0 deletions
diff --git a/include/xmlsec/mscng/Makefile.am b/include/xmlsec/mscng/Makefile.am new file mode 100644 index 00000000..3f366cd8 --- /dev/null +++ b/include/xmlsec/mscng/Makefile.am @@ -0,0 +1,16 @@ +NULL = + +xmlsecmscngincdir = $(includedir)/xmlsec1/xmlsec/mscng + +xmlsecmscnginc_HEADERS = \ +app.h \ +certkeys.h \ +crypto.h \ +keysstore.h \ +symbols.h \ +x509.h \ +$(NULL) + +install-exec-hook: + $(mkinstalldirs) $(DESTDIR)$(xmlsecmscngincdir) + diff --git a/include/xmlsec/mscng/app.h b/include/xmlsec/mscng/app.h new file mode 100644 index 00000000..f1fbf6f8 --- /dev/null +++ b/include/xmlsec/mscng/app.h @@ -0,0 +1,100 @@ +/* + * XML Security Library (http://www.aleksey.com/xmlsec). + * + * This is free software; see Copyright file in the source + * distribution for preciese wording. + * + * Copyright (C) 2018 Miklos Vajna. All Rights Reserved. + */ +#ifndef __XMLSEC_MSCNG_APP_H__ +#define __XMLSEC_MSCNG_APP_H__ + +#include <windows.h> + +#include <xmlsec/xmlsec.h> +#include <xmlsec/keys.h> +#include <xmlsec/keysmngr.h> +#include <xmlsec/transforms.h> + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/******************************************************************** + * + * Init/shutdown + * + ********************************************************************/ +XMLSEC_CRYPTO_EXPORT int xmlSecMSCngAppInit (const char* config); +XMLSEC_CRYPTO_EXPORT int xmlSecMSCngAppShutdown (void); +XMLSEC_CRYPTO_EXPORT LPCTSTR xmlSecMSCngAppGetCertStoreName (void); + +/******************************************************************** + * + * Keys Manager + * + ********************************************************************/ +XMLSEC_CRYPTO_EXPORT int xmlSecMSCngAppDefaultKeysMngrInit (xmlSecKeysMngrPtr mngr); +XMLSEC_CRYPTO_EXPORT int xmlSecMSCngAppDefaultKeysMngrAdoptKey(xmlSecKeysMngrPtr mngr, + xmlSecKeyPtr key); +XMLSEC_CRYPTO_EXPORT int xmlSecMSCngAppDefaultKeysMngrLoad (xmlSecKeysMngrPtr mngr, + const char* uri); +XMLSEC_CRYPTO_EXPORT int xmlSecMSCngAppDefaultKeysMngrSave (xmlSecKeysMngrPtr mngr, + const char* filename, + xmlSecKeyDataType type); +#ifndef XMLSEC_NO_X509 +XMLSEC_CRYPTO_EXPORT int xmlSecMSCngAppKeysMngrCertLoad (xmlSecKeysMngrPtr mngr, + const char *filename, + xmlSecKeyDataFormat format, + xmlSecKeyDataType type); +XMLSEC_CRYPTO_EXPORT int xmlSecMSCngAppKeysMngrCertLoadMemory (xmlSecKeysMngrPtr mngr, + const xmlSecByte *data, + xmlSecSize dataSize, + xmlSecKeyDataFormat format, + xmlSecKeyDataType type); +#endif /* XMLSEC_NO_X509 */ + + +/******************************************************************** + * + * Keys + * + ********************************************************************/ +XMLSEC_CRYPTO_EXPORT xmlSecKeyPtr xmlSecMSCngAppKeyLoad (const char *filename, + xmlSecKeyDataFormat format, + const char *pwd, + void *pwdCallback, + void* pwdCallbackCtx); +XMLSEC_CRYPTO_EXPORT xmlSecKeyPtr xmlSecMSCngAppKeyLoadMemory (const xmlSecByte *data, + xmlSecSize dataSize, + xmlSecKeyDataFormat format, + const char *pwd, + void *pwdCallback, + void* pwdCallbackCtx); +#ifndef XMLSEC_NO_X509 +XMLSEC_CRYPTO_EXPORT xmlSecKeyPtr xmlSecMSCngAppPkcs12Load (const char *filename, + const char *pwd, + void* pwdCallback, + void* pwdCallbackCtx); +XMLSEC_CRYPTO_EXPORT xmlSecKeyPtr xmlSecMSCngAppPkcs12LoadMemory (const xmlSecByte *data, + xmlSecSize dataSize, + const char *pwd, + void* pwdCallback, + void* pwdCallbackCtx); +XMLSEC_CRYPTO_EXPORT int xmlSecMSCngAppKeyCertLoad (xmlSecKeyPtr key, + const char* filename, + xmlSecKeyDataFormat format); +XMLSEC_CRYPTO_EXPORT int xmlSecMSCngAppKeyCertLoadMemory (xmlSecKeyPtr key, + const xmlSecByte *data, + xmlSecSize dataSize, + xmlSecKeyDataFormat format); +#endif /* XMLSEC_NO_X509 */ + +XMLSEC_CRYPTO_EXPORT void* xmlSecMSCngAppGetDefaultPwdCallback (void); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* __XMLSEC_MSCNG_APP_H__ */ + diff --git a/include/xmlsec/mscng/certkeys.h b/include/xmlsec/mscng/certkeys.h new file mode 100644 index 00000000..16461088 --- /dev/null +++ b/include/xmlsec/mscng/certkeys.h @@ -0,0 +1,33 @@ +/* + * XML Security Library (http://www.aleksey.com/xmlsec). + * + * This is free software; see Copyright file in the source + * distribution for preciese wording. + * + * Copyright (C) 2018 Miklos Vajna. All Rights Reserved. + */ +#ifndef __XMLSEC_MSCNG_CERTKEYS_H__ +#define __XMLSEC_MSCNG_CERTKEYS_H__ + +#include <windows.h> + +#include <xmlsec/xmlsec.h> +#include <xmlsec/keys.h> +#include <xmlsec/transforms.h> + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +XMLSEC_CRYPTO_EXPORT xmlSecKeyDataPtr xmlSecMSCngCertAdopt (PCCERT_CONTEXT pCert, + xmlSecKeyDataType type); +XMLSEC_CRYPTO_EXPORT BCRYPT_KEY_HANDLE xmlSecMSCngKeyDataGetPubKey (xmlSecKeyDataPtr data); +XMLSEC_CRYPTO_EXPORT NCRYPT_KEY_HANDLE xmlSecMSCngKeyDataGetPrivKey(xmlSecKeyDataPtr data); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* __XMLSEC_MSCNG_PCCERT_CONTEXT_H__ */ + + diff --git a/include/xmlsec/mscng/crypto.h b/include/xmlsec/mscng/crypto.h new file mode 100644 index 00000000..c8afa792 --- /dev/null +++ b/include/xmlsec/mscng/crypto.h @@ -0,0 +1,515 @@ +/* + * XML Security Library (http://www.aleksey.com/xmlsec). + * + * This is free software; see Copyright file in the source + * distribution for preciese wording. + * + * Copyright (C) 2018 Miklos Vajna. All Rights Reserved. + */ +#ifndef __XMLSEC_MSCNG_CRYPTO_H__ +#define __XMLSEC_MSCNG_CRYPTO_H__ + +#include <windows.h> + +#include <xmlsec/xmlsec.h> +#include <xmlsec/keys.h> +#include <xmlsec/transforms.h> +#include <xmlsec/dl.h> + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +XMLSEC_CRYPTO_EXPORT xmlSecCryptoDLFunctionsPtr xmlSecCryptoGetFunctions_mscng(void); + +XMLSEC_DEPRECATED XMLSEC_CRYPTO_EXPORT LPTSTR xmlSecMSCngConvertUtf8ToTstr(const xmlChar* str); +XMLSEC_DEPRECATED XMLSEC_CRYPTO_EXPORT LPWSTR xmlSecMSCngConvertUtf8ToUnicode(const xmlChar* str); +XMLSEC_DEPRECATED XMLSEC_CRYPTO_EXPORT xmlChar* xmlSecMSCngConvertTstrToUtf8(LPCTSTR str); +XMLSEC_DEPRECATED XMLSEC_CRYPTO_EXPORT xmlChar* xmlSecMSCngConvertUnicodeToUtf8(LPCWSTR str); + + +XMLSEC_CRYPTO_EXPORT int xmlSecMSCngGenerateRandom(xmlSecBufferPtr buffer, xmlSecSize size); + +/******************************************************************** + * + * Init shutdown + * + ********************************************************************/ +XMLSEC_CRYPTO_EXPORT int xmlSecMSCngInit (void); +XMLSEC_CRYPTO_EXPORT int xmlSecMSCngShutdown (void); + +XMLSEC_CRYPTO_EXPORT int xmlSecMSCngKeysMngrInit (xmlSecKeysMngrPtr mngr); + +/******************************************************************** + * + * DSA transforms + * + *******************************************************************/ +#ifndef XMLSEC_NO_DSA + +/** + * xmlSecMSCngKeyDataDsaId: + * + * The DSA key klass. + */ +#define xmlSecMSCngKeyDataDsaId \ + xmlSecMSCngKeyDataDsaGetKlass() +XMLSEC_CRYPTO_EXPORT xmlSecKeyDataId xmlSecMSCngKeyDataDsaGetKlass(void); + +#ifndef XMLSEC_NO_SHA1 +/** + * xmlSecMSCngTransformDsaSha1Id: + * + * The DSA-SHA1 signature transform klass. + */ +#define xmlSecMSCngTransformDsaSha1Id \ + xmlSecMSCngTransformDsaSha1GetKlass() +XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformDsaSha1GetKlass(void); +#endif /* XMLSEC_NO_SHA1 */ + +#endif /* XMLSEC_NO_DSA */ + +/******************************************************************** + * + * RSA transforms + * + *******************************************************************/ +#ifndef XMLSEC_NO_RSA + +/** + * xmlSecMSCngKeyDataRsaId: + * + * The RSA key klass. + */ +#define xmlSecMSCngKeyDataRsaId \ + xmlSecMSCngKeyDataRsaGetKlass() +XMLSEC_CRYPTO_EXPORT xmlSecKeyDataId xmlSecMSCngKeyDataRsaGetKlass(void); + +#ifndef XMLSEC_NO_MD5 +/** + * xmlSecMSCngTransformRsaMd5Id: + * + * The RSA-MD5 signature transform klass. + */ +#define xmlSecMSCngTransformRsaMd5Id \ + xmlSecMSCngTransformRsaMd5GetKlass() +XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformRsaMd5GetKlass(void); +#endif /* XMLSEC_NO_MD5 */ + +#ifndef XMLSEC_NO_SHA1 +/** + * xmlSecMSCngTransformRsaSha1Id: + * + * The RSA-SHA1 signature transform klass. + */ +#define xmlSecMSCngTransformRsaSha1Id \ + xmlSecMSCngTransformRsaSha1GetKlass() +XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformRsaSha1GetKlass(void); +#endif /* XMLSEC_NO_SHA1 */ + +#ifndef XMLSEC_NO_SHA256 +/** + * xmlSecMSCngTransformRsaSha256Id: + * + * The RSA-SHA256 signature transform klass. + */ +#define xmlSecMSCngTransformRsaSha256Id \ + xmlSecMSCngTransformRsaSha256GetKlass() +XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformRsaSha256GetKlass(void); +#endif /* XMLSEC_NO_SHA256 */ + +#ifndef XMLSEC_NO_SHA384 +/** + * xmlSecMSCngTransformRsaSha384Id: + * + * The RSA-SHA384 signature transform klass. + */ +#define xmlSecMSCngTransformRsaSha384Id \ + xmlSecMSCngTransformRsaSha384GetKlass() +XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformRsaSha384GetKlass(void); +#endif /* XMLSEC_NO_SHA384 */ + +#ifndef XMLSEC_NO_SHA512 +/** + * xmlSecMSCngTransformRsaSha512Id: + * + * The RSA-SHA512 signature transform klass. + */ +#define xmlSecMSCngTransformRsaSha512Id \ + xmlSecMSCngTransformRsaSha512GetKlass() +XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformRsaSha512GetKlass(void); +#endif /* XMLSEC_NO_SHA512 */ + +/** + * xmlSecMSCngTransformRsaPkcs1Id: + * + * The RSA PKCS1 key transport transform klass. + */ +#define xmlSecMSCngTransformRsaPkcs1Id \ + xmlSecMSCngTransformRsaPkcs1GetKlass() +XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformRsaPkcs1GetKlass(void); + +/** + * xmlSecMSCngTransformRsaOaepId: + * + * The RSA OAEP key transport transform klass. + */ +#define xmlSecMSCngTransformRsaOaepId \ + xmlSecMSCngTransformRsaOaepGetKlass() +XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformRsaOaepGetKlass(void); + +#endif /* XMLSEC_NO_RSA */ + +/******************************************************************** + * + * ECDSA transforms + * + *******************************************************************/ +#ifndef XMLSEC_NO_ECDSA + +/** + * xmlSecMSCngKeyDataEcdsaId: + * + * The ECDSA key klass. + */ +#define xmlSecMSCngKeyDataEcdsaId \ + xmlSecMSCngKeyDataEcdsaGetKlass() +XMLSEC_CRYPTO_EXPORT xmlSecKeyDataId xmlSecMSCngKeyDataEcdsaGetKlass(void); + +#ifndef XMLSEC_NO_SHA1 +/** + * xmlSecMSCngTransformEcdsaSha1Id: + * + * The ECDSA-SHA1 signature transform klass. + */ +#define xmlSecMSCngTransformEcdsaSha1Id \ + xmlSecMSCngTransformEcdsaSha1GetKlass() +XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformEcdsaSha1GetKlass(void); +#endif /* XMLSEC_NO_SHA1 */ + +#ifndef XMLSEC_NO_SHA256 +/** + * xmlSecMSCngTransformEcdsaSha256Id: + * + * The ECDSA-SHA256 signature transform klass. + */ +#define xmlSecMSCngTransformEcdsaSha256Id \ + xmlSecMSCngTransformEcdsaSha256GetKlass() +XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformEcdsaSha256GetKlass(void); +#endif /* XMLSEC_NO_SHA256 */ + +#ifndef XMLSEC_NO_SHA384 +/** + * xmlSecMSCngTransformEcdsaSha384Id: + * + * The ECDSA-SHA384 signature transform klass. + */ +#define xmlSecMSCngTransformEcdsaSha384Id \ + xmlSecMSCngTransformEcdsaSha384GetKlass() +XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformEcdsaSha384GetKlass(void); +#endif /* XMLSEC_NO_SHA384 */ + +#ifndef XMLSEC_NO_SHA512 +/** + * xmlSecMSCngTransformEcdsaSha512Id: + * + * The ECDSA-SHA512 signature transform klass. + */ +#define xmlSecMSCngTransformEcdsaSha512Id \ + xmlSecMSCngTransformEcdsaSha512GetKlass() +XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformEcdsaSha512GetKlass(void); +#endif /* XMLSEC_NO_SHA512 */ + +#endif /* XMLSEC_NO_ECDSA */ + +/******************************************************************** + * + * DES transform + * + *******************************************************************/ +#ifndef XMLSEC_NO_DES + +/** + * xmlSecMSCngKeyDataDesId: + * + * The DES key data klass. + */ +#define xmlSecMSCngKeyDataDesId \ + xmlSecMSCngKeyDataDesGetKlass() +XMLSEC_CRYPTO_EXPORT xmlSecKeyDataId xmlSecMSCngKeyDataDesGetKlass(void); + +/** + * xmlSecMSCngTransformDes3CbcId: + * + * The DES3 CBC cipher transform klass. + */ +#define xmlSecMSCngTransformDes3CbcId \ + xmlSecMSCngTransformDes3CbcGetKlass() +XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformDes3CbcGetKlass(void); + +/** + * xmlSecMSCngTransformKWDes3Id: + * + * The DES3 KW transform klass. + */ +#define xmlSecMSCngTransformKWDes3Id \ + xmlSecMSCngTransformKWDes3GetKlass() +XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformKWDes3GetKlass(void); + +#endif /* XMLSEC_NO_DES */ + +/******************************************************************** + * + * HMAC transforms + * + *******************************************************************/ +#ifndef XMLSEC_NO_HMAC + +/** + * xmlSecMSCngKeyDataHmacId: + * + * The HMAC key klass. + */ +#define xmlSecMSCngKeyDataHmacId \ + xmlSecMSCngKeyDataHmacGetKlass() +XMLSEC_CRYPTO_EXPORT xmlSecKeyDataId xmlSecMSCngKeyDataHmacGetKlass(void); + +#ifndef XMLSEC_NO_MD5 +/** + * xmlSecMSCngTransformHmacMd5Id: + * + * The HMAC-MD5 signature transform klass. + */ +#define xmlSecMSCngTransformHmacMd5Id \ + xmlSecMSCngTransformHmacMd5GetKlass() +XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformHmacMd5GetKlass(void); +#endif /* XMLSEC_NO_MD5 */ + +#ifndef XMLSEC_NO_SHA1 +/** + * xmlSecMSCngTransformHmacSha1Id: + * + * The HMAC-SHA1 signature transform klass. + */ +#define xmlSecMSCngTransformHmacSha1Id \ + xmlSecMSCngTransformHmacSha1GetKlass() +XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformHmacSha1GetKlass(void); +#endif /* XMLSEC_NO_SHA1 */ + +#ifndef XMLSEC_NO_SHA256 +/** + * xmlSecMSCngTransformHmacSha256Id: + * + * The HMAC-SHA256 signature transform klass. + */ +#define xmlSecMSCngTransformHmacSha256Id \ + xmlSecMSCngTransformHmacSha256GetKlass() +XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformHmacSha256GetKlass(void); +#endif /* XMLSEC_NO_SHA256 */ + +#ifndef XMLSEC_NO_SHA384 +/** + * xmlSecMSCngTransformHmacSha384Id: + * + * The HMAC-SHA384 signature transform klass. + */ +#define xmlSecMSCngTransformHmacSha384Id \ + xmlSecMSCngTransformHmacSha384GetKlass() +XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformHmacSha384GetKlass(void); +#endif /* XMLSEC_NO_SHA384 */ + +#ifndef XMLSEC_NO_SHA512 +/** + * xmlSecMSCngTransformHmacSha512Id: + * + * The HMAC-SHA512 signature transform klass. + */ +#define xmlSecMSCngTransformHmacSha512Id \ + xmlSecMSCngTransformHmacSha512GetKlass() +XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformHmacSha512GetKlass(void); +#endif /* XMLSEC_NO_SHA512 */ + +#endif /* XMLSEC_NO_HMAC */ + +/******************************************************************** + * + * MD5 transform + * + *******************************************************************/ +#ifndef XMLSEC_NO_MD5 +/** + * xmlSecMSCngTransformMd5Id: + * + * The MD5 digest transform klass. + */ +#define xmlSecMSCngTransformMd5Id \ + xmlSecMSCngTransformMd5GetKlass() +XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformMd5GetKlass(void); +#endif /* XMLSEC_NO_MD5 */ + +/******************************************************************** + * + * SHA1 transform + * + *******************************************************************/ +#ifndef XMLSEC_NO_SHA1 +/** + * xmlSecMSCngTransformSha1Id: + * + * The SHA1 digest transform klass. + */ +#define xmlSecMSCngTransformSha1Id \ + xmlSecMSCngTransformSha1GetKlass() +XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformSha1GetKlass(void); +#endif /* XMLSEC_NO_SHA1 */ + +/******************************************************************** + * + * SHA256 transform + * + *******************************************************************/ +#ifndef XMLSEC_NO_SHA256 +/** + * xmlSecMSCngTransformSha256Id: + * + * The SHA256 digest transform klass. + */ +#define xmlSecMSCngTransformSha256Id \ + xmlSecMSCngTransformSha256GetKlass() +XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformSha256GetKlass(void); +#endif /* XMLSEC_NO_SHA256 */ + +/******************************************************************** + * + * SHA384 transform + * + *******************************************************************/ +#ifndef XMLSEC_NO_SHA384 +/** + * xmlSecMSCngTransformSha384Id: + * + * The SHA384 digest transform klass. + */ +#define xmlSecMSCngTransformSha384Id \ + xmlSecMSCngTransformSha384GetKlass() +XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformSha384GetKlass(void); +#endif /* XMLSEC_NO_SHA384 */ + +/******************************************************************** + * + * SHA512 transform + * + *******************************************************************/ +#ifndef XMLSEC_NO_SHA512 +/** + * xmlSecMSCngTransformSha512Id: + * + * The SHA512 digest transform klass. + */ +#define xmlSecMSCngTransformSha512Id \ + xmlSecMSCngTransformSha512GetKlass() +XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformSha512GetKlass(void); +#endif /* XMLSEC_NO_SHA512 */ + +/******************************************************************** + * + * AES transforms + * + *******************************************************************/ +#ifndef XMLSEC_NO_AES +/** + * xmlSecMSCngKeyDataAesId: + * + * The AES key data klass. + */ +#define xmlSecMSCngKeyDataAesId \ + xmlSecMSCngKeyDataAesGetKlass() +XMLSEC_CRYPTO_EXPORT xmlSecKeyDataId xmlSecMSCngKeyDataAesGetKlass(void); + +/** + * xmlSecMSCngTransformAes128CbcId: + * + * The AES128 CBC cipher transform klass. + */ +#define xmlSecMSCngTransformAes128CbcId \ + xmlSecMSCngTransformAes128CbcGetKlass() +XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformAes128CbcGetKlass(void); + +/** + * xmlSecMSCngTransformAes192CbcId: + * + * The AES192 CBC cipher transform klass. + */ +#define xmlSecMSCngTransformAes192CbcId \ + xmlSecMSCngTransformAes192CbcGetKlass() +XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformAes192CbcGetKlass(void); + +/** + * xmlSecMSCngTransformAes256CbcId: + * + * The AES256 CBC cipher transform klass. + */ +#define xmlSecMSCngTransformAes256CbcId \ + xmlSecMSCngTransformAes256CbcGetKlass() +XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformAes256CbcGetKlass(void); + +/** + * xmlSecMSCngTransformAes128GcmId: + * + * The AES128 GCM cipher transform klass. + */ +#define xmlSecMSCngTransformAes128GcmId \ + xmlSecMSCngTransformAes128GcmGetKlass() +XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformAes128GcmGetKlass(void); + +/** + * xmlSecMSCngTransformAes192GcmId: + * + * The AES192 GCM cipher transform klass. + */ +#define xmlSecMSCngTransformAes192GcmId \ + xmlSecMSCngTransformAes192GcmGetKlass() +XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformAes192GcmGetKlass(void); + +/** + * xmlSecMSCngTransformAes256GcmId: + * + * The AES256 GCM cipher transform klass. + */ +#define xmlSecMSCngTransformAes256GcmId \ + xmlSecMSCngTransformAes256GcmGetKlass() +XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformAes256GcmGetKlass(void); + +/** + * xmlSecMSCngTransformKWAes128Id: + * + * The AES 128 key wrap transform klass. + */ +#define xmlSecMSCngTransformKWAes128Id \ + xmlSecMSCngTransformKWAes128GetKlass() +XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformKWAes128GetKlass(void); + +/** + * xmlSecMSCngTransformKWAes192Id: + * + * The AES 192 key wrap transform klass. + */ +#define xmlSecMSCngTransformKWAes192Id \ + xmlSecMSCngTransformKWAes192GetKlass() +XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformKWAes192GetKlass(void); + +/** + * xmlSecMSCngTransformKWAes256Id: + * + * The AES 256 key wrap transform klass. + */ +#define xmlSecMSCngTransformKWAes256Id \ + xmlSecMSCngTransformKWAes256GetKlass() +XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecMSCngTransformKWAes256GetKlass(void); +#endif /* XMLSEC_NO_AES */ + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* __XMLSEC_MSCNG_CRYPTO_H__ */ diff --git a/include/xmlsec/mscng/keysstore.h b/include/xmlsec/mscng/keysstore.h new file mode 100644 index 00000000..20a4eb13 --- /dev/null +++ b/include/xmlsec/mscng/keysstore.h @@ -0,0 +1,41 @@ +/* + * XML Security Library (http://www.aleksey.com/xmlsec). + * + * This is free software; see Copyright file in the source + * distribution for preciese wording. + * + * Copyright (C) 2018 Miklos Vajna. All Rights Reserved. + */ +#ifndef __XMLSEC_MSCNG_KEYSSTORE_H__ +#define __XMLSEC_MSCNG_KEYSSTORE_H__ + +#include <xmlsec/xmlsec.h> + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/** + * xmlSecMSCngKeysStoreId: + * + * A MSCng keys store klass id. + */ +#define xmlSecMSCngKeysStoreId xmlSecMSCngKeysStoreGetKlass() + +XMLSEC_CRYPTO_EXPORT xmlSecKeyStoreId xmlSecMSCngKeysStoreGetKlass(void); +XMLSEC_CRYPTO_EXPORT int xmlSecMSCngKeysStoreAdoptKey(xmlSecKeyStorePtr store, + xmlSecKeyPtr key); +XMLSEC_CRYPTO_EXPORT int xmlSecMSCngKeysStoreLoad (xmlSecKeyStorePtr store, + const char *uri, + xmlSecKeysMngrPtr keysMngr); +XMLSEC_CRYPTO_EXPORT int xmlSecMSCngKeysStoreSave (xmlSecKeyStorePtr store, + const char *filename, + xmlSecKeyDataType type); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* __XMLSEC_MSCNG_PCCERT_CONTEXT_H__ */ + + diff --git a/include/xmlsec/mscng/symbols.h b/include/xmlsec/mscng/symbols.h new file mode 100644 index 00000000..07fc0ef1 --- /dev/null +++ b/include/xmlsec/mscng/symbols.h @@ -0,0 +1,125 @@ +/* + * XML Security Library (http://www.aleksey.com/xmlsec). + * + * This is free software; see Copyright file in the source + * distribution for preciese wording. + * + * Copyright (C) 2018 Miklos Vajna. All Rights Reserved. + */ +#ifndef __XMLSEC_MSCNG_SYMBOLS_H__ +#define __XMLSEC_MSCNG_SYMBOLS_H__ + +#if !defined(IN_XMLSEC) && defined(XMLSEC_CRYPTO_DYNAMIC_LOADING) +#error To disable dynamic loading of xmlsec-crypto libraries undefine XMLSEC_CRYPTO_DYNAMIC_LOADING +#endif /* !defined(IN_XMLSEC) && defined(XMLSEC_CRYPTO_DYNAMIC_LOADING) */ + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#ifdef XMLSEC_CRYPTO_MSCNG + +/******************************************************************** + * + * Crypto Init/shutdown + * + ********************************************************************/ +#define xmlSecCryptoInit xmlSecMSCngInit +#define xmlSecCryptoShutdown xmlSecMSCngShutdown + +#define xmlSecCryptoKeysMngrInit xmlSecMSCngKeysMngrInit + +/******************************************************************** + * + * Key data ids + * + ********************************************************************/ +#define xmlSecKeyDataAesId xmlSecMSCngKeyDataAesId +#define xmlSecKeyDataDesId xmlSecMSCngKeyDataDesId +#define xmlSecKeyDataDsaId xmlSecMSCngKeyDataDsaId +#define xmlSecKeyDataEcdsaId xmlSecMSCngKeyDataEcdsaId +#define xmlSecKeyDataHmacId xmlSecMSCngKeyDataHmacId +#define xmlSecKeyDataRsaId xmlSecMSCngKeyDataRsaId +#define xmlSecKeyDataX509Id xmlSecMSCngKeyDataX509Id +#define xmlSecKeyDataRawX509CertId xmlSecMSCngKeyDataRawX509CertId + +/******************************************************************** + * + * Key data store ids + * + ********************************************************************/ +#define xmlSecX509StoreId xmlSecMSCngX509StoreId + +/******************************************************************** + * + * Crypto transforms ids + * + ********************************************************************/ +#define xmlSecTransformAes128CbcId xmlSecMSCngTransformAes128CbcId +#define xmlSecTransformAes192CbcId xmlSecMSCngTransformAes192CbcId +#define xmlSecTransformAes256CbcId xmlSecMSCngTransformAes256CbcId +#define xmlSecTransformAes128GcmId xmlSecMSCngTransformAes128GcmId +#define xmlSecTransformAes192GcmId xmlSecMSCngTransformAes192GcmId +#define xmlSecTransformAes256GcmId xmlSecMSCngTransformAes256GcmId +#define xmlSecTransformKWAes128Id xmlSecMSCngTransformKWAes128Id +#define xmlSecTransformKWAes192Id xmlSecMSCngTransformKWAes192Id +#define xmlSecTransformKWAes256Id xmlSecMSCngTransformKWAes256Id +#define xmlSecTransformDes3CbcId xmlSecMSCngTransformDes3CbcId +#define xmlSecTransformKWDes3Id xmlSecMSCngTransformKWDes3Id +#define xmlSecTransformDsaSha1Id xmlSecMSCngTransformDsaSha1Id +#define xmlSecTransformDsaSha256Id xmlSecMSCngTransformDsaSha256Id +#define xmlSecTransformEcdsaSha1Id xmlSecMSCngTransformEcdsaSha1Id +#define xmlSecTransformEcdsaSha224Id xmlSecMSCngTransformEcdsaSha224Id +#define xmlSecTransformEcdsaSha256Id xmlSecMSCngTransformEcdsaSha256Id +#define xmlSecTransformEcdsaSha384Id xmlSecMSCngTransformEcdsaSha384Id +#define xmlSecTransformEcdsaSha512Id xmlSecMSCngTransformEcdsaSha512Id +#define xmlSecTransformHmacMd5Id xmlSecMSCngTransformHmacMd5Id +#define xmlSecTransformHmacRipemd160Id xmlSecMSCngTransformHmacRipemd160Id +#define xmlSecTransformHmacSha1Id xmlSecMSCngTransformHmacSha1Id +#define xmlSecTransformHmacSha224Id xmlSecMSCngTransformHmacSha224Id +#define xmlSecTransformHmacSha256Id xmlSecMSCngTransformHmacSha256Id +#define xmlSecTransformHmacSha384Id xmlSecMSCngTransformHmacSha384Id +#define xmlSecTransformHmacSha512Id xmlSecMSCngTransformHmacSha512Id +#define xmlSecTransformMd5Id xmlSecMSCngTransformMd5Id +#define xmlSecTransformRipemd160Id xmlSecMSCngTransformRipemd160Id +#define xmlSecTransformRsaSha1Id xmlSecMSCngTransformRsaSha1Id +#define xmlSecTransformRsaSha224Id xmlSecMSCngTransformRsaSha224Id +#define xmlSecTransformRsaSha256Id xmlSecMSCngTransformRsaSha256Id +#define xmlSecTransformRsaSha384Id xmlSecMSCngTransformRsaSha384Id +#define xmlSecTransformRsaSha512Id xmlSecMSCngTransformRsaSha512Id +#define xmlSecTransformRsaPkcs1Id xmlSecMSCngTransformRsaPkcs1Id +#define xmlSecTransformRsaOaepId xmlSecMSCngTransformRsaOaepId +#define xmlSecTransformSha1Id xmlSecMSCngTransformSha1Id +#define xmlSecTransformSha224Id xmlSecMSCngTransformSha224Id +#define xmlSecTransformSha256Id xmlSecMSCngTransformSha256Id +#define xmlSecTransformSha384Id xmlSecMSCngTransformSha384Id +#define xmlSecTransformSha512Id xmlSecMSCngTransformSha512Id + +/******************************************************************** + * + * High level routines form xmlsec command line utility + * + ********************************************************************/ +#define xmlSecCryptoAppInit xmlSecMSCngAppInit +#define xmlSecCryptoAppShutdown xmlSecMSCngAppShutdown +#define xmlSecCryptoAppDefaultKeysMngrInit xmlSecMSCngAppDefaultKeysMngrInit +#define xmlSecCryptoAppDefaultKeysMngrAdoptKey xmlSecMSCngAppDefaultKeysMngrAdoptKey +#define xmlSecCryptoAppDefaultKeysMngrLoad xmlSecMSCngAppDefaultKeysMngrLoad +#define xmlSecCryptoAppDefaultKeysMngrSave xmlSecMSCngAppDefaultKeysMngrSave +#define xmlSecCryptoAppKeysMngrCertLoad xmlSecMSCngAppKeysMngrCertLoad +#define xmlSecCryptoAppKeysMngrCertLoadMemory xmlSecMSCngAppKeysMngrCertLoadMemory +#define xmlSecCryptoAppKeyLoad xmlSecMSCngAppKeyLoad +#define xmlSecCryptoAppPkcs12Load xmlSecMSCngAppPkcs12Load +#define xmlSecCryptoAppKeyCertLoad xmlSecMSCngAppKeyCertLoad +#define xmlSecCryptoAppKeyLoadMemory xmlSecMSCngAppKeyLoadMemory +#define xmlSecCryptoAppPkcs12LoadMemory xmlSecMSCngAppPkcs12LoadMemory +#define xmlSecCryptoAppKeyCertLoadMemory xmlSecMSCngAppKeyCertLoadMemory +#define xmlSecCryptoAppGetDefaultPwdCallback xmlSecMSCngAppGetDefaultPwdCallback + +#endif /* XMLSEC_CRYPTO_MSCNG */ + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* __XMLSEC_MSCNG_CRYPTO_H__ */ diff --git a/include/xmlsec/mscng/x509.h b/include/xmlsec/mscng/x509.h new file mode 100644 index 00000000..6c2f7415 --- /dev/null +++ b/include/xmlsec/mscng/x509.h @@ -0,0 +1,83 @@ +/* + * XML Security Library (http://www.aleksey.com/xmlsec). + * + * This is free software; see Copyright file in the source + * distribution for preciese wording. + * + * Copyright (C) 2018 Miklos Vajna. All Rights Reserved. + */ +#ifndef __XMLSEC_MSCNG_X509_H__ +#define __XMLSEC_MSCNG_X509_H__ + +#ifndef XMLSEC_NO_X509 + +#include <xmlsec/xmlsec.h> +#include <xmlsec/keys.h> +#include <xmlsec/transforms.h> + +#include <windows.h> + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/** + * xmlSecMSCngKeyDataX509Id: + * + * The MSCng X509 data klass. + */ +#define xmlSecMSCngKeyDataX509Id \ + xmlSecMSCngKeyDataX509GetKlass() +XMLSEC_CRYPTO_EXPORT xmlSecKeyDataId xmlSecMSCngKeyDataX509GetKlass(void); + +/** + * xmlSecMSCngKeyDataRawX509CertId: + * + * The MSCng raw X509 certificate klass. + */ +#define xmlSecMSCngKeyDataRawX509CertId \ + xmlSecMSCngKeyDataRawX509CertGetKlass() +XMLSEC_CRYPTO_EXPORT xmlSecKeyDataId xmlSecMSCngKeyDataRawX509CertGetKlass(void); + +/** + * xmlSecMSCngX509StoreId: + * + * The MSCng X509 store klass. + */ +#define xmlSecMSCngX509StoreId \ + xmlSecMSCngX509StoreGetKlass() +XMLSEC_CRYPTO_EXPORT xmlSecKeyDataStoreId xmlSecMSCngX509StoreGetKlass(void); + +XMLSEC_CRYPTO_EXPORT int xmlSecMSCngKeyDataX509AdoptKeyCert (xmlSecKeyDataPtr data, + PCCERT_CONTEXT cert); +XMLSEC_CRYPTO_EXPORT int xmlSecMSCngKeyDataX509AdoptCert (xmlSecKeyDataPtr data, + PCCERT_CONTEXT cert); +XMLSEC_CRYPTO_EXPORT int xmlSecMSCngX509StoreAdoptCert (xmlSecKeyDataStorePtr store, + PCCERT_CONTEXT cert, + xmlSecKeyDataType type); +XMLSEC_CRYPTO_EXPORT int xmlSecMSCngX509StoreAdoptKeyStore (xmlSecKeyDataStorePtr store, + HCERTSTORE keyStore); +XMLSEC_CRYPTO_EXPORT int xmlSecMSCngX509StoreAdoptTrustedStore(xmlSecKeyDataStorePtr store, + HCERTSTORE trustedStore); +XMLSEC_CRYPTO_EXPORT int xmlSecMSCngX509StoreAdoptUntrustedStore(xmlSecKeyDataStorePtr store, + HCERTSTORE untrustedStore); +XMLSEC_CRYPTO_EXPORT PCCERT_CONTEXT xmlSecMSCngX509StoreVerify (xmlSecKeyDataStorePtr store, + HCERTSTORE certs, + xmlSecKeyInfoCtx* keyInfoCtx); +PCCERT_CONTEXT xmlSecMSCngX509StoreFindCert (xmlSecKeyDataStorePtr store, + xmlChar *subjectName, + xmlChar *issuerName, + xmlChar *issuerSerial, + xmlChar *ski, + xmlSecKeyInfoCtx* keyInfoCtx); +PCCERT_CONTEXT xmlSecMSCngX509FindCertBySubject (HCERTSTORE store, + LPTSTR wcSubject, + DWORD dwCertEncodingType); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* XMLSEC_NO_X509 */ + +#endif /* __XMLSEC_MSCNG_X509_H__ */ |