rucades 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/ext/rucades/cplib/Blob.h +205 -163
  3. data/ext/rucades/cplib/CPPEnrollEnumerations.h +603 -0
  4. data/ext/rucades/cplib/DateTime.h +506 -455
  5. data/ext/rucades/cplib/StringProxy.h +229 -187
  6. data/ext/rucades/cplib/cpstldll.h +225 -0
  7. data/ext/rucades/extconf.rb +28 -12
  8. data/ext/rucades/rucades_about.cpp +3 -3
  9. data/ext/rucades/rucades_about.h +1 -1
  10. data/ext/rucades/rucades_algorithm.cpp +2 -2
  11. data/ext/rucades/rucades_algorithm.h +2 -2
  12. data/ext/rucades/rucades_attribute.cpp +3 -3
  13. data/ext/rucades/rucades_attribute.h +2 -2
  14. data/ext/rucades/rucades_attributes.cpp +2 -2
  15. data/ext/rucades/rucades_attributes.h +2 -2
  16. data/ext/rucades/rucades_basic_constraints.cpp +3 -3
  17. data/ext/rucades/rucades_basic_constraints.h +2 -2
  18. data/ext/rucades/rucades_blobs.cpp +3 -3
  19. data/ext/rucades/rucades_blobs.h +2 -2
  20. data/ext/rucades/rucades_certificate.cpp +3 -3
  21. data/ext/rucades/rucades_certificate.h +2 -2
  22. data/ext/rucades/rucades_certificate_status.cpp +2 -2
  23. data/ext/rucades/rucades_certificate_status.h +2 -2
  24. data/ext/rucades/rucades_certificates.cpp +8 -8
  25. data/ext/rucades/rucades_certificates.h +2 -2
  26. data/ext/rucades/rucades_crl.cpp +1 -1
  27. data/ext/rucades/rucades_crl.h +1 -1
  28. data/ext/rucades/rucades_eku.cpp +2 -2
  29. data/ext/rucades/rucades_eku.h +2 -2
  30. data/ext/rucades/rucades_ekus.cpp +3 -3
  31. data/ext/rucades/rucades_ekus.h +2 -2
  32. data/ext/rucades/rucades_encoded_data.cpp +1 -1
  33. data/ext/rucades/rucades_encoded_data.h +1 -1
  34. data/ext/rucades/rucades_enveloped_data.cpp +1 -1
  35. data/ext/rucades/rucades_enveloped_data.h +1 -1
  36. data/ext/rucades/rucades_extended_key_usage.cpp +2 -2
  37. data/ext/rucades/rucades_extended_key_usage.h +2 -2
  38. data/ext/rucades/rucades_hashed_data.cpp +1 -1
  39. data/ext/rucades/rucades_hashed_data.h +1 -1
  40. data/ext/rucades/rucades_key_usage.cpp +3 -3
  41. data/ext/rucades/rucades_key_usage.h +2 -2
  42. data/ext/rucades/rucades_oid.cpp +3 -3
  43. data/ext/rucades/rucades_oid.h +2 -2
  44. data/ext/rucades/rucades_private_key.cpp +3 -3
  45. data/ext/rucades/rucades_private_key.h +2 -2
  46. data/ext/rucades/rucades_public_key.cpp +2 -2
  47. data/ext/rucades/rucades_public_key.h +2 -2
  48. data/ext/rucades/rucades_raw_signature.cpp +2 -2
  49. data/ext/rucades/rucades_raw_signature.h +2 -2
  50. data/ext/rucades/rucades_recipients.cpp +2 -2
  51. data/ext/rucades/rucades_recipients.h +2 -2
  52. data/ext/rucades/rucades_signature_status.cpp +2 -2
  53. data/ext/rucades/rucades_signature_status.h +2 -2
  54. data/ext/rucades/rucades_signed_data.cpp +7 -7
  55. data/ext/rucades/rucades_signed_data.h +1 -1
  56. data/ext/rucades/rucades_signed_xml.cpp +2 -2
  57. data/ext/rucades/rucades_signed_xml.h +1 -1
  58. data/ext/rucades/rucades_signer.cpp +8 -8
  59. data/ext/rucades/rucades_signer.h +2 -2
  60. data/ext/rucades/rucades_signers.cpp +2 -2
  61. data/ext/rucades/rucades_signers.h +2 -2
  62. data/ext/rucades/rucades_store.cpp +2 -2
  63. data/ext/rucades/rucades_store.h +1 -1
  64. data/ext/rucades/rucades_symmetric_algorithm.cpp +3 -3
  65. data/ext/rucades/rucades_symmetric_algorithm.h +2 -2
  66. data/ext/rucades/rucades_version.cpp +2 -2
  67. data/ext/rucades/rucades_version.h +2 -2
  68. data/ext/rucades/stdafx.h +207 -121
  69. data/lib/rucades/version.rb +1 -1
  70. data/samples/encrypt_decrypt.rb +17 -14
  71. data/samples/sign_verify.rb +14 -17
  72. data/sig/rucades.rbs +850 -1
  73. metadata +3 -4
  74. data/ext/rucades/cpstldll.h +0 -183
  75. data/ext/rucades/errormsg.cpp +0 -561
  76. data/ext/rucades/errormsg.h +0 -31
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4fd27dc9278b75b81b8fc96898ce331306aecc605c1a835c7faf489636bd7fb7
4
- data.tar.gz: df1a0809662b65193fefc70717625ddf113b579c9834b7c5280eef4027636498
3
+ metadata.gz: f20012edbe79078d7c40337eae415bcb8b2aa8cc59c57052dc5a139b40ea5c44
4
+ data.tar.gz: d81d7c13b4b0a43886dd1c8156aec45f68fc2e30299125bd45f74fa03d9adddc
5
5
  SHA512:
