summaryrefslogtreecommitdiff
path: root/src/mscrypto/xmlsec-mingw.h
blob: ef5d2ae44a1d1499e8781e852b19cdc6b4a0c118 (plain)
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
/**
 * XMLSec library
 *
 * This is free software; see Copyright file in the source
 * distribution for preciese wording.
 *
 * Copyright (C) 2007,2010 Roumen Petrov.
 */

#ifndef __XMLSEC_MSCRYPTO_XMLSEC_MINGW_H__
#define __XMLSEC_MSCRYPTO_XMLSEC_MINGW_H__

#ifndef XMLSEC_PRIVATE
#error "xmlsec-mingw.h file contains private xmlsec definitions for mingw build and should not be used outside xmlsec or xmlsec-<crypto> libraries"
#endif /* XMLSEC_PRIVATE */


/*defines*/

#ifndef ALG_SID_HMAC
#  define ALG_SID_HMAC          9
#endif

#ifndef ALG_SID_SHA_256
#  define ALG_SID_SHA_256       12
#endif

#ifndef ALG_SID_SHA_384
#  define ALG_SID_SHA_384       13
#endif

#ifndef ALG_SID_SHA_512
#  define ALG_SID_SHA_512       14
#endif

#ifndef CALG_HMAC
#  define CALG_HMAC             (ALG_CLASS_HASH|ALG_TYPE_ANY|ALG_SID_HMAC)
#endif

#ifndef CALG_SHA_256
#  define CALG_SHA_256          (ALG_CLASS_HASH|ALG_TYPE_ANY|ALG_SID_SHA_256)
#endif

#ifndef CALG_SHA_384
#  define CALG_SHA_384          (ALG_CLASS_HASH|ALG_TYPE_ANY|ALG_SID_SHA_384)
#endif

#ifndef CALG_SHA_512
#  define CALG_SHA_512          (ALG_CLASS_HASH|ALG_TYPE_ANY|ALG_SID_SHA_512)
#endif


#ifndef KP_OAEP_PARAMS
#  define KP_OAEP_PARAMS        36
#endif


#ifndef CERT_CLOSE_STORE_FORCE_FLAG
#  define CERT_CLOSE_STORE_FORCE_FLAG           1
#endif

#ifndef CERT_CLOSE_STORE_CHECK_FLAG
#  define CERT_CLOSE_STORE_CHECK_FLAG           2
#endif


#ifndef CERT_PHYSICAL_STORE_ADD_ENABLE_FLAG
#  define CERT_PHYSICAL_STORE_ADD_ENABLE_FLAG   1
#endif


#ifndef CERT_STORE_ADD_ALWAYS
#  define CERT_STORE_ADD_ALWAYS                 4
#endif

#ifndef CERT_STORE_CREATE_NEW_FLAG
#  define CERT_STORE_CREATE_NEW_FLAG            (2<<12)
#endif

#ifndef CERT_STORE_SIGNATURE_FLAG
#  define CERT_STORE_SIGNATURE_FLAG             1
#endif

#ifndef CERT_STORE_TIME_VALIDITY_FLAG
#  define CERT_STORE_TIME_VALIDITY_FLAG         2
#endif

#ifndef CERT_STORE_REVOCATION_FLAG
#  define CERT_STORE_REVOCATION_FLAG            4
#endif

#ifndef CERT_STORE_NO_CRL_FLAG
#  define CERT_STORE_NO_CRL_FLAG                (1<<16)
#endif


#ifndef CERT_STORE_PROV_COLLECTION
#  define CERT_STORE_PROV_COLLECTION            ((LPCSTR) 11)
#endif

#ifndef CERT_STORE_PROV_MEMORY
#  define CERT_STORE_PROV_MEMORY                ((LPCSTR) 2)
#endif


#ifndef CERT_KEY_SPEC_PROP_ID
#  define CERT_KEY_SPEC_PROP_ID                 6
#endif

#ifndef CERT_FRIENDLY_NAME_PROP_ID
#  define CERT_FRIENDLY_NAME_PROP_ID            11
#endif

#ifndef CERT_KEY_IDENTIFIER_PROP_ID
#  define CERT_KEY_IDENTIFIER_PROP_ID           20
#endif


#ifndef CERT_NAME_ISSUER_FLAG
#  define CERT_NAME_ISSUER_FLAG                 1
#endif

