cprocsp_sys/opt/rustwide/workdir/bindgen/
ssp_bindings.rs

1/* automatically generated by rust-bindgen 0.65.1 */
2
3extern crate libloading;
4pub struct SSP {
5    __library: ::libloading::Library,
6    pub GetLastError: unsafe extern "C" fn() -> DWORD,
7    pub CertOpenStore: unsafe extern "C" fn(
8        lpszStoreProvider: LPCSTR,
9        dwEncodingType: DWORD,
10        hCryptProv: HCRYPTPROV,
11        dwFlags: DWORD,
12        pvPara: *const ::std::os::raw::c_void,
13    ) -> HCERTSTORE,
14    pub CertCloseStore: unsafe extern "C" fn(hCertStore: HCERTSTORE, dwFlags: DWORD) -> BOOL,
15    pub CertEnumCertificatesInStore: unsafe extern "C" fn(
16        hCertStore: HCERTSTORE,
17        pPrevCertContext: PCCERT_CONTEXT,
18    ) -> PCCERT_CONTEXT,
19    pub CertFindCertificateInStore: unsafe extern "C" fn(
20        hCertStore: HCERTSTORE,
21        dwCertEncodingType: DWORD,
22        dwFindFlags: DWORD,
23        dwFindType: DWORD,
24        pvFindPara: *const ::std::os::raw::c_void,
25        pPrevCertContext: PCCERT_CONTEXT,
26    ) -> PCCERT_CONTEXT,
27    pub CertFreeCertificateContext: unsafe extern "C" fn(pCertContext: PCCERT_CONTEXT) -> BOOL,
28    pub CertGetCertificateContextProperty: unsafe extern "C" fn(
29        pCertContext: PCCERT_CONTEXT,
30        dwPropId: DWORD,
31        pvData: *mut ::std::os::raw::c_void,
32        pcbData: *mut DWORD,
33    ) -> BOOL,
34    pub CertEnumCertificateContextProperties:
35        unsafe extern "C" fn(pCertContext: PCCERT_CONTEXT, dwPropId: DWORD) -> DWORD,
36    pub CryptAcquireContextW: unsafe extern "C" fn(
37        phProv: *mut HCRYPTPROV,
38        pszContainer: LPCWSTR,
39        pszProvider: LPCWSTR,
40        dwProvType: DWORD,
41        dwFlags: DWORD,
42    ) -> BOOL,
43    pub CryptReleaseContext: unsafe extern "C" fn(hProv: HCRYPTPROV, dwFlags: DWORD) -> BOOL,
44    pub CryptGenKey: unsafe extern "C" fn(
45        hProv: HCRYPTPROV,
46        Algid: ALG_ID,
47        dwFlags: DWORD,
48        phKey: *mut HCRYPTKEY,
49    ) -> BOOL,
50    pub CryptDeriveKey: unsafe extern "C" fn(
51        hProv: HCRYPTPROV,
52        Algid: ALG_ID,
53        hBaseData: HCRYPTHASH,
54        dwFlags: DWORD,
55        phKey: *mut HCRYPTKEY,
56    ) -> BOOL,
57    pub CryptDestroyKey: unsafe extern "C" fn(hKey: HCRYPTKEY) -> BOOL,
58    pub CryptSetKeyParam: unsafe extern "C" fn(
59        hKey: HCRYPTKEY,
60        dwParam: DWORD,
61        pbData: *const BYTE,
62        dwFlags: DWORD,
63    ) -> BOOL,
64    pub CryptGetKeyParam: unsafe extern "C" fn(
65        hKey: HCRYPTKEY,
66        dwParam: DWORD,
67        pbData: *mut BYTE,
68        pdwDataLen: *mut DWORD,
69        dwFlags: DWORD,
70    ) -> BOOL,
71    pub CryptSetHashParam: unsafe extern "C" fn(
72        hHash: HCRYPTHASH,
73        dwParam: DWORD,
74        pbData: *const BYTE,
75        dwFlags: DWORD,
76    ) -> BOOL,
77    pub CryptGetHashParam: unsafe extern "C" fn(
78        hHash: HCRYPTHASH,
79        dwParam: DWORD,
80        pbData: *mut BYTE,
81        pdwDataLen: *mut DWORD,
82        dwFlags: DWORD,
83    ) -> BOOL,
84    pub CryptSetProvParam: unsafe extern "C" fn(
85        hProv: HCRYPTPROV,
86        dwParam: DWORD,
87        pbData: *const BYTE,
88        dwFlags: DWORD,
89    ) -> BOOL,
90    pub CryptGetProvParam: unsafe extern "C" fn(
91        hProv: HCRYPTPROV,
92        dwParam: DWORD,
93        pbData: *mut BYTE,
94        pdwDataLen: *mut DWORD,
95        dwFlags: DWORD,
96    ) -> BOOL,
97    pub CryptGenRandom:
98        unsafe extern "C" fn(hProv: HCRYPTPROV, dwLen: DWORD, pbBuffer: *mut BYTE) -> BOOL,
99    pub CryptGetUserKey: unsafe extern "C" fn(
100        hProv: HCRYPTPROV,
101        dwKeySpec: DWORD,
102        phUserKey: *mut HCRYPTKEY,
103    ) -> BOOL,
104    pub CryptExportKey: unsafe extern "C" fn(
105        hKey: HCRYPTKEY,
106        hExpKey: HCRYPTKEY,
107        dwBlobType: DWORD,
108        dwFlags: DWORD,
109        pbData: *mut BYTE,
110        pdwDataLen: *mut DWORD,
111    ) -> BOOL,
112    pub CryptImportKey: unsafe extern "C" fn(
113        hProv: HCRYPTPROV,
114        pbData: *const BYTE,
115        dwDataLen: DWORD,
116        hPubKey: HCRYPTKEY,
117        dwFlags: DWORD,
118        phKey: *mut HCRYPTKEY,
119    ) -> BOOL,
120    pub CryptEncrypt: unsafe extern "C" fn(
121        hKey: HCRYPTKEY,
122        hHash: HCRYPTHASH,
123        Final: BOOL,
124        dwFlags: DWORD,
125        pbData: *mut BYTE,
126        pdwDataLen: *mut DWORD,
127        dwBufLen: DWORD,
128    ) -> BOOL,
129    pub CryptDecrypt: unsafe extern "C" fn(
130        hKey: HCRYPTKEY,
131        hHash: HCRYPTHASH,
132        Final: BOOL,
133        dwFlags: DWORD,
134        pbData: *mut BYTE,
135        pdwDataLen: *mut DWORD,
136    ) -> BOOL,
137    pub CryptCreateHash: unsafe extern "C" fn(
138        hProv: HCRYPTPROV,
139        Algid: ALG_ID,
140        hKey: HCRYPTKEY,
141        dwFlags: DWORD,
142        phHash: *mut HCRYPTHASH,
143    ) -> BOOL,
144    pub CryptHashData: unsafe extern "C" fn(
145        hHash: HCRYPTHASH,
146        pbData: *const BYTE,
147        dwDataLen: DWORD,
148        dwFlags: DWORD,
149    ) -> BOOL,
150    pub CryptHashSessionKey:
151        unsafe extern "C" fn(hHash: HCRYPTHASH, hKey: HCRYPTKEY, dwFlags: DWORD) -> BOOL,
152    pub CryptDestroyHash: unsafe extern "C" fn(hHash: HCRYPTHASH) -> BOOL,
153    pub CryptSignHashA: unsafe extern "C" fn(
154        hHash: HCRYPTHASH,
155        dwKeySpec: DWORD,
156        szDescription: LPCSTR,
157        dwFlags: DWORD,
158        pbSignature: *mut BYTE,
159        pdwSigLen: *mut DWORD,
160    ) -> BOOL,
161    pub CryptVerifySignatureA: unsafe extern "C" fn(
162        hHash: HCRYPTHASH,
163        pbSignature: *const BYTE,
164        dwSigLen: DWORD,
165        hPubKey: HCRYPTKEY,
166        szDescription: LPCSTR,
167        dwFlags: DWORD,
168    ) -> BOOL,
169    pub CryptDuplicateKey: unsafe extern "C" fn(
170        hKey: HCRYPTKEY,
171        pdwReserved: *mut DWORD,
172        dwFlags: DWORD,
173        phKey: *mut HCRYPTKEY,
174    ) -> BOOL,
175    pub CryptDuplicateHash: unsafe extern "C" fn(
176        hHash: HCRYPTHASH,
177        pdwReserved: *mut DWORD,
178        dwFlags: DWORD,
179        phHash: *mut HCRYPTHASH,
180    ) -> BOOL,
181    pub CryptEnumProvidersA: unsafe extern "C" fn(
182        dwIndex: DWORD,
183        pdwReserved: *mut DWORD,
184        dwFlags: DWORD,
185        pdwProvType: *mut DWORD,
186        szProvName: LPSTR,
187        pcbProvName: *mut DWORD,
188    ) -> BOOL,
189}
190impl SSP {
191    pub unsafe fn new<P>(path: P) -> Result<Self, ::libloading::Error>
192    where
193        P: AsRef<::std::ffi::OsStr>,
194    {
195        let library = ::libloading::Library::new(path)?;
196        Self::from_library(library)
197    }
198    pub unsafe fn from_library<L>(library: L) -> Result<Self, ::libloading::Error>
199    where
200        L: Into<::libloading::Library>,
201    {
202        let __library = library.into();
203        let GetLastError = __library.get(b"GetLastError\0").map(|sym| *sym)?;
204        let CertOpenStore = __library.get(b"CertOpenStore\0").map(|sym| *sym)?;
205        let CertCloseStore = __library.get(b"CertCloseStore\0").map(|sym| *sym)?;
206        let CertEnumCertificatesInStore = __library
207            .get(b"CertEnumCertificatesInStore\0")
208            .map(|sym| *sym)?;
209        let CertFindCertificateInStore = __library
210            .get(b"CertFindCertificateInStore\0")
211            .map(|sym| *sym)?;
212        let CertFreeCertificateContext = __library
213            .get(b"CertFreeCertificateContext\0")
214            .map(|sym| *sym)?;
215        let CertGetCertificateContextProperty = __library
216            .get(b"CertGetCertificateContextProperty\0")
217            .map(|sym| *sym)?;
218        let CertEnumCertificateContextProperties = __library
219            .get(b"CertEnumCertificateContextProperties\0")
220            .map(|sym| *sym)?;
221        let CryptAcquireContextW = __library.get(b"CryptAcquireContextW\0").map(|sym| *sym)?;
222        let CryptReleaseContext = __library.get(b"CryptReleaseContext\0").map(|sym| *sym)?;
223        let CryptGenKey = __library.get(b"CryptGenKey\0").map(|sym| *sym)?;
224        let CryptDeriveKey = __library.get(b"CryptDeriveKey\0").map(|sym| *sym)?;
225        let CryptDestroyKey = __library.get(b"CryptDestroyKey\0").map(|sym| *sym)?;
226        let CryptSetKeyParam = __library.get(b"CryptSetKeyParam\0").map(|sym| *sym)?;
227        let CryptGetKeyParam = __library.get(b"CryptGetKeyParam\0").map(|sym| *sym)?;
228        let CryptSetHashParam = __library.get(b"CryptSetHashParam\0").map(|sym| *sym)?;
229        let CryptGetHashParam = __library.get(b"CryptGetHashParam\0").map(|sym| *sym)?;
230        let CryptSetProvParam = __library.get(b"CryptSetProvParam\0").map(|sym| *sym)?;
231        let CryptGetProvParam = __library.get(b"CryptGetProvParam\0").map(|sym| *sym)?;
232        let CryptGenRandom = __library.get(b"CryptGenRandom\0").map(|sym| *sym)?;
233        let CryptGetUserKey = __library.get(b"CryptGetUserKey\0").map(|sym| *sym)?;
234        let CryptExportKey = __library.get(b"CryptExportKey\0").map(|sym| *sym)?;
235        let CryptImportKey = __library.get(b"CryptImportKey\0").map(|sym| *sym)?;
236        let CryptEncrypt = __library.get(b"CryptEncrypt\0").map(|sym| *sym)?;
237        let CryptDecrypt = __library.get(b"CryptDecrypt\0").map(|sym| *sym)?;
238        let CryptCreateHash = __library.get(b"CryptCreateHash\0").map(|sym| *sym)?;
239        let CryptHashData = __library.get(b"CryptHashData\0").map(|sym| *sym)?;
240        let CryptHashSessionKey = __library.get(b"CryptHashSessionKey\0").map(|sym| *sym)?;
241        let CryptDestroyHash = __library.get(b"CryptDestroyHash\0").map(|sym| *sym)?;
242        let CryptSignHashA = __library.get(b"CryptSignHashA\0").map(|sym| *sym)?;
243        let CryptVerifySignatureA = __library.get(b"CryptVerifySignatureA\0").map(|sym| *sym)?;
244        let CryptDuplicateKey = __library.get(b"CryptDuplicateKey\0").map(|sym| *sym)?;
245        let CryptDuplicateHash = __library.get(b"CryptDuplicateHash\0").map(|sym| *sym)?;
246        let CryptEnumProvidersA = __library.get(b"CryptEnumProvidersA\0").map(|sym| *sym)?;
247        Ok(SSP {
248            __library,
249            GetLastError,
250            CertOpenStore,
251            CertCloseStore,
252            CertEnumCertificatesInStore,
253            CertFindCertificateInStore,
254            CertFreeCertificateContext,
255            CertGetCertificateContextProperty,
256            CertEnumCertificateContextProperties,
257            CryptAcquireContextW,
258            CryptReleaseContext,
259            CryptGenKey,
260            CryptDeriveKey,
261            CryptDestroyKey,
262            CryptSetKeyParam,
263            CryptGetKeyParam,
264            CryptSetHashParam,
265            CryptGetHashParam,
266            CryptSetProvParam,
267            CryptGetProvParam,
268            CryptGenRandom,
269            CryptGetUserKey,
270            CryptExportKey,
271            CryptImportKey,
272            CryptEncrypt,
273            CryptDecrypt,
274            CryptCreateHash,
275            CryptHashData,
276            CryptHashSessionKey,
277            CryptDestroyHash,
278            CryptSignHashA,
279            CryptVerifySignatureA,
280            CryptDuplicateKey,
281            CryptDuplicateHash,
282            CryptEnumProvidersA,
283        })
284    }
285    pub unsafe fn GetLastError(&self) -> DWORD {
286        (self.GetLastError)()
287    }
288    pub unsafe fn CertOpenStore(
289        &self,
290        lpszStoreProvider: LPCSTR,
291        dwEncodingType: DWORD,
292        hCryptProv: HCRYPTPROV,
293        dwFlags: DWORD,
294        pvPara: *const ::std::os::raw::c_void,
295    ) -> HCERTSTORE {
296        (self.CertOpenStore)(
297            lpszStoreProvider,
298            dwEncodingType,
299            hCryptProv,
300            dwFlags,
301            pvPara,
302        )
303    }
304    pub unsafe fn CertCloseStore(&self, hCertStore: HCERTSTORE, dwFlags: DWORD) -> BOOL {
305        (self.CertCloseStore)(hCertStore, dwFlags)
306    }
307    pub unsafe fn CertEnumCertificatesInStore(
308        &self,
309        hCertStore: HCERTSTORE,
310        pPrevCertContext: PCCERT_CONTEXT,
311    ) -> PCCERT_CONTEXT {
312        (self.CertEnumCertificatesInStore)(hCertStore, pPrevCertContext)
313    }
314    pub unsafe fn CertFindCertificateInStore(
315        &self,
316        hCertStore: HCERTSTORE,
317        dwCertEncodingType: DWORD,
318        dwFindFlags: DWORD,
319        dwFindType: DWORD,
320        pvFindPara: *const ::std::os::raw::c_void,
321        pPrevCertContext: PCCERT_CONTEXT,
322    ) -> PCCERT_CONTEXT {
323        (self.CertFindCertificateInStore)(
324            hCertStore,
325            dwCertEncodingType,
326            dwFindFlags,
327            dwFindType,
328            pvFindPara,
329            pPrevCertContext,
330        )
331    }
332    pub unsafe fn CertFreeCertificateContext(&self, pCertContext: PCCERT_CONTEXT) -> BOOL {
333        (self.CertFreeCertificateContext)(pCertContext)
334    }
335    pub unsafe fn CertGetCertificateContextProperty(
336        &self,
337        pCertContext: PCCERT_CONTEXT,
338        dwPropId: DWORD,
339        pvData: *mut ::std::os::raw::c_void,
340        pcbData: *mut DWORD,
341    ) -> BOOL {
342        (self.CertGetCertificateContextProperty)(pCertContext, dwPropId, pvData, pcbData)
343    }
344    pub unsafe fn CertEnumCertificateContextProperties(
345        &self,
346        pCertContext: PCCERT_CONTEXT,
347        dwPropId: DWORD,
348    ) -> DWORD {
349        (self.CertEnumCertificateContextProperties)(pCertContext, dwPropId)
350    }
351    pub unsafe fn CryptAcquireContextW(
352        &self,
353        phProv: *mut HCRYPTPROV,
354        pszContainer: LPCWSTR,
355        pszProvider: LPCWSTR,
356        dwProvType: DWORD,
357        dwFlags: DWORD,
358    ) -> BOOL {
359        (self.CryptAcquireContextW)(phProv, pszContainer, pszProvider, dwProvType, dwFlags)
360    }
361    pub unsafe fn CryptReleaseContext(&self, hProv: HCRYPTPROV, dwFlags: DWORD) -> BOOL {
362        (self.CryptReleaseContext)(hProv, dwFlags)
363    }
364    pub unsafe fn CryptGenKey(
365        &self,
366        hProv: HCRYPTPROV,
367        Algid: ALG_ID,
368        dwFlags: DWORD,
369        phKey: *mut HCRYPTKEY,
370    ) -> BOOL {
371        (self.CryptGenKey)(hProv, Algid, dwFlags, phKey)
372    }
373    pub unsafe fn CryptDeriveKey(
374        &self,
375        hProv: HCRYPTPROV,
376        Algid: ALG_ID,
377        hBaseData: HCRYPTHASH,
378        dwFlags: DWORD,
379        phKey: *mut HCRYPTKEY,
380    ) -> BOOL {
381        (self.CryptDeriveKey)(hProv, Algid, hBaseData, dwFlags, phKey)
382    }
383    pub unsafe fn CryptDestroyKey(&self, hKey: HCRYPTKEY) -> BOOL {
384        (self.CryptDestroyKey)(hKey)
385    }
386    pub unsafe fn CryptSetKeyParam(
387        &self,
388        hKey: HCRYPTKEY,
389        dwParam: DWORD,
390        pbData: *const BYTE,
391        dwFlags: DWORD,
392    ) -> BOOL {
393        (self.CryptSetKeyParam)(hKey, dwParam, pbData, dwFlags)
394    }
395    pub unsafe fn CryptGetKeyParam(
396        &self,
397        hKey: HCRYPTKEY,
398        dwParam: DWORD,
399        pbData: *mut BYTE,
400        pdwDataLen: *mut DWORD,
401        dwFlags: DWORD,
402    ) -> BOOL {
403        (self.CryptGetKeyParam)(hKey, dwParam, pbData, pdwDataLen, dwFlags)
404    }
405    pub unsafe fn CryptSetHashParam(
406        &self,
407        hHash: HCRYPTHASH,
408        dwParam: DWORD,
409        pbData: *const BYTE,
410        dwFlags: DWORD,
411    ) -> BOOL {
412        (self.CryptSetHashParam)(hHash, dwParam, pbData, dwFlags)
413    }
414    pub unsafe fn CryptGetHashParam(
415        &self,
416        hHash: HCRYPTHASH,
417        dwParam: DWORD,
418        pbData: *mut BYTE,
419        pdwDataLen: *mut DWORD,
420        dwFlags: DWORD,
421    ) -> BOOL {
422        (self.CryptGetHashParam)(hHash, dwParam, pbData, pdwDataLen, dwFlags)
423    }
424    pub unsafe fn CryptSetProvParam(
425        &self,
426        hProv: HCRYPTPROV,
427        dwParam: DWORD,
428        pbData: *const BYTE,
429        dwFlags: DWORD,
430    ) -> BOOL {
431        (self.CryptSetProvParam)(hProv, dwParam, pbData, dwFlags)
432    }
433    pub unsafe fn CryptGetProvParam(
434        &self,
435        hProv: HCRYPTPROV,
436        dwParam: DWORD,
437        pbData: *mut BYTE,
438        pdwDataLen: *mut DWORD,
439        dwFlags: DWORD,
440    ) -> BOOL {
441        (self.CryptGetProvParam)(hProv, dwParam, pbData, pdwDataLen, dwFlags)
442    }
443    pub unsafe fn CryptGenRandom(
444        &self,
445        hProv: HCRYPTPROV,
446        dwLen: DWORD,
447        pbBuffer: *mut BYTE,
448    ) -> BOOL {
449        (self.CryptGenRandom)(hProv, dwLen, pbBuffer)
450    }
451    pub unsafe fn CryptGetUserKey(
452        &self,
453        hProv: HCRYPTPROV,
454        dwKeySpec: DWORD,
455        phUserKey: *mut HCRYPTKEY,
456    ) -> BOOL {
457        (self.CryptGetUserKey)(hProv, dwKeySpec, phUserKey)
458    }
459    pub unsafe fn CryptExportKey(
460        &self,
461        hKey: HCRYPTKEY,
462        hExpKey: HCRYPTKEY,
463        dwBlobType: DWORD,
464        dwFlags: DWORD,
465        pbData: *mut BYTE,
466        pdwDataLen: *mut DWORD,
467    ) -> BOOL {
468        (self.CryptExportKey)(hKey, hExpKey, dwBlobType, dwFlags, pbData, pdwDataLen)
469    }
470    pub unsafe fn CryptImportKey(
471        &self,
472        hProv: HCRYPTPROV,
473        pbData: *const BYTE,
474        dwDataLen: DWORD,
475        hPubKey: HCRYPTKEY,
476        dwFlags: DWORD,
477        phKey: *mut HCRYPTKEY,
478    ) -> BOOL {
479        (self.CryptImportKey)(hProv, pbData, dwDataLen, hPubKey, dwFlags, phKey)
480    }
481    pub unsafe fn CryptEncrypt(
482        &self,
483        hKey: HCRYPTKEY,
484        hHash: HCRYPTHASH,
485        Final: BOOL,
486        dwFlags: DWORD,
487        pbData: *mut BYTE,
488        pdwDataLen: *mut DWORD,
489        dwBufLen: DWORD,
490    ) -> BOOL {
491        (self.CryptEncrypt)(hKey, hHash, Final, dwFlags, pbData, pdwDataLen, dwBufLen)
492    }
493    pub unsafe fn CryptDecrypt(
494        &self,
495        hKey: HCRYPTKEY,
496        hHash: HCRYPTHASH,
497        Final: BOOL,
498        dwFlags: DWORD,
499        pbData: *mut BYTE,
500        pdwDataLen: *mut DWORD,
501    ) -> BOOL {
502        (self.CryptDecrypt)(hKey, hHash, Final, dwFlags, pbData, pdwDataLen)
503    }
504    pub unsafe fn CryptCreateHash(
505        &self,
506        hProv: HCRYPTPROV,
507        Algid: ALG_ID,
508        hKey: HCRYPTKEY,
509        dwFlags: DWORD,
510        phHash: *mut HCRYPTHASH,
511    ) -> BOOL {
512        (self.CryptCreateHash)(hProv, Algid, hKey, dwFlags, phHash)
513    }
514    pub unsafe fn CryptHashData(
515        &self,
516        hHash: HCRYPTHASH,
517        pbData: *const BYTE,
518        dwDataLen: DWORD,
519        dwFlags: DWORD,
520    ) -> BOOL {
521        (self.CryptHashData)(hHash, pbData, dwDataLen, dwFlags)
522    }
523    pub unsafe fn CryptHashSessionKey(
524        &self,
525        hHash: HCRYPTHASH,
526        hKey: HCRYPTKEY,
527        dwFlags: DWORD,
528    ) -> BOOL {
529        (self.CryptHashSessionKey)(hHash, hKey, dwFlags)
530    }
531    pub unsafe fn CryptDestroyHash(&self, hHash: HCRYPTHASH) -> BOOL {
532        (self.CryptDestroyHash)(hHash)
533    }
534    pub unsafe fn CryptSignHashA(
535        &self,
536        hHash: HCRYPTHASH,
537        dwKeySpec: DWORD,
538        szDescription: LPCSTR,
539        dwFlags: DWORD,
540        pbSignature: *mut BYTE,
541        pdwSigLen: *mut DWORD,
542    ) -> BOOL {
543        (self.CryptSignHashA)(
544            hHash,
545            dwKeySpec,
546            szDescription,
547            dwFlags,
548            pbSignature,
549            pdwSigLen,
550        )
551    }
552    pub unsafe fn CryptVerifySignatureA(
553        &self,
554        hHash: HCRYPTHASH,
555        pbSignature: *const BYTE,
556        dwSigLen: DWORD,
557        hPubKey: HCRYPTKEY,
558        szDescription: LPCSTR,
559        dwFlags: DWORD,
560    ) -> BOOL {
561        (self.CryptVerifySignatureA)(
562            hHash,
563            pbSignature,
564            dwSigLen,
565            hPubKey,
566            szDescription,
567            dwFlags,
568        )
569    }
570    pub unsafe fn CryptDuplicateKey(
571        &self,
572        hKey: HCRYPTKEY,
573        pdwReserved: *mut DWORD,
574        dwFlags: DWORD,
575        phKey: *mut HCRYPTKEY,
576    ) -> BOOL {
577        (self.CryptDuplicateKey)(hKey, pdwReserved, dwFlags, phKey)
578    }
579    pub unsafe fn CryptDuplicateHash(
580        &self,
581        hHash: HCRYPTHASH,
582        pdwReserved: *mut DWORD,
583        dwFlags: DWORD,
584        phHash: *mut HCRYPTHASH,
585    ) -> BOOL {
586        (self.CryptDuplicateHash)(hHash, pdwReserved, dwFlags, phHash)
587    }
588    pub unsafe fn CryptEnumProvidersA(
589        &self,
590        dwIndex: DWORD,
591        pdwReserved: *mut DWORD,
592        dwFlags: DWORD,
593        pdwProvType: *mut DWORD,
594        szProvName: LPSTR,
595        pcbProvName: *mut DWORD,
596    ) -> BOOL {
597        (self.CryptEnumProvidersA)(
598            dwIndex,
599            pdwReserved,
600            dwFlags,
601            pdwProvType,
602            szProvName,
603            pcbProvName,
604        )
605    }
606}