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,241 @@
1
+ // Copyright (c) 2023 Maxim [maxirmx] Samsonov (https://sw.consulting)
2
+ // All rights reserved.
3
+ // This file is a part of rucades
4
+
5
+ #include "rucades.h"
6
+
7
+ namespace rucades {
8
+ void define_constants(VALUE module) {
9
+ // // ... pki/cppcades/cppcades.h: enum _CADESCOM_CONTENT_ENCODING_TYPE
10
+ rb_define_const(module, "CADESCOM_STRING_TO_UCS2LE", INT2NUM(CADESCOM_STRING_TO_UCS2LE));
11
+ rb_define_const(module, "CADESCOM_BASE64_TO_BINARY", INT2NUM(CADESCOM_BASE64_TO_BINARY));
12
+ rb_define_const(module, "CADESCOM_ENCODING_NONE", INT2NUM(CADESCOM_ENCODING_NONE));
13
+ // ... pki/cppcades/cppcades.h: enum _CADESCOM_STORE_LOCATION
14
+ rb_define_const(module, "CADESCOM_MEMORY_STORE", INT2NUM(CADESCOM_MEMORY_STORE));
15
+ rb_define_const(module, "CADESCOM_LOCAL_MACHINE_STORE", INT2NUM(CADESCOM_LOCAL_MACHINE_STORE));
16
+ rb_define_const(module, "CADESCOM_CURRENT_USER_STORE", INT2NUM(CADESCOM_CURRENT_USER_STORE));
17
+ rb_define_const(module, "CADESCOM_ACTIVE_DIRECTORY_USER_STORE", INT2NUM(CADESCOM_ACTIVE_DIRECTORY_USER_STORE));
18
+ rb_define_const(module, "CADESCOM_SMART_CARD_USER_STORE", INT2NUM(CADESCOM_SMART_CARD_USER_STORE));
19
+ rb_define_const(module, "CADESCOM_CONTAINER_STORE", INT2NUM(CADESCOM_CONTAINER_STORE));
20
+ // ...
21
+ rb_define_const(module, "CAPICOM_LOCAL_MACHINE_STORE", INT2NUM(1));
22
+ rb_define_const(module, "CAPICOM_CURRENT_USER_STORE", INT2NUM(2));
23
+ // ...
24
+ rb_define_const(module, "CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED", INT2NUM(CADESCOM_XML_SIGNATURE_TYPE_ENVELOPED));
25
+ rb_define_const(module, "CADESCOM_XML_SIGNATURE_TYPE_ENVELOPING", INT2NUM(CADESCOM_XML_SIGNATURE_TYPE_ENVELOPING));
26
+ rb_define_const(module, "CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE", INT2NUM(CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE));
27
+ rb_define_const(module, "CADESCOM_CADES_DEFAULT", INT2NUM(CADESCOM_CADES_DEFAULT));
28
+ rb_define_const(module, "CADESCOM_CADES_BES", INT2NUM(CADESCOM_CADES_BES));
29
+ rb_define_const(module, "CADESCOM_CADES_T", INT2NUM(CADESCOM_CADES_T));
30
+ rb_define_const(module, "CADESCOM_CADES_X_LONG_TYPE_1", INT2NUM(CADESCOM_CADES_X_LONG_TYPE_1));
31
+ rb_define_const(module, "CADESCOM_PKCS7_TYPE", INT2NUM(CADESCOM_PKCS7_TYPE));
32
+ rb_define_const(module, "CADESCOM_ENCODE_BASE64", INT2NUM(0));
33
+ rb_define_const(module, "CADESCOM_ENCODE_BINARY", INT2NUM(1));
34
+ rb_define_const(module, "CADESCOM_XADES_DEFAULT", INT2NUM(0x00000010));
35
+ rb_define_const(module, "CADESCOM_XADES_BES", INT2NUM(0x00000020));
36
+ rb_define_const(module, "CADESCOM_XADES_T", INT2NUM(0x00000050));
37
+ rb_define_const(module, "CADESCOM_XADES_X_LONG_TYPE_1", INT2NUM(0x000005d0));
38
+ rb_define_const(module, "CADESCOM_XADES_A", INT2NUM(0x000007d0));
39
+ rb_define_const(module, "CADESCOM_XMLDSIG_TYPE", INT2NUM(0));
40
+ rb_define_const(module, "CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED", INT2NUM(2));
41
+ // ... pki/cppcades/cppcades.h: enum _CAPICOM_CERTIFICATE_INCLUDE_OPTION
42
+ rb_define_const(module, "CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN", INT2NUM(CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN));
43
+ rb_define_const(module, "CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY", INT2NUM(CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY));
44
+ rb_define_const(module, "CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT", INT2NUM(CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT));
45
+ // ... pki/cppcades/cppcades.h: enum _CAPICOM_CERTIFICATE_FIND_TYPE
46
+ rb_define_const(module, "CAPICOM_CERTIFICATE_FIND_SHA1_HASH", INT2NUM(CAPICOM_CERTIFICATE_FIND_SHA1_HASH));
47
+ rb_define_const(module, "CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME", INT2NUM(CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME));
48
+ rb_define_const(module, "CAPICOM_CERTIFICATE_FIND_ISSUER_NAME", INT2NUM(CAPICOM_CERTIFICATE_FIND_ISSUER_NAME));
49
+ rb_define_const(module, "CAPICOM_CERTIFICATE_FIND_ROOT_NAME", INT2NUM(CAPICOM_CERTIFICATE_FIND_ROOT_NAME));
50
+ rb_define_const(module, "CAPICOM_CERTIFICATE_FIND_TEMPLATE_NAME", INT2NUM(CAPICOM_CERTIFICATE_FIND_TEMPLATE_NAME));
51
+ rb_define_const(module, "CAPICOM_CERTIFICATE_FIND_EXTENSION", INT2NUM(CAPICOM_CERTIFICATE_FIND_EXTENSION));
52
+ rb_define_const(module, "CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY", INT2NUM(CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY));
53
+ rb_define_const(module, "CAPICOM_CERTIFICATE_FIND_APPLICATION_POLICY", INT2NUM(CAPICOM_CERTIFICATE_FIND_APPLICATION_POLICY));
54
+ rb_define_const(module, "CAPICOM_CERTIFICATE_FIND_CERTIFICATE_POLICY", INT2NUM(CAPICOM_CERTIFICATE_FIND_CERTIFICATE_POLICY));
55
+ rb_define_const(module, "CAPICOM_CERTIFICATE_FIND_TIME_VALID", INT2NUM(CAPICOM_CERTIFICATE_FIND_TIME_VALID));
56
+ rb_define_const(module, "CAPICOM_CERTIFICATE_FIND_TIME_NOT_YET_VALID", INT2NUM(CAPICOM_CERTIFICATE_FIND_TIME_NOT_YET_VALID));
57
+ rb_define_const(module, "CAPICOM_CERTIFICATE_FIND_TIME_EXPIRED", INT2NUM(CAPICOM_CERTIFICATE_FIND_TIME_EXPIRED));
58
+ rb_define_const(module, "CAPICOM_CERTIFICATE_FIND_KEY_USAGE", INT2NUM(CAPICOM_CERTIFICATE_FIND_KEY_USAGE));
59
+ // ... pki/cppcades/cppcades.h: enum _CAPICOM_PROPID
60
+ rb_define_const(module, "CAPICOM_PROPID_ENHKEY_USAGE", INT2NUM(CAPICOM_PROPID_ENHKEY_USAGE));
61
+ rb_define_const(module, "CAPICOM_PROPID_KEY_PROV_INFO", INT2NUM(CAPICOM_PROPID_KEY_PROV_INFO));
62
+ // ... pki/cppcades/cppcades.h: enum _CAPICOM_SIGNED_DATA_VERIFY_FLAG
63
+ rb_define_const(module, "CAPICOM_VERIFY_SIGNATURE_ONLY", INT2NUM(CAPICOM_VERIFY_SIGNATURE_ONLY));
64
+ rb_define_const(module, "CAPICOM_VERIFY_SIGNATURE_AND_CERTIFICATE", INT2NUM(CAPICOM_VERIFY_SIGNATURE_AND_CERTIFICATE));
65
+ // ... pki/cppcades/cppcades.h: enum _CAPICOM_CERT_INFO_TYPE
66
+ rb_define_const(module, "CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME", INT2NUM(CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME));
67
+ rb_define_const(module, "CAPICOM_CERT_INFO_ISSUER_SIMPLE_NAME", INT2NUM(CAPICOM_CERT_INFO_ISSUER_SIMPLE_NAME));
68
+ rb_define_const(module, "CAPICOM_CERT_INFO_SUBJECT_EMAIL_NAME", INT2NUM(CAPICOM_CERT_INFO_SUBJECT_EMAIL_NAME));
69
+ rb_define_const(module, "CAPICOM_CERT_INFO_ISSUER_EMAIL_NAME", INT2NUM(CAPICOM_CERT_INFO_ISSUER_EMAIL_NAME));
70
+ rb_define_const(module, "CAPICOM_CERT_INFO_SUBJECT_UPN", INT2NUM(CAPICOM_CERT_INFO_SUBJECT_UPN));
71
+ rb_define_const(module, "CAPICOM_CERT_INFO_ISSUER_UPN", INT2NUM(CAPICOM_CERT_INFO_ISSUER_UPN));
72
+ rb_define_const(module, "CAPICOM_CERT_INFO_SUBJECT_DNS_NAME", INT2NUM(CAPICOM_CERT_INFO_SUBJECT_DNS_NAME));
73
+ rb_define_const(module, "CAPICOM_CERT_INFO_ISSUER_DNS_NAME", INT2NUM(CAPICOM_CERT_INFO_ISSUER_DNS_NAME));
74
+ // ... pki/cppcades/cppcades.h: enum _CAPICOM_ENCODING_TYPE
75
+ rb_define_const(module, "CAPICOM_ENCODE_BASE64", INT2NUM(CAPICOM_ENCODE_BASE64));
76
+ rb_define_const(module, "CAPICOM_ENCODE_BINARY", INT2NUM(CAPICOM_ENCODE_BINARY));
77
+ rb_define_const(module, "CAPICOM_ENCODE_ANY", LONG2NUM(CAPICOM_ENCODE_ANY));
78
+ // ... pki/cppcades/cppcades.h: enum_CAPICOM_EKU
79
+ rb_define_const(module, "CAPICOM_EKU_OTHER", INT2NUM(CAPICOM_EKU_OTHER));
80
+ rb_define_const(module, "CAPICOM_EKU_SERVER_AUTH", INT2NUM(CAPICOM_EKU_SERVER_AUTH));
81
+ rb_define_const(module, "CAPICOM_EKU_CLIENT_AUTH", INT2NUM(CAPICOM_EKU_CLIENT_AUTH));
82
+ rb_define_const(module, "CAPICOM_EKU_CODE_SIGNING", INT2NUM(CAPICOM_EKU_CODE_SIGNING));
83
+ rb_define_const(module, "CAPICOM_EKU_EMAIL_PROTECTION", INT2NUM(CAPICOM_EKU_EMAIL_PROTECTION));
84
+ rb_define_const(module, "CAPICOM_EKU_SMARTCARD_LOGON", INT2NUM(CAPICOM_EKU_SMARTCARD_LOGON));
85
+ // ... pki/cppcades/cppcades.h: enum _CAPICOM_ATTRIBUTE
86
+ rb_define_const(module, "CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME", INT2NUM(CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME));
87
+ rb_define_const(module, "CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME", INT2NUM(CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME));
88
+ rb_define_const(module, "CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION", INT2NUM(CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION));
89
+ // ... pki/cppcades/cppcades.h: enum _CADESCOM_ATTRIBUTE
90
+ rb_define_const(module, "CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME", INT2NUM(CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME));
91
+ rb_define_const(module, "CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME", INT2NUM(CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME));
92
+ rb_define_const(module, "CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION", INT2NUM(CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION));
93
+ rb_define_const(module, "CADESCOM_AUTHENTICATED_ATTRIBUTE_MACHINE_INFO", INT2NUM(CADESCOM_AUTHENTICATED_ATTRIBUTE_MACHINE_INFO));
94
+ rb_define_const(module, "CADESCOM_ATTRIBUTE_OTHER", INT2NUM(CADESCOM_ATTRIBUTE_OTHER));
95
+ //... pki/cppcades/cppcades.h: enum CADESCOM_DIPLAY_DATA;
96
+ rb_define_const(module, "CADESCOM_DISPLAY_DATA_NONE", INT2NUM(CADESCOM_DISPLAY_DATA_NONE));
97
+ rb_define_const(module, "CADESCOM_DISPLAY_DATA_CONTENT", INT2NUM(CADESCOM_DISPLAY_DATA_CONTENT));
98
+ rb_define_const(module, "CADESCOM_DISPLAY_DATA_ATTRIBUTE", INT2NUM(CADESCOM_DISPLAY_DATA_ATTRIBUTE));
99
+ // ... pki/cppcades/cppcades.h: enum _CADESCOM_ENCRYPTION_ALGORITHM
100
+ rb_define_const(module, "CADESCOM_ENCRYPTION_ALGORITHM_RC2", INT2NUM(CADESCOM_ENCRYPTION_ALGORITHM_RC2));
101
+ rb_define_const(module, "CADESCOM_ENCRYPTION_ALGORITHM_RC4", INT2NUM(CADESCOM_ENCRYPTION_ALGORITHM_RC4));
102
+ rb_define_const(module, "CADESCOM_ENCRYPTION_ALGORITHM_DES", INT2NUM(CADESCOM_ENCRYPTION_ALGORITHM_DES));
103
+ rb_define_const(module, "CADESCOM_ENCRYPTION_ALGORITHM_3DES", INT2NUM(CADESCOM_ENCRYPTION_ALGORITHM_3DES));
104
+ rb_define_const(module, "CADESCOM_ENCRYPTION_ALGORITHM_AES", INT2NUM(CADESCOM_ENCRYPTION_ALGORITHM_AES));
105
+ rb_define_const(module, "CADESCOM_ENCRYPTION_ALGORITHM_GOST_28147_89", INT2NUM(CADESCOM_ENCRYPTION_ALGORITHM_GOST_28147_89));
106
+ // ... pki/cppcades/cppcades.h: enum _CAPICOM_HASH_ALGORITHM
107
+ rb_define_const(module, "CAPICOM_HASH_ALGORITHM_SHA1", INT2NUM(CAPICOM_HASH_ALGORITHM_SHA1));
108
+ rb_define_const(module, "CAPICOM_HASH_ALGORITHM_MD2", INT2NUM(CAPICOM_HASH_ALGORITHM_MD2));
109
+ rb_define_const(module, "CAPICOM_HASH_ALGORITHM_MD4", INT2NUM(CAPICOM_HASH_ALGORITHM_MD4));
110
+ rb_define_const(module, "CAPICOM_HASH_ALGORITHM_MD5", INT2NUM(CAPICOM_HASH_ALGORITHM_MD5));
111
+ rb_define_const(module, "CAPICOM_HASH_ALGORITHM_SHA_256", INT2NUM(CAPICOM_HASH_ALGORITHM_SHA_256));
112
+ rb_define_const(module, "CAPICOM_HASH_ALGORITHM_SHA_384", INT2NUM(CAPICOM_HASH_ALGORITHM_SHA_384));
113
+ rb_define_const(module, "CAPICOM_HASH_ALGORITHM_SHA_512", INT2NUM(CAPICOM_HASH_ALGORITHM_SHA_512));
114
+ rb_define_const(module, "CADESCOM_HASH_ALGORITHM_CP_GOST_3411", INT2NUM(CADESCOM_HASH_ALGORITHM_CP_GOST_3411));
115
+ rb_define_const(module, "CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256", INT2NUM(CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256));
116
+ rb_define_const(module, "CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512", INT2NUM(CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512));
117
+ rb_define_const(module, "CADESCOM_HASH_ALGORITHM_CP_GOST_3411_HMAC", INT2NUM(CADESCOM_HASH_ALGORITHM_CP_GOST_3411_HMAC));
118
+ rb_define_const(module, "CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256_HMAC", INT2NUM(CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256_HMAC));
119
+ rb_define_const(module, "CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512_HMAC", INT2NUM(CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512_HMAC));
120
+ // ... enum _CAPICOM_ENCRYPTION_KEY_LENGTH
121
+ rb_define_const(module, "CAPICOM_ENCRYPTION_KEY_LENGTH_MAXIMUM", INT2NUM(CAPICOM_ENCRYPTION_KEY_LENGTH_MAXIMUM));
122
+ rb_define_const(module, "CAPICOM_ENCRYPTION_KEY_LENGTH_40_BITS", INT2NUM(CAPICOM_ENCRYPTION_KEY_LENGTH_40_BITS));
123
+ rb_define_const(module, "CAPICOM_ENCRYPTION_KEY_LENGTH_56_BITS", INT2NUM(CAPICOM_ENCRYPTION_KEY_LENGTH_56_BITS));
124
+ rb_define_const(module, "CAPICOM_ENCRYPTION_KEY_LENGTH_128_BITS", INT2NUM(CAPICOM_ENCRYPTION_KEY_LENGTH_128_BITS));
125
+ rb_define_const(module, "CAPICOM_ENCRYPTION_KEY_LENGTH_192_BITS", INT2NUM(CAPICOM_ENCRYPTION_KEY_LENGTH_192_BITS));
126
+ rb_define_const(module, "CAPICOM_ENCRYPTION_KEY_LENGTH_256_BITS", INT2NUM(CAPICOM_ENCRYPTION_KEY_LENGTH_256_BITS));
127
+ // ... enum _CAPICOM_OID
128
+ rb_define_const(module, "CAPICOM_OID_OTHER", INT2NUM(CAPICOM_OID_OTHER));
129
+ rb_define_const(module, "CAPICOM_OID_AUTHORITY_KEY_IDENTIFIER_EXTENSION", INT2NUM(CAPICOM_OID_AUTHORITY_KEY_IDENTIFIER_EXTENSION));
130
+ rb_define_const(module, "CAPICOM_OID_KEY_ATTRIBUTES_EXTENSION", INT2NUM(CAPICOM_OID_KEY_ATTRIBUTES_EXTENSION));
131
+ rb_define_const(module, "CAPICOM_OID_CERT_POLICIES_95_EXTENSION", INT2NUM(CAPICOM_OID_CERT_POLICIES_95_EXTENSION));
132
+ rb_define_const(module, "CAPICOM_OID_KEY_USAGE_RESTRICTION_EXTENSION", INT2NUM(CAPICOM_OID_KEY_USAGE_RESTRICTION_EXTENSION));
133
+ rb_define_const(module, "CAPICOM_OID_LEGACY_POLICY_MAPPINGS_EXTENSION", INT2NUM(CAPICOM_OID_LEGACY_POLICY_MAPPINGS_EXTENSION));
134
+ rb_define_const(module, "CAPICOM_OID_SUBJECT_ALT_NAME_EXTENSION", INT2NUM(CAPICOM_OID_SUBJECT_ALT_NAME_EXTENSION));
135
+ rb_define_const(module, "CAPICOM_OID_ISSUER_ALT_NAME_EXTENSION", INT2NUM(CAPICOM_OID_ISSUER_ALT_NAME_EXTENSION));
136
+ rb_define_const(module, "CAPICOM_OID_BASIC_CONSTRAINTS_EXTENSION", INT2NUM(CAPICOM_OID_BASIC_CONSTRAINTS_EXTENSION));
137
+ rb_define_const(module, "CAPICOM_OID_SUBJECT_KEY_IDENTIFIER_EXTENSION", INT2NUM(CAPICOM_OID_SUBJECT_KEY_IDENTIFIER_EXTENSION));
138
+ rb_define_const(module, "CAPICOM_OID_KEY_USAGE_EXTENSION", INT2NUM(CAPICOM_OID_KEY_USAGE_EXTENSION));
139
+ rb_define_const(module, "CAPICOM_OID_PRIVATEKEY_USAGE_PERIOD_EXTENSION", INT2NUM(CAPICOM_OID_PRIVATEKEY_USAGE_PERIOD_EXTENSION));
140
+ rb_define_const(module, "CAPICOM_OID_SUBJECT_ALT_NAME2_EXTENSION", INT2NUM(CAPICOM_OID_SUBJECT_ALT_NAME2_EXTENSION));
141
+ rb_define_const(module, "CAPICOM_OID_ISSUER_ALT_NAME2_EXTENSION", INT2NUM(CAPICOM_OID_ISSUER_ALT_NAME2_EXTENSION));
142
+ rb_define_const(module, "CAPICOM_OID_BASIC_CONSTRAINTS2_EXTENSION", INT2NUM(CAPICOM_OID_BASIC_CONSTRAINTS2_EXTENSION));
143
+ rb_define_const(module, "CAPICOM_OID_NAME_CONSTRAINTS_EXTENSION", INT2NUM(CAPICOM_OID_NAME_CONSTRAINTS_EXTENSION));
144
+ rb_define_const(module, "CAPICOM_OID_CRL_DIST_POINTS_EXTENSION", INT2NUM(CAPICOM_OID_CRL_DIST_POINTS_EXTENSION));
145
+ rb_define_const(module, "CAPICOM_OID_CERT_POLICIES_EXTENSION", INT2NUM(CAPICOM_OID_CERT_POLICIES_EXTENSION));
146
+ rb_define_const(module, "CAPICOM_OID_POLICY_MAPPINGS_EXTENSION", INT2NUM(CAPICOM_OID_POLICY_MAPPINGS_EXTENSION));
147
+ rb_define_const(module, "CAPICOM_OID_AUTHORITY_KEY_IDENTIFIER2_EXTENSION", INT2NUM(CAPICOM_OID_AUTHORITY_KEY_IDENTIFIER2_EXTENSION));
148
+ rb_define_const(module, "CAPICOM_OID_POLICY_CONSTRAINTS_EXTENSION", INT2NUM(CAPICOM_OID_POLICY_CONSTRAINTS_EXTENSION));
149
+ rb_define_const(module, "CAPICOM_OID_ENHANCED_KEY_USAGE_EXTENSION", INT2NUM(CAPICOM_OID_ENHANCED_KEY_USAGE_EXTENSION));
150
+ rb_define_const(module, "CAPICOM_OID_CERTIFICATE_TEMPLATE_EXTENSION", INT2NUM(CAPICOM_OID_CERTIFICATE_TEMPLATE_EXTENSION));
151
+ rb_define_const(module, "CAPICOM_OID_APPLICATION_CERT_POLICIES_EXTENSION", INT2NUM(CAPICOM_OID_APPLICATION_CERT_POLICIES_EXTENSION));
152
+ rb_define_const(module, "CAPICOM_OID_APPLICATION_POLICY_MAPPINGS_EXTENSION", INT2NUM(CAPICOM_OID_APPLICATION_POLICY_MAPPINGS_EXTENSION));
153
+ rb_define_const(module, "CAPICOM_OID_APPLICATION_POLICY_CONSTRAINTS_EXTENSION", INT2NUM(CAPICOM_OID_APPLICATION_POLICY_CONSTRAINTS_EXTENSION));
154
+ rb_define_const(module, "CAPICOM_OID_AUTHORITY_INFO_ACCESS_EXTENSION", INT2NUM(CAPICOM_OID_AUTHORITY_INFO_ACCESS_EXTENSION));
155
+ rb_define_const(module, "CAPICOM_OID_SERVER_AUTH_EKU", INT2NUM(CAPICOM_OID_SERVER_AUTH_EKU));
156
+ rb_define_const(module, "CAPICOM_OID_CLIENT_AUTH_EKU", INT2NUM(CAPICOM_OID_CLIENT_AUTH_EKU));
157
+ rb_define_const(module, "CAPICOM_OID_CODE_SIGNING_EKU", INT2NUM(CAPICOM_OID_CODE_SIGNING_EKU));
158
+ rb_define_const(module, "CAPICOM_OID_EMAIL_PROTECTION_EKU", INT2NUM(CAPICOM_OID_EMAIL_PROTECTION_EKU));
159
+ rb_define_const(module, "CAPICOM_OID_IPSEC_END_SYSTEM_EKU", INT2NUM(CAPICOM_OID_IPSEC_END_SYSTEM_EKU));
160
+ rb_define_const(module, "CAPICOM_OID_IPSEC_TUNNEL_EKU", INT2NUM(CAPICOM_OID_IPSEC_TUNNEL_EKU));
161
+ rb_define_const(module, "CAPICOM_OID_IPSEC_USER_EKU", INT2NUM(CAPICOM_OID_IPSEC_USER_EKU));
162
+ rb_define_const(module, "CAPICOM_OID_TIME_STAMPING_EKU", INT2NUM(CAPICOM_OID_TIME_STAMPING_EKU));
163
+ rb_define_const(module, "CAPICOM_OID_CTL_USAGE_SIGNING_EKU", INT2NUM(CAPICOM_OID_CTL_USAGE_SIGNING_EKU));
164
+ rb_define_const(module, "CAPICOM_OID_TIME_STAMP_SIGNING_EKU", INT2NUM(CAPICOM_OID_TIME_STAMP_SIGNING_EKU));
165
+ rb_define_const(module, "CAPICOM_OID_SERVER_GATED_CRYPTO_EKU", INT2NUM(CAPICOM_OID_SERVER_GATED_CRYPTO_EKU));
166
+ rb_define_const(module, "CAPICOM_OID_ENCRYPTING_FILE_SYSTEM_EKU", INT2NUM(CAPICOM_OID_ENCRYPTING_FILE_SYSTEM_EKU));
167
+ rb_define_const(module, "CAPICOM_OID_EFS_RECOVERY_EKU", INT2NUM(CAPICOM_OID_EFS_RECOVERY_EKU));
168
+ rb_define_const(module, "CAPICOM_OID_WHQL_CRYPTO_EKU", INT2NUM(CAPICOM_OID_WHQL_CRYPTO_EKU));
169
+ rb_define_const(module, "CAPICOM_OID_NT5_CRYPTO_EKU", INT2NUM(CAPICOM_OID_NT5_CRYPTO_EKU));
170
+ rb_define_const(module, "CAPICOM_OID_OEM_WHQL_CRYPTO_EKU", INT2NUM(CAPICOM_OID_OEM_WHQL_CRYPTO_EKU));
171
+ rb_define_const(module, "CAPICOM_OID_EMBEDED_NT_CRYPTO_EKU", INT2NUM(CAPICOM_OID_EMBEDED_NT_CRYPTO_EKU));
172
+ rb_define_const(module, "CAPICOM_OID_ROOT_LIST_SIGNER_EKU", INT2NUM(CAPICOM_OID_ROOT_LIST_SIGNER_EKU));
173
+ rb_define_const(module, "CAPICOM_OID_QUALIFIED_SUBORDINATION_EKU", INT2NUM(CAPICOM_OID_QUALIFIED_SUBORDINATION_EKU));
174
+ rb_define_const(module, "CAPICOM_OID_KEY_RECOVERY_EKU", INT2NUM(CAPICOM_OID_KEY_RECOVERY_EKU));
175
+ rb_define_const(module, "CAPICOM_OID_DIGITAL_RIGHTS_EKU", INT2NUM(CAPICOM_OID_DIGITAL_RIGHTS_EKU));
176
+ rb_define_const(module, "CAPICOM_OID_LICENSES_EKU", INT2NUM(CAPICOM_OID_LICENSES_EKU));
177
+ rb_define_const(module, "CAPICOM_OID_LICENSE_SERVER_EKU", INT2NUM(CAPICOM_OID_LICENSE_SERVER_EKU));
178
+ rb_define_const(module, "CAPICOM_OID_SMART_CARD_LOGON_EKU", INT2NUM(CAPICOM_OID_SMART_CARD_LOGON_EKU));
179
+ rb_define_const(module, "CAPICOM_OID_PKIX_POLICY_QUALIFIER_CPS", INT2NUM(CAPICOM_OID_PKIX_POLICY_QUALIFIER_CPS));
180
+ rb_define_const(module, "CAPICOM_OID_PKIX_POLICY_QUALIFIER_USERNOTICE", INT2NUM(CAPICOM_OID_PKIX_POLICY_QUALIFIER_USERNOTICE));
181
+ // ... enum _CAPICOM_PROV_TYPE
182
+ rb_define_const(module, "CAPICOM_PROV_RSA_FULL", INT2NUM(CAPICOM_PROV_RSA_FULL));
183
+ rb_define_const(module, "CAPICOM_PROV_RSA_SIG", INT2NUM(CAPICOM_PROV_RSA_SIG));
184
+ rb_define_const(module, "CAPICOM_PROV_DSS", INT2NUM(CAPICOM_PROV_DSS));
185
+ rb_define_const(module, "CAPICOM_PROV_FORTEZZA", INT2NUM(CAPICOM_PROV_FORTEZZA));
186
+ rb_define_const(module, "CAPICOM_PROV_MS_EXCHANGE", INT2NUM(CAPICOM_PROV_MS_EXCHANGE));
187
+ rb_define_const(module, "CAPICOM_PROV_SSL", INT2NUM(CAPICOM_PROV_SSL));
188
+ rb_define_const(module, "CAPICOM_PROV_RSA_SCHANNEL", INT2NUM(CAPICOM_PROV_RSA_SCHANNEL));
189
+ rb_define_const(module, "CAPICOM_PROV_DSS_DH", INT2NUM(CAPICOM_PROV_DSS_DH));
190
+ rb_define_const(module, "CAPICOM_PROV_EC_ECDSA_SIG", INT2NUM(CAPICOM_PROV_EC_ECDSA_SIG));
191
+ rb_define_const(module, "CAPICOM_PROV_EC_ECNRA_SIG", INT2NUM(CAPICOM_PROV_EC_ECNRA_SIG));
192
+ rb_define_const(module, "CAPICOM_PROV_EC_ECDSA_FULL", INT2NUM(CAPICOM_PROV_EC_ECDSA_FULL));
193
+ rb_define_const(module, "CAPICOM_PROV_EC_ECNRA_FULL", INT2NUM(CAPICOM_PROV_EC_ECNRA_FULL));
194
+ rb_define_const(module, "CAPICOM_PROV_DH_SCHANNEL", INT2NUM(CAPICOM_PROV_DH_SCHANNEL));
195
+ rb_define_const(module, "CAPICOM_PROV_SPYRUS_LYNKS", INT2NUM(CAPICOM_PROV_SPYRUS_LYNKS));
196
+ rb_define_const(module, "CAPICOM_PROV_RNG", INT2NUM(CAPICOM_PROV_RNG));
197
+ rb_define_const(module, "CAPICOM_PROV_INTEL_SEC", INT2NUM(CAPICOM_PROV_INTEL_SEC));
198
+ rb_define_const(module, "CAPICOM_PROV_REPLACE_OWF", INT2NUM(CAPICOM_PROV_REPLACE_OWF));
199
+ rb_define_const(module, "CAPICOM_PROV_RSA_AES", INT2NUM(CAPICOM_PROV_RSA_AES));
200
+ // ... enum _CAPICOM_KEY_SPEC
201
+ rb_define_const(module, "CAPICOM_KEY_SPEC_KEYEXCHANGE", INT2NUM(CAPICOM_KEY_SPEC_KEYEXCHANGE));
202
+ rb_define_const(module, "CAPICOM_KEY_SPEC_SIGNATURE", INT2NUM(CAPICOM_KEY_SPEC_SIGNATURE));
203
+ // ...
204
+ rb_define_const(module, "CADESCOM_AllowNone", INT2NUM(0x00));
205
+ rb_define_const(module, "CADESCOM_AllowNoOutstandingRequest", INT2NUM(0x01));
206
+ rb_define_const(module, "CADESCOM_AllowUntrustedCertificate", INT2NUM(0x02));
207
+ rb_define_const(module, "CADESCOM_AllowUntrustedRoot", INT2NUM(0x04));
208
+ rb_define_const(module, "CADESCOM_SkipInstallToStore", INT2NUM(0x10000000));
209
+ rb_define_const(module, "ENABLE_CARRIER_TYPE_CSP", INT2NUM(0x01));
210
+ rb_define_const(module, "ENABLE_CARRIER_TYPE_FKC_NO_SM", INT2NUM(0x02));
211
+ rb_define_const(module, "ENABLE_CARRIER_TYPE_FKC_SM", INT2NUM(0x04));
212
+ rb_define_const(module, "ENABLE_ANY_CARRIER_TYPE", INT2NUM(0x07));
213
+ rb_define_const(module, "DISABLE_EVERY_CARRIER_OPERATION", INT2NUM(0x00));
214
+ rb_define_const(module, "ENABLE_CARRIER_OPEN_ENUM", INT2NUM(0x01));
215
+ rb_define_const(module, "ENABLE_CARRIER_CREATE", INT2NUM(0x02));
216
+ rb_define_const(module, "ENABLE_ANY_OPERATION", INT2NUM(0x03));
217
+ rb_define_const(module, "MEDIA_TYPE_REGISTRY", INT2NUM(0x00000001));
218
+ rb_define_const(module, "MEDIA_TYPE_HDIMAGE", INT2NUM(0x00000002));
219
+ rb_define_const(module, "MEDIA_TYPE_CLOUD", INT2NUM(0x00000004));
220
+ rb_define_const(module, "MEDIA_TYPE_SCARD", INT2NUM(0x00000008));
221
+ rb_define_const(module, "XCN_CRYPT_STRING_BASE64HEADER", INT2NUM(0));
222
+ rb_define_const(module, "AT_KEYEXCHANGE", INT2NUM(1));
223
+ rb_define_const(module, "AT_SIGNATURE", INT2NUM(2));
224
+ rb_define_const(module, "CADESCOM_ENCODE_ANY", INT2NUM(-1));
225
+ rb_define_const(module, "CAPICOM_EKU_ENCRYPTING_FILE_SYSTEM", INT2NUM(6));
226
+ rb_define_const(module, "CAPICOM_DATA_ENCIPHERMENT_KEY_USAGE", INT2NUM(16));
227
+ rb_define_const(module, "CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE", INT2NUM(128));
228
+ rb_define_const(module, "CAPICOM_MY_STORE", rb_str_new2("My"));
229
+ rb_define_const(module, "CAPICOM_CA_STORE", rb_str_new2("CA"));
230
+ rb_define_const(module, "CAPICOM_ROOT_STORE", rb_str_new2("Root"));
231
+ rb_define_const(module, "CAPICOM_OTHER_STORE", rb_str_new2("AddressBook"));
232
+ rb_define_const(module, "XmlDsigGost3410UrlObsolete", rb_str_new2("http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"));
233
+ rb_define_const(module, "XmlDsigGost3411UrlObsolete", rb_str_new2("http://www.w3.org/2001/04/xmldsig-more#gostr3411"));
234
+ rb_define_const(module, "XmlDsigGost3410Url", rb_str_new2("urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411"));
235
+ rb_define_const(module, "XmlDsigGost3411Url", rb_str_new2("urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411"));
236
+ rb_define_const(module, "XmlDsigGost3410Url2012256", rb_str_new2("urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256"));
237
+ rb_define_const(module, "XmlDsigGost3411Url2012256", rb_str_new2("urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256"));
238
+ rb_define_const(module, "XmlDsigGost3410Url2012512", rb_str_new2("urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-512"));
239
+ rb_define_const(module, "XmlDsigGost3411Url2012512", rb_str_new2("urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512"));
240
+ }
241
+ }
@@ -0,0 +1,84 @@
1
+ // Copyright (c) 2023 Maxim [maxirmx] Samsonov (https://sw.consulting)
2
+ // All rights reserved.
3
+ // This file is a part of rucades
4
+
5
+ #include <rice/rice.hpp>
6
+ #include <rice/stl.hpp>
7
+
8
+ #include "rucades.h"
9
+ #include "rucades_crl.h"
10
+
11
+ using namespace Rice;
12
+ using namespace CryptoPro::PKI::CAdES;
13
+
14
+ namespace rucades {
15
+
16
+ pre_rb_CRL::pre_rb_CRL(void):
17
+ m_pCppCadesImpl(boost::shared_ptr<CPPCadesCPCRLObject>(new CPPCadesCPCRLObject())) { }
18
+
19
+ std::string pre_rb_CRL::get_auth_key_id(void)
20
+ {
21
+ CAtlString sKeyID;
22
+ hr_method_check(m_pCppCadesImpl->get_AuthKeyID(sKeyID));
23
+ return std::string(sKeyID.GetString());
24
+ }
25
+
26
+ std::string pre_rb_CRL::get_issuer_name(void)
27
+ {
28
+ CAtlString sIssuerName;
29
+ hr_method_check(m_pCppCadesImpl->get_IssuerName(sIssuerName));
30
+ return std::string(sIssuerName.GetString());
31
+ }
32
+
33
+ std::string pre_rb_CRL::get_next_update(void)
34
+ {
35
+ CryptoPro::CDateTime nextUpdate;
36
+ hr_method_check(m_pCppCadesImpl->get_NextUpdate(nextUpdate));
37
+ return nextUpdate.tostring().c_str();
38
+ }
39
+
40
+ std::string pre_rb_CRL::get_this_update(void)
41
+ {
42
+ CryptoPro::CDateTime thisUpdate;
43
+ hr_method_check(m_pCppCadesImpl->get_ThisUpdate(thisUpdate));
44
+ return thisUpdate.tostring().c_str();
45
+ }
46
+
47
+ std::string pre_rb_CRL::get_thumbprint(void)
48
+ {
49
+ CAtlString sThumbprint;
50
+ hr_method_check(m_pCppCadesImpl->get_Thumbprint(sThumbprint));
51
+ return std::string(sThumbprint.GetString());
52
+ }
53
+
54
+ void pre_rb_CRL::crl_import(std::string& crl)
55
+ {
56
+ CryptoPro::CBlob blobCRL;
57
+ blobCRL.assign(reinterpret_cast<const BYTE *>(crl.c_str()), crl.length());
58
+ hr_method_check(m_pCppCadesImpl->Import(blobCRL));
59
+ }
60
+
61
+ std::string pre_rb_CRL::crl_export(long type)
62
+ {
63
+ CAPICOM_ENCODING_TYPE Type = static_cast<CAPICOM_ENCODING_TYPE>(type);
64
+ CryptoPro::CBlob blobCRL;
65
+ hr_method_check(m_pCppCadesImpl->Export(Type, blobCRL));
66
+ return type == CAPICOM_ENCODE_BINARY ?
67
+ std::string(reinterpret_cast<const char *>(blobCRL.pbData()),blobCRL.cbData()) :
68
+ std::string(reinterpret_cast<const char *>(blobCRL.pbData()));
69
+ }
70
+
71
+ void pre_rb_CRL::define_ruby_class(VALUE module)
72
+ {
73
+ Data_Type<pre_rb_CRL> rb_cCRL =
74
+ define_class_under<pre_rb_CRL>(module, "CRL")
75
+ .define_constructor(Constructor<pre_rb_CRL>())
76
+ .define_method("auth_key_id", &pre_rb_CRL::get_auth_key_id)
77
+ .define_method("issuer_name", &pre_rb_CRL::get_issuer_name)
78
+ .define_method("next_update", &pre_rb_CRL::get_next_update)
79
+ .define_method("this_update", &pre_rb_CRL::get_this_update)
80
+ .define_method("thumbprint", &pre_rb_CRL::get_thumbprint)
81
+ .define_method("export", &pre_rb_CRL::crl_export)
82
+ .define_method("import", &pre_rb_CRL::crl_import);
83
+ }
84
+ }
@@ -0,0 +1,29 @@
1
+ // Copyright (c) 2023 Maxim [maxirmx] Samsonov (https://sw.consulting)
2
+ // All rights reserved.
3
+ // This file is a part of rucades
4
+
5
+ #pragma once
6
+
7
+ #include "rucades.h"
8
+ #include "CPPCadesCPCRL.h"
9
+
10
+ namespace rucades {
11
+
12
+ class pre_rb_CRL {
13
+ protected:
14
+ boost::shared_ptr<CryptoPro::PKI::CAdES::CPPCadesCPCRLObject> m_pCppCadesImpl;
15
+ public:
16
+ pre_rb_CRL(void);
17
+ std::string get_auth_key_id(void);
18
+ std::string get_issuer_name(void);
19
+ std::string get_next_update(void);
20
+ std::string get_this_update(void);
21
+ std::string get_thumbprint(void);
22
+ void crl_import(std::string& crl);
23
+ std::string crl_export(long type);
24
+
25
+ static void define_ruby_class(VALUE module);
26
+
27
+ friend class pre_rb_Store;
28
+ };
29
+ }
@@ -0,0 +1,55 @@
1
+ // Copyright (c) 2023 Maxim [maxirmx] Samsonov (https://sw.consulting)
2
+ // All rights reserved.
3
+ // This file is a part of rucades
4
+
5
+ #include <rice/rice.hpp>
6
+ #include <rice/stl.hpp>
7
+
8
+ #include "rucades.h"
9
+ #include "rucades_eku.h"
10
+
11
+ using namespace Rice;
12
+ using namespace CryptoPro::PKI::CAdES;
13
+
14
+ namespace rucades {
15
+
16
+ pre_rb_EKU::pre_rb_EKU(void):
17
+ m_pCppCadesImpl(boost::shared_ptr<CPPCadesCPEKUObject>(new CPPCadesCPEKUObject())) { }
18
+
19
+ pre_rb_EKU::pre_rb_EKU(boost::shared_ptr<CryptoPro::PKI::CAdES::CPPCadesCPEKUObject> other):
20
+ m_pCppCadesImpl(other) { }
21
+
22
+ long pre_rb_EKU::get_name(void)
23
+ {
24
+ CAPICOM_EKU name;
25
+ hr_method_check(m_pCppCadesImpl->get_Name(&name));
26
+ return static_cast<long>(name);
27
+ }
28
+ void pre_rb_EKU::set_name (long name)
29
+ {
30
+ hr_method_check(m_pCppCadesImpl->put_Name(static_cast<CAPICOM_EKU>(name)));
31
+ }
32
+ std::string pre_rb_EKU::get_oid(void)
33
+ {
34
+ CAtlStringA OID;
35
+ hr_method_check(m_pCppCadesImpl->get_OID(OID));
36
+ return std::string(OID.GetString());
37
+ }
38
+ void pre_rb_EKU::set_oid(std::string& oid)
39
+ {
40
+ CAtlStringA sOID = CAtlString(oid.c_str());
41
+ hr_method_check(m_pCppCadesImpl->put_OID(sOID));
42
+ }
43
+
44
+ void pre_rb_EKU::define_ruby_class(VALUE module)
45
+ {
46
+ Data_Type<pre_rb_EKU> rb_cEKU =
47
+ define_class_under<pre_rb_EKU>(module, "EKU")
48
+ .define_constructor(Constructor<pre_rb_EKU>())
49
+ .define_method("name", &pre_rb_EKU::get_name)
50
+ .define_method("name=", &pre_rb_EKU::set_name)
51
+ .define_method("oid", &pre_rb_EKU::get_oid)
52
+ .define_method("oid=", &pre_rb_EKU::set_oid);
53
+ }
54
+
55
+ }
@@ -0,0 +1,26 @@
1
+ // Copyright (c) 2023 Maxim [maxirmx] Samsonov (https://sw.consulting)
2
+ // All rights reserved.
3
+ // This file is a part of rucades
4
+
5
+ #pragma once
6
+
7
+ #include "rucades.h"
8
+ #include "CPPCadesCPEKU.h"
9
+
10
+ namespace rucades {
11
+ class pre_rb_EKU {
12
+ protected:
13
+ boost::shared_ptr<CryptoPro::PKI::CAdES::CPPCadesCPEKUObject> m_pCppCadesImpl;
14
+ public:
15
+ pre_rb_EKU(void);
16
+ pre_rb_EKU(boost::shared_ptr<CryptoPro::PKI::CAdES::CPPCadesCPEKUObject> pCppCadesEKU);
17
+ long get_name(void);
18
+ void set_name (long name);
19
+ std::string get_oid(void);
20
+ void set_oid(std::string& sFriendlyName);
21
+
22
+ static void define_ruby_class(VALUE module);
23
+
24
+ friend class pre_rb_EKUs;
25
+ };
26
+ }
@@ -0,0 +1,43 @@
1
+ // Copyright (c) 2023 Maxim [maxirmx] Samsonov (https://sw.consulting)
2
+ // All rights reserved.
3
+ // This file is a part of rucades
4
+
5
+ #include <rice/rice.hpp>
6
+ #include <rice/stl.hpp>
7
+
8
+ #include "rucades.h"
9
+ #include "rucades_ekus.h"
10
+
11
+ using namespace Rice;
12
+ using namespace CryptoPro::PKI::CAdES;
13
+
14
+ namespace rucades {
15
+ pre_rb_EKUs::pre_rb_EKUs(void):
16
+ m_pCppCadesImpl(boost::shared_ptr<CPPCadesCPEKUsObject>(new CPPCadesCPEKUsObject())) { }
17
+
18
+ pre_rb_EKUs::pre_rb_EKUs(boost::shared_ptr<CPPCadesCPEKUsObject> other):
19
+ m_pCppCadesImpl(other) { }
20
+
21
+ long pre_rb_EKUs::get_count(void)
22
+ {
23
+ unsigned int count = 0;
24
+ hr_method_check(m_pCppCadesImpl->get_Count(&count));
25
+ return count;
26
+ }
27
+
28
+ pre_rb_EKU pre_rb_EKUs::get_item(long index)
29
+ {
30
+ boost::shared_ptr<CPPCadesCPEKUObject> pCppCadesEKU = boost::shared_ptr<CPPCadesCPEKUObject>(new CPPCadesCPEKUObject());
31
+ hr_method_check(m_pCppCadesImpl->get_Item(index, pCppCadesEKU));
32
+ return pre_rb_EKU(pCppCadesEKU);
33
+ }
34
+
35
+ void pre_rb_EKUs::define_ruby_class(VALUE module)
36
+ {
37
+ Data_Type<pre_rb_EKUs> rb_cEKUs =
38
+ define_class_under<pre_rb_EKUs>(module, "EKUs")
39
+ .define_constructor(Constructor<pre_rb_EKUs>())
40
+ .define_method("count", &pre_rb_EKUs::get_count)
41
+ .define_method("[]", &pre_rb_EKUs::get_item);
42
+ }
43
+ }
@@ -0,0 +1,27 @@
1
+ // Copyright (c) 2023 Maxim [maxirmx] Samsonov (https://sw.consulting)
2
+ // All rights reserved.
3
+ // This file is a part of rucades
4
+
5
+ #pragma once
6
+
7
+ #include "rucades.h"
8
+ #include "rucades_eku.h"
9
+
10
+ #include "CPPCadesCollections.h"
11
+ #include "CPPCadesCPEKU.h"
12
+
13
+ namespace rucades {
14
+ class pre_rb_EKUs {
15
+ protected:
16
+ boost::shared_ptr<CryptoPro::PKI::CAdES::CPPCadesCPEKUsObject> m_pCppCadesImpl;
17
+ public:
18
+ pre_rb_EKUs(void);
19
+ pre_rb_EKUs(boost::shared_ptr<CryptoPro::PKI::CAdES::CPPCadesCPEKUsObject> pCppCadesEKUs);
20
+ long get_count(void);
21
+ pre_rb_EKU get_item(long index);
22
+
23
+ static void define_ruby_class(VALUE module);
24
+
25
+ friend class pre_rb_ExtendedKeyUsage;
26
+ };
27
+ }
@@ -0,0 +1,41 @@
1
+ // Copyright (c) 2023 Maxim [maxirmx] Samsonov (https://sw.consulting)
2
+ // All rights reserved.
3
+ // This file is a part of rucades
4
+
5
+ #include <rice/rice.hpp>
6
+ #include <rice/stl.hpp>
7
+
8
+ #include "rucades.h"
9
+ #include "rucades_encoded_data.h"
10
+
11
+ using namespace Rice;
12
+ using namespace CryptoPro::PKI::CAdES;
13
+
14
+ namespace rucades {
15
+ pre_rb_EncodedData::pre_rb_EncodedData(void):
16
+ m_pCppCadesImpl(boost::shared_ptr<CPPCadesCPEncodedDataObject>(new CPPCadesCPEncodedDataObject())) { }
17
+
18
+ std::string pre_rb_EncodedData::value(long type)
19
+ {
20
+ CAPICOM_ENCODING_TYPE Type = static_cast<CAPICOM_ENCODING_TYPE>(type);
21
+ CryptoPro::CBlob data;
22
+ hr_method_check(m_pCppCadesImpl->get_Value(Type, data));
23
+ return std::string((const char *)data.pbData(), data.cbData());
24
+ }
25
+
26
+ std::string pre_rb_EncodedData::format(bool multiline)
27
+ {
28
+ CAtlStringW sValue;
29
+ hr_method_check(m_pCppCadesImpl->Format(multiline ? TRUE : FALSE, sValue));
30
+ return std::string(CW2A(sValue.GetString(), CP_UTF8));
31
+ }
32
+
33
+ void pre_rb_EncodedData::define_ruby_class(VALUE module)
34
+ {
35
+ Data_Type<pre_rb_EncodedData> rb_cEncodedData =
36
+ define_class_under<pre_rb_EncodedData>(module, "EncodedData")
37
+ .define_constructor(Constructor<pre_rb_EncodedData>())
38
+ .define_method("format", &pre_rb_EncodedData::format, Arg("multiline") = false)
39
+ .define_method("value", &pre_rb_EncodedData::value, Arg("type") = static_cast<long>(CAPICOM_ENCODE_BASE64));
40
+ }
41
+ }
@@ -0,0 +1,23 @@
1
+ // Copyright (c) 2023 Maxim [maxirmx] Samsonov (https://sw.consulting)
2
+ // All rights reserved.
3
+ // This file is a part of rucades
4
+
5
+ #pragma once
6
+
7
+ #include "rucades.h"
8
+ #include "CPPCadesCPEncodedData.h"
9
+
10
+ namespace rucades {
11
+ class pre_rb_EncodedData {
12
+ protected:
13
+ boost::shared_ptr<CryptoPro::PKI::CAdES::CPPCadesCPEncodedDataObject> m_pCppCadesImpl;
14
+ public:
15
+ pre_rb_EncodedData(void);
16
+ std::string value(long format);
17
+ std::string format(bool multiline);
18
+
19
+ static void define_ruby_class(VALUE module);
20
+
21
+ friend class pre_rb_PublicKey;
22
+ };
23
+ }