rnp 0.2.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.adoc +5 -0
  3. data/LICENSE.txt +21 -0
  4. data/README.adoc +3 -182
  5. data/lib/rnp.rb +12 -3
  6. data/lib/rnp/error.rb +40 -0
  7. data/lib/rnp/ffi/librnp.rb +306 -0
  8. data/lib/rnp/input.rb +99 -0
  9. data/lib/rnp/key.rb +275 -0
  10. data/lib/rnp/misc.rb +71 -0
  11. data/lib/rnp/op/encrypt.rb +181 -0
  12. data/lib/rnp/op/sign.rb +139 -0
  13. data/lib/rnp/op/verify.rb +147 -0
  14. data/lib/rnp/output.rb +121 -0
  15. data/lib/rnp/rnp.rb +595 -0
  16. data/lib/rnp/utils.rb +44 -0
  17. data/lib/rnp/version.rb +8 -3
  18. metadata +124 -50
  19. data/.gitignore +0 -12
  20. data/.rspec +0 -2
  21. data/.travis.yml +0 -5
  22. data/CODE_OF_CONDUCT.md +0 -74
  23. data/Gemfile +0 -4
  24. data/Rakefile +0 -6
  25. data/Use_Cases.adoc +0 -119
  26. data/bin/console +0 -14
  27. data/bin/setup +0 -8
  28. data/example-usage.rb +0 -766
  29. data/examples/highlevel/decrypt_mem.rb +0 -44
  30. data/examples/highlevel/encrypt_mem.rb +0 -46
  31. data/examples/lowlevel/decrypt_file.rb +0 -76
  32. data/examples/lowlevel/decrypt_mem.rb +0 -80
  33. data/examples/lowlevel/encrypt_file.rb +0 -68
  34. data/examples/lowlevel/encrypt_mem.rb +0 -75
  35. data/examples/lowlevel/load_pubkey.rb +0 -118
  36. data/examples/lowlevel/print_keyring_file.rb +0 -68
  37. data/examples/lowlevel/print_keyring_mem.rb +0 -96
  38. data/examples/lowlevel/sign_file.rb +0 -104
  39. data/examples/lowlevel/sign_mem.rb +0 -96
  40. data/examples/lowlevel/verify_file.rb +0 -55
  41. data/examples/lowlevel/verify_mem.rb +0 -61
  42. data/lib/rnp/highlevel.rb +0 -5
  43. data/lib/rnp/highlevel/constants.rb +0 -96
  44. data/lib/rnp/highlevel/keyring.rb +0 -259
  45. data/lib/rnp/highlevel/publickey.rb +0 -150
  46. data/lib/rnp/highlevel/secretkey.rb +0 -318
  47. data/lib/rnp/highlevel/utils.rb +0 -119
  48. data/lib/rnp/lowlevel.rb +0 -6
  49. data/lib/rnp/lowlevel/constants.rb +0 -11
  50. data/lib/rnp/lowlevel/dynarray.rb +0 -129
  51. data/lib/rnp/lowlevel/enums.rb +0 -243
  52. data/lib/rnp/lowlevel/libc.rb +0 -28
  53. data/lib/rnp/lowlevel/libopenssl.rb +0 -15
  54. data/lib/rnp/lowlevel/librnp.rb +0 -213
  55. data/lib/rnp/lowlevel/structs.rb +0 -541
  56. data/lib/rnp/lowlevel/utils.rb +0 -25
  57. data/rnp.gemspec +0 -35
  58. data/rnp/lib/rnp.rb +0 -5
  59. data/rnp/spec/rnp_spec.rb +0 -11
