rucades 0.3.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 (87) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +3 -0
  3. data/.rubocop.yml +18 -0
  4. data/Gemfile +16 -0
  5. data/LICENSE.txt +21 -0
  6. data/README.md +132 -0
  7. data/Rakefile +21 -0
  8. data/ext/rucades/cplib/Blob.h +192 -0
  9. data/ext/rucades/cplib/DateTime.h +518 -0
  10. data/ext/rucades/cplib/StringProxy.h +281 -0
  11. data/ext/rucades/cpstldll.h +183 -0
  12. data/ext/rucades/errormsg.cpp +561 -0
  13. data/ext/rucades/errormsg.h +31 -0
  14. data/ext/rucades/extconf.rb +91 -0
  15. data/ext/rucades/rucades.cpp +90 -0
  16. data/ext/rucades/rucades.h +14 -0
  17. data/ext/rucades/rucades_about.cpp +75 -0
  18. data/ext/rucades/rucades_about.h +26 -0
  19. data/ext/rucades/rucades_algorithm.cpp +54 -0
  20. data/ext/rucades/rucades_algorithm.h +28 -0
  21. data/ext/rucades/rucades_attribute.cpp +112 -0
  22. data/ext/rucades/rucades_attribute.h +30 -0
  23. data/ext/rucades/rucades_attributes.cpp +62 -0
  24. data/ext/rucades/rucades_attributes.h +28 -0
  25. data/ext/rucades/rucades_basic_constraints.cpp +67 -0
  26. data/ext/rucades/rucades_basic_constraints.h +27 -0
  27. data/ext/rucades/rucades_blobs.cpp +46 -0
  28. data/ext/rucades/rucades_blobs.h +25 -0
  29. data/ext/rucades/rucades_certificate.cpp +182 -0
  30. data/ext/rucades/rucades_certificate.h +59 -0
  31. data/ext/rucades/rucades_certificate_status.cpp +36 -0
  32. data/ext/rucades/rucades_certificate_status.h +23 -0
  33. data/ext/rucades/rucades_certificates.cpp +140 -0
  34. data/ext/rucades/rucades_certificates.h +31 -0
  35. data/ext/rucades/rucades_const.cpp +241 -0
  36. data/ext/rucades/rucades_crl.cpp +84 -0
  37. data/ext/rucades/rucades_crl.h +29 -0
  38. data/ext/rucades/rucades_eku.cpp +55 -0
  39. data/ext/rucades/rucades_eku.h +26 -0
  40. data/ext/rucades/rucades_ekus.cpp +43 -0
  41. data/ext/rucades/rucades_ekus.h +27 -0
  42. data/ext/rucades/rucades_encoded_data.cpp +41 -0
  43. data/ext/rucades/rucades_encoded_data.h +23 -0
  44. data/ext/rucades/rucades_enveloped_data.cpp +122 -0
  45. data/ext/rucades/rucades_enveloped_data.h +33 -0
  46. data/ext/rucades/rucades_extended_key_usage.cpp +53 -0
  47. data/ext/rucades/rucades_extended_key_usage.h +27 -0
  48. data/ext/rucades/rucades_hashed_data.cpp +90 -0
  49. data/ext/rucades/rucades_hashed_data.h +31 -0
  50. data/ext/rucades/rucades_key_usage.cpp +116 -0
  51. data/ext/rucades/rucades_key_usage.h +33 -0
  52. data/ext/rucades/rucades_oid.cpp +70 -0
  53. data/ext/rucades/rucades_oid.h +30 -0
  54. data/ext/rucades/rucades_private_key.cpp +86 -0
  55. data/ext/rucades/rucades_private_key.h +31 -0
  56. data/ext/rucades/rucades_public_key.cpp +59 -0
  57. data/ext/rucades/rucades_public_key.h +28 -0
  58. data/ext/rucades/rucades_raw_signature.cpp +42 -0
  59. data/ext/rucades/rucades_raw_signature.h +26 -0
  60. data/ext/rucades/rucades_recipients.cpp +63 -0
  61. data/ext/rucades/rucades_recipients.h +28 -0
  62. data/ext/rucades/rucades_signature_status.cpp +35 -0
  63. data/ext/rucades/rucades_signature_status.h +23 -0
  64. data/ext/rucades/rucades_signed_data.cpp +253 -0
  65. data/ext/rucades/rucades_signed_data.h +41 -0
  66. data/ext/rucades/rucades_signed_xml.cpp +87 -0
  67. data/ext/rucades/rucades_signed_xml.h +29 -0
  68. data/ext/rucades/rucades_signer.cpp +157 -0
  69. data/ext/rucades/rucades_signer.h +45 -0
  70. data/ext/rucades/rucades_signers.cpp +43 -0
  71. data/ext/rucades/rucades_signers.h +27 -0
  72. data/ext/rucades/rucades_store.cpp +78 -0
  73. data/ext/rucades/rucades_store.h +34 -0
  74. data/ext/rucades/rucades_symmetric_algorithm.cpp +107 -0
  75. data/ext/rucades/rucades_symmetric_algorithm.h +30 -0
  76. data/ext/rucades/rucades_tools.cpp +18 -0
  77. data/ext/rucades/rucades_version.cpp +60 -0
  78. data/ext/rucades/rucades_version.h +24 -0
  79. data/ext/rucades/stdafx.h +190 -0
  80. data/lib/rucades/version.rb +9 -0
  81. data/lib/rucades.rb +36 -0
  82. data/samples/encrypt_decrypt.rb +25 -0
  83. data/samples/sign_verify.rb +28 -0
  84. data/samples/sign_verify_hash.rb +30 -0
  85. data/samples/sign_verify_xml.rb +44 -0
  86. data/sig/rucades.rbs +4 -0
  87. metadata +156 -0