6
- metadata.gz: 0c13087b8bec3848b95fda4c4b30f5036cab7e7f7b5a6b41ca59668d66fdd2c17ffec3d5f034230dd9ec31aec8c83ad6e5359ec20812ef1b82d6bfb7c0cc3e60
7
- data.tar.gz: 8e1209804fd594a1959685c2c5196d3f374cffac2dfeae3072d41bf9313c1470fd22a0804c57bec6a5a501f602308cd9e362c6c3f121f8265cad261bc9d6cfb9
6
+ metadata.gz: 4922167b9c9172f743806818a31b115ceb235177c3af6772873c40620711286ab499ad0ad4ec6c7db431398eda27a4be448166adf2f3089d3778b6f7d4171334
7
+ data.tar.gz: c482394a102b42cb6f78addb317f3ed014c7c7ef080e4e83af1974c36b60145dbea1ff04fb1af418eee83c210749f7f7909370d4b908846c7d56d549a019c0c8
@@ -1,26 +1,68 @@
1
1
  /*
2
- * Copyright(C) 2004 ������ ���
2
+ * Copyright (c) 2026, компания КриптоПро
3
3
  *
4
- * ���� ���� �������� ����������, ����������
5
- * �������������� �������� ������ ���.
4
+ * Разрешается повторное распространение и использование как в виде исходного
5
+ * кода, так и в двоичной форме, с изменениями или без, при соблюдении
6
+ * следующих условий:
6
7
  *
7
- * ����� ����� ����� ����� �� ����� ���� �����������,
8
- * ����������, ���������� �� ������ �����,
9
- * ������������ ��� �������������� ����� ��������,
10
- * ���������������, �������� �� ���� � ��� ��
11
- * ����� ������������ ������� ��� ����������������
12
- * ���������� ���������� ��������� ������ ���.
13
- */
14
-
15
- /*!
16
- * \file $RCSfile$
17
- * \version $Revision$
18
- * \date $Date:: $
19
- * \author $Author$
8
+ * 1) При повторном распространении исходного кода должно оставаться
9
+ * указанное выше уведомление об авторском праве, этот список условий
10
+ * и последующий отказ от гарантий.
11
+ *
12
+ * 2) При повторном распространении двоичного кода должна сохраняться
13
+ * указанная выше информация об авторском праве, этот список условий
14
+ * и последующий отказ от гарантий в документации и/или в других материалах,
15
+ * поставляемых при распространении.
16
+ *
17
+ * ЭТА ПРОГРАММА ПРЕДОСТАВЛЕНА БЕСПЛАТНО ВЛАДЕЛЬЦАМИ АВТОРСКИХ ПРАВ И/ИЛИ
18
+ * ДРУГИМИ СТОРОНАМИ "КАК ОНА ЕСТЬ" БЕЗ КАКОГО-ЛИБО ВИДА ГАРАНТИЙ, ВЫРАЖЕННЫХ
19
+ * ЯВНО ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ИМИ, ПОДРАЗУМЕВАЕМЫЕ
20
+ * ГАРАНТИИ КОММЕРЧЕСКОЙ ЦЕННОСТИ И ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ. НИ В КОЕМ
21
+ * СЛУЧАЕ, ЕСЛИ НЕ ТРЕБУЕТСЯ СООТВЕТСТВУЮЩИМ ЗАКОНОМ, ИЛИ НЕ УСТАНОВЛЕНО В
22
+ * УСТНОЙ ФОРМЕ, НИ ОДИН ВЛАДЕЛЕЦ АВТОРСКИХ ПРАВ И НИ ОДНО ДРУГОЕ ЛИЦО, КОТОРОЕ
23
+ * МОЖЕТ ИЗМЕНЯТЬ И/ИЛИ ПОВТОРНО РАСПРОСТРАНЯТЬ ПРОГРАММУ, КАК БЫЛО СКАЗАНО
24
+ * ВЫШЕ, НЕ НЕСЁТ ОТВЕТСТВЕННОСТИ, ВКЛЮЧАЯ ЛЮБЫЕ ОБЩИЕ, СЛУЧАЙНЫЕ, СПЕЦИАЛЬНЫЕ
25
+ * ИЛИ ПОСЛЕДОВАВШИЕ УБЫТКИ, ВСЛЕДСТВИЕ ИСПОЛЬЗОВАНИЯ ИЛИ НЕВОЗМОЖНОСТИ
26
+ * ИСПОЛЬЗОВАНИЯ ПРОГРАММЫ (ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ПОТЕРЕЙ ДАННЫХ,
27
+ * ИЛИ ДАННЫМИ, СТАВШИМИ НЕПРАВИЛЬНЫМИ, ИЛИ ПОТЕРЯМИ, ПРИНЕСЕННЫМИ ИЗ-ЗА ВАС ИЛИ
28
+ * ТРЕТЬИХ ЛИЦ, ИЛИ ОТКАЗОМ ПРОГРАММЫ РАБОТАТЬ СОВМЕСТНО С ДРУГИМИ ПРОГРАММАМИ),
29
+ * ДАЖЕ ЕСЛИ ТАКОЙ ВЛАДЕЛЕЦ ИЛИ ДРУГОЕ ЛИЦО БЫЛИ ИЗВЕЩЕНЫ О ВОЗМОЖНОСТИ
30
+ * ТАКИХ УБЫТКОВ.
31
+ *
32
+ * Copyright (c) 2026, CryptoPro Company All rights reserved.
33
+ *
34
+ * Redistribution and use in source and binary forms, with or without
35
+ * modification, are permitted provided that the following conditions are met:
36
+ *
37
+ * 1) Redistributions of source code must retain the above copyright notice,
38
+ * this list of conditions and the following disclaimer.
20
39
  *
21
- * \brief ����� �����.
40
+ * 2) Redistributions in binary form must reproduce the above copyright notice,
41
+ * this list of conditions and the following disclaimer in the documentation
42
+ * and/or other materials provided with the distribution.
43
+ *
44
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
45
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
46
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
47
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
48
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
49
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
50
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
51
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
52
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
53
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
54
+ * THE POSSIBILITY OF SUCH DAMAGE.
22
55
  */