@@ -1,129 +0,0 @@
1
- require 'ffi'
2
-
3
- module LibRNP
4
-
5
- def self.dynarray_count(struct, field)
6
- struct[(field + 'c').to_sym]
7
- end
8
-
9
- def self.dynarray_vsize(struct, field)
10
- struct[(field + 'vsize').to_sym]
11
- end
12
-
13
- def self.dynarray_items(struct, field)
14
- struct[(field + 's').to_sym]
15
- end
16
-
17
- def self.dynarray_get_item(struct, field, type, index)
18
- count = dynarray_count(struct, field)
19
- if index >= count
20
- return nil
21
- end
22
-
23
- items = dynarray_items(struct, field)
24
- case type
25
- when :pointer
26
- ptrs = items.read_array_of_pointer(count)
27
- ptrs[index]
28
- when :string
29
- ptrs = items.read_array_of_pointer(count)
30
- ptrs[index].read_string
31
- else
32
- ptrs = FFI::Pointer.new(type, items)
33
- type.new(ptrs[index])
34
- end
35
- end
36
-
37
- # Appends an item to a DYNARRAY, expanding the array as needed.
38
- #
39
- # @param struct [FFI::Struct] Structure where the DYNARRAY is held.
40
- # @param field [String] The name of the DYNARRAY within the structure.
41
- # For example, this would be 'uid' if the array were declared natively
42
- # with something like DYNARRAY(uint8_t*, uid);
43
- # @param type [FFI::Struct, :pointer, :string] The type (class) of the
44
- # elements in the DYNARRAY, or the special values :pointer or :string.
45
- # @param value [FFI::Struct, FFI::Pointer, String] The value to append. When
46
- # type is an FFI::Struct class, the bytes will be copied from the struct,
47
- # directly to the DYNARRAY memory.
48
- # When type is :pointer, the pointer (not data) is copied to the DYNARRAY.
49
- # When type is :string, the string data will be allocated and a pointer will
50
- # be copied in to the DYNARRAY.
51
- def self.dynarray_append_item(struct, field, type, value)
52
- dynarray_expand(struct, field, type)
53
-
54
- count = dynarray_count(struct, field)
55
- items = dynarray_items(struct, field)
56
- case type
57
- when :pointer
58
- ptrs = items.read_array_of_pointer(count + 1)
59
- ptrs[count] = value
60
- items.write_array_of_pointer(ptrs)
61
- when :string
62
- ptrs = items.read_array_of_pointer(count + 1)
63
- mem = LibC::calloc(1, value.size + 1)
64
- mem.write_bytes(value)
65
- ptrs[count] = mem
66
- items.write_array_of_pointer(ptrs)
67
- else
68
- ptrs = FFI::Pointer.new(type, items)
69
- bytes = value.pointer.read_bytes(type.size)
70
- ptrs[count].write_bytes(bytes)
71
- end
72
- struct[(field + 'c').to_sym] = count + 1
73
- end
74
-
75
- def self.dynarray_expand(struct, field, type)
76
- count = dynarray_count(struct, field)
77
- vsize = dynarray_vsize(struct, field)
78
- # return if expansion is not necessary
79
- return if count != vsize
80
-
81
- newvsize = (vsize * 2) + 10
82
- mem = dynarray_items(struct, field)
83
- case type
84
- when :pointer, :string
85
- itemsize = FFI::Pointer.size
86
- else
87
- itemsize = type.size
88
- end
89
- newarr = LibC::realloc(mem, newvsize * itemsize)
90
- LibC::memset(newarr + (vsize * itemsize), 0, (newvsize - vsize) * itemsize)
91
- struct[(field + 'vsize').to_sym] = newvsize
92
- struct[(field + 's').to_sym] = newarr
93
- end
94
-
95
- # Clear a dynarray so that the item count is zero.
96
- #
97
- # @param struct [FFI::Struct] Structure where the DYNARRAY is held.
98
- # @param field [String] The name of the DYNARRAY within the structure.
99
- # For example, this would be 'uid' if the array were declared natively
100
- # with something like DYNARRAY(uint8_t*, uid);
101
- # @param type [FFI::Struct, :pointer, :string] The type (class) of the
102
- # elements in the DYNARRAY, or the special values :pointer or :string.
103
- #
104
- # When type is :pointer or :string, LibC::free will be called on
105
- # the pointers first.
106
- #
107
- # The memory will also be zeroed out.
108
- def self.dynarray_clear(struct, field, type)
109
- count = dynarray_count(struct, field)
110
- mem = dynarray_items(struct, field)
111
- return if count == 0 or mem.null?
112
-
113
- vsize = dynarray_vsize(struct, field)
114
- case type
115
- when :pointer, :string
116
- itemsize = FFI::Pointer.size
117
- ptrs = FFI::Pointer.new(:pointer, mem)
118
- (0..count-1).each {|n|
119
- LibC::free(ptrs[n].read_pointer())
120
- }
121
- else
122
- itemsize = type.size
123
- end
124
- LibC::memset(mem, 0, vsize * itemsize)
125
- struct[(field + 'c').to_sym] = 0
126
- end
127
-
128
- end
129
-
@@ -1,243 +0,0 @@
1
- require 'ffi'
2
-
3
- module LibRNP
4
- extend FFI::Library
5
-
6
- enum :pgp_s2k_usage_t, [
7
- :PGP_S2KU_NONE, 0,
8
- :PGP_S2KU_ENCRYPTED_AND_HASHED, 254,
9
- :PGP_S2KU_ENCRYPTED, 255
10
- ]
11
- enum :pgp_s2k_specifier_t, [
12
- :PGP_S2KS_SIMPLE, 0,
13
- :PGP_S2KS_SALTED, 1,
14
- :PGP_S2KS_ITERATED_AND_SALTED, 3
15
- ]
16
- enum :pgp_compression_type_t, [
17
- :PGP_C_NONE, 0,
18
- :PGP_C_ZIP, 1,
19
- :PGP_C_ZLIB, 2,
20
- :PGP_C_BZIP2, 3
21
- ]
22
- enum :pgp_symm_alg_t, [
23
- :PGP_SA_PLAINTEXT, 0,
24
- :PGP_SA_IDEA, 1,
25
- :PGP_SA_TRIPLEDES, 2,
26
- :PGP_SA_CAST5, 3,
27
- :PGP_SA_BLOWFISH, 4,
28
- :PGP_SA_AES_128, 7,
29
- :PGP_SA_AES_192, 8,
30
- :PGP_SA_AES_256, 9,
31
- :PGP_SA_TWOFISH, 10,
32
- :PGP_SA_CAMELLIA_128, 100,
33
- :PGP_SA_CAMELLIA_192, 101,
34
- :PGP_SA_CAMELLIA_256, 102
35
- ]
36
- enum :pgp_cb_ret_t, [
37
- :PGP_RELEASE_MEMORY,
38
- :PGP_KEEP_MEMORY,
39
- :PGP_FINISHED
40
- ]
41
- enum :pgp_content_enum, [
42
- :PGP_PTAG_CT_RESERVE, 0,
43
- :PGP_PTAG_CT_PK_SESSION_KEY, 1,
44
- :PGP_PTAG_CT_SIGNATURE, 2,
45
- :PGP_PTAG_CT_SK_SESSION_KEY, 3,
46
- :PGP_PTAG_CT_1_PASS_SIG, 4,
47
- :PGP_PTAG_CT_SECRET_KEY, 5,
48
- :PGP_PTAG_CT_PUBLIC_KEY, 6,
49
- :PGP_PTAG_CT_SECRET_SUBKEY, 7,
50
- :PGP_PTAG_CT_COMPRESSED, 8,
51
- :PGP_PTAG_CT_SE_DATA, 9,
52
- :PGP_PTAG_CT_MARKER, 10,
53
- :PGP_PTAG_CT_LITDATA, 11,
54
- :PGP_PTAG_CT_TRUST, 12,
55
- :PGP_PTAG_CT_USER_ID, 13,
56
- :PGP_PTAG_CT_PUBLIC_SUBKEY, 14,
57
- :PGP_PTAG_CT_RESERVED2, 15,
58
- :PGP_PTAG_CT_RESERVED3, 16,
59
- :PGP_PTAG_CT_USER_ATTR, 17,
60
- :PGP_PTAG_CT_SE_IP_DATA, 18,
61
- :PGP_PTAG_CT_MDC, 19,
62
- :PGP_PARSER_PTAG, 0x100,
63
- :PGP_PTAG_RAW_SS, 0x101,
64
- :PGP_PTAG_SS_ALL, 0x102,
65
- :PGP_PARSER_PACKET_END, 0x103,
66
- :PGP_PTAG_SIG_SUBPKT_BASE, 0x200,
67
- :PGP_PTAG_SS_CREATION_TIME, 0x200 + 2,
68
- :PGP_PTAG_SS_EXPIRATION_TIME, 0x200 + 3,
69
- :PGP_PTAG_SS_EXPORT_CERT, 0x200 + 4,
70
- :PGP_PTAG_SS_TRUST, 0x200 + 5,
71
- :PGP_PTAG_SS_REGEXP, 0x200 + 6,
72
- :PGP_PTAG_SS_REVOCABLE, 0x200 + 7,
73
- :PGP_PTAG_SS_KEY_EXPIRY, 0x200 + 9,
74
- :PGP_PTAG_SS_RESERVED, 0x200 + 10,
75
- :PGP_PTAG_SS_PREFERRED_SKA, 0x200 + 11,
76
- :PGP_PTAG_SS_REVOCATION_KEY, 0x200 + 12,
77
- :PGP_PTAG_SS_ISSUER_KEY_ID, 0x200 + 16,
78
- :PGP_PTAG_SS_NOTATION_DATA, 0x200 + 20,
79
- :PGP_PTAG_SS_PREFERRED_HASH, 0x200 + 21,
80
- :PGP_PTAG_SS_PREF_COMPRESS, 0x200 + 22,
81
- :PGP_PTAG_SS_KEYSERV_PREFS, 0x200 + 23,
82
- :PGP_PTAG_SS_PREF_KEYSERV, 0x200 + 24,
83
- :PGP_PTAG_SS_PRIMARY_USER_ID, 0x200 + 25,
84
- :PGP_PTAG_SS_POLICY_URI, 0x200 + 26,
85
- :PGP_PTAG_SS_KEY_FLAGS, 0x200 + 27,
86
- :PGP_PTAG_SS_SIGNERS_USER_ID, 0x200 + 28,
87
- :PGP_PTAG_SS_REVOCATION_REASON, 0x200 + 29,
88
- :PGP_PTAG_SS_FEATURES, 0x200 + 30,
89
- :PGP_PTAG_SS_SIGNATURE_TARGET, 0x200 + 31,
90
- :PGP_PTAG_SS_EMBEDDED_SIGNATURE, 0x200 + 32,
91
- :PGP_PTAG_SS_USERDEFINED00, 0x200 + 100,
92
- :PGP_PTAG_SS_USERDEFINED01, 0x200 + 101,
93
- :PGP_PTAG_SS_USERDEFINED02, 0x200 + 102,
94
- :PGP_PTAG_SS_USERDEFINED03, 0x200 + 103,
95
- :PGP_PTAG_SS_USERDEFINED04, 0x200 + 104,
96
- :PGP_PTAG_SS_USERDEFINED05, 0x200 + 105,
97
- :PGP_PTAG_SS_USERDEFINED06, 0x200 + 106,
98
- :PGP_PTAG_SS_USERDEFINED07, 0x200 + 107,
99
- :PGP_PTAG_SS_USERDEFINED08, 0x200 + 108,
100
- :PGP_PTAG_SS_USERDEFINED09, 0x200 + 109,
101
- :PGP_PTAG_SS_USERDEFINED10, 0x200 + 110,
102
- :PGP_PTAG_CT_LITDATA_HEADER, 0x300,
103
- :PGP_PTAG_CT_LITDATA_BODY, 0x300 + 1,
104
- :PGP_PTAG_CT_SIGNATURE_HEADER, 0x300 + 2,
105
- :PGP_PTAG_CT_SIGNATURE_FOOTER, 0x300 + 3,
106
- :PGP_PTAG_CT_ARMOUR_HEADER, 0x300 + 4,
107
- :PGP_PTAG_CT_ARMOUR_TRAILER, 0x300 + 5,
108
- :PGP_PTAG_CT_SIGNED_CLEARTEXT_HEADER, 0x300 + 6,
109
- :PGP_PTAG_CT_SIGNED_CLEARTEXT_BODY, 0x300 + 7,
110
- :PGP_PTAG_CT_SIGNED_CLEARTEXT_TRAILER, 0x300 + 8,
111
- :PGP_PTAG_CT_UNARMOURED_TEXT, 0x300 + 9,
112
- :PGP_PTAG_CT_ENCRYPTED_SECRET_KEY, 0x300 + 10,
113
- :PGP_PTAG_CT_ENCRYPTED_SECRET_SUBKEY, 0x300 + 11,
114
- :PGP_PTAG_CT_SE_DATA_HEADER, 0x300 + 12,
115
- :PGP_PTAG_CT_SE_DATA_BODY, 0x300 + 13,
116
- :PGP_PTAG_CT_SE_IP_DATA_HEADER, 0x300 + 14,
117
- :PGP_PTAG_CT_SE_IP_DATA_BODY, 0x300 + 15,
118
- :PGP_PTAG_CT_ENCRYPTED_PK_SESSION_KEY, 0x300 + 16,
119
- :PGP_GET_PASSPHRASE, 0x400,
120
- :PGP_GET_SECKEY, 0x400 + 1,
121
- :PGP_PARSER_ERROR, 0x500,
122
- :PGP_PARSER_ERRCODE, 0x500 + 1,
123
- ]
124
- enum :pgp_parse_type_t, [
125
- :PGP_PARSE_RAW,
126
- :PGP_PARSE_PARSED,
127
- :PGP_PARSE_IGNORE
128
- ]
129
- enum :pgp_errcode_t, [
130
- :PGP_E_OK, 0x0000,
131
- :PGP_E_FAIL, 0x0001,
132
- :PGP_E_SYSTEM_ERROR, 0x0002,
133
- :PGP_E_UNIMPLEMENTED, 0x0003,
134
- :PGP_E_R, 0x1000,
135
- :PGP_E_R_READ_FAILED, 0x1000 + 1,
136
- :PGP_E_R_EARLY_EOF, 0x1000 + 2,
137
- :PGP_E_R_BAD_FORMAT, 0x1000 + 3,
138
- :PGP_E_R_UNSUPPORTED, 0x1000 + 4,
139
- :PGP_E_R_UNCONSUMED_DATA, 0x1000 + 5,
140
- :PGP_E_W, 0x2000,
141
- :PGP_E_W_WRITE_FAILED, 0x2000 + 1,
142
- :PGP_E_W_WRITE_TOO_SHORT, 0x2000 + 2,
143
- :PGP_E_P, 0x3000,
144
- :PGP_E_P_NOT_ENOUGH_DATA, 0x3000 + 1,
145
- :PGP_E_P_UNKNOWN_TAG, 0x3000 + 2,
146
- :PGP_E_P_PACKET_CONSUMED, 0x3000 + 3,
147
- :PGP_E_P_MPI_FORMAT_ERROR, 0x3000 + 4,
148
- :PGP_E_P_PACKET_NOT_CONSUMED, 0x3000 + 5,
149
- :PGP_E_P_DECOMPRESSION_ERROR, 0x3000 + 6,
150
- :PGP_E_P_NO_USERID, 0x3000 + 7,
151
- :PGP_E_C, 0x4000,
152
- :PGP_E_V, 0x5000,
153
- :PGP_E_V_BAD_SIGNATURE, 0x5000 + 1,
154
- :PGP_E_V_NO_SIGNATURE, 0x5000 + 2,
155
- :PGP_E_V_UNKNOWN_SIGNER, 0x5000 + 3,
156
- :PGP_E_V_BAD_HASH, 0x5000 + 4,
157
- :PGP_E_ALG, 0x6000,
158
- :PGP_E_ALG_UNSUPPORTED_SYMMETRIC_ALG, 0x6000 + 1,
159
- :PGP_E_ALG_UNSUPPORTED_PUBLIC_KEY_ALG, 0x6000 + 2,
160
- :PGP_E_ALG_UNSUPPORTED_SIGNATURE_ALG, 0x6000 + 3,
161
- :PGP_E_ALG_UNSUPPORTED_HASH_ALG, 0x6000 + 4,
162
- :PGP_E_ALG_UNSUPPORTED_COMPRESS_ALG, 0x6000 + 5,
163
- :PGP_E_PROTO, 0x7000,
164
- :PGP_E_PROTO_BAD_SYMMETRIC_DECRYPT, 0x7000 + 2,
165
- :PGP_E_PROTO_UNKNOWN_SS, 0x7000 + 3,
166
- :PGP_E_PROTO_CRITICAL_SS_IGNORED, 0x7000 + 4,
167
- :PGP_E_PROTO_BAD_PUBLIC_KEY_VRSN, 0x7000 + 5,
168
- :PGP_E_PROTO_BAD_SIGNATURE_VRSN, 0x7000 + 6,
169
- :PGP_E_PROTO_BAD_ONE_PASS_SIG_VRSN, 0x7000 + 7,
170
- :PGP_E_PROTO_BAD_PKSK_VRSN, 0x7000 + 8,
171
- :PGP_E_PROTO_DECRYPTED_MSG_WRONG_LEN, 0x7000 + 9,
172
- :PGP_E_PROTO_BAD_SK_CHECKSUM, 0x7000 + 10
173
- ]
174
- enum :pgp_ptag_of_lt_t, [
175
- :PGP_PTAG_OLD_LEN_1, 0x00,
176
- :PGP_PTAG_OLD_LEN_2, 0x01,
177
- :PGP_PTAG_OLD_LEN_4, 0x02,
178
- :PGP_PTAG_OLD_LEN_INDETERMINATE, 0x03
179
- ]
180
- enum :pgp_version_t, [
181
- :PGP_V2, 2,
182
- :PGP_V3, 3,
183
- :PGP_V4, 4
184
- ]
185
- PGP_PUBKEY_ALG_T = enum :pgp_pubkey_alg_t, [
186
- :PGP_PKA_NOTHING, 0,
187
- :PGP_PKA_RSA, 1,
188
- :PGP_PKA_RSA_ENCRYPT_ONLY, 2,
189
- :PGP_PKA_RSA_SIGN_ONLY, 3,
190
- :PGP_PKA_ELGAMAL, 16,
191
- :PGP_PKA_DSA, 17,
192
- :PGP_PKA_RESERVED_ELLIPTIC_CURVE, 18,
193
- :PGP_PKA_RESERVED_ECDSA, 19,
194
- :PGP_PKA_ELGAMAL_ENCRYPT_OR_SIGN, 20,
195
- :PGP_PKA_RESERVED_DH, 21,
196
- :PGP_PKA_PRIVATE00, 100,
197
- :PGP_PKA_PRIVATE01, 101,
198
- :PGP_PKA_PRIVATE02, 102,
199
- :PGP_PKA_PRIVATE03, 103,
200
- :PGP_PKA_PRIVATE04, 104,
201
- :PGP_PKA_PRIVATE05, 105,
202
- :PGP_PKA_PRIVATE06, 106,
203
- :PGP_PKA_PRIVATE07, 107,
204
- :PGP_PKA_PRIVATE08, 108,
205
- :PGP_PKA_PRIVATE09, 109,
206
- :PGP_PKA_PRIVATE10, 110,
207
- ]
208
- enum :pgp_hash_alg_t, [
209
- :PGP_HASH_UNKNOWN, -1,
210
- :PGP_HASH_MD5, 1,
211
- :PGP_HASH_SHA1, 2,
212
- :PGP_HASH_RIPEMD, 3,
213
- :PGP_HASH_SHA256, 8,
214
- :PGP_HASH_SHA384, 9,
215
- :PGP_HASH_SHA512, 10,
216
- :PGP_HASH_SHA224, 11
217
- ]
218
- enum :pgp_sig_type_t, [
219
- :PGP_SIG_BINARY, 0x00,
220
- :PGP_SIG_TEXT, 0x01,
221
- :PGP_SIG_STANDALONE, 0x02,
222
- :PGP_CERT_GENERIC, 0x10,
223
- :PGP_CERT_PERSONA, 0x11,
224
- :PGP_CERT_CASUAL, 0x12,
225
- :PGP_CERT_POSITIVE, 0x13,
226
- :PGP_SIG_SUBKEY, 0x18,
227
- :PGP_SIG_PRIMARY, 0x19,
228
- :PGP_SIG_DIRECT, 0x1f,
229
- :PGP_SIG_REV_KEY, 0x20,
230
- :PGP_SIG_REV_SUBKEY, 0x28,
231
- :PGP_SIG_REV_CERT, 0x30,
232
- :PGP_SIG_TIMESTAMP, 0x40,
233
- :PGP_SIG_3RD_PARTY, 0x50
234
- ]
235
- enum :pgp_litdata_enum, [
236
- :PGP_LDT_BINARY, 'b'.ord,
237
- :PGP_LDT_TEXT, 't'.ord,
238
- :PGP_LDT_UTF8, 'u'.ord,
239
- :PGP_LDT_LOCAL, 'l'.ord,
240
- :PGP_LDT_LOCAL2, '1'.ord
241
- ]
242
- end
243
-
@@ -1,28 +0,0 @@
1
- require 'ffi'
2
-
3
- module LibC
4
- extend FFI::Library
5
- ffi_lib FFI::Library::LIBC
6
-
7
- attach_function :calloc,
8
- [:size_t, :size_t],
9
- :pointer
10
- attach_function :realloc,
11
- [:pointer, :size_t],
12
- :pointer
13
- attach_function :free,
14
- [:pointer],
15
- :void
16
-
17
- attach_function :memset,
18
- [:pointer, :int, :size_t],
19
- :pointer
20
-
21
- attach_function :fdopen,
22
- [:int, :string],
23
- :pointer
24
- attach_function :fclose,
25
- [:pointer],
26
- :int
27
- end
28
-
@@ -1,15 +0,0 @@
1
- require 'ffi'
2
-
3
- module LibOpenSSL
4
- extend FFI::Library
5
- ffi_lib ['ssl']
6
-
7
- # Caller must free result with OPENSSL_free aka (usually) LIBC free
8
- attach_function :BN_bn2hex,
9
- [:pointer],
10
- :strptr
11
- attach_function :BN_hex2bn,
12
- [:pointer, :string],
13
- :int
14
- end
15
-
@@ -1,213 +0,0 @@
1
- require 'ffi'
2
-
3
- require_relative 'enums'
4
- require_relative 'structs'
5
-
6
- module LibRNP
7
- extend FFI::Library
8
- ffi_lib ['rnp']
9
-
10
- attach_function :pgp_parse_options,
11
- [PGPStream.by_ref, :pgp_content_enum, :pgp_parse_type_t],
12
- :void
13
- attach_function :pgp_reader_set_fd,
14
- [PGPStream.by_ref, :int],
15
- :void
16
- attach_function :pgp_reader_set_memory,
17
- [PGPStream.by_ref, :pointer, :size_t],
18
- :void
19
- attach_function :pgp_set_callback,
20
- [PGPStream.by_ref, :pgp_cbfunc_t, :pointer],
21
- :void
22
- attach_function :pgp_reader_push_dearmour,
23
- [PGPStream.by_ref],
24
- :void
25
- attach_function :pgp_reader_pop_dearmour,
26
- [PGPStream.by_ref],
27
- :void
28
- attach_function :pgp_parse_and_accumulate,
29
- [PGPKeyring.by_ref, PGPStream.by_ref],
30
- :int
31
- attach_function :pgp_callback_push,
32
- [PGPStream.by_ref, :pgp_cbfunc_t, :pointer],
33
- :void
34
- attach_function :pgp_parse,
35
- [PGPStream.by_ref, :int],
36
- :int
37
-
38
- attach_function :pgp_rsa_new_selfsign_key,
39
- [:int, :ulong, :string, :string, :string],
40
- PGPKey.by_ref
41
- attach_function :pgp_rsa_new_key,
42
- [:int, :ulong, :string, :string],
43
- PGPKey.by_ref
44
- attach_function :pgp_keydata_free,
45
- [:pointer],
46
- :void
47
-
48
- attach_function :pgp_add_userid,
49
- [PGPKey.by_ref, :string],
50
- :strptr
51
-
52
- attach_function :pgp_add_selfsigned_userid,
53
- [PGPKey.by_ref, :string],
54
- :uint
55
-
56
- attach_function :pgp_keyring_free,
57
- [:pointer],
58
- :void
59
- attach_function :pgp_pubkey_free,
60
- [:pointer],
61
- :void
62
- attach_function :pgp_seckey_free,
63
- [:pointer],
64
- :void
65
-
66
- attach_function :pgp_keyring_fileread,
67
- [PGPKeyring.by_ref, :uint, :string],
68
- :uint
69
- attach_function :pgp_keyring_read_from_mem,
70
- [PGPIO.by_ref, PGPKeyring.by_ref, :uint, PGPMemory.by_ref],
71
- :uint
72
-
73
- attach_function :pgp_sign_file,
74
- [PGPIO.by_ref, :string, :string, PGPSecKey.by_ref, :string, :int64, :uint64, :uint, :uint, :uint],
75
- :uint
76
- attach_function :pgp_sign_detached,
77
- [PGPIO.by_ref, :string, :string, PGPSecKey.by_ref, :string, :int64, :uint64, :uint, :uint],
78
- :int
79
- attach_function :pgp_sign_buf,
80
- [PGPIO.by_ref, :pointer, :size_t, PGPSecKey.by_ref, :int64, :uint64, :string, :uint, :uint],
81
- :pointer
82
- attach_function :pgp_validate_file,
83
- [PGPIO.by_ref, PGPValidation.by_ref, :string, :string, :int, PGPKeyring.by_ref],
84
- :uint
85
- attach_function :pgp_validate_mem,
86
- [PGPIO.by_ref, PGPValidation.by_ref, PGPMemory.by_ref, :pointer, :int, PGPKeyring.by_ref],
87
- :uint
88
-
89
- attach_function :pgp_encrypt_file,
90
- [PGPIO.by_ref, :string, :string, PGPKey.by_ref, :uint, :uint, :string],
91
- :uint
92
- attach_function :pgp_encrypt_buf,
93
- [PGPIO.by_ref, :pointer, :size_t, PGPKey.by_ref, :uint, :string],
94
- :pointer
95
- attach_function :pgp_decrypt_file,
96
- [PGPIO.by_ref, :string, :string, PGPKeyring.by_ref, PGPKeyring.by_ref, :uint, :uint, :uint, :pointer, :int, :pgp_cbfunc_t],
97
- :uint
98
- attach_function :pgp_decrypt_buf,
99
- [PGPIO.by_ref, :pointer, :size_t, PGPKeyring.by_ref, PGPKeyring.by_ref, :uint, :uint, :pointer, :int, :pgp_cbfunc_t],
100
- :pointer
101
-
102
- attach_function :pgp_export_key,
103
- [PGPIO.by_ref, PGPKey.by_ref, :string],
104
- :string
105
-
106
- attach_function :pgp_memory_new,
107
- [],
108
- PGPMemory.by_ref
109
- attach_function :pgp_memory_free,
110
- [PGPMemory.by_ref],
111
- :void
112
- attach_function :pgp_memory_init,
113
- [PGPMemory.by_ref, :size_t],
114
- :void
115
- attach_function :pgp_memory_pad,
116
- [PGPMemory.by_ref, :size_t],
117
- :void
118
- attach_function :pgp_memory_add,
119
- [PGPMemory.by_ref, :pointer, :size_t],
120
- :void
121
- attach_function :pgp_memory_place_int,
122
- [PGPMemory.by_ref, :uint, :uint, :size_t],
123
- :void
124
- attach_function :pgp_memory_make_packet,
125
- [PGPMemory.by_ref, :pgp_content_enum],
126
- :void
127
- attach_function :pgp_memory_clear,
128
- [PGPMemory.by_ref],
129
- :void
130
- attach_function :pgp_memory_release,
131
- [PGPMemory.by_ref],
132
- :void
133
- attach_function :pgp_mem_len,
134
- [PGPMemory.by_ref],
135
- :size_t
136
- attach_function :pgp_mem_data,
137
- [PGPMemory.by_ref],
138
- :pointer
139
- attach_function :pgp_mem_readfile,
140
- [PGPMemory.by_ref, :string],
141
- :int
142
-
143
- attach_function :pgp_is_key_secret,
144
- [PGPKey.by_ref],
145
- :uint
146
- attach_function :pgp_get_seckey,
147
- [PGPKey.by_ref],
148
- :pointer
149
- attach_function :pgp_decrypt_seckey,
150
- [PGPKey.by_ref, :pointer],
151
- :pointer
152
-
153
- attach_function :pgp_stream_delete,
154
- [:pointer],
155
- :void
156
-
157
- attach_function :pgp_setup_memory_write,
158
- [:pointer, :pointer, :size_t],
159
- :void
160
- attach_function :pgp_teardown_memory_write,
161
- [PGPOutput.by_ref, PGPMemory.by_ref],
162
- :void
163
- attach_function :pgp_write_xfer_pubkey,
164
- [PGPOutput.by_ref, PGPKey.by_ref, :pointer, :uint],
165
- :uint
166
- attach_function :pgp_write_xfer_seckey,
167
- [PGPOutput.by_ref, PGPKey.by_ref, :pointer, :size_t, :pointer, :uint],
168
- :uint
169
-
170
- attach_function :pgp_create_sig_new,
171
- [],
172
- :pointer
173
- attach_function :pgp_create_sig_delete,
174
- [:pointer],
175
- :void
176
- attach_function :pgp_sig_start_key_sig,
177
- [:pointer, PGPPubKey.by_ref, :string, :pgp_sig_type_t],
178
- :void
179
- attach_function :pgp_sig_start_subkey_sig,
180
- [:pointer, PGPPubKey.by_ref, PGPPubKey.by_ref, :pgp_sig_type_t],
181
- :void
182
- attach_function :pgp_write_sig,
183
- [PGPOutput.by_ref, :pointer, PGPPubKey.by_ref, PGPSecKey.by_ref],
184
- :uint
185
- attach_function :pgp_add_time,
186
- [:pointer, :int64, :string],
187
- :uint
188
- attach_function :pgp_add_issuer_keyid,
189
- [:pointer, :pointer],
190
- :uint
191
- attach_function :pgp_end_hashed_subpkts,
192
- [:pointer],
193
- :uint
194
-
195
- attach_function :pgp_add_subpacket,
196
- [PGPKey.by_ref, PGPSubPacket.by_ref],
197
- :pointer
198
-
199
- attach_function :pgp_fingerprint,
200
- [PGPFingerprint.by_ref, PGPPubKey.by_ref, :pgp_hash_alg_t],
201
- :int
202
- attach_function :pgp_keyid,
203
- [:pointer, :size_t, PGPPubKey.by_ref, :pgp_hash_alg_t],
204
- :int
205
-
206
- attach_function :pgp_writer_close,
207
- [PGPOutput.by_ref],
208
- :uint
209
- attach_function :pgp_output_delete,
210
- [PGPOutput.by_ref],
211
- :void
212
- end
213
-