206 {
207 bool flag = fileName != null;
208 fixed (byte* pbData = rawData)
209 {
210 fixed (char* ptr = fileName)
211 {
215 void* pvObject = (flag ? ((void*)ptr) : ((void*)(&cRYPTOAPI_BLOB)));
216 if (!global::Interop.crypt32.CryptQueryObject(flag ?
CertQueryObjectType.CERT_QUERY_OBJECT_FILE :
CertQueryObjectType.
CERT_QUERY_OBJECT_BLOB, pvObject,
ExpectedContentTypeFlags.
CERT_QUERY_CONTENT_FLAG_CERT |
ExpectedContentTypeFlags.
CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE |
ExpectedContentTypeFlags.
CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT |
ExpectedContentTypeFlags.
CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED |
ExpectedContentTypeFlags.
CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED |
ExpectedContentTypeFlags.
CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED |
ExpectedContentTypeFlags.
CERT_QUERY_CONTENT_FLAG_PFX,
ExpectedFormatTypeFlags.
CERT_QUERY_FORMAT_FLAG_ALL, 0,
IntPtr.
Zero, out var pdwContentType,
IntPtr.
Zero, out var phCertStore,
IntPtr.
Zero,
IntPtr.
Zero))
217 {
219 }
220 if (pdwContentType ==
ContentType.CERT_QUERY_CONTENT_PFX)
221 {
222 phCertStore.Dispose();
223 if (flag)
224 {
226 }
227 fixed (byte* pbData2 = rawData)
228 {
230 phCertStore = global::Interop.crypt32.PFXImportCertStore(ref pPFX, password, dwFlags);
231 if (phCertStore == null || phCertStore.IsInvalid)
232 {
234 }
235 }
236 if (!flag2)
237 {
239 while (global::Interop.crypt32.CertEnumCertificatesInStore(phCertStore, ref pCertContext))
240 {
242 if (!global::Interop.crypt32.CertSetCertificateContextProperty(pCertContext,
CertContextPropId.CERT_CLR_DELETE_KEY_PROP_ID,
CertSetPropertyFlags.CERT_SET_PROPERTY_INHIBIT_PERSIST_FLAG, &cRYPTOAPI_BLOB2))
243 {
245 }
246 }
247 }
248 }
250 }
251 }
252 }
StorePal(SafeCertStoreHandle certStore)
static PfxCertStoreFlags MapKeyStorageFlags(X509KeyStorageFlags keyStorageFlags)
static byte[] ReadAllBytes(string path)
static int GetLastWin32Error()
@ CERT_QUERY_CONTENT_FLAG_PFX
@ CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED
@ CERT_QUERY_CONTENT_FLAG_CERT
@ CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED
@ CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE
@ CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT
@ CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED
@ CERT_QUERY_FORMAT_FLAG_ALL