23
56
 
57
+ /*!
58
+ * \file $RCSfile$
59
+ * \version $Revision$
60
+ * \date $Date:: $
61
+ * \author $Author$
62
+ *
63
+ * \brief Класс блоба.
64
+ */
65
+
24
66
  #ifndef _CPLIB_BLOB_H_INCLUDED
25
67
  #define _CPLIB_BLOB_H_INCLUDED
26
68
 
@@ -30,162 +72,162 @@
30
72
 
31
73
  namespace CryptoPro {
32
74
 
33
- /**
34
- * \class CBlob Blob.h <cplib/Blob.h>
35
- * \brief �������� ������������������ ������������ �����.
36
- *
37
- * ����� ������������ ��� �������� �������� ������������������.
38
- * ����� �������������� ��� ��� �������� �������������� ASN.1 ��������,
39
- * ��� � ��� �������� ������������ �������� ������.
40
- *
41
- */
42
- class CPLIB_CLASS CBlob
43
- {
44
- public:
45
- /// ������� ������ ������
46
- CBlob();
47
75
  /**
48
- * \brief ������� �������������� ������
76
+ * \class CBlob Blob.h <cplib/Blob.h>
77
+ * \brief Двоичная последовательность произвольной длины.
49
78
  *
50
- * \param ptr [in] ��������� �� ������ ������ ���������� � ������
51
- * \param length [in] ����� ������ ������
52
- * \remarks ��� ������������� ������ ������� ������ ��� ��������
53
- * ������ � �������� �� ���� �� ���������� � ��������� ptr �����.
54
- */
55
- CBlob(const unsigned char *ptr, unsigned long length );
56
- /**
57
- * \brief ������� ������
79
+ * Класс предназначен для хранения двоичной последовательности.
80
+ * Может использоваться как для хранения закодированных ASN.1 структур,
81
+ * так и для хранения произвольных двоичных данных.
58
82
  *
59
- * \param length [in] ����� ������ � ������
60
- * \remarks ��� ������������� ������ ������� ��������� ���������� ������
61
- * ��� ������.
62
83
  */
63
- CBlob( unsigned long length );
64
- /// ���������� ������.
65
- ~CBlob();
84
+ class CPLIB_CLASS CBlob
85
+ {
86
+ public:
87
+ /// Создает пустой объект
88
+ CBlob();
89
+ /**
90
+ * \brief Создает и инициализирует объект
91
+ *
92
+ * \param ptr [in] указатель на начало данных помещаемых в объект
93
+ * \param length [in] длина данных в байтах
94
+ * \remarks При инициализации объект отводит память под хранимые
95
+ * данные и копирует их туда из указанного в агрументе ptr места.
96
+ */
97
+ CBlob(const unsigned char* ptr, unsigned long length);
98
+ /**
99
+ * \brief Создает объект
100
+ *
101
+ * \param length [in] длина данных в байтах
102
+ * \remarks При инициализации объект отводит указанное количество памяти
103
+ * под данные.
104
+ */
105
+ CBlob(unsigned long length);
106
+ /// Уничтожает объект.
107
+ ~CBlob();
66
108
 
67
- /**
68
- * \brief ������� ����� ��������� �������.
69
- *
70
- * \param src [in] ������, ����� �������� ���������
71
- */
72
- CBlob( const CBlob &src );
73
- /**
74
- * \brief �������� �������� ������ �������.
75
- *
76
- * \param src [in] ������, ������� ���������� �������
77
- * \return ������ �� ������� ������.
78
- */
79
- CBlob& operator=( const CBlob &src );
109
+ /**
110
+ * \brief Создает копию заданного объекта.
111
+ *
112
+ * \param src [in] объект, копия которого создается
113
+ */
114
+ CBlob(const CBlob& src);
115
+ /**
116
+ * \brief Копирует заданный объект в текущий.
117
+ *
118
+ * \param src [in] объект, который копируется в текущий
119
+ * \return Ссылка на текущий объект.
120
+ */
121
+ CBlob& operator=(const CBlob& src);
80
122
 
81
- /**
82
- * \brief �������� ������������ (�������������).
83
- *
84
- * \param right [in] ������, �������������� ��������
85
- * \remarks ��� ���������� ���� �������� ����� �������� ������� ��������������
86
- * ������, ������������� �� ��������� �������.
87
- * \return ������ �� ������� ������.
88
- */
89
- CBlob& operator+=( const CBlob &right );
90
- /**
91
- * \brief �������� �������� �� ���������.
92
- *
93
- * \param src [in] ������ ��� ���������
94
- * \remarks ������������ ��������� ��������� ��������.
95
- * \return true ������ ���������, false ������ ������.
96
- */
97
- bool operator==( const CBlob &src ) const;
98
- /**
99
- * \brief �������� �������� �� �����������.
100
- *
101
- * \param src [in] ������ ��� ���������
102
- * \remarks ������������ ��������� ��������� ��������.
103
- * \return true ������ �����������, false ������ ������.
104
- */
105
- bool operator!=( const CBlob &src ) const;
106
- /**
107
- * \brief �������� ������������������� ��������� (������).
108
- *
109
- * \param src [in] ������ ��� ���������
110
- * \return true ������ ���� ������� ������ ������, false ������ ������.
111
- */
112
- bool operator<( const CBlob &src ) const;
113
- /**
114
- * \brief �������� ������������������� ��������� (������ ��� �����).
115
- *
116
- * \param src [in] ������ ��� ���������
117
- * \return true ������ ���� ������� ������ ������ ��� �����, false ������ ������.
118
- */
119
- bool operator<=( const CBlob &src ) const;
120
- /**
121
- * \brief �������� ������������������� ��������� (������).
122
- *
123
- * \param src [in] ������ ��� ���������
124
- * \return true ������ ���� ������� ������ ������, false ������ ������.
125
- */
126
- bool operator>( const CBlob &src ) const;
127
- /**
128
- * \brief �������� ������������������� ��������� (������ ��� �����).
129
- *
130
- * \param src [in] ������ ��� ���������
131
- * \return true ������ ���� ������� ������ ������ ��� �����, false ������ ������.
132
- */
133
- bool operator>=( const CBlob &src ) const;
123
+ /**
124
+ * \brief Операция конкатенации (присоединения).
125
+ *
126
+ * \param right [in] объект, присоединяемый к текущему
127
+ * \remarks При выполнении этой операции в конец текущего объекта присоединяются
128
+ * данные, скопированные из заданного объекта.
129
+ * \return Ссылка на текущий объект.
130
+ */
131
+ CBlob& operator+=(const CBlob& right);
132
+ /**
133
+ * \brief Операция проверки на равенство.
134
+ *
135
+ * \param src [in] объект для сравнения
136
+ * \remarks Производится побитовое сравнение объектов.
137
+ * \return true в случае равенства, false в другом случае.
138
+ */
139
+ bool operator==(const CBlob& src) const;
140
+ /**
141
+ * \brief Операция проверки на неравенство.
142
+ *
143
+ * \param src [in] объект для сравнения
144
+ * \remarks Производится побитовое сравнение объектов.
145
+ * \return true в случае неравенства, false в другом случае.
146
+ */
147
+ bool operator!=(const CBlob& src) const;
148
+ /**
149
+ * \brief Операция лексикографического сравнения (меньше).
150
+ *
151
+ * \param src [in] объект для сравнения
152
+ * \return true в случае если текущий объект меньше, false в другом случае.
153
+ */
154
+ bool operator<(const CBlob& src) const;
155
+ /**
156
+ * \brief Операция лексикографического сравнения (меньше или равно).
157
+ *
158
+ * \param src [in] объект для сравнения
159
+ * \return true в случае если текущий объект меньше или равен, false в другом случае.
160
+ */
161
+ bool operator<=(const CBlob& src) const;
162
+ /**
163
+ * \brief Операция лексикографического сравнения (больше).
164
+ *
165
+ * \param src [in] объект для сравнения
166
+ * \return true в случае если текущий объект больше, false в другом случае.
167
+ */
168
+ bool operator>(const CBlob& src) const;
169
+ /**
170
+ * \brief Операция лексикографического сравнения (больше или равно).
171
+ *
172
+ * \param src [in] объект для сравнения
173
+ * \return true в случае если текущий объект больше или равен, false в другом случае.
174
+ */
175
+ bool operator>=(const CBlob& src) const;
134
176
 
135
- /**
136
- * \brief ��������� ������� �������.
137
- *
138
- * \param length [in] ����� ����� ������
139
- * \remarks ���� length ������ ������� �����, �� ������ ������
140
- * �������� �� ���� �� ������� ����� �� ������ ������ ��������.
141
- * ���� length ������ ������� �����, �� ����������� ������ ��
142
- * �������� �� 0 �� length-1.
143
- */
144
- void resize_to( unsigned long length );
145
- /**
146
- * \brief �������� ������ ��������.
147
- *
148
- * \param right [in] ������ ��� ������
149
- * \remarks ������� �� ���������� ����������.
150
- */
151
- void swap( CBlob &right ) throw();
152
- /// �������������� ������� ���� ������.
153
- void reverse();
154
- /**
155
- * \brief �������� �������
156
- *
157
- * ������ ��������� ���������� ������� �����
158
- */
159
- void clear();
160
- /**
161
- * \brief ��������� ������ ������
162
- *
163
- * \param ptr [in] ��������� �� ������ ������
164
- * \param length [in] ����� ������
165
- */
166
- void assign(const unsigned char *ptr, unsigned long length );
167
- void readFromFile( const char *name );
168
- void writeToFile( const char *name ) const;
169
- void readFromFile( const wchar_t *name );
170
- void writeToFile( const wchar_t *name ) const;
171
- void readFromHexString( const char *str );
172
- CStringProxy writeToHexString(unsigned long SpaceInterval = 0) const;
177
+ /**
178
+ * \brief Изменение размера объекта.
179
+ *
180
+ * \param length [in] новая длина данных
181
+ * \remarks Если length больше текущей длины, то старые данные
182
+ * в позициях от нуля до текущей длины не меняют своего значения.
183
+ * Если length меньше текущей длины, то сохраняются данные на
184
+ * позициях от 0 до length-1.
185
+ */
186
+ void resize_to(unsigned long length);
187
+ /**
188
+ * \brief Операция обмена объектов.
189
+ *
190
+ * \param right [in] объект для обмена
191
+ * \remarks Функция не генерирует исключений.
192
+ */
193
+ void swap(CBlob& right) throw();
194
+ /// Инвертирование порядка байт данных.
195
+ void reverse();
196
+ /**
197
+ * \brief Очищение объекта
198
+ *
199
+ * Объект очищается и становится нулевой длины
200
+ */
201
+ void clear();
202
+ /**
203
+ * \brief Помещение данных в объект
204
+ *
205
+ * \param ptr [in] указатель на начало данных
206
+ * \param length [in] длина данных
207
+ */
208
+ void assign(const unsigned char* ptr, unsigned long length);
209
+ void readFromFile(const char* name);
210
+ void writeToFile(const char* name) const;
211
+ void readFromFile(const wchar_t* name);
212
+ void writeToFile(const wchar_t* name) const;
213
+ void readFromHexString(const char* str);
214
+ CStringProxy writeToHexString(unsigned long SpaceInterval = 0) const;
173
215
 
174
- unsigned long cbData() const;
175
- unsigned char* pbData() const;
176
- private:
177
- unsigned long m_cbData;
178
- unsigned char *m_pbData;
179
- };
216
+ unsigned long cbData() const;
217
+ unsigned char* pbData() const;
218
+ private:
219
+ unsigned long m_cbData;
220
+ unsigned char* m_pbData;
221
+ };
180
222
 
181
- // VS2008 bug/feature: ������� ���������������� �������� ��������� �������
182
- // (����� - ����������) ������ ���������� ������� ����������������� �������
183
- // �������� ������ (����� - CDllList<>), ����� �� DLL �� ����� ��������������
184
- // ������ ��������� �������.
185
- EXPIMP_CDLLLIST_ITERATORS(CBlob, CPLIB_EXTERN_TEMPLATE, CPLIB_CLASS);
223
+ // VS2008 bug/feature: Экспорт инстанцированных шаблонов вложенных классов
224
+ // (здесь - итераторов) должен предварять экспорт инстанцированного шаблона
225
+ // внешнего класса (здесь - CDllList<>), иначе из DLL не будут экспортированы
226
+ // методы вложенных классов.
227
+ EXPIMP_CDLLLIST_ITERATORS(CBlob, CPLIB_EXTERN_TEMPLATE, CPLIB_CLASS);
186
228
 
187
- /// ������ �������� CBlob
188
- class CPLIB_CLASS CBlobList: public CDllList<CBlob> {};
229
+ /// Список объектов CBlob
230
+ class CPLIB_CLASS CBlobList : public CDllList<CBlob> {};
189
231
 
190
232
  } // namespace CryptoPro
191
233