#ifndef CERT_NAME_RDN_TYPE
#  define CERT_NAME_RDN_TYPE                    2
#endif

#ifndef CERT_NAME_STR_ENABLE_UTF8_UNICODE_FLAG
#  define CERT_NAME_STR_ENABLE_UTF8_UNICODE_FLAG        (4<<16)
#endif


#ifndef CERT_CHAIN_REVOCATION_CHECK_CHAIN
#  define CERT_CHAIN_REVOCATION_CHECK_CHAIN                     (2<<28)
#endif

#ifndef CERT_CHAIN_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT
#  define CERT_CHAIN_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT        (4<<28)
#endif


#ifndef szOID_SUBJECT_KEY_IDENTIFIER
#  define szOID_SUBJECT_KEY_IDENTIFIER          "2.5.29.14"
#endif


#ifndef CRYPT_ACQUIRE_COMPARE_KEY_FLAG
#  define CRYPT_ACQUIRE_COMPARE_KEY_FLAG        4
#endif


/*structures/types*/
typedef struct _PUBKEY {
        DWORD magic;
        DWORD bitlen;
} DSSPUBKEY;

typedef struct _DSSSEED {
        DWORD   counter;
        BYTE    seed[20];
} DSSSEED;


typedef struct _PROV_ENUMALGS_EX {
        ALG_ID aiAlgid;
        DWORD dwDefaultLen;
        DWORD dwMinLen;
        DWORD dwMaxLen;
        DWORD dwProtocols;
        DWORD dwNameLen;
        CHAR szName[20];
        DWORD dwLongNameLen;
        CHAR szLongName[40];
} PROV_ENUMALGS_EX;


/*methods(functions)*/
DWORD           WINAPI CertGetPublicKeyLength(DWORD,PCERT_PUBLIC_KEY_INFO);

BOOL            WINAPI CertStrToNameA(DWORD,LPCSTR,DWORD,void*,BYTE*,DWORD*,LPCSTR*);
BOOL            WINAPI CertStrToNameW(DWORD,LPCWSTR,DWORD,void*,BYTE*,DWORD*,LPCWSTR*);
#ifdef UNICODE
#define CertStrToName  CertStrToNameW
#else
#define CertStrToName  CertStrToNameA
#endif


BOOL            WINAPI CertCompareCertificateName(DWORD,PCERT_NAME_BLOB,PCERT_NAME_BLOB);

BOOL            WINAPI CertAddStoreToCollection(HCERTSTORE,HCERTSTORE,DWORD,DWORD);

PCCERT_CONTEXT  WINAPI CertCreateCertificateContext(DWORD,const BYTE*,DWORD);
BOOL            WINAPI CertGetCertificateContextProperty(PCCERT_CONTEXT,DWORD,void*,DWORD*);
BOOL            WINAPI CertVerifySubjectCertificateContext(PCCERT_CONTEXT,PCCERT_CONTEXT,DWORD*);

BOOL            WINAPI CertAddCRLContextToStore(HCERTSTORE,PCCRL_CONTEXT,DWORD,PCCRL_CONTEXT*);
PCCRL_CONTEXT   WINAPI CertDuplicateCRLContext(PCCRL_CONTEXT);
BOOL            WINAPI CertFreeCRLContext(PCCRL_CONTEXT);

BOOL            WINAPI CertFindCertificateInCRL(PCCERT_CONTEXT,PCCRL_CONTEXT,DWORD,void*,PCRL_ENTRY*);
PCCRL_CONTEXT   WINAPI CertEnumCRLsInStore(HCERTSTORE,PCCRL_CONTEXT);

PCCRL_CONTEXT   WINAPI CertCreateCRLContext(DWORD,const BYTE*,DWORD);

BOOL            WINAPI CryptAcquireCertificatePrivateKey(PCCERT_CONTEXT,DWORD,void*,HCRYPTPROV*,DWORD*,BOOL*);
BOOL            WINAPI CryptDuplicateKey(HCRYPTKEY,DWORD*,DWORD,HCRYPTKEY*);
BOOL            WINAPI CryptImportPublicKeyInfo(HCRYPTPROV,DWORD,PCERT_PUBLIC_KEY_INFO,HCRYPTKEY*);


#endif /*ndef __XMLSEC_MSCRYPTO_XMLSEC_MINGW_H__*/