Click here to Skip to main content
15,895,084 members
Home / Discussions / C#
   

C#

 
AnswerRe: Extending OpenFileDialog to select folder and file simultaneously Pin
Richard MacCutchan5-Dec-12 21:41
mveRichard MacCutchan5-Dec-12 21:41 
GeneralRe: Extending OpenFileDialog to select folder and file simultaneously Pin
hemant.4oct5-Dec-12 22:16
hemant.4oct5-Dec-12 22:16 
GeneralRe: Extending OpenFileDialog to select folder and file simultaneously Pin
Eddy Vluggen6-Dec-12 2:28
professionalEddy Vluggen6-Dec-12 2:28 
GeneralRe: Extending OpenFileDialog to select folder and file simultaneously Pin
Richard MacCutchan6-Dec-12 2:45
mveRichard MacCutchan6-Dec-12 2:45 
Questionimage processing Pin
Bishwajit Nepali5-Dec-12 19:52
Bishwajit Nepali5-Dec-12 19:52 
AnswerRe: image processing Pin
Richard MacCutchan5-Dec-12 21:34
mveRichard MacCutchan5-Dec-12 21:34 
AnswerRe: image processing Pin
lukeer5-Dec-12 23:45
lukeer5-Dec-12 23:45 
QuestionHow to read data from crl file in C# Pin
Gramulos5-Dec-12 19:12
Gramulos5-Dec-12 19:12 
Hi,
I have crl file and it has some information, such as Valid form 02.11.2012, Next update 02.01.2013, and ect. I need to get this two datetime, and compare with real time (DateTime.Now) and when it will be 31.12.2012 (2 days before) send email to admins.

How to get this data from crl file. I find WinCrypt32
C#
public static class WinCrypt32
        {
            #region APIs

            [DllImport("CRYPT32.DLL", EntryPoint = "CryptQueryObject", CharSet = CharSet.Auto, SetLastError = true)]
            public static extern Boolean CryptQueryObject(
                Int32 dwObjectType,
                IntPtr pvObject,
                Int32 dwExpectedContentTypeFlags,
                Int32 dwExpectedFormatTypeFlags,
                Int32 dwFlags,
                IntPtr pdwMsgAndCertEncodingType,
                IntPtr pdwContentType,
                IntPtr pdwFormatType,
                ref IntPtr phCertStore,
                IntPtr phMsg,
                ref IntPtr ppvContext
                );

            [DllImport("CRYPT32.DLL", EntryPoint = "CertFreeCRLContext", SetLastError = true)]
            public static extern Boolean CertFreeCRLContext(
                IntPtr pCrlContext
            );

            [DllImport("CRYPT32.DLL", EntryPoint = "CertNameToStr", CharSet = CharSet.Auto, SetLastError = true)]
            public static extern Int32 CertNameToStr(
                Int32 dwCertEncodingType,
                ref CRYPTOAPI_BLOB pName,
                Int32 dwStrType,
                StringBuilder psz,
                Int32 csz
            );

            [DllImport("CRYPT32.DLL", EntryPoint = "CertFindExtension", CharSet = CharSet.Auto, SetLastError = true)]
            public static extern IntPtr CertFindExtension(
                [MarshalAs(UnmanagedType.LPStr)]String pszObjId,
                Int32 cExtensions,
                IntPtr rgExtensions
            );

            [DllImport("CRYPT32.DLL", EntryPoint = "CryptFormatObject", CharSet = CharSet.Auto, SetLastError = true)]
            public static extern Boolean CryptFormatObject(
                Int32 dwCertEncodingType,
                Int32 dwFormatType,
                Int32 dwFormatStrType,
                IntPtr pFormatStruct,
                [MarshalAs(UnmanagedType.LPStr)]String lpszStructType,
                IntPtr pbEncoded,
                Int32 cbEncoded,
                StringBuilder pbFormat,
                ref Int32 pcbFormat
            );

            #endregion APIs

            #region Structs
            [StructLayout(LayoutKind.Sequential)]
            public struct CRYPT_OBJID_BLOB
            {
                public uint cbData;
                [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 0)]
                public byte[] pbData;
            }

            [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
            public struct CERT_PUBLIC_KEY_INFO
            {
                public CRYPT_ALGORITHM_IDENTIFIER Algorithm;
                public CRYPTOAPI_BLOB PublicKey;
            }

            [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
            public struct CERT_EXTENSION
            {
                [MarshalAs(UnmanagedType.LPStr)]
                public string pszObjId;
                public bool fCritical;
                public CRYPTOAPI_BLOB Value;
            }

            [StructLayout(LayoutKind.Sequential)]
            public struct CERT_CONTEXT
            {
                public uint dwCertEncodingType;
                public IntPtr pbCertEncoded;
                public uint cbCertEncoded;
                public IntPtr pCertInfo;
                public IntPtr hCertStore;
            }

            public struct CERT_INFO
            {
                public int dwVersion;
                public CRYPTOAPI_BLOB SerialNumber;
                public CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm;
                public CRYPTOAPI_BLOB Issuer;
                public FILETIME NotBefore;
                public FILETIME NotAfter;
                public CRYPTOAPI_BLOB Subject;
                public CERT_PUBLIC_KEY_INFO SubjectPublicKeyInfo;
                public CRYPTOAPI_BLOB IssuerUniqueId;
                public CRYPTOAPI_BLOB SubjectUniqueId;
                public int cExtension;
                public CERT_EXTENSION rgExtension;
            }

            [StructLayout(LayoutKind.Sequential)]
            public struct CRL_CONTEXT
            {
                public Int32 dwCertEncodingType;
                public IntPtr pbCrlEncoded;
                public Int32 cbCrlEncoded;
                public IntPtr pCrlInfo;
                public IntPtr hCertStore;
            }

            [StructLayout(LayoutKind.Sequential)]
            public struct CRL_INFO
            {
                public Int32 dwVersion;
                public CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm;
                public CRYPTOAPI_BLOB Issuer;
                public FILETIME ThisUpdate;
                public FILETIME NextUpdate;
                public Int32 cCRLEntry;
                public IntPtr rgCRLEntry;
                public Int32 cExtension;
                public IntPtr rgExtension;
            }

            [StructLayout(LayoutKind.Sequential)]
            public struct CRYPT_ALGORITHM_IDENTIFIER
            {
                [MarshalAs(UnmanagedType.LPStr)]
                public String pszObjId;
                public CRYPTOAPI_BLOB Parameters;
            }

            [StructLayout(LayoutKind.Sequential)]
            public struct CRYPTOAPI_BLOB
            {
                public Int32 cbData;
                public IntPtr pbData;
            }

            [StructLayout(LayoutKind.Sequential)]
            public struct FILETIME
            {
                public Int32 dwLowDateTime;
                public Int32 dwHighDateTime;
            }

            [StructLayout(LayoutKind.Sequential)]
            public struct CRL_ENTRY
            {
                public CRYPTOAPI_BLOB SerialNumber;
                public FILETIME RevocationDate;
                public Int32 cExtension;
                public IntPtr rgExtension;
            }

            #endregion Structs

            #region Consts

            public const Int32 CERT_QUERY_OBJECT_FILE = 0x00000001;
            public const Int32 CERT_QUERY_OBJECT_BLOB = 0x00000002;
            public const Int32 CERT_QUERY_CONTENT_CRL = 3;
            public const Int32 CERT_QUERY_CONTENT_FLAG_CRL = 1 << CERT_QUERY_CONTENT_CRL;
            public const Int32 CERT_QUERY_FORMAT_BINARY = 1;
            public const Int32 CERT_QUERY_FORMAT_BASE64_ENCODED = 2;
            public const Int32 CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED = 3;
            public const Int32 CERT_QUERY_FORMAT_FLAG_BINARY = 1 << CERT_QUERY_FORMAT_BINARY;
            public const Int32 CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED = 1 << CERT_QUERY_FORMAT_BASE64_ENCODED;
            public const Int32 CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED = 1 << CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED;
            public const Int32 CERT_QUERY_FORMAT_FLAG_ALL = CERT_QUERY_FORMAT_FLAG_BINARY | CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED | CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED;

            public const Int32 X509_ASN_ENCODING = 0x00000001;
            public const Int32 PKCS_7_ASN_ENCODING = 0x00010000;

            public const Int32 X509_NAME = 7;

            public const Int32 CERT_SIMPLE_NAME_STR = 1;
            public const Int32 CERT_OID_NAME_STR = 2;
            public const Int32 CERT_X500_NAME_STR = 3;

            public const String szOID_CRL_REASON_CODE = "2.5.29.21";

            public enum Disposition : uint
            {
                CERT_STORE_ADD_NEW = 1,
                CERT_STORE_ADD_USE_EXISTING = 2,
                CERT_STORE_ADD_REPLACE_EXISTING = 3,
                CERT_STORE_ADD_ALWAYS = 4,
                CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES = 5,
                CERT_STORE_ADD_NEWER = 6,
                CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES = 7,
            }

            [Flags]
            public enum FindFlags : int
            {
                CRL_FIND_ISSUED_BY_AKI_FLAG = 0x1,
                CRL_FIND_ISSUED_BY_SIGNATURE_FLAG = 0x2,
                CRL_FIND_ISSUED_BY_DELTA_FLAG = 0x4,
                CRL_FIND_ISSUED_BY_BASE_FLAG = 0x8,
            }

            public enum FindType : int
            {
                CRL_FIND_ANY = 0,
                CRL_FIND_ISSUED_BY = 1,
                CRL_FIND_EXISTING = 2,
                CRL_FIND_ISSUED_FOR = 3
            }

            #endregion
        }


How to use it and get the necessary information?
AnswerRe: How to read data from crl file in C# Pin
Richard MacCutchan5-Dec-12 21:32
mveRichard MacCutchan5-Dec-12 21:32 
AnswerRe: How to read data from crl file in C# Pin
Eddy Vluggen6-Dec-12 2:34
professionalEddy Vluggen6-Dec-12 2:34 
QuestionMultiThreading Pin
MAW305-Dec-12 17:49
MAW305-Dec-12 17:49 
AnswerRe: MultiThreading Pin
Dave Kreskowiak5-Dec-12 18:28
mveDave Kreskowiak5-Dec-12 18:28 
GeneralRe: MultiThreading Pin
MAW305-Dec-12 18:40
MAW305-Dec-12 18:40 
GeneralRe: MultiThreading Pin
Dave Kreskowiak6-Dec-12 1:45
mveDave Kreskowiak6-Dec-12 1:45 
Questionimage processing Pin
Bishwajit Nepali5-Dec-12 17:37
Bishwajit Nepali5-Dec-12 17:37 
AnswerRe: image processing Pin
Dave Kreskowiak5-Dec-12 18:17
mveDave Kreskowiak5-Dec-12 18:17 
AnswerRe: image processing Pin
Mycroft Holmes5-Dec-12 18:35
professionalMycroft Holmes5-Dec-12 18:35 
GeneralRe: image processing Pin
Adam R Harris6-Dec-12 9:13
Adam R Harris6-Dec-12 9:13 
GeneralRe: image processing Pin
Mycroft Holmes6-Dec-12 11:58
professionalMycroft Holmes6-Dec-12 11:58 
QuestionC# make executabloe a dll Pin
sc steinhayse5-Dec-12 16:43
sc steinhayse5-Dec-12 16:43 
AnswerRe: C# make executabloe a dll Pin
Abhinav S5-Dec-12 17:04
Abhinav S5-Dec-12 17:04 
AnswerRe: C# make executabloe a dll Pin
PIEBALDconsult5-Dec-12 18:08
mvePIEBALDconsult5-Dec-12 18:08 
GeneralRe: C# make executabloe a dll Pin
sc steinhayse6-Dec-12 7:22
sc steinhayse6-Dec-12 7:22 
GeneralRe: C# make executabloe a dll Pin
PIEBALDconsult6-Dec-12 8:05
mvePIEBALDconsult6-Dec-12 8:05 
AnswerRe: C# make executabloe a dll Pin
Mycroft Holmes5-Dec-12 18:31
professionalMycroft Holmes5-Dec-12 18:31 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.