@@ -0,0 +1,281 @@
1
+ /*
2
+ * Copyright(C) 2004 ������ ���
3
+ *
4
+ * ���� ���� �������� ����������, ����������
5
+ * �������������� �������� ������ ���.
6
+ *
7
+ * ����� ����� ����� ����� �� ����� ���� �����������,
8
+ * ����������, ���������� �� ������ �����,
9
+ * ������������ ��� �������������� ����� ��������,
10
+ * ���������������, �������� �� ���� � ��� ��
11
+ * ����� ������������ ������� ��� ����������������
12
+ * ���������� ���������� � ��������� ������ ���.
13
+ */
14
+
15
+ /*!
16
+ * \file $RCSfile$
17
+ * \version $Revision$
18
+ * \date $Date:: $
19
+ * \author $Author$
20
+ *
21
+ * \brief ������-������� ��� �����
22
+ */
23
+
24
+ #ifndef _STRINGPROXY_H_INCLUDED
25
+ #define _STRINGPROXY_H_INCLUDED
26
+
27
+ #if !defined CPLIB_DLL_DEFINES
28
+ # define CPLIB_DLL_DEFINES
29
+ # if defined _WIN32 && !defined CRYPTCP && !defined CPLIB_STATIC
30
+ # if defined CPLIB_DLL
31
+ # define CPLIB_CLASS __declspec(dllexport)
32
+ # define CPLIB_API __declspec(dllexport)
33
+ # define CPLIB_DATA __declspec(dllexport)
34
+ # define CPLIB_EXTERN_TEMPLATE
35
+ # else // defined CPLIB_DLL
36
+ # define CPLIB_CLASS __declspec(dllimport)
37
+ # define CPLIB_API __declspec(dllimport)
38
+ # define CPLIB_DATA __declspec(dllimport)
39
+ # define CPLIB_EXTERN_TEMPLATE extern
40
+ # ifndef CP_IGNORE_PRAGMA_MANIFEST
41
+ # include "cplib_assembly.h"
42
+ # ifdef _WIN64
43
+ # pragma comment(linker,"/manifestdependency:\"type='win32' " \
44
+ "name='" CPLIB_ASSEMBLY_NAME_X64 "' " \
45
+ "version='" CPLIB_ASSEMBLY_VERSION_X64 "' " \
46
+ "processorArchitecture='amd64' " \
47
+ "language='*' " \
48
+ "publicKeyToken='" CPLIB_ASSEMBLY_PUBLICKEYTOKEN_X64 "'\"")
49
+ # else
50
+ # pragma comment(linker,"/manifestdependency:\"type='win32' " \
51
+ "name='" CPLIB_ASSEMBLY_NAME_X86 "' " \
52
+ "version='" CPLIB_ASSEMBLY_VERSION_X86 "' " \
53
+ "processorArchitecture='x86' " \
54
+ "language='*' " \
55
+ "publicKeyToken='" CPLIB_ASSEMBLY_PUBLICKEYTOKEN_X86 "'\"")
56
+ # endif
57
+ # endif
58
+ # endif // !defined CPLIB_DLL
59
+ # else // defined _WIN32 && !defined CRYPTCP && !defined CPLIB_STATIC
60
+ # define CPLIB_CLASS
61
+ # define CPLIB_API
62
+ # define CPLIB_DATA
63
+ # define CPLIB_EXTERN_TEMPLATE
64
+ # define NO_EXPIMP_CDLLLIST_ITERATORS
65
+ # endif // !defined _WIN32 || defined CRYPTCP || defined CPLIB_STATIC
66
+ #endif // !defined CPLIB_DLL_DEFINES
67
+
68
+ #include <string>
69
+ #ifndef wstring
70
+ namespace std {
71
+ typedef basic_string<wchar_t> wstring;
72
+ }
73
+ #endif //wstring
74
+
75
+ #include <cpstldll.h>
76
+
77
+ namespace CryptoPro {
78
+
79
+ /**
80
+ * \class CStringProxy StringProxy.h <cplib/StringProxy.h>
81
+ * \brief ������-��������� ��� �����.
82
+ *
83
+ * � �������� ����� ������ ������� �������� � ������������
84
+ * ���� CryptoPro ���������� ANSI ������. ���� ����� ������ - ����������
85
+ * ��������� ������������ ������, ���������� ��� ������ (������ ��������� ������
86
+ * ������������ ����������, � ������������� ������ ��� ��).
87
+ *
88
+ * ��� ������� ������������� ������� �� ������������ ���� CryptoPro
89
+ * ��� ������������� ��������������� ������������ ���� �����. � ������
90
+ * ������������� ������� \link CryptoPro::CStringProxy::c_str c_str() \endlink,
91
+ * ������������ ��������� �� c-������ ( �� �������� � std::string ).
92
+ * ������ ����������� ������������� �������, ������������ ������
93
+ * ������ CStringProxy:
94
+ *
95
+ * \code
96
+ *
97
+ * CStringProxy f();
98
+ *
99
+ * std::string s = f().c_str();
100
+ * CString atls = f().c_str();
101
+ *
102
+ * \endcode
103
+ *
104
+ * ����������� ������������ ���� ����� ��������� �������:
105
+ *
106
+ * \code
107
+ * const char* s = f().c_str();
108
+ * \endcode
109
+ *
110
+ * ���������� ������ �� ������� ��������� s ����� ������������, ���������
111
+ * f() ���������� ��������� ������, ������� ������������ ����� �������� ��
112
+ * �������. ��������� ��� ���������:
113
+ *
114
+ * \code
115
+ *
116
+ * // ��������� �����
117
+ * size_t len = strlen(f());
118
+ *
119
+ * // ��������� ������ ��� ������
120
+ * const char* s = (char*)malloc(len+1);
121
+ * if(!s)
122
+ * error("not enough memory");
123
+ *
124
+ * // ��������� ������ � ����������� � ���������� ������
125
+ * strncpy(s,f(),len+1);
126
+ *
127
+ * \endcode
128
+ *
129
+ * \sa CWStringProxy
130
+ */
131
+ class CPLIB_CLASS
132
+ CStringProxy
133
+ {
134
+ public:
135
+ /**
136
+ * \brief ������� � �������������� ������
137
+ *
138
+ * \param str [in] ��������� �� ������ ��������
139
+ */
140
+ CStringProxy( const char* str = "");
141
+ /**
142
+ * \brief ������� ����� ��������� �������.
143
+ *
144
+ * \param src [in] ������, ����� �������� ���������
145
+ */
146
+ CStringProxy( const CStringProxy& src);
147
+ /**
148
+ * \brief �������� �������� ������ � �������.
149
+ *
150
+ * \param src [in] ������, ������� ���������� � �������
151
+ * \return ������ �� ������� ������.
152
+ */
153
+ CStringProxy& operator=( const CStringProxy& src);
154
+ /// ���������� ������.
155
+ ~CStringProxy();
156
+
157
+ /// �������� ������ � ���� const char*
158
+ const char* c_str() const;
159
+ private:
160
+ #ifndef UNIX
161
+ #pragma warning(push)
162
+ #pragma warning(disable: 4251)
163
+ #endif
164
+ std::string *m_pValue;
165
+ #ifndef UNIX
166
+ #pragma warning(pop)
167
+ #endif
168
+ };
169
+
170
+ /**
171
+ * \class CWStringProxy StringProxy.h <cplib/StringProxy.h>
172
+ * \brief ������-��������� ��� �����.
173
+ *
174
+ * � �������� ����� ������ ������� �������� � ������������
175
+ * ���� CryptoPro ���������� UNICODE ������. ���� ����� ������ - ����������
176
+ * ��������� ������������ ������, ���������� ��� ������ (������ ��������� ������
177
+ * ������������ ����������, � ������������� ������ ��� ��).
178
+ *
179
+ * ��� ������� ������������� ������� �� ������������ ���� CryptoPro
180
+ * ��� ������������� ��������������� ������������ ���� �����. � ������
181
+ * ������������� ������� \link CryptoPro::CStringProxy::c_str c_str() \endlink,
182
+ * ������������ ��������� �� c-������ ( �� �������� � std::wstring ).
183
+ * ������ ����������� ������������� �������, ������������ ������
184
+ * ������ CWStringProxy:
185
+ *
186
+ * \code
187
+ *
188
+ * CWStringProxy f();
189
+ *
190
+ * std::wstring s = f().c_str();
191
+ * CString atls = f().c_str();
192
+ *
193
+ * \endcode
194
+ *
195
+ * ����������� ������������ ���� ����� ��������� �������:
196
+ *
197
+ * \code
198
+ * const wchar_t* s = f().c_str();
199
+ * \endcode
200
+ *
201
+ * ���������� ������ �� ������� ��������� s ����� ������������, ���������
202
+ * f() ���������� ��������� ������, ������� ������������ ����� �������� ��
203
+ * �������. ��������� ��� ���������:
204
+ *
205
+ * \code
206
+ *
207
+ * // ��������� �����
208
+ * size_t len = wcslen(f());
209
+ *
210
+ * // ��������� ������ ��� ������
211
+ * const char* s = (char*)malloc((len+1)*sizeof(wchar_t));
212
+ * if(!s)
213
+ * error("not enough memory");
214
+ *
215
+ * // ��������� ������ � ����������� � ���������� ������
216
+ * wcsncpy(s,f(),len+1);
217
+ *
218
+ * \endcode
219
+ *
220
+ * \sa CStringProxy
221
+ */
222
+ class CPLIB_CLASS
223
+ CWStringProxy
224
+ {
225
+ public:
226
+ /**
227
+ * \brief ������� � �������������� ������
228
+ *
229
+ * \param str [in] ��������� �� ������ ��������
230
+ */
231
+ CWStringProxy( const wchar_t* str = L"");
232
+ /**
233
+ * \brief ������� ����� ��������� �������.
234
+ *
235
+ * \param src [in] ������, ����� �������� ���������
236
+ */
237
+ CWStringProxy( const CWStringProxy& src);
238
+ /**
239
+ * \brief �������� �������� ������ � �������.
240
+ *
241
+ * \param src [in] ������, ������� ���������� � �������
242
+ * \return ������ �� ������� ������.
243
+ */
244
+ CWStringProxy& operator=( const CWStringProxy& src);
245
+ /// ���������� ������.
246
+ ~CWStringProxy();
247
+
248
+ /// �������� ������ � ���� const wchar_t*
249
+ const wchar_t* c_str() const;
250
+ private:
251
+ #ifndef UNIX
252
+ #pragma warning(push)
253
+ #pragma warning(disable: 4251)
254
+ #endif
255
+ std::wstring *m_pValue;
256
+ #ifndef UNIX
257
+ #pragma warning(pop)
258
+ #endif
259
+ };
260
+
261
+ // VS2008 bug/feature: ������� ���������������� �������� ��������� �������
262
+ // (����� - ����������) ������ ���������� ������� ����������������� �������
263
+ // �������� ������ (����� - CDllList<>), ����� �� DLL �� ����� ��������������
264
+ // ������ ��������� �������.
265
+ EXPIMP_CDLLLIST_ITERATORS(CStringProxy, CPLIB_EXTERN_TEMPLATE, CPLIB_CLASS);
266
+
267
+ /// ������ �������� CStringProxy
268
+ class CPLIB_CLASS CStringList: public CDllList<CStringProxy> {};
269
+
270
+ // VS2008 bug/feature: ������� ���������������� �������� ��������� �������
271
+ // (����� - ����������) ������ ���������� ������� ����������������� �������
272
+ // �������� ������ (����� - CDllList<>), ����� �� DLL �� ����� ��������������
273
+ // ������ ��������� �������.
274
+ EXPIMP_CDLLLIST_ITERATORS(CWStringProxy, CPLIB_EXTERN_TEMPLATE, CPLIB_CLASS);
275
+
276
+ /// ������ �������� CWStringProxy
277
+ class CPLIB_CLASS CWStringList: public CDllList<CWStringProxy> {};
278
+
279
+ } // namespace CryptoPro
280
+
281
+ #endif // _STRINGPROXY_H_INCLUDED
@@ -0,0 +1,183 @@
1
+ /*
2
+ * Copyright(C) 2004 ������ ���
3
+ *
4
+ * ���� ���� �������� ����������, ����������
5
+ * �������������� �������� ������ ���.
6
+ *
7
+ * ����� ����� ����� ����� �� ����� ���� �����������,
8
+ * ����������, ���������� �� ������ �����,
9
+ * ������������ ��� �������������� ����� ��������,
10
+ * ���������������, �������� �� ���� � ��� ��
11
+ * ����� ������������ ������� ��� ����������������
12
+ * ���������� ���������� � ��������� ������ ���.
13
+ */
14
+
15
+ /*!
16
+ * \file $RCSfile$
17
+ * \version $Revision$
18
+ * \date $Date:: $
19
+ * \author $Author$
20
+ *
21
+ * \brief ������� ��� stl �������, ����������� �� �������������� � dll.
22
+ */
23
+
24
+ #ifndef _CPSTLDLL_H_INCLUDED
25
+ #define _CPSTLDLL_H_INCLUDED
26
+
27
+ #include <list>
28
+
29
+ #if defined UNIX
30
+ # define CDllList std::list
31
+ # define EXPIMP_CDLLLIST_ITERATORS(...)
32
+ #else // !defined UNIX
33
+
34
+ #ifdef NO_EXPIMP_CDLLLIST_ITERATORS
35
+ # define EXPIMP_CDLLLIST_ITERATORS(...)
36
+ #else
37
+ # define EXPIMP_CDLLLIST_ITERATORS(Type, Extern, Declspec) \
38
+ __pragma(warning(push)); \
39
+ __pragma(warning(disable: 4231)); \
40
+ Extern template class Declspec CDllList<Type>::_Const_iterator; \
41
+ Extern template class Declspec CDllList<Type>::_Iterator; \
42
+ __pragma(warning(pop));
43
+ #endif
44
+
45
+ namespace CryptoPro {
46
+
47
+ /**
48
+ * \class CDllList cpstldll.h <cpstldll.h>
49
+ * \brief ����� ������ ����������� �� ���������� ������ std::list �� ����������
50
+ * ����������� ��������.
51
+ */
52
+ template<class _Ty>
53
+ class CDllList
54
+ {
55
+ typedef typename std::list<_Ty> stlContainer;
56
+ typedef CDllList<_Ty> _Myt;
57
+ typedef typename stlContainer::pointer _Tptr;
58
+ typedef typename stlContainer::reference _Reft;
59
+ #ifdef _STL70_
60
+ typedef typename stlContainer::iterator cont_const_iterator;
61
+ #else
62
+ typedef typename stlContainer::const_iterator cont_const_iterator;
63
+ #endif
64
+ typedef typename stlContainer::iterator cont_iterator;
65
+ public:
66
+ typedef typename stlContainer::allocator_type allocator_type;
67
+ typedef typename stlContainer::size_type size_type;
68
+ typedef typename stlContainer::difference_type difference_type;
69
+ typedef typename stlContainer::pointer pointer;
70
+ typedef typename stlContainer::const_pointer const_pointer;
71
+ typedef typename stlContainer::reference reference;
72
+ typedef typename stlContainer::const_reference const_reference;
73
+ typedef typename stlContainer::value_type value_type;
74
+ typedef typename stlContainer::const_reverse_iterator const_reverse_iterator;
75
+ typedef typename stlContainer::reverse_iterator reverse_iterator;
76
+
77
+ class _Const_iterator
78
+ #if defined(_MSC_VER) && (_MSC_VER >= 1500) && (_MSC_VER < 1600) && !defined ( _STL70_ )
79
+ // ����� VS2008 ������� �������� �� checked
80
+ : public std::_Iterator_base_universal
81
+ #endif // defined(_MSC_VER) && (_MSC_VER >= 1500) && (_MSC_VER < 1700)
82
+ {
83
+ friend CDllList;
84
+
85
+ cont_const_iterator *pImpl_;
86
+
87
+ _Const_iterator(const cont_const_iterator it);
88
+
89
+ public:
90
+ #if defined(_MSC_VER) && (_MSC_VER >= 1500) && (_MSC_VER < 1600)
91
+ typedef std::_Range_checked_iterator_tag _Checked_iterator_category;
92
+ #endif //defined(_MSC_VER) && (_MSC_VER >= 1500) && (_MSC_VER < 1700)
93
+
94
+ typedef std::bidirectional_iterator_tag iterator_category;
95
+ typedef _Ty value_type;
96
+ typedef typename stlContainer::difference_type difference_type;
97
+ typedef typename stlContainer::const_pointer pointer;
98
+ typedef typename stlContainer::const_reference reference;
99
+
100
+ _Const_iterator();
101
+ ~_Const_iterator();
102
+
103
+ _Const_iterator(const _Const_iterator& _Right);
104
+ _Const_iterator& operator=(const _Const_iterator& _Right);
105
+
106
+ const_reference operator*() const;
107
+ const_pointer operator->() const;
108
+ _Const_iterator& operator++();
109
+ _Const_iterator operator++(int);
110
+ _Const_iterator& operator--();
111
+ _Const_iterator operator--(int);
112
+ bool operator==(const _Const_iterator& _Right) const;
113
+ bool operator!=(const _Const_iterator& _Right) const;
114
+ };
115
+
116
+ class _Iterator : public _Const_iterator
117
+ {
118
+ friend CDllList;
119
+
120
+ _Iterator(const cont_iterator it);
121
+
122
+ public:
123
+ _Iterator();
124
+
125
+ _Reft operator*() const;
126
+ _Tptr operator->() const;
127
+ _Iterator& operator++();
128
+ _Iterator operator++(int);
129
+ _Iterator& operator--();
130
+ _Iterator operator--(int);
131
+ };
132
+
133
+ typedef _Const_iterator const_iterator;
134
+ typedef _Iterator iterator;
135
+
136
+ CDllList();
137
+ CDllList( const _Myt& _Right);
138
+ ~CDllList();
139
+
140
+ const_iterator begin() const;
141
+ const_iterator end() const;
142
+ iterator begin();
143
+ iterator end();
144
+ const_reverse_iterator rbegin() const;
145
+ const_reverse_iterator rend() const;
146
+ reverse_iterator rbegin();
147
+ reverse_iterator rend();
148
+ _Myt& operator=(const _Myt& _Right);
149
+ void resize(size_type _Newsize);
150
+ void resize(size_type _Newsize, _Ty _Val);
151
+ size_type size() const;
152
+ size_type max_size() const;
153
+ bool empty() const;
154
+ reference front();
155
+ const_reference front() const;
156
+ reference back();
157
+ const_reference back() const;
158
+ void push_front(const _Ty& _Val);
159
+ void push_back(const _Ty& _Val);
160
+ void pop_front();
161
+ void pop_back();
162
+ void assign(size_type _Count, const _Ty& _Val);
163
+ iterator insert(iterator _Where, const _Ty& _Val);
164
+ void insert(iterator _Where, iterator _First, iterator _Last);
165
+ void insert(iterator _Where, size_type _Count, const _Ty& _Val);
166
+ iterator erase(iterator _Where);
167
+ iterator erase(iterator _First, iterator _Last);
168
+ void clear();
169
+ void swap(_Myt& _Right);
170
+ // void sort();
171
+ // void reverse();
172
+ protected:
173
+ void* impl();
174
+ const void* impl() const;
175
+ private:
176
+ void* pImpl_;
177
+ };
178
+
179
+ } // namespace CryptoPro
180
+
181
+ #endif // !defined UNIX
182
+
183
+ #endif // _CPSTLDLL_H_INCLUDED