Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 0
Регистрация: 01.04.2010
Сообщений: 11
1

Как прочитать данные из CRL файла

06.12.2012, 10:41. Показов 3365. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Certificate Revocation List - crl файл.
как прочитать данные из этого файла. надо забрать всего 2 даты: дата выдачи (Действителен с ), дата обновления (следующее обновление).

все предлагают BouncyCastle, MS Capicom, Mono... но и везде есть как создать или загрузить этот файл. Но как прочитать данные?

Добавлено через 9 минут
из MSDN нашел вот это
C#
1
2
3
4
5
6
7
8
9
10
11
X509Chain ch = new X509Chain();
ch.Build (certificate);
Console.WriteLine ("Chain Information");
ch.ChainPolicy.RevocationMode = X509RevocationMode.Online;
Console.WriteLine ("Chain revocation flag: {0}", ch.ChainPolicy.RevocationFlag);
Console.WriteLine ("Chain revocation mode: {0}", ch.ChainPolicy.RevocationMode);
Console.WriteLine ("Chain verification flag: {0}", ch.ChainPolicy.VerificationFlags);
Console.WriteLine ("Chain verification time: {0}", ch.ChainPolicy.VerificationTime);
Console.WriteLine ("Chain status length: {0}", ch.ChainStatus.Length);
Console.WriteLine ("Chain application policy count: {0}", ch.ChainPolicy.ApplicationPolicy.Count);
Console.WriteLine ("Chain certificate policy count: {0} {1}", ch.ChainPolicy.CertificatePolicy.Count, Environment.NewLine);
только вот где там указать какой именно сертификат... ch.Build (certificate); тут что то не совсем понятно

Добавлено через 14 часов 48 минут
Есть такой класс.. так как же с помощи него взять данные CRL файла?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
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
        }
Добавлено через 51 минуту
Вот например именно с этого файла http://imageshost.ru/photo/41416/id2590874.html
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.12.2012, 10:41
Ответы с готовыми решениями:

Как прочитать данные из файла?
Здравствуйте уважаемые гуру своего дела! помогите решить задачу по чтению данных из файла формата...

Как прочитать данные из файла?
1 Задания. Надо реализовать три операция сложения, умножения и сравнения комплексных чисел (ООП) с...

Как прочитать данные из файла в интернете
Пишу программу которая считывает данные построчно из текстового файла. Есть текстовый файл с...

Как прочитать данные из файла в массив
Необходимо прочитать данные из файла input.txt файл представляет из себя: 101100 010110 111111...

0
06.12.2012, 10:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.12.2012, 10:41
Помогаю со студенческими работами здесь

Как прочитать данные из *.bin файла?
Вопрос такой: есть бинарный файл (*.bin) со словарной базой в нем. Каким образом можно прочитать из...

Как из Delphi прочитать данные из Excel-файла?
Субж. Если можно, по подробнее.

Как прочитать из файла данные различных типов?
Имеется файл такого вида: Надо написать программу, которая прочтёт эти данные из файла и...

Как прочитать из файла данные в List<double>
Как прочитать из файла данные в List&lt;double&gt;, чтобы это список был доступен в другом классе?

Как прочитать данные из файла и занести их в класс
Здравствуйте. Мне необходима ваша помощь в следующем вопросе. У меня имеется файл текстовый файл,в...

Как прочитать данные из файла и создать HTML элементы с ними
Нужно прочитать локальный файл и создать на странице элементы с информацией из этого документа....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru