github.com/kbinani/win@v0.3.0/crypt32.go (about)

     1  // This file was automatically generated by https://github.com/kbinani/win/blob/generator/internal/cmd/gen/gen.go
     2  // go run internal/cmd/gen/gen.go
     3  
     4  // +build windows
     5  
     6  package win
     7  
     8  import (
     9  	"unsafe"
    10  )
    11  
    12  var (
    13  	// Library
    14  	libcrypt32 uintptr
    15  
    16  	// Functions
    17  	certAddCRLContextToStore                           uintptr
    18  	certAddCRLLinkToStore                              uintptr
    19  	certAddCTLContextToStore                           uintptr
    20  	certAddCTLLinkToStore                              uintptr
    21  	certAddCertificateContextToStore                   uintptr
    22  	certAddCertificateLinkToStore                      uintptr
    23  	certAddEncodedCRLToStore                           uintptr
    24  	certAddEncodedCTLToStore                           uintptr
    25  	certAddEncodedCertificateToStore                   uintptr
    26  	certAddEncodedCertificateToSystemStore             uintptr
    27  	certAddEnhancedKeyUsageIdentifier                  uintptr
    28  	certAddSerializedElementToStore                    uintptr
    29  	certAddStoreToCollection                           uintptr
    30  	certAlgIdToOID                                     uintptr
    31  	certCloseStore                                     uintptr
    32  	certCompareCertificate                             uintptr
    33  	certCompareCertificateName                         uintptr
    34  	certCompareIntegerBlob                             uintptr
    35  	certControlStore                                   uintptr
    36  	certCreateCRLContext                               uintptr
    37  	certCreateCTLContext                               uintptr
    38  	certCreateCTLEntryFromCertificateContextProperties uintptr
    39  	certCreateCertificateContext                       uintptr
    40  	certDeleteCRLFromStore                             uintptr
    41  	certDeleteCTLFromStore                             uintptr
    42  	certDeleteCertificateFromStore                     uintptr
    43  	certDuplicateCRLContext                            uintptr
    44  	certDuplicateCTLContext                            uintptr
    45  	certDuplicateCertificateContext                    uintptr
    46  	certDuplicateStore                                 uintptr
    47  	certEnumCRLContextProperties                       uintptr
    48  	certEnumCRLsInStore                                uintptr
    49  	certEnumCTLContextProperties                       uintptr
    50  	certEnumCTLsInStore                                uintptr
    51  	certEnumCertificateContextProperties               uintptr
    52  	certEnumCertificatesInStore                        uintptr
    53  	certEnumSubjectInSortedCTL                         uintptr
    54  	certFindAttribute                                  uintptr
    55  	certFindCRLInStore                                 uintptr
    56  	certFindCTLInStore                                 uintptr
    57  	certFindCertificateInCRL                           uintptr
    58  	certFindCertificateInStore                         uintptr
    59  	certFindExtension                                  uintptr
    60  	certFindSubjectInCTL                               uintptr
    61  	certFindSubjectInSortedCTL                         uintptr
    62  	certFreeCRLContext                                 uintptr
    63  	certFreeCTLContext                                 uintptr
    64  	certFreeCertificateContext                         uintptr
    65  	certGetCRLContextProperty                          uintptr
    66  	certGetCRLFromStore                                uintptr
    67  	certGetCTLContextProperty                          uintptr
    68  	certGetCertificateContextProperty                  uintptr
    69  	certGetIntendedKeyUsage                            uintptr
    70  	certGetIssuerCertificateFromStore                  uintptr
    71  	certGetNameString                                  uintptr
    72  	certGetStoreProperty                               uintptr
    73  	certGetSubjectCertificateFromStore                 uintptr
    74  	certGetValidUsages                                 uintptr
    75  	certIsValidCRLForCertificate                       uintptr
    76  	certNameToStr                                      uintptr
    77  	certOIDToAlgId                                     uintptr
    78  	certRDNValueToStr                                  uintptr
    79  	certRemoveEnhancedKeyUsageIdentifier               uintptr
    80  	certRemoveStoreFromCollection                      uintptr
    81  	certSaveStore                                      uintptr
    82  	certSerializeCRLStoreElement                       uintptr
    83  	certSerializeCTLStoreElement                       uintptr
    84  	certSerializeCertificateStoreElement               uintptr
    85  	certSetCRLContextProperty                          uintptr
    86  	certSetCTLContextProperty                          uintptr
    87  	certSetCertificateContextPropertiesFromCTLEntry    uintptr
    88  	certSetCertificateContextProperty                  uintptr
    89  	certSetStoreProperty                               uintptr
    90  	certStrToName                                      uintptr
    91  	certUnregisterPhysicalStore                        uintptr
    92  	certUnregisterSystemStore                          uintptr
    93  	certVerifyCRLRevocation                            uintptr
    94  	certVerifyCRLTimeValidity                          uintptr
    95  	certVerifySubjectCertificateContext                uintptr
    96  	certVerifyTimeValidity                             uintptr
    97  	certVerifyValidityNesting                          uintptr
    98  	cryptBinaryToString                                uintptr
    99  	cryptDecodeObject                                  uintptr
   100  	cryptEncodeObject                                  uintptr
   101  	cryptExportPKCS8                                   uintptr
   102  	cryptFindCertificateKeyProvInfo                    uintptr
   103  	cryptFindLocalizedName                             uintptr
   104  	cryptFormatObject                                  uintptr
   105  	cryptGetKeyIdentifierProperty                      uintptr
   106  	cryptGetMessageSignerCount                         uintptr
   107  	cryptGetOIDFunctionValue                           uintptr
   108  	cryptMemAlloc                                      uintptr
   109  	cryptMemFree                                       uintptr
   110  	cryptMemRealloc                                    uintptr
   111  	cryptMsgCalculateEncodedLength                     uintptr
   112  	cryptMsgClose                                      uintptr
   113  	cryptMsgControl                                    uintptr
   114  	cryptMsgDuplicate                                  uintptr
   115  	cryptMsgGetAndVerifySigner                         uintptr
   116  	cryptMsgGetParam                                   uintptr
   117  	cryptMsgUpdate                                     uintptr
   118  	cryptProtectMemory                                 uintptr
   119  	cryptQueryObject                                   uintptr
   120  	cryptRegisterDefaultOIDFunction                    uintptr
   121  	cryptRegisterOIDFunction                           uintptr
   122  	cryptSIPRemoveProvider                             uintptr
   123  	cryptSIPRetrieveSubjectGuid                        uintptr
   124  	cryptSIPRetrieveSubjectGuidForCatalogFile          uintptr
   125  	cryptSetKeyIdentifierProperty                      uintptr
   126  	cryptSetOIDFunctionValue                           uintptr
   127  	cryptStringToBinary                                uintptr
   128  	cryptUnprotectMemory                               uintptr
   129  	cryptUnregisterDefaultOIDFunction                  uintptr
   130  	cryptUnregisterOIDFunction                         uintptr
   131  	pFXExportCertStore                                 uintptr
   132  	pFXExportCertStoreEx                               uintptr
   133  	pFXImportCertStore                                 uintptr
   134  	pFXIsPFXBlob                                       uintptr
   135  	pFXVerifyPassword                                  uintptr
   136  	i_CertUpdateStore                                  uintptr
   137  	i_CryptAllocTls                                    uintptr
   138  	i_CryptDetachTls                                   uintptr
   139  	i_CryptFindLruEntry                                uintptr
   140  	i_CryptFindLruEntryData                            uintptr
   141  	i_CryptFreeTls                                     uintptr
   142  	i_CryptGetDefaultCryptProv                         uintptr
   143  	i_CryptGetOssGlobal                                uintptr
   144  	i_CryptGetTls                                      uintptr
   145  	i_CryptInstallOssGlobal                            uintptr
   146  	i_CryptReadTrustedPublisherDWORDValueFromRegistry  uintptr
   147  	i_CryptSetTls                                      uintptr
   148  )
   149  
   150  func init() {
   151  	// Library
   152  	libcrypt32 = doLoadLibrary("crypt32.dll")
   153  
   154  	// Functions
   155  	certAddCRLContextToStore = doGetProcAddress(libcrypt32, "CertAddCRLContextToStore")
   156  	certAddCRLLinkToStore = doGetProcAddress(libcrypt32, "CertAddCRLLinkToStore")
   157  	certAddCTLContextToStore = doGetProcAddress(libcrypt32, "CertAddCTLContextToStore")
   158  	certAddCTLLinkToStore = doGetProcAddress(libcrypt32, "CertAddCTLLinkToStore")
   159  	certAddCertificateContextToStore = doGetProcAddress(libcrypt32, "CertAddCertificateContextToStore")
   160  	certAddCertificateLinkToStore = doGetProcAddress(libcrypt32, "CertAddCertificateLinkToStore")
   161  	certAddEncodedCRLToStore = doGetProcAddress(libcrypt32, "CertAddEncodedCRLToStore")
   162  	certAddEncodedCTLToStore = doGetProcAddress(libcrypt32, "CertAddEncodedCTLToStore")
   163  	certAddEncodedCertificateToStore = doGetProcAddress(libcrypt32, "CertAddEncodedCertificateToStore")
   164  	certAddEncodedCertificateToSystemStore = doGetProcAddress(libcrypt32, "CertAddEncodedCertificateToSystemStoreW")
   165  	certAddEnhancedKeyUsageIdentifier = doGetProcAddress(libcrypt32, "CertAddEnhancedKeyUsageIdentifier")
   166  	certAddSerializedElementToStore = doGetProcAddress(libcrypt32, "CertAddSerializedElementToStore")
   167  	certAddStoreToCollection = doGetProcAddress(libcrypt32, "CertAddStoreToCollection")
   168  	certAlgIdToOID = doGetProcAddress(libcrypt32, "CertAlgIdToOID")
   169  	certCloseStore = doGetProcAddress(libcrypt32, "CertCloseStore")
   170  	certCompareCertificate = doGetProcAddress(libcrypt32, "CertCompareCertificate")
   171  	certCompareCertificateName = doGetProcAddress(libcrypt32, "CertCompareCertificateName")
   172  	certCompareIntegerBlob = doGetProcAddress(libcrypt32, "CertCompareIntegerBlob")
   173  	certControlStore = doGetProcAddress(libcrypt32, "CertControlStore")
   174  	certCreateCRLContext = doGetProcAddress(libcrypt32, "CertCreateCRLContext")
   175  	certCreateCTLContext = doGetProcAddress(libcrypt32, "CertCreateCTLContext")
   176  	certCreateCTLEntryFromCertificateContextProperties = doGetProcAddress(libcrypt32, "CertCreateCTLEntryFromCertificateContextProperties")
   177  	certCreateCertificateContext = doGetProcAddress(libcrypt32, "CertCreateCertificateContext")
   178  	certDeleteCRLFromStore = doGetProcAddress(libcrypt32, "CertDeleteCRLFromStore")
   179  	certDeleteCTLFromStore = doGetProcAddress(libcrypt32, "CertDeleteCTLFromStore")
   180  	certDeleteCertificateFromStore = doGetProcAddress(libcrypt32, "CertDeleteCertificateFromStore")
   181  	certDuplicateCRLContext = doGetProcAddress(libcrypt32, "CertDuplicateCRLContext")
   182  	certDuplicateCTLContext = doGetProcAddress(libcrypt32, "CertDuplicateCTLContext")
   183  	certDuplicateCertificateContext = doGetProcAddress(libcrypt32, "CertDuplicateCertificateContext")
   184  	certDuplicateStore = doGetProcAddress(libcrypt32, "CertDuplicateStore")
   185  	certEnumCRLContextProperties = doGetProcAddress(libcrypt32, "CertEnumCRLContextProperties")
   186  	certEnumCRLsInStore = doGetProcAddress(libcrypt32, "CertEnumCRLsInStore")
   187  	certEnumCTLContextProperties = doGetProcAddress(libcrypt32, "CertEnumCTLContextProperties")
   188  	certEnumCTLsInStore = doGetProcAddress(libcrypt32, "CertEnumCTLsInStore")
   189  	certEnumCertificateContextProperties = doGetProcAddress(libcrypt32, "CertEnumCertificateContextProperties")
   190  	certEnumCertificatesInStore = doGetProcAddress(libcrypt32, "CertEnumCertificatesInStore")
   191  	certEnumSubjectInSortedCTL = doGetProcAddress(libcrypt32, "CertEnumSubjectInSortedCTL")
   192  	certFindAttribute = doGetProcAddress(libcrypt32, "CertFindAttribute")
   193  	certFindCRLInStore = doGetProcAddress(libcrypt32, "CertFindCRLInStore")
   194  	certFindCTLInStore = doGetProcAddress(libcrypt32, "CertFindCTLInStore")
   195  	certFindCertificateInCRL = doGetProcAddress(libcrypt32, "CertFindCertificateInCRL")
   196  	certFindCertificateInStore = doGetProcAddress(libcrypt32, "CertFindCertificateInStore")
   197  	certFindExtension = doGetProcAddress(libcrypt32, "CertFindExtension")
   198  	certFindSubjectInCTL = doGetProcAddress(libcrypt32, "CertFindSubjectInCTL")
   199  	certFindSubjectInSortedCTL = doGetProcAddress(libcrypt32, "CertFindSubjectInSortedCTL")
   200  	certFreeCRLContext = doGetProcAddress(libcrypt32, "CertFreeCRLContext")
   201  	certFreeCTLContext = doGetProcAddress(libcrypt32, "CertFreeCTLContext")
   202  	certFreeCertificateContext = doGetProcAddress(libcrypt32, "CertFreeCertificateContext")
   203  	certGetCRLContextProperty = doGetProcAddress(libcrypt32, "CertGetCRLContextProperty")
   204  	certGetCRLFromStore = doGetProcAddress(libcrypt32, "CertGetCRLFromStore")
   205  	certGetCTLContextProperty = doGetProcAddress(libcrypt32, "CertGetCTLContextProperty")
   206  	certGetCertificateContextProperty = doGetProcAddress(libcrypt32, "CertGetCertificateContextProperty")
   207  	certGetIntendedKeyUsage = doGetProcAddress(libcrypt32, "CertGetIntendedKeyUsage")
   208  	certGetIssuerCertificateFromStore = doGetProcAddress(libcrypt32, "CertGetIssuerCertificateFromStore")
   209  	certGetNameString = doGetProcAddress(libcrypt32, "CertGetNameStringW")
   210  	certGetStoreProperty = doGetProcAddress(libcrypt32, "CertGetStoreProperty")
   211  	certGetSubjectCertificateFromStore = doGetProcAddress(libcrypt32, "CertGetSubjectCertificateFromStore")
   212  	certGetValidUsages = doGetProcAddress(libcrypt32, "CertGetValidUsages")
   213  	certIsValidCRLForCertificate = doGetProcAddress(libcrypt32, "CertIsValidCRLForCertificate")
   214  	certNameToStr = doGetProcAddress(libcrypt32, "CertNameToStrW")
   215  	certOIDToAlgId = doGetProcAddress(libcrypt32, "CertOIDToAlgId")
   216  	certRDNValueToStr = doGetProcAddress(libcrypt32, "CertRDNValueToStrW")
   217  	certRemoveEnhancedKeyUsageIdentifier = doGetProcAddress(libcrypt32, "CertRemoveEnhancedKeyUsageIdentifier")
   218  	certRemoveStoreFromCollection = doGetProcAddress(libcrypt32, "CertRemoveStoreFromCollection")
   219  	certSaveStore = doGetProcAddress(libcrypt32, "CertSaveStore")
   220  	certSerializeCRLStoreElement = doGetProcAddress(libcrypt32, "CertSerializeCRLStoreElement")
   221  	certSerializeCTLStoreElement = doGetProcAddress(libcrypt32, "CertSerializeCTLStoreElement")
   222  	certSerializeCertificateStoreElement = doGetProcAddress(libcrypt32, "CertSerializeCertificateStoreElement")
   223  	certSetCRLContextProperty = doGetProcAddress(libcrypt32, "CertSetCRLContextProperty")
   224  	certSetCTLContextProperty = doGetProcAddress(libcrypt32, "CertSetCTLContextProperty")
   225  	certSetCertificateContextPropertiesFromCTLEntry = doGetProcAddress(libcrypt32, "CertSetCertificateContextPropertiesFromCTLEntry")
   226  	certSetCertificateContextProperty = doGetProcAddress(libcrypt32, "CertSetCertificateContextProperty")
   227  	certSetStoreProperty = doGetProcAddress(libcrypt32, "CertSetStoreProperty")
   228  	certStrToName = doGetProcAddress(libcrypt32, "CertStrToNameW")
   229  	certUnregisterPhysicalStore = doGetProcAddress(libcrypt32, "CertUnregisterPhysicalStore")
   230  	certUnregisterSystemStore = doGetProcAddress(libcrypt32, "CertUnregisterSystemStore")
   231  	certVerifyCRLRevocation = doGetProcAddress(libcrypt32, "CertVerifyCRLRevocation")
   232  	certVerifyCRLTimeValidity = doGetProcAddress(libcrypt32, "CertVerifyCRLTimeValidity")
   233  	certVerifySubjectCertificateContext = doGetProcAddress(libcrypt32, "CertVerifySubjectCertificateContext")
   234  	certVerifyTimeValidity = doGetProcAddress(libcrypt32, "CertVerifyTimeValidity")
   235  	certVerifyValidityNesting = doGetProcAddress(libcrypt32, "CertVerifyValidityNesting")
   236  	cryptBinaryToString = doGetProcAddress(libcrypt32, "CryptBinaryToStringW")
   237  	cryptDecodeObject = doGetProcAddress(libcrypt32, "CryptDecodeObject")
   238  	cryptEncodeObject = doGetProcAddress(libcrypt32, "CryptEncodeObject")
   239  	cryptExportPKCS8 = doGetProcAddress(libcrypt32, "CryptExportPKCS8")
   240  	cryptFindCertificateKeyProvInfo = doGetProcAddress(libcrypt32, "CryptFindCertificateKeyProvInfo")
   241  	cryptFindLocalizedName = doGetProcAddress(libcrypt32, "CryptFindLocalizedName")
   242  	cryptFormatObject = doGetProcAddress(libcrypt32, "CryptFormatObject")
   243  	cryptGetKeyIdentifierProperty = doGetProcAddress(libcrypt32, "CryptGetKeyIdentifierProperty")
   244  	cryptGetMessageSignerCount = doGetProcAddress(libcrypt32, "CryptGetMessageSignerCount")
   245  	cryptGetOIDFunctionValue = doGetProcAddress(libcrypt32, "CryptGetOIDFunctionValue")
   246  	cryptMemAlloc = doGetProcAddress(libcrypt32, "CryptMemAlloc")
   247  	cryptMemFree = doGetProcAddress(libcrypt32, "CryptMemFree")
   248  	cryptMemRealloc = doGetProcAddress(libcrypt32, "CryptMemRealloc")
   249  	cryptMsgCalculateEncodedLength = doGetProcAddress(libcrypt32, "CryptMsgCalculateEncodedLength")
   250  	cryptMsgClose = doGetProcAddress(libcrypt32, "CryptMsgClose")
   251  	cryptMsgControl = doGetProcAddress(libcrypt32, "CryptMsgControl")
   252  	cryptMsgDuplicate = doGetProcAddress(libcrypt32, "CryptMsgDuplicate")
   253  	cryptMsgGetAndVerifySigner = doGetProcAddress(libcrypt32, "CryptMsgGetAndVerifySigner")
   254  	cryptMsgGetParam = doGetProcAddress(libcrypt32, "CryptMsgGetParam")
   255  	cryptMsgUpdate = doGetProcAddress(libcrypt32, "CryptMsgUpdate")
   256  	cryptProtectMemory = doGetProcAddress(libcrypt32, "CryptProtectMemory")
   257  	cryptQueryObject = doGetProcAddress(libcrypt32, "CryptQueryObject")
   258  	cryptRegisterDefaultOIDFunction = doGetProcAddress(libcrypt32, "CryptRegisterDefaultOIDFunction")
   259  	cryptRegisterOIDFunction = doGetProcAddress(libcrypt32, "CryptRegisterOIDFunction")
   260  	cryptSIPRemoveProvider = doGetProcAddress(libcrypt32, "CryptSIPRemoveProvider")
   261  	cryptSIPRetrieveSubjectGuid = doGetProcAddress(libcrypt32, "CryptSIPRetrieveSubjectGuid")
   262  	cryptSIPRetrieveSubjectGuidForCatalogFile = doGetProcAddress(libcrypt32, "CryptSIPRetrieveSubjectGuidForCatalogFile")
   263  	cryptSetKeyIdentifierProperty = doGetProcAddress(libcrypt32, "CryptSetKeyIdentifierProperty")
   264  	cryptSetOIDFunctionValue = doGetProcAddress(libcrypt32, "CryptSetOIDFunctionValue")
   265  	cryptStringToBinary = doGetProcAddress(libcrypt32, "CryptStringToBinaryW")
   266  	cryptUnprotectMemory = doGetProcAddress(libcrypt32, "CryptUnprotectMemory")
   267  	cryptUnregisterDefaultOIDFunction = doGetProcAddress(libcrypt32, "CryptUnregisterDefaultOIDFunction")
   268  	cryptUnregisterOIDFunction = doGetProcAddress(libcrypt32, "CryptUnregisterOIDFunction")
   269  	pFXExportCertStore = doGetProcAddress(libcrypt32, "PFXExportCertStore")
   270  	pFXExportCertStoreEx = doGetProcAddress(libcrypt32, "PFXExportCertStoreEx")
   271  	pFXImportCertStore = doGetProcAddress(libcrypt32, "PFXImportCertStore")
   272  	pFXIsPFXBlob = doGetProcAddress(libcrypt32, "PFXIsPFXBlob")
   273  	pFXVerifyPassword = doGetProcAddress(libcrypt32, "PFXVerifyPassword")
   274  	i_CertUpdateStore = doGetProcAddress(libcrypt32, "I_CertUpdateStore")
   275  	i_CryptAllocTls = doGetProcAddress(libcrypt32, "I_CryptAllocTls")
   276  	i_CryptDetachTls = doGetProcAddress(libcrypt32, "I_CryptDetachTls")
   277  	i_CryptFindLruEntry = doGetProcAddress(libcrypt32, "I_CryptFindLruEntry")
   278  	i_CryptFindLruEntryData = doGetProcAddress(libcrypt32, "I_CryptFindLruEntryData")
   279  	i_CryptFreeTls = doGetProcAddress(libcrypt32, "I_CryptFreeTls")
   280  	i_CryptGetDefaultCryptProv = doGetProcAddress(libcrypt32, "I_CryptGetDefaultCryptProv")
   281  	i_CryptGetOssGlobal = doGetProcAddress(libcrypt32, "I_CryptGetOssGlobal")
   282  	i_CryptGetTls = doGetProcAddress(libcrypt32, "I_CryptGetTls")
   283  	i_CryptInstallOssGlobal = doGetProcAddress(libcrypt32, "I_CryptInstallOssGlobal")
   284  	i_CryptReadTrustedPublisherDWORDValueFromRegistry = doGetProcAddress(libcrypt32, "I_CryptReadTrustedPublisherDWORDValueFromRegistry")
   285  	i_CryptSetTls = doGetProcAddress(libcrypt32, "I_CryptSetTls")
   286  }
   287  
   288  func CertAddCRLContextToStore(hCertStore HCERTSTORE, pCrlContext PCCRL_CONTEXT, dwAddDisposition DWORD, ppStoreContext *PCCRL_CONTEXT) bool {
   289  	ret1 := syscall6(certAddCRLContextToStore, 4,
   290  		uintptr(hCertStore),
   291  		uintptr(unsafe.Pointer(pCrlContext)),
   292  		uintptr(dwAddDisposition),
   293  		uintptr(unsafe.Pointer(ppStoreContext)),
   294  		0,
   295  		0)
   296  	return ret1 != 0
   297  }
   298  
   299  func CertAddCRLLinkToStore(hCertStore HCERTSTORE, pCrlContext PCCRL_CONTEXT, dwAddDisposition DWORD, ppStoreContext *PCCRL_CONTEXT) bool {
   300  	ret1 := syscall6(certAddCRLLinkToStore, 4,
   301  		uintptr(hCertStore),
   302  		uintptr(unsafe.Pointer(pCrlContext)),
   303  		uintptr(dwAddDisposition),
   304  		uintptr(unsafe.Pointer(ppStoreContext)),
   305  		0,
   306  		0)
   307  	return ret1 != 0
   308  }
   309  
   310  func CertAddCTLContextToStore(hCertStore HCERTSTORE, pCtlContext /*const*/ PCCTL_CONTEXT, dwAddDisposition DWORD, ppStoreContext *PCCTL_CONTEXT) bool {
   311  	ret1 := syscall6(certAddCTLContextToStore, 4,
   312  		uintptr(hCertStore),
   313  		uintptr(unsafe.Pointer(pCtlContext)),
   314  		uintptr(dwAddDisposition),
   315  		uintptr(unsafe.Pointer(ppStoreContext)),
   316  		0,
   317  		0)
   318  	return ret1 != 0
   319  }
   320  
   321  func CertAddCTLLinkToStore(hCertStore HCERTSTORE, pCtlContext /*const*/ PCCTL_CONTEXT, dwAddDisposition DWORD, ppStoreContext *PCCTL_CONTEXT) bool {
   322  	ret1 := syscall6(certAddCTLLinkToStore, 4,
   323  		uintptr(hCertStore),
   324  		uintptr(unsafe.Pointer(pCtlContext)),
   325  		uintptr(dwAddDisposition),
   326  		uintptr(unsafe.Pointer(ppStoreContext)),
   327  		0,
   328  		0)
   329  	return ret1 != 0
   330  }
   331  
   332  func CertAddCertificateContextToStore(hCertStore HCERTSTORE, pCertContext /*const*/ PCCERT_CONTEXT, dwAddDisposition DWORD, ppStoreContext *PCCERT_CONTEXT) bool {
   333  	ret1 := syscall6(certAddCertificateContextToStore, 4,
   334  		uintptr(hCertStore),
   335  		uintptr(unsafe.Pointer(pCertContext)),
   336  		uintptr(dwAddDisposition),
   337  		uintptr(unsafe.Pointer(ppStoreContext)),
   338  		0,
   339  		0)
   340  	return ret1 != 0
   341  }
   342  
   343  func CertAddCertificateLinkToStore(hCertStore HCERTSTORE, pCertContext /*const*/ PCCERT_CONTEXT, dwAddDisposition DWORD, ppStoreContext *PCCERT_CONTEXT) bool {
   344  	ret1 := syscall6(certAddCertificateLinkToStore, 4,
   345  		uintptr(hCertStore),
   346  		uintptr(unsafe.Pointer(pCertContext)),
   347  		uintptr(dwAddDisposition),
   348  		uintptr(unsafe.Pointer(ppStoreContext)),
   349  		0,
   350  		0)
   351  	return ret1 != 0
   352  }
   353  
   354  func CertAddEncodedCRLToStore(hCertStore HCERTSTORE, dwCertEncodingType DWORD, pbCrlEncoded /*const*/ *byte, cbCrlEncoded DWORD, dwAddDisposition DWORD, ppCrlContext *PCCRL_CONTEXT) bool {
   355  	ret1 := syscall6(certAddEncodedCRLToStore, 6,
   356  		uintptr(hCertStore),
   357  		uintptr(dwCertEncodingType),
   358  		uintptr(unsafe.Pointer(pbCrlEncoded)),
   359  		uintptr(cbCrlEncoded),
   360  		uintptr(dwAddDisposition),
   361  		uintptr(unsafe.Pointer(ppCrlContext)))
   362  	return ret1 != 0
   363  }
   364  
   365  func CertAddEncodedCTLToStore(hCertStore HCERTSTORE, dwMsgAndCertEncodingType DWORD, pbCtlEncoded /*const*/ *byte, cbCtlEncoded DWORD, dwAddDisposition DWORD, ppCtlContext *PCCTL_CONTEXT) bool {
   366  	ret1 := syscall6(certAddEncodedCTLToStore, 6,
   367  		uintptr(hCertStore),
   368  		uintptr(dwMsgAndCertEncodingType),
   369  		uintptr(unsafe.Pointer(pbCtlEncoded)),
   370  		uintptr(cbCtlEncoded),
   371  		uintptr(dwAddDisposition),
   372  		uintptr(unsafe.Pointer(ppCtlContext)))
   373  	return ret1 != 0
   374  }
   375  
   376  func CertAddEncodedCertificateToStore(hCertStore HCERTSTORE, dwCertEncodingType DWORD, pbCertEncoded /*const*/ *byte, cbCertEncoded DWORD, dwAddDisposition DWORD, ppCertContext *PCCERT_CONTEXT) bool {
   377  	ret1 := syscall6(certAddEncodedCertificateToStore, 6,
   378  		uintptr(hCertStore),
   379  		uintptr(dwCertEncodingType),
   380  		uintptr(unsafe.Pointer(pbCertEncoded)),
   381  		uintptr(cbCertEncoded),
   382  		uintptr(dwAddDisposition),
   383  		uintptr(unsafe.Pointer(ppCertContext)))
   384  	return ret1 != 0
   385  }
   386  
   387  func CertAddEncodedCertificateToSystemStore(szCertStoreName string, pbCertEncoded /*const*/ *byte, cbCertEncoded DWORD) bool {
   388  	szCertStoreNameStr := unicode16FromString(szCertStoreName)
   389  	ret1 := syscall3(certAddEncodedCertificateToSystemStore, 3,
   390  		uintptr(unsafe.Pointer(&szCertStoreNameStr[0])),
   391  		uintptr(unsafe.Pointer(pbCertEncoded)),
   392  		uintptr(cbCertEncoded))
   393  	return ret1 != 0
   394  }
   395  
   396  func CertAddEnhancedKeyUsageIdentifier(pCertContext /*const*/ PCCERT_CONTEXT, pszUsageIdentifier /*const*/ LPCSTR) bool {
   397  	ret1 := syscall3(certAddEnhancedKeyUsageIdentifier, 2,
   398  		uintptr(unsafe.Pointer(pCertContext)),
   399  		uintptr(unsafe.Pointer(pszUsageIdentifier)),
   400  		0)
   401  	return ret1 != 0
   402  }
   403  
   404  func CertAddSerializedElementToStore(hCertStore HCERTSTORE, pbElement /*const*/ *byte, cbElement DWORD, dwAddDisposition DWORD, dwFlags DWORD, dwContextTypeFlags DWORD, pdwContextType *uint32, ppvContext /*const*/ uintptr) bool {
   405  	ret1 := syscall9(certAddSerializedElementToStore, 8,
   406  		uintptr(hCertStore),
   407  		uintptr(unsafe.Pointer(pbElement)),
   408  		uintptr(cbElement),
   409  		uintptr(dwAddDisposition),
   410  		uintptr(dwFlags),
   411  		uintptr(dwContextTypeFlags),
   412  		uintptr(unsafe.Pointer(pdwContextType)),
   413  		ppvContext,
   414  		0)
   415  	return ret1 != 0
   416  }
   417  
   418  func CertAddStoreToCollection(hCollectionStore HCERTSTORE, hSiblingStore HCERTSTORE, dwUpdateFlags DWORD, dwPriority DWORD) bool {
   419  	ret1 := syscall6(certAddStoreToCollection, 4,
   420  		uintptr(hCollectionStore),
   421  		uintptr(hSiblingStore),
   422  		uintptr(dwUpdateFlags),
   423  		uintptr(dwPriority),
   424  		0,
   425  		0)
   426  	return ret1 != 0
   427  }
   428  
   429  func CertAlgIdToOID(dwAlgId DWORD) LPCSTR {
   430  	ret1 := syscall3(certAlgIdToOID, 1,
   431  		uintptr(dwAlgId),
   432  		0,
   433  		0)
   434  	return (LPCSTR)(unsafe.Pointer(ret1))
   435  }
   436  
   437  func CertCloseStore(hCertStore HCERTSTORE, dwFlags DWORD) bool {
   438  	ret1 := syscall3(certCloseStore, 2,
   439  		uintptr(hCertStore),
   440  		uintptr(dwFlags),
   441  		0)
   442  	return ret1 != 0
   443  }
   444  
   445  func CertCompareCertificate(dwCertEncodingType DWORD, pCertId1 PCERT_INFO, pCertId2 PCERT_INFO) bool {
   446  	ret1 := syscall3(certCompareCertificate, 3,
   447  		uintptr(dwCertEncodingType),
   448  		uintptr(unsafe.Pointer(pCertId1)),
   449  		uintptr(unsafe.Pointer(pCertId2)))
   450  	return ret1 != 0
   451  }
   452  
   453  func CertCompareCertificateName(dwCertEncodingType DWORD, pCertName1 PCERT_NAME_BLOB, pCertName2 PCERT_NAME_BLOB) bool {
   454  	ret1 := syscall3(certCompareCertificateName, 3,
   455  		uintptr(dwCertEncodingType),
   456  		uintptr(unsafe.Pointer(pCertName1)),
   457  		uintptr(unsafe.Pointer(pCertName2)))
   458  	return ret1 != 0
   459  }
   460  
   461  func CertCompareIntegerBlob(pInt1 PCRYPT_INTEGER_BLOB, pInt2 PCRYPT_INTEGER_BLOB) bool {
   462  	ret1 := syscall3(certCompareIntegerBlob, 2,
   463  		uintptr(unsafe.Pointer(pInt1)),
   464  		uintptr(unsafe.Pointer(pInt2)),
   465  		0)
   466  	return ret1 != 0
   467  }
   468  
   469  // TODO: Unknown type(s): PCERT_PUBLIC_KEY_INFO
   470  // func CertComparePublicKeyInfo(dwCertEncodingType DWORD, pPublicKey1 PCERT_PUBLIC_KEY_INFO, pPublicKey2 PCERT_PUBLIC_KEY_INFO) bool
   471  
   472  func CertControlStore(hCertStore HCERTSTORE, dwFlags DWORD, dwCtrlType DWORD, pvCtrlPara /*const*/ uintptr) bool {
   473  	ret1 := syscall6(certControlStore, 4,
   474  		uintptr(hCertStore),
   475  		uintptr(dwFlags),
   476  		uintptr(dwCtrlType),
   477  		pvCtrlPara,
   478  		0,
   479  		0)
   480  	return ret1 != 0
   481  }
   482  
   483  func CertCreateCRLContext(dwCertEncodingType DWORD, pbCrlEncoded /*const*/ *byte, cbCrlEncoded DWORD) PCCRL_CONTEXT {
   484  	ret1 := syscall3(certCreateCRLContext, 3,
   485  		uintptr(dwCertEncodingType),
   486  		uintptr(unsafe.Pointer(pbCrlEncoded)),
   487  		uintptr(cbCrlEncoded))
   488  	return (PCCRL_CONTEXT)(unsafe.Pointer(ret1))
   489  }
   490  
   491  func CertCreateCTLContext(dwMsgAndCertEncodingType DWORD, pbCtlEncoded /*const*/ *byte, cbCtlEncoded DWORD) PCCTL_CONTEXT {
   492  	ret1 := syscall3(certCreateCTLContext, 3,
   493  		uintptr(dwMsgAndCertEncodingType),
   494  		uintptr(unsafe.Pointer(pbCtlEncoded)),
   495  		uintptr(cbCtlEncoded))
   496  	return (PCCTL_CONTEXT)(unsafe.Pointer(ret1))
   497  }
   498  
   499  func CertCreateCTLEntryFromCertificateContextProperties(pCertContext /*const*/ PCCERT_CONTEXT, cOptAttr DWORD, rgOptAttr PCRYPT_ATTRIBUTE, dwFlags DWORD, pvReserved uintptr, pCtlEntry PCTL_ENTRY, pcbCtlEntry *uint32) bool {
   500  	ret1 := syscall9(certCreateCTLEntryFromCertificateContextProperties, 7,
   501  		uintptr(unsafe.Pointer(pCertContext)),
   502  		uintptr(cOptAttr),
   503  		uintptr(unsafe.Pointer(rgOptAttr)),
   504  		uintptr(dwFlags),
   505  		pvReserved,
   506  		uintptr(unsafe.Pointer(pCtlEntry)),
   507  		uintptr(unsafe.Pointer(pcbCtlEntry)),
   508  		0,
   509  		0)
   510  	return ret1 != 0
   511  }
   512  
   513  // TODO: Unknown type(s): HCERTCHAINENGINE *, PCERT_CHAIN_ENGINE_CONFIG
   514  // func CertCreateCertificateChainEngine(pConfig PCERT_CHAIN_ENGINE_CONFIG, phChainEngine HCERTCHAINENGINE *) bool
   515  
   516  func CertCreateCertificateContext(dwCertEncodingType DWORD, pbCertEncoded /*const*/ *byte, cbCertEncoded DWORD) PCCERT_CONTEXT {
   517  	ret1 := syscall3(certCreateCertificateContext, 3,
   518  		uintptr(dwCertEncodingType),
   519  		uintptr(unsafe.Pointer(pbCertEncoded)),
   520  		uintptr(cbCertEncoded))
   521  	return (PCCERT_CONTEXT)(unsafe.Pointer(ret1))
   522  }
   523  
   524  // TODO: Unknown type(s): HCRYPTPROV_OR_NCRYPT_KEY_HANDLE, PCERT_EXTENSIONS, PCRYPT_ALGORITHM_IDENTIFIER, PCRYPT_KEY_PROV_INFO, PSYSTEMTIME
   525  // func CertCreateSelfSignCertificate(hCryptProvOrNCryptKey HCRYPTPROV_OR_NCRYPT_KEY_HANDLE, pSubjectIssuerBlob PCERT_NAME_BLOB, dwFlags DWORD, pKeyProvInfo PCRYPT_KEY_PROV_INFO, pSignatureAlgorithm PCRYPT_ALGORITHM_IDENTIFIER, pStartTime PSYSTEMTIME, pEndTime PSYSTEMTIME, pExtensions PCERT_EXTENSIONS) PCCERT_CONTEXT
   526  
   527  func CertDeleteCRLFromStore(pCrlContext PCCRL_CONTEXT) bool {
   528  	ret1 := syscall3(certDeleteCRLFromStore, 1,
   529  		uintptr(unsafe.Pointer(pCrlContext)),
   530  		0,
   531  		0)
   532  	return ret1 != 0
   533  }
   534  
   535  func CertDeleteCTLFromStore(pCtlContext /*const*/ PCCTL_CONTEXT) bool {
   536  	ret1 := syscall3(certDeleteCTLFromStore, 1,
   537  		uintptr(unsafe.Pointer(pCtlContext)),
   538  		0,
   539  		0)
   540  	return ret1 != 0
   541  }
   542  
   543  func CertDeleteCertificateFromStore(pCertContext /*const*/ PCCERT_CONTEXT) bool {
   544  	ret1 := syscall3(certDeleteCertificateFromStore, 1,
   545  		uintptr(unsafe.Pointer(pCertContext)),
   546  		0,
   547  		0)
   548  	return ret1 != 0
   549  }
   550  
   551  func CertDuplicateCRLContext(pCrlContext PCCRL_CONTEXT) PCCRL_CONTEXT {
   552  	ret1 := syscall3(certDuplicateCRLContext, 1,
   553  		uintptr(unsafe.Pointer(pCrlContext)),
   554  		0,
   555  		0)
   556  	return (PCCRL_CONTEXT)(unsafe.Pointer(ret1))
   557  }
   558  
   559  func CertDuplicateCTLContext(pCtlContext /*const*/ PCCTL_CONTEXT) PCCTL_CONTEXT {
   560  	ret1 := syscall3(certDuplicateCTLContext, 1,
   561  		uintptr(unsafe.Pointer(pCtlContext)),
   562  		0,
   563  		0)
   564  	return (PCCTL_CONTEXT)(unsafe.Pointer(ret1))
   565  }
   566  
   567  // TODO: Unknown type(s): PCCERT_CHAIN_CONTEXT
   568  // func CertDuplicateCertificateChain(pChainContext PCCERT_CHAIN_CONTEXT) PCCERT_CHAIN_CONTEXT
   569  
   570  func CertDuplicateCertificateContext(pCertContext /*const*/ PCCERT_CONTEXT) PCCERT_CONTEXT {
   571  	ret1 := syscall3(certDuplicateCertificateContext, 1,
   572  		uintptr(unsafe.Pointer(pCertContext)),
   573  		0,
   574  		0)
   575  	return (PCCERT_CONTEXT)(unsafe.Pointer(ret1))
   576  }
   577  
   578  func CertDuplicateStore(hCertStore HCERTSTORE) HCERTSTORE {
   579  	ret1 := syscall3(certDuplicateStore, 1,
   580  		uintptr(hCertStore),
   581  		0,
   582  		0)
   583  	return HCERTSTORE(ret1)
   584  }
   585  
   586  func CertEnumCRLContextProperties(pCrlContext PCCRL_CONTEXT, dwPropId DWORD) DWORD {
   587  	ret1 := syscall3(certEnumCRLContextProperties, 2,
   588  		uintptr(unsafe.Pointer(pCrlContext)),
   589  		uintptr(dwPropId),
   590  		0)
   591  	return DWORD(ret1)
   592  }
   593  
   594  func CertEnumCRLsInStore(hCertStore HCERTSTORE, pPrevCrlContext PCCRL_CONTEXT) PCCRL_CONTEXT {
   595  	ret1 := syscall3(certEnumCRLsInStore, 2,
   596  		uintptr(hCertStore),
   597  		uintptr(unsafe.Pointer(pPrevCrlContext)),
   598  		0)
   599  	return (PCCRL_CONTEXT)(unsafe.Pointer(ret1))
   600  }
   601  
   602  func CertEnumCTLContextProperties(pCtlContext /*const*/ PCCTL_CONTEXT, dwPropId DWORD) DWORD {
   603  	ret1 := syscall3(certEnumCTLContextProperties, 2,
   604  		uintptr(unsafe.Pointer(pCtlContext)),
   605  		uintptr(dwPropId),
   606  		0)
   607  	return DWORD(ret1)
   608  }
   609  
   610  func CertEnumCTLsInStore(hCertStore HCERTSTORE, pPrevCtlContext /*const*/ PCCTL_CONTEXT) PCCTL_CONTEXT {
   611  	ret1 := syscall3(certEnumCTLsInStore, 2,
   612  		uintptr(hCertStore),
   613  		uintptr(unsafe.Pointer(pPrevCtlContext)),
   614  		0)
   615  	return (PCCTL_CONTEXT)(unsafe.Pointer(ret1))
   616  }
   617  
   618  func CertEnumCertificateContextProperties(pCertContext /*const*/ PCCERT_CONTEXT, dwPropId DWORD) DWORD {
   619  	ret1 := syscall3(certEnumCertificateContextProperties, 2,
   620  		uintptr(unsafe.Pointer(pCertContext)),
   621  		uintptr(dwPropId),
   622  		0)
   623  	return DWORD(ret1)
   624  }
   625  
   626  func CertEnumCertificatesInStore(hCertStore HCERTSTORE, pPrevCertContext /*const*/ PCCERT_CONTEXT) PCCERT_CONTEXT {
   627  	ret1 := syscall3(certEnumCertificatesInStore, 2,
   628  		uintptr(hCertStore),
   629  		uintptr(unsafe.Pointer(pPrevCertContext)),
   630  		0)
   631  	return (PCCERT_CONTEXT)(unsafe.Pointer(ret1))
   632  }
   633  
   634  // TODO: Unknown type(s): PFN_CERT_ENUM_PHYSICAL_STORE
   635  // func CertEnumPhysicalStore(pvSystemStore /*const*/ uintptr, dwFlags DWORD, pvArg uintptr, pfnEnum PFN_CERT_ENUM_PHYSICAL_STORE) bool
   636  
   637  func CertEnumSubjectInSortedCTL(pCtlContext /*const*/ PCCTL_CONTEXT, ppvNextSubject uintptr, pSubjectIdentifier PCRYPT_DER_BLOB, pEncodedAttributes PCRYPT_DER_BLOB) bool {
   638  	ret1 := syscall6(certEnumSubjectInSortedCTL, 4,
   639  		uintptr(unsafe.Pointer(pCtlContext)),
   640  		ppvNextSubject,
   641  		uintptr(unsafe.Pointer(pSubjectIdentifier)),
   642  		uintptr(unsafe.Pointer(pEncodedAttributes)),
   643  		0,
   644  		0)
   645  	return ret1 != 0
   646  }
   647  
   648  // TODO: Unknown type(s): PFN_CERT_ENUM_SYSTEM_STORE
   649  // func CertEnumSystemStore(dwFlags DWORD, pvSystemStoreLocationPara uintptr, pvArg uintptr, pfnEnum PFN_CERT_ENUM_SYSTEM_STORE) bool
   650  
   651  // TODO: Unknown type(s): PFN_CERT_ENUM_SYSTEM_STORE_LOCATION
   652  // func CertEnumSystemStoreLocation(dwFlags DWORD, pvArg uintptr, pfnEnum PFN_CERT_ENUM_SYSTEM_STORE_LOCATION) bool
   653  
   654  func CertFindAttribute(pszObjId /*const*/ LPCSTR, cAttr DWORD, rgAttr *CRYPT_ATTRIBUTE) PCRYPT_ATTRIBUTE {
   655  	ret1 := syscall3(certFindAttribute, 3,
   656  		uintptr(unsafe.Pointer(pszObjId)),
   657  		uintptr(cAttr),
   658  		uintptr(unsafe.Pointer(rgAttr)))
   659  	return (PCRYPT_ATTRIBUTE)(unsafe.Pointer(ret1))
   660  }
   661  
   662  func CertFindCRLInStore(hCertStore HCERTSTORE, dwCertEncodingType DWORD, dwFindFlags DWORD, dwFindType DWORD, pvFindPara /*const*/ uintptr, pPrevCrlContext PCCRL_CONTEXT) PCCRL_CONTEXT {
   663  	ret1 := syscall6(certFindCRLInStore, 6,
   664  		uintptr(hCertStore),
   665  		uintptr(dwCertEncodingType),
   666  		uintptr(dwFindFlags),
   667  		uintptr(dwFindType),
   668  		pvFindPara,
   669  		uintptr(unsafe.Pointer(pPrevCrlContext)))
   670  	return (PCCRL_CONTEXT)(unsafe.Pointer(ret1))
   671  }
   672  
   673  func CertFindCTLInStore(hCertStore HCERTSTORE, dwMsgAndCertEncodingType DWORD, dwFindFlags DWORD, dwFindType DWORD, pvFindPara /*const*/ uintptr, pPrevCtlContext /*const*/ PCCTL_CONTEXT) PCCTL_CONTEXT {
   674  	ret1 := syscall6(certFindCTLInStore, 6,
   675  		uintptr(hCertStore),
   676  		uintptr(dwMsgAndCertEncodingType),
   677  		uintptr(dwFindFlags),
   678  		uintptr(dwFindType),
   679  		pvFindPara,
   680  		uintptr(unsafe.Pointer(pPrevCtlContext)))
   681  	return (PCCTL_CONTEXT)(unsafe.Pointer(ret1))
   682  }
   683  
   684  func CertFindCertificateInCRL(pCert /*const*/ PCCERT_CONTEXT, pCrlContext PCCRL_CONTEXT, dwFlags DWORD, pvReserved uintptr, ppCrlEntry *PCRL_ENTRY) bool {
   685  	ret1 := syscall6(certFindCertificateInCRL, 5,
   686  		uintptr(unsafe.Pointer(pCert)),
   687  		uintptr(unsafe.Pointer(pCrlContext)),
   688  		uintptr(dwFlags),
   689  		pvReserved,
   690  		uintptr(unsafe.Pointer(ppCrlEntry)),
   691  		0)
   692  	return ret1 != 0
   693  }
   694  
   695  func CertFindCertificateInStore(hCertStore HCERTSTORE, dwCertEncodingType DWORD, dwFindFlags DWORD, dwFindType DWORD, pvFindPara /*const*/ uintptr, pPrevCertContext /*const*/ PCCERT_CONTEXT) PCCERT_CONTEXT {
   696  	ret1 := syscall6(certFindCertificateInStore, 6,
   697  		uintptr(hCertStore),
   698  		uintptr(dwCertEncodingType),
   699  		uintptr(dwFindFlags),
   700  		uintptr(dwFindType),
   701  		pvFindPara,
   702  		uintptr(unsafe.Pointer(pPrevCertContext)))
   703  	return (PCCERT_CONTEXT)(unsafe.Pointer(ret1))
   704  }
   705  
   706  // TODO: Unknown type(s): PCCERT_CHAIN_CONTEXT
   707  // func CertFindChainInStore(hCertStore HCERTSTORE, dwCertEncodingType DWORD, dwFindFlags DWORD, dwFindType DWORD, pvFindPara /*const*/ uintptr, pPrevChainContext PCCERT_CHAIN_CONTEXT) PCCERT_CHAIN_CONTEXT
   708  
   709  func CertFindExtension(pszObjId /*const*/ LPCSTR, cExtensions DWORD, rgExtensions *CERT_EXTENSION) PCERT_EXTENSION {
   710  	ret1 := syscall3(certFindExtension, 3,
   711  		uintptr(unsafe.Pointer(pszObjId)),
   712  		uintptr(cExtensions),
   713  		uintptr(unsafe.Pointer(rgExtensions)))
   714  	return (PCERT_EXTENSION)(unsafe.Pointer(ret1))
   715  }
   716  
   717  // TODO: Unknown type(s): PCERT_NAME_INFO, PCERT_RDN_ATTR
   718  // func CertFindRDNAttr(pszObjId /*const*/ LPCSTR, pName PCERT_NAME_INFO) PCERT_RDN_ATTR
   719  
   720  func CertFindSubjectInCTL(dwEncodingType DWORD, dwSubjectType DWORD, pvSubject uintptr, pCtlContext /*const*/ PCCTL_CONTEXT, dwFlags DWORD) PCTL_ENTRY {
   721  	ret1 := syscall6(certFindSubjectInCTL, 5,
   722  		uintptr(dwEncodingType),
   723  		uintptr(dwSubjectType),
   724  		pvSubject,
   725  		uintptr(unsafe.Pointer(pCtlContext)),
   726  		uintptr(dwFlags),
   727  		0)
   728  	return (PCTL_ENTRY)(unsafe.Pointer(ret1))
   729  }
   730  
   731  func CertFindSubjectInSortedCTL(pSubjectIdentifier PCRYPT_DATA_BLOB, pCtlContext /*const*/ PCCTL_CONTEXT, dwFlags DWORD, pvReserved uintptr, pEncodedAttributes PCRYPT_DER_BLOB) bool {
   732  	ret1 := syscall6(certFindSubjectInSortedCTL, 5,
   733  		uintptr(unsafe.Pointer(pSubjectIdentifier)),
   734  		uintptr(unsafe.Pointer(pCtlContext)),
   735  		uintptr(dwFlags),
   736  		pvReserved,
   737  		uintptr(unsafe.Pointer(pEncodedAttributes)),
   738  		0)
   739  	return ret1 != 0
   740  }
   741  
   742  func CertFreeCRLContext(pCrlContext PCCRL_CONTEXT) bool {
   743  	ret1 := syscall3(certFreeCRLContext, 1,
   744  		uintptr(unsafe.Pointer(pCrlContext)),
   745  		0,
   746  		0)
   747  	return ret1 != 0
   748  }
   749  
   750  func CertFreeCTLContext(pCtlContext /*const*/ PCCTL_CONTEXT) bool {
   751  	ret1 := syscall3(certFreeCTLContext, 1,
   752  		uintptr(unsafe.Pointer(pCtlContext)),
   753  		0,
   754  		0)
   755  	return ret1 != 0
   756  }
   757  
   758  // TODO: Unknown type(s): PCCERT_CHAIN_CONTEXT
   759  // func CertFreeCertificateChain(pChainContext PCCERT_CHAIN_CONTEXT)
   760  
   761  // TODO: Unknown type(s): HCERTCHAINENGINE
   762  // func CertFreeCertificateChainEngine(hChainEngine HCERTCHAINENGINE)
   763  
   764  func CertFreeCertificateContext(pCertContext /*const*/ PCCERT_CONTEXT) bool {
   765  	ret1 := syscall3(certFreeCertificateContext, 1,
   766  		uintptr(unsafe.Pointer(pCertContext)),
   767  		0,
   768  		0)
   769  	return ret1 != 0
   770  }
   771  
   772  func CertGetCRLContextProperty(pCrlContext PCCRL_CONTEXT, dwPropId DWORD, pvData uintptr, pcbData *uint32) bool {
   773  	ret1 := syscall6(certGetCRLContextProperty, 4,
   774  		uintptr(unsafe.Pointer(pCrlContext)),
   775  		uintptr(dwPropId),
   776  		pvData,
   777  		uintptr(unsafe.Pointer(pcbData)),
   778  		0,
   779  		0)
   780  	return ret1 != 0
   781  }
   782  
   783  func CertGetCRLFromStore(hCertStore HCERTSTORE, pIssuerContext /*const*/ PCCERT_CONTEXT, pPrevCrlContext PCCRL_CONTEXT, pdwFlags *uint32) PCCRL_CONTEXT {
   784  	ret1 := syscall6(certGetCRLFromStore, 4,
   785  		uintptr(hCertStore),
   786  		uintptr(unsafe.Pointer(pIssuerContext)),
   787  		uintptr(unsafe.Pointer(pPrevCrlContext)),
   788  		uintptr(unsafe.Pointer(pdwFlags)),
   789  		0,
   790  		0)
   791  	return (PCCRL_CONTEXT)(unsafe.Pointer(ret1))
   792  }
   793  
   794  func CertGetCTLContextProperty(pCtlContext /*const*/ PCCTL_CONTEXT, dwPropId DWORD, pvData uintptr, pcbData *uint32) bool {
   795  	ret1 := syscall6(certGetCTLContextProperty, 4,
   796  		uintptr(unsafe.Pointer(pCtlContext)),
   797  		uintptr(dwPropId),
   798  		pvData,
   799  		uintptr(unsafe.Pointer(pcbData)),
   800  		0,
   801  		0)
   802  	return ret1 != 0
   803  }
   804  
   805  // TODO: Unknown type(s): HCERTCHAINENGINE, PCCERT_CHAIN_CONTEXT *, PCERT_CHAIN_PARA
   806  // func CertGetCertificateChain(hChainEngine HCERTCHAINENGINE, pCertContext /*const*/ PCCERT_CONTEXT, pTime *FILETIME, hAdditionalStore HCERTSTORE, pChainPara PCERT_CHAIN_PARA, dwFlags DWORD, pvReserved LPVOID, ppChainContext PCCERT_CHAIN_CONTEXT *) bool
   807  
   808  func CertGetCertificateContextProperty(pCertContext /*const*/ PCCERT_CONTEXT, dwPropId DWORD, pvData uintptr, pcbData *uint32) bool {
   809  	ret1 := syscall6(certGetCertificateContextProperty, 4,
   810  		uintptr(unsafe.Pointer(pCertContext)),
   811  		uintptr(dwPropId),
   812  		pvData,
   813  		uintptr(unsafe.Pointer(pcbData)),
   814  		0,
   815  		0)
   816  	return ret1 != 0
   817  }
   818  
   819  // TODO: Unknown type(s): PCERT_ENHKEY_USAGE
   820  // func CertGetEnhancedKeyUsage(pCertContext /*const*/ PCCERT_CONTEXT, dwFlags DWORD, pUsage PCERT_ENHKEY_USAGE, pcbUsage *uint32) bool
   821  
   822  func CertGetIntendedKeyUsage(dwCertEncodingType DWORD, pCertInfo PCERT_INFO, pbKeyUsage *byte, cbKeyUsage DWORD) bool {
   823  	ret1 := syscall6(certGetIntendedKeyUsage, 4,
   824  		uintptr(dwCertEncodingType),
   825  		uintptr(unsafe.Pointer(pCertInfo)),
   826  		uintptr(unsafe.Pointer(pbKeyUsage)),
   827  		uintptr(cbKeyUsage),
   828  		0,
   829  		0)
   830  	return ret1 != 0
   831  }
   832  
   833  func CertGetIssuerCertificateFromStore(hCertStore HCERTSTORE, pSubjectContext /*const*/ PCCERT_CONTEXT, pPrevIssuerContext /*const*/ PCCERT_CONTEXT, pdwFlags *uint32) PCCERT_CONTEXT {
   834  	ret1 := syscall6(certGetIssuerCertificateFromStore, 4,
   835  		uintptr(hCertStore),
   836  		uintptr(unsafe.Pointer(pSubjectContext)),
   837  		uintptr(unsafe.Pointer(pPrevIssuerContext)),
   838  		uintptr(unsafe.Pointer(pdwFlags)),
   839  		0,
   840  		0)
   841  	return (PCCERT_CONTEXT)(unsafe.Pointer(ret1))
   842  }
   843  
   844  func CertGetNameString(pCertContext /*const*/ PCCERT_CONTEXT, dwType DWORD, dwFlags DWORD, pvTypePara uintptr, pszNameString LPWSTR, cchNameString DWORD) DWORD {
   845  	ret1 := syscall6(certGetNameString, 6,
   846  		uintptr(unsafe.Pointer(pCertContext)),
   847  		uintptr(dwType),
   848  		uintptr(dwFlags),
   849  		pvTypePara,
   850  		uintptr(unsafe.Pointer(pszNameString)),
   851  		uintptr(cchNameString))
   852  	return DWORD(ret1)
   853  }
   854  
   855  // TODO: Unknown type(s): PCERT_PUBLIC_KEY_INFO
   856  // func CertGetPublicKeyLength(dwCertEncodingType DWORD, pPublicKey PCERT_PUBLIC_KEY_INFO) DWORD
   857  
   858  func CertGetStoreProperty(hCertStore HCERTSTORE, dwPropId DWORD, pvData uintptr, pcbData *uint32) bool {
   859  	ret1 := syscall6(certGetStoreProperty, 4,
   860  		uintptr(hCertStore),
   861  		uintptr(dwPropId),
   862  		pvData,
   863  		uintptr(unsafe.Pointer(pcbData)),
   864  		0,
   865  		0)
   866  	return ret1 != 0
   867  }
   868  
   869  func CertGetSubjectCertificateFromStore(hCertStore HCERTSTORE, dwCertEncodingType DWORD, pCertId PCERT_INFO) PCCERT_CONTEXT {
   870  	ret1 := syscall3(certGetSubjectCertificateFromStore, 3,
   871  		uintptr(hCertStore),
   872  		uintptr(dwCertEncodingType),
   873  		uintptr(unsafe.Pointer(pCertId)))
   874  	return (PCCERT_CONTEXT)(unsafe.Pointer(ret1))
   875  }
   876  
   877  func CertGetValidUsages(cCerts DWORD, rghCerts *PCCERT_CONTEXT, cNumOIDs *int, rghOIDs *LPSTR, pcbOIDs *uint32) bool {
   878  	ret1 := syscall6(certGetValidUsages, 5,
   879  		uintptr(cCerts),
   880  		uintptr(unsafe.Pointer(rghCerts)),
   881  		uintptr(unsafe.Pointer(cNumOIDs)),
   882  		uintptr(unsafe.Pointer(rghOIDs)),
   883  		uintptr(unsafe.Pointer(pcbOIDs)),
   884  		0)
   885  	return ret1 != 0
   886  }
   887  
   888  // TODO: Unknown type(s): PCERT_RDN
   889  // func CertIsRDNAttrsInCertificateName(dwCertEncodingType DWORD, dwFlags DWORD, pCertName PCERT_NAME_BLOB, pRDN PCERT_RDN) bool
   890  
   891  func CertIsValidCRLForCertificate(pCert /*const*/ PCCERT_CONTEXT, pCrl PCCRL_CONTEXT, dwFlags DWORD, pvReserved uintptr) bool {
   892  	ret1 := syscall6(certIsValidCRLForCertificate, 4,
   893  		uintptr(unsafe.Pointer(pCert)),
   894  		uintptr(unsafe.Pointer(pCrl)),
   895  		uintptr(dwFlags),
   896  		pvReserved,
   897  		0,
   898  		0)
   899  	return ret1 != 0
   900  }
   901  
   902  func CertNameToStr(dwCertEncodingType DWORD, pName PCERT_NAME_BLOB, dwStrType DWORD, psz LPWSTR, csz DWORD) DWORD {
   903  	ret1 := syscall6(certNameToStr, 5,
   904  		uintptr(dwCertEncodingType),
   905  		uintptr(unsafe.Pointer(pName)),
   906  		uintptr(dwStrType),
   907  		uintptr(unsafe.Pointer(psz)),
   908  		uintptr(csz),
   909  		0)
   910  	return DWORD(ret1)
   911  }
   912  
   913  func CertOIDToAlgId(pszObjId /*const*/ LPCSTR) DWORD {
   914  	ret1 := syscall3(certOIDToAlgId, 1,
   915  		uintptr(unsafe.Pointer(pszObjId)),
   916  		0,
   917  		0)
   918  	return DWORD(ret1)
   919  }
   920  
   921  // TODO: Unknown type(s): HCRYPTPROV_LEGACY
   922  // func CertOpenStore(lpszStoreProvider /*const*/ LPCSTR, dwEncodingType DWORD, hCryptProv HCRYPTPROV_LEGACY, dwFlags DWORD, pvPara /*const*/ uintptr) HCERTSTORE
   923  
   924  // TODO: Unknown type(s): HCRYPTPROV_LEGACY
   925  // func CertOpenSystemStore(hProv HCRYPTPROV_LEGACY, szSubsystemProtocol string) HCERTSTORE
   926  
   927  func CertRDNValueToStr(dwValueType DWORD, pValue PCERT_RDN_VALUE_BLOB, psz LPWSTR, csz DWORD) DWORD {
   928  	ret1 := syscall6(certRDNValueToStr, 4,
   929  		uintptr(dwValueType),
   930  		uintptr(unsafe.Pointer(pValue)),
   931  		uintptr(unsafe.Pointer(psz)),
   932  		uintptr(csz),
   933  		0,
   934  		0)
   935  	return DWORD(ret1)
   936  }
   937  
   938  // TODO: Unknown type(s): PCERT_PHYSICAL_STORE_INFO
   939  // func CertRegisterPhysicalStore(pvSystemStore /*const*/ uintptr, dwFlags DWORD, pwszStoreName string, pStoreInfo PCERT_PHYSICAL_STORE_INFO, pvReserved uintptr) bool
   940  
   941  // TODO: Unknown type(s): PCERT_SYSTEM_STORE_INFO
   942  // func CertRegisterSystemStore(pvSystemStore /*const*/ uintptr, dwFlags DWORD, pStoreInfo PCERT_SYSTEM_STORE_INFO, pvReserved uintptr) bool
   943  
   944  func CertRemoveEnhancedKeyUsageIdentifier(pCertContext /*const*/ PCCERT_CONTEXT, pszUsageIdentifier /*const*/ LPCSTR) bool {
   945  	ret1 := syscall3(certRemoveEnhancedKeyUsageIdentifier, 2,
   946  		uintptr(unsafe.Pointer(pCertContext)),
   947  		uintptr(unsafe.Pointer(pszUsageIdentifier)),
   948  		0)
   949  	return ret1 != 0
   950  }
   951  
   952  func CertRemoveStoreFromCollection(hCollectionStore HCERTSTORE, hSiblingStore HCERTSTORE) {
   953  	syscall3(certRemoveStoreFromCollection, 2,
   954  		uintptr(hCollectionStore),
   955  		uintptr(hSiblingStore),
   956  		0)
   957  }
   958  
   959  // TODO: Unknown type(s): HCERTCHAINENGINE
   960  // func CertResyncCertificateChainEngine(hChainEngine HCERTCHAINENGINE) bool
   961  
   962  func CertSaveStore(hCertStore HCERTSTORE, dwEncodingType DWORD, dwSaveAs DWORD, dwSaveTo DWORD, pvSaveToPara uintptr, dwFlags DWORD) bool {
   963  	ret1 := syscall6(certSaveStore, 6,
   964  		uintptr(hCertStore),
   965  		uintptr(dwEncodingType),
   966  		uintptr(dwSaveAs),
   967  		uintptr(dwSaveTo),
   968  		pvSaveToPara,
   969  		uintptr(dwFlags))
   970  	return ret1 != 0
   971  }
   972  
   973  func CertSerializeCRLStoreElement(pCrlContext PCCRL_CONTEXT, dwFlags DWORD, pbElement *byte, pcbElement *uint32) bool {
   974  	ret1 := syscall6(certSerializeCRLStoreElement, 4,
   975  		uintptr(unsafe.Pointer(pCrlContext)),
   976  		uintptr(dwFlags),
   977  		uintptr(unsafe.Pointer(pbElement)),
   978  		uintptr(unsafe.Pointer(pcbElement)),
   979  		0,
   980  		0)
   981  	return ret1 != 0
   982  }
   983  
   984  func CertSerializeCTLStoreElement(pCtlContext /*const*/ PCCTL_CONTEXT, dwFlags DWORD, pbElement *byte, pcbElement *uint32) bool {
   985  	ret1 := syscall6(certSerializeCTLStoreElement, 4,
   986  		uintptr(unsafe.Pointer(pCtlContext)),
   987  		uintptr(dwFlags),
   988  		uintptr(unsafe.Pointer(pbElement)),
   989  		uintptr(unsafe.Pointer(pcbElement)),
   990  		0,
   991  		0)
   992  	return ret1 != 0
   993  }
   994  
   995  func CertSerializeCertificateStoreElement(pCertContext /*const*/ PCCERT_CONTEXT, dwFlags DWORD, pbElement *byte, pcbElement *uint32) bool {
   996  	ret1 := syscall6(certSerializeCertificateStoreElement, 4,
   997  		uintptr(unsafe.Pointer(pCertContext)),
   998  		uintptr(dwFlags),
   999  		uintptr(unsafe.Pointer(pbElement)),
  1000  		uintptr(unsafe.Pointer(pcbElement)),
  1001  		0,
  1002  		0)
  1003  	return ret1 != 0
  1004  }
  1005  
  1006  func CertSetCRLContextProperty(pCrlContext PCCRL_CONTEXT, dwPropId DWORD, dwFlags DWORD, pvData /*const*/ uintptr) bool {
  1007  	ret1 := syscall6(certSetCRLContextProperty, 4,
  1008  		uintptr(unsafe.Pointer(pCrlContext)),
  1009  		uintptr(dwPropId),
  1010  		uintptr(dwFlags),
  1011  		pvData,
  1012  		0,
  1013  		0)
  1014  	return ret1 != 0
  1015  }
  1016  
  1017  func CertSetCTLContextProperty(pCtlContext /*const*/ PCCTL_CONTEXT, dwPropId DWORD, dwFlags DWORD, pvData /*const*/ uintptr) bool {
  1018  	ret1 := syscall6(certSetCTLContextProperty, 4,
  1019  		uintptr(unsafe.Pointer(pCtlContext)),
  1020  		uintptr(dwPropId),
  1021  		uintptr(dwFlags),
  1022  		pvData,
  1023  		0,
  1024  		0)
  1025  	return ret1 != 0
  1026  }
  1027  
  1028  func CertSetCertificateContextPropertiesFromCTLEntry(pCertContext /*const*/ PCCERT_CONTEXT, pCtlEntry PCTL_ENTRY, dwFlags DWORD) bool {
  1029  	ret1 := syscall3(certSetCertificateContextPropertiesFromCTLEntry, 3,
  1030  		uintptr(unsafe.Pointer(pCertContext)),
  1031  		uintptr(unsafe.Pointer(pCtlEntry)),
  1032  		uintptr(dwFlags))
  1033  	return ret1 != 0
  1034  }
  1035  
  1036  func CertSetCertificateContextProperty(pCertContext /*const*/ PCCERT_CONTEXT, dwPropId DWORD, dwFlags DWORD, pvData /*const*/ uintptr) bool {
  1037  	ret1 := syscall6(certSetCertificateContextProperty, 4,
  1038  		uintptr(unsafe.Pointer(pCertContext)),
  1039  		uintptr(dwPropId),
  1040  		uintptr(dwFlags),
  1041  		pvData,
  1042  		0,
  1043  		0)
  1044  	return ret1 != 0
  1045  }
  1046  
  1047  // TODO: Unknown type(s): PCERT_ENHKEY_USAGE
  1048  // func CertSetEnhancedKeyUsage(pCertContext /*const*/ PCCERT_CONTEXT, pUsage PCERT_ENHKEY_USAGE) bool
  1049  
  1050  func CertSetStoreProperty(hCertStore HCERTSTORE, dwPropId DWORD, dwFlags DWORD, pvData /*const*/ uintptr) bool {
  1051  	ret1 := syscall6(certSetStoreProperty, 4,
  1052  		uintptr(hCertStore),
  1053  		uintptr(dwPropId),
  1054  		uintptr(dwFlags),
  1055  		pvData,
  1056  		0,
  1057  		0)
  1058  	return ret1 != 0
  1059  }
  1060  
  1061  func CertStrToName(dwCertEncodingType DWORD, pszX500 string, dwStrType DWORD, pvReserved uintptr, pbEncoded *byte, pcbEncoded *uint32, ppszError *LPCWSTR) bool {
  1062  	pszX500Str := unicode16FromString(pszX500)
  1063  	ret1 := syscall9(certStrToName, 7,
  1064  		uintptr(dwCertEncodingType),
  1065  		uintptr(unsafe.Pointer(&pszX500Str[0])),
  1066  		uintptr(dwStrType),
  1067  		pvReserved,
  1068  		uintptr(unsafe.Pointer(pbEncoded)),
  1069  		uintptr(unsafe.Pointer(pcbEncoded)),
  1070  		uintptr(unsafe.Pointer(ppszError)),
  1071  		0,
  1072  		0)
  1073  	return ret1 != 0
  1074  }
  1075  
  1076  func CertUnregisterPhysicalStore(pvSystemStore /*const*/ uintptr, dwFlags DWORD, pwszStoreName string) bool {
  1077  	pwszStoreNameStr := unicode16FromString(pwszStoreName)
  1078  	ret1 := syscall3(certUnregisterPhysicalStore, 3,
  1079  		pvSystemStore,
  1080  		uintptr(dwFlags),
  1081  		uintptr(unsafe.Pointer(&pwszStoreNameStr[0])))
  1082  	return ret1 != 0
  1083  }
  1084  
  1085  func CertUnregisterSystemStore(pvSystemStore /*const*/ uintptr, dwFlags DWORD) bool {
  1086  	ret1 := syscall3(certUnregisterSystemStore, 2,
  1087  		pvSystemStore,
  1088  		uintptr(dwFlags),
  1089  		0)
  1090  	return ret1 != 0
  1091  }
  1092  
  1093  func CertVerifyCRLRevocation(dwCertEncodingType DWORD, pCertId PCERT_INFO, cCrlInfo DWORD, rgpCrlInfo *PCRL_INFO) bool {
  1094  	ret1 := syscall6(certVerifyCRLRevocation, 4,
  1095  		uintptr(dwCertEncodingType),
  1096  		uintptr(unsafe.Pointer(pCertId)),
  1097  		uintptr(cCrlInfo),
  1098  		uintptr(unsafe.Pointer(rgpCrlInfo)),
  1099  		0,
  1100  		0)
  1101  	return ret1 != 0
  1102  }
  1103  
  1104  func CertVerifyCRLTimeValidity(pTimeToVerify *FILETIME, pCrlInfo PCRL_INFO) LONG {
  1105  	ret1 := syscall3(certVerifyCRLTimeValidity, 2,
  1106  		uintptr(unsafe.Pointer(pTimeToVerify)),
  1107  		uintptr(unsafe.Pointer(pCrlInfo)),
  1108  		0)
  1109  	return LONG(ret1)
  1110  }
  1111  
  1112  // TODO: Unknown type(s): PCTL_USAGE, PCTL_VERIFY_USAGE_PARA, PCTL_VERIFY_USAGE_STATUS
  1113  // func CertVerifyCTLUsage(dwEncodingType DWORD, dwSubjectType DWORD, pvSubject uintptr, pSubjectUsage PCTL_USAGE, dwFlags DWORD, pVerifyUsagePara PCTL_VERIFY_USAGE_PARA, pVerifyUsageStatus PCTL_VERIFY_USAGE_STATUS) bool
  1114  
  1115  // TODO: Unknown type(s): PCCERT_CHAIN_CONTEXT, PCERT_CHAIN_POLICY_PARA, PCERT_CHAIN_POLICY_STATUS
  1116  // func CertVerifyCertificateChainPolicy(pszPolicyOID /*const*/ LPCSTR, pChainContext PCCERT_CHAIN_CONTEXT, pPolicyPara PCERT_CHAIN_POLICY_PARA, pPolicyStatus PCERT_CHAIN_POLICY_STATUS) bool
  1117  
  1118  // TODO: Unknown type(s): PCERT_REVOCATION_PARA, PCERT_REVOCATION_STATUS
  1119  // func CertVerifyRevocation(dwEncodingType DWORD, dwRevType DWORD, cContext DWORD, rgpvContext *PVOID, dwFlags DWORD, pRevPara PCERT_REVOCATION_PARA, pRevStatus PCERT_REVOCATION_STATUS) bool
  1120  
  1121  func CertVerifySubjectCertificateContext(pSubject /*const*/ PCCERT_CONTEXT, pIssuer /*const*/ PCCERT_CONTEXT, pdwFlags *uint32) bool {
  1122  	ret1 := syscall3(certVerifySubjectCertificateContext, 3,
  1123  		uintptr(unsafe.Pointer(pSubject)),
  1124  		uintptr(unsafe.Pointer(pIssuer)),
  1125  		uintptr(unsafe.Pointer(pdwFlags)))
  1126  	return ret1 != 0
  1127  }
  1128  
  1129  func CertVerifyTimeValidity(pTimeToVerify *FILETIME, pCertInfo PCERT_INFO) LONG {
  1130  	ret1 := syscall3(certVerifyTimeValidity, 2,
  1131  		uintptr(unsafe.Pointer(pTimeToVerify)),
  1132  		uintptr(unsafe.Pointer(pCertInfo)),
  1133  		0)
  1134  	return LONG(ret1)
  1135  }
  1136  
  1137  func CertVerifyValidityNesting(pSubjectInfo PCERT_INFO, pIssuerInfo PCERT_INFO) bool {
  1138  	ret1 := syscall3(certVerifyValidityNesting, 2,
  1139  		uintptr(unsafe.Pointer(pSubjectInfo)),
  1140  		uintptr(unsafe.Pointer(pIssuerInfo)),
  1141  		0)
  1142  	return ret1 != 0
  1143  }
  1144  
  1145  // TODO: Unknown type(s): HCRYPTPROV_OR_NCRYPT_KEY_HANDLE *
  1146  // func CryptAcquireCertificatePrivateKey(pCert /*const*/ PCCERT_CONTEXT, dwFlags DWORD, pvParameters uintptr, phCryptProvOrNCryptKey HCRYPTPROV_OR_NCRYPT_KEY_HANDLE *, pdwKeySpec *uint32, pfCallerFreeProvOrNCryptKey *BOOL) bool
  1147  
  1148  func CryptBinaryToString(pbBinary /*const*/ *byte, cbBinary DWORD, dwFlags DWORD, pszString LPWSTR, pcchString *uint32) bool {
  1149  	ret1 := syscall6(cryptBinaryToString, 5,
  1150  		uintptr(unsafe.Pointer(pbBinary)),
  1151  		uintptr(cbBinary),
  1152  		uintptr(dwFlags),
  1153  		uintptr(unsafe.Pointer(pszString)),
  1154  		uintptr(unsafe.Pointer(pcchString)),
  1155  		0)
  1156  	return ret1 != 0
  1157  }
  1158  
  1159  // TODO: Unknown type(s): HCRYPTASYNC
  1160  // func CryptCloseAsyncHandle(hAsync HCRYPTASYNC) bool
  1161  
  1162  // TODO: Unknown type(s): PHCRYPTASYNC
  1163  // func CryptCreateAsyncHandle(dwFlags DWORD, phAsync PHCRYPTASYNC) bool
  1164  
  1165  // TODO: Unknown type(s): const PUBLICKEYSTRUC *
  1166  // func CryptCreateKeyIdentifierFromCSP(dwCertEncodingType DWORD, pszPubKeyOID /*const*/ LPCSTR, pPubKeyStruc /*const*/ const PUBLICKEYSTRUC *, cbPubKeyStruc DWORD, dwFlags DWORD, pvReserved uintptr, pbHash *byte, pcbHash *uint32) bool
  1167  
  1168  // TODO: Unknown type(s): PCRYPT_DECRYPT_MESSAGE_PARA, PCRYPT_VERIFY_MESSAGE_PARA
  1169  // func CryptDecodeMessage(dwMsgTypeFlags DWORD, pDecryptPara PCRYPT_DECRYPT_MESSAGE_PARA, pVerifyPara PCRYPT_VERIFY_MESSAGE_PARA, dwSignerIndex DWORD, pbEncodedBlob /*const*/ *byte, cbEncodedBlob DWORD, dwPrevInnerContentType DWORD, pdwMsgType *uint32, pdwInnerContentType *uint32, pbDecoded *byte, pcbDecoded *uint32, ppXchgCert *PCCERT_CONTEXT, ppSignerCert *PCCERT_CONTEXT) bool
  1170  
  1171  func CryptDecodeObject(dwCertEncodingType DWORD, lpszStructType /*const*/ LPCSTR, pbEncoded /*const*/ *byte, cbEncoded DWORD, dwFlags DWORD, pvStructInfo uintptr, pcbStructInfo *uint32) bool {
  1172  	ret1 := syscall9(cryptDecodeObject, 7,
  1173  		uintptr(dwCertEncodingType),
  1174  		uintptr(unsafe.Pointer(lpszStructType)),
  1175  		uintptr(unsafe.Pointer(pbEncoded)),
  1176  		uintptr(cbEncoded),
  1177  		uintptr(dwFlags),
  1178  		pvStructInfo,
  1179  		uintptr(unsafe.Pointer(pcbStructInfo)),
  1180  		0,
  1181  		0)
  1182  	return ret1 != 0
  1183  }
  1184  
  1185  // TODO: Unknown type(s): PCRYPT_DECODE_PARA
  1186  // func CryptDecodeObjectEx(dwCertEncodingType DWORD, lpszStructType /*const*/ LPCSTR, pbEncoded /*const*/ *byte, cbEncoded DWORD, dwFlags DWORD, pDecodePara PCRYPT_DECODE_PARA, pvStructInfo uintptr, pcbStructInfo *uint32) bool
  1187  
  1188  // TODO: Unknown type(s): PCRYPT_DECRYPT_MESSAGE_PARA, PCRYPT_VERIFY_MESSAGE_PARA
  1189  // func CryptDecryptAndVerifyMessageSignature(pDecryptPara PCRYPT_DECRYPT_MESSAGE_PARA, pVerifyPara PCRYPT_VERIFY_MESSAGE_PARA, dwSignerIndex DWORD, pbEncryptedBlob /*const*/ *byte, cbEncryptedBlob DWORD, pbDecrypted *byte, pcbDecrypted *uint32, ppXchgCert *PCCERT_CONTEXT, ppSignerCert *PCCERT_CONTEXT) bool
  1190  
  1191  // TODO: Unknown type(s): PCRYPT_DECRYPT_MESSAGE_PARA
  1192  // func CryptDecryptMessage(pDecryptPara PCRYPT_DECRYPT_MESSAGE_PARA, pbEncryptedBlob /*const*/ *byte, cbEncryptedBlob DWORD, pbDecrypted *byte, pcbDecrypted *uint32, ppXchgCert *PCCERT_CONTEXT) bool
  1193  
  1194  func CryptEncodeObject(dwCertEncodingType DWORD, lpszStructType /*const*/ LPCSTR, pvStructInfo /*const*/ uintptr, pbEncoded *byte, pcbEncoded *uint32) bool {
  1195  	ret1 := syscall6(cryptEncodeObject, 5,
  1196  		uintptr(dwCertEncodingType),
  1197  		uintptr(unsafe.Pointer(lpszStructType)),
  1198  		pvStructInfo,
  1199  		uintptr(unsafe.Pointer(pbEncoded)),
  1200  		uintptr(unsafe.Pointer(pcbEncoded)),
  1201  		0)
  1202  	return ret1 != 0
  1203  }
  1204  
  1205  // TODO: Unknown type(s): PCRYPT_ENCODE_PARA
  1206  // func CryptEncodeObjectEx(dwCertEncodingType DWORD, lpszStructType /*const*/ LPCSTR, pvStructInfo /*const*/ uintptr, dwFlags DWORD, pEncodePara PCRYPT_ENCODE_PARA, pvEncoded uintptr, pcbEncoded *uint32) bool
  1207  
  1208  // TODO: Unknown type(s): PCRYPT_ENCRYPT_MESSAGE_PARA
  1209  // func CryptEncryptMessage(pEncryptPara PCRYPT_ENCRYPT_MESSAGE_PARA, cRecipientCert DWORD, rgpRecipientCert *PCCERT_CONTEXT, pbToBeEncrypted /*const*/ *byte, cbToBeEncrypted DWORD, pbEncryptedBlob *byte, pcbEncryptedBlob *uint32) bool
  1210  
  1211  // TODO: Unknown type(s): PFN_CRYPT_ENUM_KEYID_PROP
  1212  // func CryptEnumKeyIdentifierProperties(pKeyIdentifier /*const*/ *CRYPT_HASH_BLOB, dwPropId DWORD, dwFlags DWORD, pwszComputerName string, pvReserved uintptr, pvArg uintptr, pfnEnum PFN_CRYPT_ENUM_KEYID_PROP) bool
  1213  
  1214  // TODO: Unknown type(s): PFN_CRYPT_ENUM_OID_FUNC
  1215  // func CryptEnumOIDFunction(dwEncodingType DWORD, pszFuncName /*const*/ LPCSTR, pszOID /*const*/ LPCSTR, dwFlags DWORD, pvArg uintptr, pfnEnumOIDFunc PFN_CRYPT_ENUM_OID_FUNC) bool
  1216  
  1217  // TODO: Unknown type(s): PFN_CRYPT_ENUM_OID_INFO
  1218  // func CryptEnumOIDInfo(dwGroupId DWORD, dwFlags DWORD, pvArg uintptr, pfnEnumOIDInfo PFN_CRYPT_ENUM_OID_INFO) bool
  1219  
  1220  func CryptExportPKCS8(hCryptProv HCRYPTPROV, dwKeySpec DWORD, pszPrivateKeyObjId LPSTR, dwFlags DWORD, pvAuxInfo uintptr, pbPrivateKeyBlob *byte, pcbPrivateKeyBlob *uint32) bool {
  1221  	ret1 := syscall9(cryptExportPKCS8, 7,
  1222  		uintptr(hCryptProv),
  1223  		uintptr(dwKeySpec),
  1224  		uintptr(unsafe.Pointer(pszPrivateKeyObjId)),
  1225  		uintptr(dwFlags),
  1226  		pvAuxInfo,
  1227  		uintptr(unsafe.Pointer(pbPrivateKeyBlob)),
  1228  		uintptr(unsafe.Pointer(pcbPrivateKeyBlob)),
  1229  		0,
  1230  		0)
  1231  	return ret1 != 0
  1232  }
  1233  
  1234  // TODO: Unknown type(s): HCRYPTPROV_OR_NCRYPT_KEY_HANDLE, PCERT_PUBLIC_KEY_INFO
  1235  // func CryptExportPublicKeyInfo(hCryptProvOrNCryptKey HCRYPTPROV_OR_NCRYPT_KEY_HANDLE, dwKeySpec DWORD, dwCertEncodingType DWORD, pInfo PCERT_PUBLIC_KEY_INFO, pcbInfo *uint32) bool
  1236  
  1237  // TODO: Unknown type(s): HCRYPTPROV_OR_NCRYPT_KEY_HANDLE, PCERT_PUBLIC_KEY_INFO
  1238  // func CryptExportPublicKeyInfoEx(hCryptProvOrNCryptKey HCRYPTPROV_OR_NCRYPT_KEY_HANDLE, dwKeySpec DWORD, dwCertEncodingType DWORD, pszPublicKeyObjId LPSTR, dwFlags DWORD, pvAuxInfo uintptr, pInfo PCERT_PUBLIC_KEY_INFO, pcbInfo *uint32) bool
  1239  
  1240  func CryptFindCertificateKeyProvInfo(pCert /*const*/ PCCERT_CONTEXT, dwFlags DWORD, pvReserved uintptr) bool {
  1241  	ret1 := syscall3(cryptFindCertificateKeyProvInfo, 3,
  1242  		uintptr(unsafe.Pointer(pCert)),
  1243  		uintptr(dwFlags),
  1244  		pvReserved)
  1245  	return ret1 != 0
  1246  }
  1247  
  1248  func CryptFindLocalizedName(pwszCryptName string) string {
  1249  	pwszCryptNameStr := unicode16FromString(pwszCryptName)
  1250  	ret1 := syscall3(cryptFindLocalizedName, 1,
  1251  		uintptr(unsafe.Pointer(&pwszCryptNameStr[0])),
  1252  		0,
  1253  		0)
  1254  	return stringFromUnicode16((*uint16)(unsafe.Pointer(ret1)))
  1255  }
  1256  
  1257  // TODO: Unknown type(s): PCCRYPT_OID_INFO
  1258  // func CryptFindOIDInfo(dwKeyType DWORD, pvKey uintptr, dwGroupId DWORD) PCCRYPT_OID_INFO
  1259  
  1260  func CryptFormatObject(dwCertEncodingType DWORD, dwFormatType DWORD, dwFormatStrType DWORD, pFormatStruct uintptr, lpszStructType /*const*/ LPCSTR, pbEncoded /*const*/ *byte, cbEncoded DWORD, pbFormat uintptr, pcbFormat *uint32) bool {
  1261  	ret1 := syscall9(cryptFormatObject, 9,
  1262  		uintptr(dwCertEncodingType),
  1263  		uintptr(dwFormatType),
  1264  		uintptr(dwFormatStrType),
  1265  		pFormatStruct,
  1266  		uintptr(unsafe.Pointer(lpszStructType)),
  1267  		uintptr(unsafe.Pointer(pbEncoded)),
  1268  		uintptr(cbEncoded),
  1269  		pbFormat,
  1270  		uintptr(unsafe.Pointer(pcbFormat)))
  1271  	return ret1 != 0
  1272  }
  1273  
  1274  // TODO: Unknown type(s): HCRYPTOIDFUNCADDR
  1275  // func CryptFreeOIDFunctionAddress(hFuncAddr HCRYPTOIDFUNCADDR, dwFlags DWORD) bool
  1276  
  1277  // TODO: Unknown type(s): HCRYPTASYNC, PFN_CRYPT_ASYNC_PARAM_FREE_FUNC *
  1278  // func CryptGetAsyncParam(hAsync HCRYPTASYNC, pszParamOid LPSTR, ppvParam *LPVOID, ppfnFree PFN_CRYPT_ASYNC_PARAM_FREE_FUNC *) bool
  1279  
  1280  // TODO: Unknown type(s): HCRYPTOIDFUNCSET
  1281  // func CryptGetDefaultOIDDllList(hFuncSet HCRYPTOIDFUNCSET, dwEncodingType DWORD, pwszDllList *WCHAR, pcchDllList *uint32) bool
  1282  
  1283  // TODO: Unknown type(s): HCRYPTOIDFUNCADDR *, HCRYPTOIDFUNCSET
  1284  // func CryptGetDefaultOIDFunctionAddress(hFuncSet HCRYPTOIDFUNCSET, dwEncodingType DWORD, pwszDll string, dwFlags DWORD, ppvFuncAddr uintptr, phFuncAddr HCRYPTOIDFUNCADDR *) bool
  1285  
  1286  func CryptGetKeyIdentifierProperty(pKeyIdentifier /*const*/ *CRYPT_HASH_BLOB, dwPropId DWORD, dwFlags DWORD, pwszComputerName string, pvReserved uintptr, pvData uintptr, pcbData *uint32) bool {
  1287  	pwszComputerNameStr := unicode16FromString(pwszComputerName)
  1288  	ret1 := syscall9(cryptGetKeyIdentifierProperty, 7,
  1289  		uintptr(unsafe.Pointer(pKeyIdentifier)),
  1290  		uintptr(dwPropId),
  1291  		uintptr(dwFlags),
  1292  		uintptr(unsafe.Pointer(&pwszComputerNameStr[0])),
  1293  		pvReserved,
  1294  		pvData,
  1295  		uintptr(unsafe.Pointer(pcbData)),
  1296  		0,
  1297  		0)
  1298  	return ret1 != 0
  1299  }
  1300  
  1301  // TODO: Unknown type(s): HCRYPTPROV_LEGACY
  1302  // func CryptGetMessageCertificates(dwMsgAndCertEncodingType DWORD, hCryptProv HCRYPTPROV_LEGACY, dwFlags DWORD, pbSignedBlob /*const*/ *byte, cbSignedBlob DWORD) HCERTSTORE
  1303  
  1304  func CryptGetMessageSignerCount(dwMsgEncodingType DWORD, pbSignedBlob /*const*/ *byte, cbSignedBlob DWORD) LONG {
  1305  	ret1 := syscall3(cryptGetMessageSignerCount, 3,
  1306  		uintptr(dwMsgEncodingType),
  1307  		uintptr(unsafe.Pointer(pbSignedBlob)),
  1308  		uintptr(cbSignedBlob))
  1309  	return LONG(ret1)
  1310  }
  1311  
  1312  // TODO: Unknown type(s): HCRYPTOIDFUNCADDR *, HCRYPTOIDFUNCSET
  1313  // func CryptGetOIDFunctionAddress(hFuncSet HCRYPTOIDFUNCSET, dwEncodingType DWORD, pszOID /*const*/ LPCSTR, dwFlags DWORD, ppvFuncAddr uintptr, phFuncAddr HCRYPTOIDFUNCADDR *) bool
  1314  
  1315  func CryptGetOIDFunctionValue(dwEncodingType DWORD, pszFuncName /*const*/ LPCSTR, pszOID /*const*/ LPCSTR, pwszValueName string, pdwValueType *uint32, pbValueData *byte, pcbValueData *uint32) bool {
  1316  	pwszValueNameStr := unicode16FromString(pwszValueName)
  1317  	ret1 := syscall9(cryptGetOIDFunctionValue, 7,
  1318  		uintptr(dwEncodingType),
  1319  		uintptr(unsafe.Pointer(pszFuncName)),
  1320  		uintptr(unsafe.Pointer(pszOID)),
  1321  		uintptr(unsafe.Pointer(&pwszValueNameStr[0])),
  1322  		uintptr(unsafe.Pointer(pdwValueType)),
  1323  		uintptr(unsafe.Pointer(pbValueData)),
  1324  		uintptr(unsafe.Pointer(pcbValueData)),
  1325  		0,
  1326  		0)
  1327  	return ret1 != 0
  1328  }
  1329  
  1330  // TODO: Unknown type(s): HCRYPTPROV_LEGACY
  1331  // func CryptHashCertificate(hCryptProv HCRYPTPROV_LEGACY, algid ALG_ID, dwFlags DWORD, pbEncoded /*const*/ *byte, cbEncoded DWORD, pbComputedHash *byte, pcbComputedHash *uint32) bool
  1332  
  1333  // TODO: Unknown type(s): PCRYPT_HASH_MESSAGE_PARA
  1334  // func CryptHashMessage(pHashPara PCRYPT_HASH_MESSAGE_PARA, fDetachedHash bool, cToBeHashed DWORD, rgpbToBeHashed /*const*/ **BYTE, rgcbToBeHashed *uint32, pbHashedBlob *byte, pcbHashedBlob *uint32, pbComputedHash *byte, pcbComputedHash *uint32) bool
  1335  
  1336  // TODO: Unknown type(s): HCRYPTPROV_LEGACY, PCERT_PUBLIC_KEY_INFO
  1337  // func CryptHashPublicKeyInfo(hCryptProv HCRYPTPROV_LEGACY, algid ALG_ID, dwFlags DWORD, dwCertEncodingType DWORD, pInfo PCERT_PUBLIC_KEY_INFO, pbComputedHash *byte, pcbComputedHash *uint32) bool
  1338  
  1339  // TODO: Unknown type(s): HCRYPTPROV_LEGACY
  1340  // func CryptHashToBeSigned(hCryptProv HCRYPTPROV_LEGACY, dwCertEncodingType DWORD, pbEncoded /*const*/ *byte, cbEncoded DWORD, pbComputedHash *byte, pcbComputedHash *uint32) bool
  1341  
  1342  // TODO: Unknown type(s): CRYPT_PKCS8_IMPORT_PARAMS
  1343  // func CryptImportPKCS8(sPrivateKeyAndParams CRYPT_PKCS8_IMPORT_PARAMS, dwFlags DWORD, phCryptProv *HCRYPTPROV, pvAuxInfo uintptr) bool
  1344  
  1345  // TODO: Unknown type(s): PCERT_PUBLIC_KEY_INFO
  1346  // func CryptImportPublicKeyInfo(hCryptProv HCRYPTPROV, dwCertEncodingType DWORD, pInfo PCERT_PUBLIC_KEY_INFO, phKey *HCRYPTKEY) bool
  1347  
  1348  // TODO: Unknown type(s): PCERT_PUBLIC_KEY_INFO
  1349  // func CryptImportPublicKeyInfoEx(hCryptProv HCRYPTPROV, dwCertEncodingType DWORD, pInfo PCERT_PUBLIC_KEY_INFO, aiKeyAlg ALG_ID, dwFlags DWORD, pvAuxInfo uintptr, phKey *HCRYPTKEY) bool
  1350  
  1351  // TODO: Unknown type(s): HCRYPTOIDFUNCSET
  1352  // func CryptInitOIDFunctionSet(pszFuncName /*const*/ LPCSTR, dwFlags DWORD) HCRYPTOIDFUNCSET
  1353  
  1354  // TODO: Unknown type(s): HCRYPTDEFAULTCONTEXT *
  1355  // func CryptInstallDefaultContext(hCryptProv HCRYPTPROV, dwDefaultType DWORD, pvDefaultPara /*const*/ uintptr, dwFlags DWORD, pvReserved uintptr, phDefaultContext HCRYPTDEFAULTCONTEXT *) bool
  1356  
  1357  // TODO: Unknown type(s): const CRYPT_OID_FUNC_ENTRY*
  1358  // func CryptInstallOIDFunctionAddress(hModule HMODULE, dwEncodingType DWORD, pszFuncName /*const*/ LPCSTR, cFuncEntry DWORD, rgFuncEntry /*const*/ const CRYPT_OID_FUNC_ENTRY*, dwFlags DWORD) bool
  1359  
  1360  func CryptMemAlloc(cbSize ULONG) LPVOID {
  1361  	ret1 := syscall3(cryptMemAlloc, 1,
  1362  		uintptr(cbSize),
  1363  		0,
  1364  		0)
  1365  	return (LPVOID)(unsafe.Pointer(ret1))
  1366  }
  1367  
  1368  func CryptMemFree(pv LPVOID) {
  1369  	syscall3(cryptMemFree, 1,
  1370  		uintptr(unsafe.Pointer(pv)),
  1371  		0,
  1372  		0)
  1373  }
  1374  
  1375  func CryptMemRealloc(pv LPVOID, cbSize ULONG) LPVOID {
  1376  	ret1 := syscall3(cryptMemRealloc, 2,
  1377  		uintptr(unsafe.Pointer(pv)),
  1378  		uintptr(cbSize),
  1379  		0)
  1380  	return (LPVOID)(unsafe.Pointer(ret1))
  1381  }
  1382  
  1383  func CryptMsgCalculateEncodedLength(dwMsgEncodingType DWORD, dwFlags DWORD, dwMsgType DWORD, pvMsgEncodeInfo /*const*/ uintptr, pszInnerContentObjID LPSTR, cbData DWORD) DWORD {
  1384  	ret1 := syscall6(cryptMsgCalculateEncodedLength, 6,
  1385  		uintptr(dwMsgEncodingType),
  1386  		uintptr(dwFlags),
  1387  		uintptr(dwMsgType),
  1388  		pvMsgEncodeInfo,
  1389  		uintptr(unsafe.Pointer(pszInnerContentObjID)),
  1390  		uintptr(cbData))
  1391  	return DWORD(ret1)
  1392  }
  1393  
  1394  func CryptMsgClose(hCryptMsg HCRYPTMSG) bool {
  1395  	ret1 := syscall3(cryptMsgClose, 1,
  1396  		uintptr(unsafe.Pointer(hCryptMsg)),
  1397  		0,
  1398  		0)
  1399  	return ret1 != 0
  1400  }
  1401  
  1402  func CryptMsgControl(hCryptMsg HCRYPTMSG, dwFlags DWORD, dwCtrlType DWORD, pvCtrlPara /*const*/ uintptr) bool {
  1403  	ret1 := syscall6(cryptMsgControl, 4,
  1404  		uintptr(unsafe.Pointer(hCryptMsg)),
  1405  		uintptr(dwFlags),
  1406  		uintptr(dwCtrlType),
  1407  		pvCtrlPara,
  1408  		0,
  1409  		0)
  1410  	return ret1 != 0
  1411  }
  1412  
  1413  // TODO: Unknown type(s): PCMSG_SIGNER_ENCODE_INFO
  1414  // func CryptMsgCountersign(hCryptMsg HCRYPTMSG, dwIndex DWORD, cCountersigners DWORD, rgCountersigners PCMSG_SIGNER_ENCODE_INFO) bool
  1415  
  1416  // TODO: Unknown type(s): PCMSG_SIGNER_ENCODE_INFO
  1417  // func CryptMsgCountersignEncoded(dwEncodingType DWORD, pbSignerInfo *byte, cbSignerInfo DWORD, cCountersigners DWORD, rgCountersigners PCMSG_SIGNER_ENCODE_INFO, pbCountersignature *byte, pcbCountersignature *DWORD) bool
  1418  
  1419  func CryptMsgDuplicate(hCryptMsg HCRYPTMSG) HCRYPTMSG {
  1420  	ret1 := syscall3(cryptMsgDuplicate, 1,
  1421  		uintptr(unsafe.Pointer(hCryptMsg)),
  1422  		0,
  1423  		0)
  1424  	return (HCRYPTMSG)(unsafe.Pointer(ret1))
  1425  }
  1426  
  1427  // TODO: Unknown type(s): PCMSG_SIGNED_ENCODE_INFO
  1428  // func CryptMsgEncodeAndSignCTL(dwMsgEncodingType DWORD, pCtlInfo PCTL_INFO, pSignInfo PCMSG_SIGNED_ENCODE_INFO, dwFlags DWORD, pbEncoded *byte, pcbEncoded *uint32) bool
  1429  
  1430  func CryptMsgGetAndVerifySigner(hCryptMsg HCRYPTMSG, cSignerStore DWORD, rghSignerStore *HCERTSTORE, dwFlags DWORD, ppSigner *PCCERT_CONTEXT, pdwSignerIndex *uint32) bool {
  1431  	ret1 := syscall6(cryptMsgGetAndVerifySigner, 6,
  1432  		uintptr(unsafe.Pointer(hCryptMsg)),
  1433  		uintptr(cSignerStore),
  1434  		uintptr(unsafe.Pointer(rghSignerStore)),
  1435  		uintptr(dwFlags),
  1436  		uintptr(unsafe.Pointer(ppSigner)),
  1437  		uintptr(unsafe.Pointer(pdwSignerIndex)))
  1438  	return ret1 != 0
  1439  }
  1440  
  1441  func CryptMsgGetParam(hCryptMsg HCRYPTMSG, dwParamType DWORD, dwIndex DWORD, pvData uintptr, pcbData *uint32) bool {
  1442  	ret1 := syscall6(cryptMsgGetParam, 5,
  1443  		uintptr(unsafe.Pointer(hCryptMsg)),
  1444  		uintptr(dwParamType),
  1445  		uintptr(dwIndex),
  1446  		pvData,
  1447  		uintptr(unsafe.Pointer(pcbData)),
  1448  		0)
  1449  	return ret1 != 0
  1450  }
  1451  
  1452  // TODO: Unknown type(s): HCRYPTPROV_LEGACY, PCMSG_STREAM_INFO
  1453  // func CryptMsgOpenToDecode(dwMsgEncodingType DWORD, dwFlags DWORD, dwMsgType DWORD, hCryptProv HCRYPTPROV_LEGACY, pRecipientInfo PCERT_INFO, pStreamInfo PCMSG_STREAM_INFO) HCRYPTMSG
  1454  
  1455  // TODO: Unknown type(s): PCMSG_STREAM_INFO
  1456  // func CryptMsgOpenToEncode(dwMsgEncodingType DWORD, dwFlags DWORD, dwMsgType DWORD, pvMsgEncodeInfo /*const*/ uintptr, pszInnerContentObjID LPSTR, pStreamInfo PCMSG_STREAM_INFO) HCRYPTMSG
  1457  
  1458  // TODO: Unknown type(s): PCMSG_SIGNED_ENCODE_INFO
  1459  // func CryptMsgSignCTL(dwMsgEncodingType DWORD, pbCtlContent *byte, cbCtlContent DWORD, pSignInfo PCMSG_SIGNED_ENCODE_INFO, dwFlags DWORD, pbEncoded *byte, pcbEncoded *uint32) bool
  1460  
  1461  func CryptMsgUpdate(hCryptMsg HCRYPTMSG, pbData /*const*/ *byte, cbData DWORD, fFinal bool) bool {
  1462  	ret1 := syscall6(cryptMsgUpdate, 4,
  1463  		uintptr(unsafe.Pointer(hCryptMsg)),
  1464  		uintptr(unsafe.Pointer(pbData)),
  1465  		uintptr(cbData),
  1466  		getUintptrFromBool(fFinal),
  1467  		0,
  1468  		0)
  1469  	return ret1 != 0
  1470  }
  1471  
  1472  // TODO: Unknown type(s): HCRYPTPROV_LEGACY
  1473  // func CryptMsgVerifyCountersignatureEncoded(hCryptProv HCRYPTPROV_LEGACY, dwEncodingType DWORD, pbSignerInfo *byte, cbSignerInfo DWORD, pbSignerInfoCountersignature *byte, cbSignerInfoCountersignature DWORD, pciCountersigner PCERT_INFO) bool
  1474  
  1475  // TODO: Unknown type(s): HCRYPTPROV_LEGACY
  1476  // func CryptMsgVerifyCountersignatureEncodedEx(hCryptProv HCRYPTPROV_LEGACY, dwEncodingType DWORD, pbSignerInfo *byte, cbSignerInfo DWORD, pbSignerInfoCountersignature *byte, cbSignerInfoCountersignature DWORD, dwSignerType DWORD, pvSigner uintptr, dwFlags DWORD, pvExtra uintptr) bool
  1477  
  1478  // TODO: Unknown type(s): CRYPTPROTECT_PROMPTSTRUCT *
  1479  // func CryptProtectData(pDataIn *DATA_BLOB, szDataDescr string, pOptionalEntropy *DATA_BLOB, pvReserved uintptr, pPromptStruct CRYPTPROTECT_PROMPTSTRUCT *, dwFlags DWORD, pDataOut *DATA_BLOB) bool
  1480  
  1481  func CryptProtectMemory(pDataIn LPVOID, cbDataIn DWORD, dwFlags DWORD) bool {
  1482  	ret1 := syscall3(cryptProtectMemory, 3,
  1483  		uintptr(unsafe.Pointer(pDataIn)),
  1484  		uintptr(cbDataIn),
  1485  		uintptr(dwFlags))
  1486  	return ret1 != 0
  1487  }
  1488  
  1489  func CryptQueryObject(dwObjectType DWORD, pvObject /*const*/ uintptr, dwExpectedContentTypeFlags DWORD, dwExpectedFormatTypeFlags DWORD, dwFlags DWORD, pdwMsgAndCertEncodingType *uint32, pdwContentType *uint32, pdwFormatType *uint32, phCertStore *HCERTSTORE, phMsg *HCRYPTMSG, ppvContext /*const*/ uintptr) bool {
  1490  	ret1 := syscall12(cryptQueryObject, 11,
  1491  		uintptr(dwObjectType),
  1492  		pvObject,
  1493  		uintptr(dwExpectedContentTypeFlags),
  1494  		uintptr(dwExpectedFormatTypeFlags),
  1495  		uintptr(dwFlags),
  1496  		uintptr(unsafe.Pointer(pdwMsgAndCertEncodingType)),
  1497  		uintptr(unsafe.Pointer(pdwContentType)),
  1498  		uintptr(unsafe.Pointer(pdwFormatType)),
  1499  		uintptr(unsafe.Pointer(phCertStore)),
  1500  		uintptr(unsafe.Pointer(phMsg)),
  1501  		ppvContext,
  1502  		0)
  1503  	return ret1 != 0
  1504  }
  1505  
  1506  func CryptRegisterDefaultOIDFunction(dwEncodingType DWORD, pszFuncName /*const*/ LPCSTR, dwIndex DWORD, pwszDll string) bool {
  1507  	pwszDllStr := unicode16FromString(pwszDll)
  1508  	ret1 := syscall6(cryptRegisterDefaultOIDFunction, 4,
  1509  		uintptr(dwEncodingType),
  1510  		uintptr(unsafe.Pointer(pszFuncName)),
  1511  		uintptr(dwIndex),
  1512  		uintptr(unsafe.Pointer(&pwszDllStr[0])),
  1513  		0,
  1514  		0)
  1515  	return ret1 != 0
  1516  }
  1517  
  1518  func CryptRegisterOIDFunction(dwEncodingType DWORD, pszFuncName /*const*/ LPCSTR, pszOID /*const*/ LPCSTR, pwszDll string, pszOverrideFuncName /*const*/ LPCSTR) bool {
  1519  	pwszDllStr := unicode16FromString(pwszDll)
  1520  	ret1 := syscall6(cryptRegisterOIDFunction, 5,
  1521  		uintptr(dwEncodingType),
  1522  		uintptr(unsafe.Pointer(pszFuncName)),
  1523  		uintptr(unsafe.Pointer(pszOID)),
  1524  		uintptr(unsafe.Pointer(&pwszDllStr[0])),
  1525  		uintptr(unsafe.Pointer(pszOverrideFuncName)),
  1526  		0)
  1527  	return ret1 != 0
  1528  }
  1529  
  1530  // TODO: Unknown type(s): PCCRYPT_OID_INFO
  1531  // func CryptRegisterOIDInfo(pInfo PCCRYPT_OID_INFO, dwFlags DWORD) bool
  1532  
  1533  // TODO: Unknown type(s): SIP_ADD_NEWPROVIDER *
  1534  // func CryptSIPAddProvider(psNewProv SIP_ADD_NEWPROVIDER *) bool
  1535  
  1536  // TODO: Unknown type(s): SIP_INDIRECT_DATA *, SIP_SUBJECTINFO *
  1537  // func CryptSIPCreateIndirectData(pSubjectInfo SIP_SUBJECTINFO *, pcbIndirectData *uint32, pIndirectData SIP_INDIRECT_DATA *) bool
  1538  
  1539  // TODO: Unknown type(s): SIP_SUBJECTINFO *
  1540  // func CryptSIPGetSignedDataMsg(pSubjectInfo SIP_SUBJECTINFO *, pdwEncodingType *uint32, dwIndex DWORD, pcbSignedDataMsg *uint32, pbSignedDataMsg *byte) bool
  1541  
  1542  // TODO: Unknown type(s): SIP_DISPATCH_INFO *
  1543  // func CryptSIPLoad(pgSubject /*const*/ *GUID, dwFlags DWORD, pSipDispatch SIP_DISPATCH_INFO *) bool
  1544  
  1545  // TODO: Unknown type(s): SIP_SUBJECTINFO *
  1546  // func CryptSIPPutSignedDataMsg(pSubjectInfo SIP_SUBJECTINFO *, dwEncodingType DWORD, pdwIndex *uint32, cbSignedDataMsg DWORD, pbSignedDataMsg *byte) bool
  1547  
  1548  func CryptSIPRemoveProvider(pgProv *GUID) bool {
  1549  	ret1 := syscall3(cryptSIPRemoveProvider, 1,
  1550  		uintptr(unsafe.Pointer(pgProv)),
  1551  		0,
  1552  		0)
  1553  	return ret1 != 0
  1554  }
  1555  
  1556  // TODO: Unknown type(s): SIP_SUBJECTINFO *
  1557  // func CryptSIPRemoveSignedDataMsg(pSubjectInfo SIP_SUBJECTINFO *, dwIndex DWORD) bool
  1558  
  1559  func CryptSIPRetrieveSubjectGuid(fileName string, hFileIn HANDLE, pgSubject *GUID) bool {
  1560  	fileNameStr := unicode16FromString(fileName)
  1561  	ret1 := syscall3(cryptSIPRetrieveSubjectGuid, 3,
  1562  		uintptr(unsafe.Pointer(&fileNameStr[0])),
  1563  		uintptr(hFileIn),
  1564  		uintptr(unsafe.Pointer(pgSubject)))
  1565  	return ret1 != 0
  1566  }
  1567  
  1568  func CryptSIPRetrieveSubjectGuidForCatalogFile(fileName string, hFileIn HANDLE, pgSubject *GUID) bool {
  1569  	fileNameStr := unicode16FromString(fileName)
  1570  	ret1 := syscall3(cryptSIPRetrieveSubjectGuidForCatalogFile, 3,
  1571  		uintptr(unsafe.Pointer(&fileNameStr[0])),
  1572  		uintptr(hFileIn),
  1573  		uintptr(unsafe.Pointer(pgSubject)))
  1574  	return ret1 != 0
  1575  }
  1576  
  1577  // TODO: Unknown type(s): SIP_INDIRECT_DATA *, SIP_SUBJECTINFO *
  1578  // func CryptSIPVerifyIndirectData(pSubjectInfo SIP_SUBJECTINFO *, pIndirectData SIP_INDIRECT_DATA *) bool
  1579  
  1580  // TODO: Unknown type(s): HCRYPTASYNC, PFN_CRYPT_ASYNC_PARAM_FREE_FUNC
  1581  // func CryptSetAsyncParam(hAsync HCRYPTASYNC, pszParamOid LPSTR, pvParam LPVOID, pfnFree PFN_CRYPT_ASYNC_PARAM_FREE_FUNC) bool
  1582  
  1583  func CryptSetKeyIdentifierProperty(pKeyIdentifier /*const*/ *CRYPT_HASH_BLOB, dwPropId DWORD, dwFlags DWORD, pwszComputerName string, pvReserved uintptr, pvData /*const*/ uintptr) bool {
  1584  	pwszComputerNameStr := unicode16FromString(pwszComputerName)
  1585  	ret1 := syscall6(cryptSetKeyIdentifierProperty, 6,
  1586  		uintptr(unsafe.Pointer(pKeyIdentifier)),
  1587  		uintptr(dwPropId),
  1588  		uintptr(dwFlags),
  1589  		uintptr(unsafe.Pointer(&pwszComputerNameStr[0])),
  1590  		pvReserved,
  1591  		pvData)
  1592  	return ret1 != 0
  1593  }
  1594  
  1595  func CryptSetOIDFunctionValue(dwEncodingType DWORD, pszFuncName /*const*/ LPCSTR, pszOID /*const*/ LPCSTR, pwszValueName string, dwValueType DWORD, pbValueData /*const*/ *byte, cbValueData DWORD) bool {
  1596  	pwszValueNameStr := unicode16FromString(pwszValueName)
  1597  	ret1 := syscall9(cryptSetOIDFunctionValue, 7,
  1598  		uintptr(dwEncodingType),
  1599  		uintptr(unsafe.Pointer(pszFuncName)),
  1600  		uintptr(unsafe.Pointer(pszOID)),
  1601  		uintptr(unsafe.Pointer(&pwszValueNameStr[0])),
  1602  		uintptr(dwValueType),
  1603  		uintptr(unsafe.Pointer(pbValueData)),
  1604  		uintptr(cbValueData),
  1605  		0,
  1606  		0)
  1607  	return ret1 != 0
  1608  }
  1609  
  1610  // TODO: Unknown type(s): HCRYPTPROV_OR_NCRYPT_KEY_HANDLE, PCRYPT_ALGORITHM_IDENTIFIER
  1611  // func CryptSignAndEncodeCertificate(hCryptProvOrNCryptKey HCRYPTPROV_OR_NCRYPT_KEY_HANDLE, dwKeySpec DWORD, dwCertEncodingType DWORD, lpszStructType /*const*/ LPCSTR, pvStructInfo /*const*/ uintptr, pSignatureAlgorithm PCRYPT_ALGORITHM_IDENTIFIER, pvHashAuxInfo /*const*/ uintptr, pbEncoded *byte, pcbEncoded *uint32) bool
  1612  
  1613  // TODO: Unknown type(s): PCRYPT_ENCRYPT_MESSAGE_PARA, PCRYPT_SIGN_MESSAGE_PARA
  1614  // func CryptSignAndEncryptMessage(pSignPara PCRYPT_SIGN_MESSAGE_PARA, pEncryptPara PCRYPT_ENCRYPT_MESSAGE_PARA, cRecipientCert DWORD, rgpRecipientCert *PCCERT_CONTEXT, pbToBeSignedAndEncrypted /*const*/ *byte, cbToBeSignedAndEncrypted DWORD, pbSignedAndEncryptedBlob *byte, pcbSignedAndEncryptedBlob *uint32) bool
  1615  
  1616  // TODO: Unknown type(s): HCRYPTPROV_OR_NCRYPT_KEY_HANDLE, PCRYPT_ALGORITHM_IDENTIFIER
  1617  // func CryptSignCertificate(hCryptProvOrNCryptKey HCRYPTPROV_OR_NCRYPT_KEY_HANDLE, dwKeySpec DWORD, dwCertEncodingType DWORD, pbEncodedToBeSigned /*const*/ *byte, cbEncodedToBeSigned DWORD, pSignatureAlgorithm PCRYPT_ALGORITHM_IDENTIFIER, pvHashAuxInfo /*const*/ uintptr, pbSignature *byte, pcbSignature *uint32) bool
  1618  
  1619  // TODO: Unknown type(s): PCRYPT_SIGN_MESSAGE_PARA
  1620  // func CryptSignMessage(pSignPara PCRYPT_SIGN_MESSAGE_PARA, fDetachedSignature bool, cToBeSigned DWORD, rgpbToBeSigned /*const*/ **BYTE, rgcbToBeSigned *uint32, pbSignedBlob *byte, pcbSignedBlob *uint32) bool
  1621  
  1622  // TODO: Unknown type(s): PCRYPT_KEY_SIGN_MESSAGE_PARA
  1623  // func CryptSignMessageWithKey(pSignPara PCRYPT_KEY_SIGN_MESSAGE_PARA, pbToBeSigned /*const*/ *byte, cbToBeSigned DWORD, pbSignedBlob *byte, pcbSignedBlob *uint32) bool
  1624  
  1625  func CryptStringToBinary(pszString string, cchString DWORD, dwFlags DWORD, pbBinary *byte, pcbBinary *uint32, pdwSkip *uint32, pdwFlags *uint32) bool {
  1626  	pszStringStr := unicode16FromString(pszString)
  1627  	ret1 := syscall9(cryptStringToBinary, 7,
  1628  		uintptr(unsafe.Pointer(&pszStringStr[0])),
  1629  		uintptr(cchString),
  1630  		uintptr(dwFlags),
  1631  		uintptr(unsafe.Pointer(pbBinary)),
  1632  		uintptr(unsafe.Pointer(pcbBinary)),
  1633  		uintptr(unsafe.Pointer(pdwSkip)),
  1634  		uintptr(unsafe.Pointer(pdwFlags)),
  1635  		0,
  1636  		0)
  1637  	return ret1 != 0
  1638  }
  1639  
  1640  // TODO: Unknown type(s): HCRYPTDEFAULTCONTEXT
  1641  // func CryptUninstallDefaultContext(hDefaultContext HCRYPTDEFAULTCONTEXT, dwFlags DWORD, pvReserved uintptr) bool
  1642  
  1643  // TODO: Unknown type(s): CRYPTPROTECT_PROMPTSTRUCT *
  1644  // func CryptUnprotectData(pDataIn *DATA_BLOB, ppszDataDescr *LPWSTR, pOptionalEntropy *DATA_BLOB, pvReserved uintptr, pPromptStruct CRYPTPROTECT_PROMPTSTRUCT *, dwFlags DWORD, pDataOut *DATA_BLOB) bool
  1645  
  1646  func CryptUnprotectMemory(pDataIn LPVOID, cbDataIn DWORD, dwFlags DWORD) bool {
  1647  	ret1 := syscall3(cryptUnprotectMemory, 3,
  1648  		uintptr(unsafe.Pointer(pDataIn)),
  1649  		uintptr(cbDataIn),
  1650  		uintptr(dwFlags))
  1651  	return ret1 != 0
  1652  }
  1653  
  1654  func CryptUnregisterDefaultOIDFunction(dwEncodingType DWORD, pszFuncName /*const*/ LPCSTR, pwszDll string) bool {
  1655  	pwszDllStr := unicode16FromString(pwszDll)
  1656  	ret1 := syscall3(cryptUnregisterDefaultOIDFunction, 3,
  1657  		uintptr(dwEncodingType),
  1658  		uintptr(unsafe.Pointer(pszFuncName)),
  1659  		uintptr(unsafe.Pointer(&pwszDllStr[0])))
  1660  	return ret1 != 0
  1661  }
  1662  
  1663  func CryptUnregisterOIDFunction(dwEncodingType DWORD, pszFuncName /*const*/ LPCSTR, pszOID /*const*/ LPCSTR) bool {
  1664  	ret1 := syscall3(cryptUnregisterOIDFunction, 3,
  1665  		uintptr(dwEncodingType),
  1666  		uintptr(unsafe.Pointer(pszFuncName)),
  1667  		uintptr(unsafe.Pointer(pszOID)))
  1668  	return ret1 != 0
  1669  }
  1670  
  1671  // TODO: Unknown type(s): PCCRYPT_OID_INFO
  1672  // func CryptUnregisterOIDInfo(pInfo PCCRYPT_OID_INFO) bool
  1673  
  1674  // TODO: Unknown type(s): HCRYPTPROV_LEGACY, PCERT_PUBLIC_KEY_INFO
  1675  // func CryptVerifyCertificateSignature(hCryptProv HCRYPTPROV_LEGACY, dwCertEncodingType DWORD, pbEncoded /*const*/ *byte, cbEncoded DWORD, pPublicKey PCERT_PUBLIC_KEY_INFO) bool
  1676  
  1677  // TODO: Unknown type(s): HCRYPTPROV_LEGACY
  1678  // func CryptVerifyCertificateSignatureEx(hCryptProv HCRYPTPROV_LEGACY, dwCertEncodingType DWORD, dwSubjectType DWORD, pvSubject uintptr, dwIssuerType DWORD, pvIssuer uintptr, dwFlags DWORD, pvExtra uintptr) bool
  1679  
  1680  // TODO: Unknown type(s): PCRYPT_HASH_MESSAGE_PARA
  1681  // func CryptVerifyDetachedMessageHash(pHashPara PCRYPT_HASH_MESSAGE_PARA, pbDetachedHashBlob *byte, cbDetachedHashBlob DWORD, cToBeHashed DWORD, rgpbToBeHashed /*const*/ **BYTE, rgcbToBeHashed *uint32, pbComputedHash *byte, pcbComputedHash *uint32) bool
  1682  
  1683  // TODO: Unknown type(s): PCRYPT_VERIFY_MESSAGE_PARA
  1684  // func CryptVerifyDetachedMessageSignature(pVerifyPara PCRYPT_VERIFY_MESSAGE_PARA, dwSignerIndex DWORD, pbDetachedSignBlob /*const*/ *byte, cbDetachedSignBlob DWORD, cToBeSigned DWORD, rgpbToBeSigned /*const*/ **BYTE, rgcbToBeSigned *uint32, ppSignerCert *PCCERT_CONTEXT) bool
  1685  
  1686  // TODO: Unknown type(s): PCRYPT_HASH_MESSAGE_PARA
  1687  // func CryptVerifyMessageHash(pHashPara PCRYPT_HASH_MESSAGE_PARA, pbHashedBlob *byte, cbHashedBlob DWORD, pbToBeHashed *byte, pcbToBeHashed *uint32, pbComputedHash *byte, pcbComputedHash *uint32) bool
  1688  
  1689  // TODO: Unknown type(s): PCRYPT_VERIFY_MESSAGE_PARA
  1690  // func CryptVerifyMessageSignature(pVerifyPara PCRYPT_VERIFY_MESSAGE_PARA, dwSignerIndex DWORD, pbSignedBlob /*const*/ *byte, cbSignedBlob DWORD, pbDecoded *byte, pcbDecoded *uint32, ppSignerCert *PCCERT_CONTEXT) bool
  1691  
  1692  // TODO: Unknown type(s): PCERT_PUBLIC_KEY_INFO, PCRYPT_KEY_VERIFY_MESSAGE_PARA
  1693  // func CryptVerifyMessageSignatureWithKey(pVerifyPara PCRYPT_KEY_VERIFY_MESSAGE_PARA, pPublicKeyInfo PCERT_PUBLIC_KEY_INFO, pbSignedBlob /*const*/ *byte, cbSignedBlob DWORD, pbDecoded *byte, pcbDecoded *uint32) bool
  1694  
  1695  // TODO: Unknown type(s): ASN1decoding_t, HCRYPTASN1MODULE
  1696  // func I_CryptGetAsn1Decoder(hAsn1Module HCRYPTASN1MODULE) ASN1decoding_t
  1697  
  1698  // TODO: Unknown type(s): ASN1encoding_t, HCRYPTASN1MODULE
  1699  // func I_CryptGetAsn1Encoder(hAsn1Module HCRYPTASN1MODULE) ASN1encoding_t
  1700  
  1701  // TODO: Unknown type(s): ASN1module_t, HCRYPTASN1MODULE
  1702  // func I_CryptInstallAsn1Module(pMod ASN1module_t, dwFlags DWORD, pvReserved uintptr) HCRYPTASN1MODULE
  1703  
  1704  // TODO: Unknown type(s): HCRYPTASN1MODULE
  1705  // func I_CryptUninstallAsn1Module(hAsn1Module HCRYPTASN1MODULE) bool
  1706  
  1707  func PFXExportCertStore(hStore HCERTSTORE, pPFX *CRYPT_DATA_BLOB, szPassword string, dwFlags DWORD) bool {
  1708  	szPasswordStr := unicode16FromString(szPassword)
  1709  	ret1 := syscall6(pFXExportCertStore, 4,
  1710  		uintptr(hStore),
  1711  		uintptr(unsafe.Pointer(pPFX)),
  1712  		uintptr(unsafe.Pointer(&szPasswordStr[0])),
  1713  		uintptr(dwFlags),
  1714  		0,
  1715  		0)
  1716  	return ret1 != 0
  1717  }
  1718  
  1719  func PFXExportCertStoreEx(hStore HCERTSTORE, pPFX *CRYPT_DATA_BLOB, szPassword string, pvPara uintptr, dwFlags DWORD) bool {
  1720  	szPasswordStr := unicode16FromString(szPassword)
  1721  	ret1 := syscall6(pFXExportCertStoreEx, 5,
  1722  		uintptr(hStore),
  1723  		uintptr(unsafe.Pointer(pPFX)),
  1724  		uintptr(unsafe.Pointer(&szPasswordStr[0])),
  1725  		pvPara,
  1726  		uintptr(dwFlags),
  1727  		0)
  1728  	return ret1 != 0
  1729  }
  1730  
  1731  func PFXImportCertStore(pPFX *CRYPT_DATA_BLOB, szPassword string, dwFlags DWORD) HCERTSTORE {
  1732  	szPasswordStr := unicode16FromString(szPassword)
  1733  	ret1 := syscall3(pFXImportCertStore, 3,
  1734  		uintptr(unsafe.Pointer(pPFX)),
  1735  		uintptr(unsafe.Pointer(&szPasswordStr[0])),
  1736  		uintptr(dwFlags))
  1737  	return HCERTSTORE(ret1)
  1738  }
  1739  
  1740  func PFXIsPFXBlob(pPFX *CRYPT_DATA_BLOB) bool {
  1741  	ret1 := syscall3(pFXIsPFXBlob, 1,
  1742  		uintptr(unsafe.Pointer(pPFX)),
  1743  		0,
  1744  		0)
  1745  	return ret1 != 0
  1746  }
  1747  
  1748  func PFXVerifyPassword(pPFX *CRYPT_DATA_BLOB, szPassword string, dwFlags DWORD) bool {
  1749  	szPasswordStr := unicode16FromString(szPassword)
  1750  	ret1 := syscall3(pFXVerifyPassword, 3,
  1751  		uintptr(unsafe.Pointer(pPFX)),
  1752  		uintptr(unsafe.Pointer(&szPasswordStr[0])),
  1753  		uintptr(dwFlags))
  1754  	return ret1 != 0
  1755  }
  1756  
  1757  func I_CertUpdateStore(store1 HCERTSTORE, store2 HCERTSTORE, unk0 DWORD, unk1 DWORD) bool {
  1758  	ret1 := syscall6(i_CertUpdateStore, 4,
  1759  		uintptr(store1),
  1760  		uintptr(store2),
  1761  		uintptr(unk0),
  1762  		uintptr(unk1),
  1763  		0,
  1764  		0)
  1765  	return ret1 != 0
  1766  }
  1767  
  1768  func I_CryptAllocTls() DWORD {
  1769  	ret1 := syscall3(i_CryptAllocTls, 0,
  1770  		0,
  1771  		0,
  1772  		0)
  1773  	return DWORD(ret1)
  1774  }
  1775  
  1776  // TODO: Unknown type(s): HLRUCACHE *
  1777  // func I_CryptCreateLruCache(unknown uintptr, out HLRUCACHE *) bool
  1778  
  1779  // TODO: Unknown type(s): HLRUCACHE
  1780  // func I_CryptCreateLruEntry(h HLRUCACHE, unk0 DWORD, unk1 DWORD) bool
  1781  
  1782  func I_CryptDetachTls(dwTlsIndex DWORD) LPVOID {
  1783  	ret1 := syscall3(i_CryptDetachTls, 1,
  1784  		uintptr(dwTlsIndex),
  1785  		0,
  1786  		0)
  1787  	return (LPVOID)(unsafe.Pointer(ret1))
  1788  }
  1789  
  1790  func I_CryptFindLruEntry(unk0 DWORD, unk1 DWORD) bool {
  1791  	ret1 := syscall3(i_CryptFindLruEntry, 2,
  1792  		uintptr(unk0),
  1793  		uintptr(unk1),
  1794  		0)
  1795  	return ret1 != 0
  1796  }
  1797  
  1798  func I_CryptFindLruEntryData(unk0 DWORD, unk1 DWORD, unk2 DWORD) bool {
  1799  	ret1 := syscall3(i_CryptFindLruEntryData, 3,
  1800  		uintptr(unk0),
  1801  		uintptr(unk1),
  1802  		uintptr(unk2))
  1803  	return ret1 != 0
  1804  }
  1805  
  1806  // TODO: Unknown type(s): HLRUCACHE
  1807  // func I_CryptFlushLruCache(h HLRUCACHE, unk0 DWORD, unk1 DWORD) DWORD
  1808  
  1809  // TODO: Unknown type(s): HLRUCACHE
  1810  // func I_CryptFreeLruCache(h HLRUCACHE, unk0 DWORD, unk1 DWORD) HLRUCACHE
  1811  
  1812  func I_CryptFreeTls(dwTlsIndex DWORD, unknown DWORD) bool {
  1813  	ret1 := syscall3(i_CryptFreeTls, 2,
  1814  		uintptr(dwTlsIndex),
  1815  		uintptr(unknown),
  1816  		0)
  1817  	return ret1 != 0
  1818  }
  1819  
  1820  func I_CryptGetDefaultCryptProv(reserved DWORD) HCRYPTPROV {
  1821  	ret1 := syscall3(i_CryptGetDefaultCryptProv, 1,
  1822  		uintptr(reserved),
  1823  		0,
  1824  		0)
  1825  	return HCRYPTPROV(ret1)
  1826  }
  1827  
  1828  func I_CryptGetOssGlobal(x DWORD) bool {
  1829  	ret1 := syscall3(i_CryptGetOssGlobal, 1,
  1830  		uintptr(x),
  1831  		0,
  1832  		0)
  1833  	return ret1 != 0
  1834  }
  1835  
  1836  func I_CryptGetTls(dwTlsIndex DWORD) LPVOID {
  1837  	ret1 := syscall3(i_CryptGetTls, 1,
  1838  		uintptr(dwTlsIndex),
  1839  		0,
  1840  		0)
  1841  	return (LPVOID)(unsafe.Pointer(ret1))
  1842  }
  1843  
  1844  func I_CryptInstallOssGlobal(x DWORD, y DWORD, z DWORD) DWORD {
  1845  	ret1 := syscall3(i_CryptInstallOssGlobal, 3,
  1846  		uintptr(x),
  1847  		uintptr(y),
  1848  		uintptr(z))
  1849  	return DWORD(ret1)
  1850  }
  1851  
  1852  func I_CryptReadTrustedPublisherDWORDValueFromRegistry(name string, value *uint32) bool {
  1853  	nameStr := unicode16FromString(name)
  1854  	ret1 := syscall3(i_CryptReadTrustedPublisherDWORDValueFromRegistry, 2,
  1855  		uintptr(unsafe.Pointer(&nameStr[0])),
  1856  		uintptr(unsafe.Pointer(value)),
  1857  		0)
  1858  	return ret1 != 0
  1859  }
  1860  
  1861  func I_CryptSetTls(dwTlsIndex DWORD, lpTlsValue LPVOID) bool {
  1862  	ret1 := syscall3(i_CryptSetTls, 2,
  1863  		uintptr(dwTlsIndex),
  1864  		uintptr(unsafe.Pointer(lpTlsValue)),
  1865  		0)
  1866  	return ret1 != 0
  1867  }