openssl_rsa_pss_verify 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (112) hide show
  1. data/.gitignore +5 -0
  2. data/.rspec +2 -0
  3. data/.ruby-gemset +1 -0
  4. data/.ruby-version +1 -0
  5. data/Gemfile +4 -0
  6. data/Gemfile.lock +35 -0
  7. data/README +1 -0
  8. data/Rakefile +4 -0
  9. data/ext/openssl_rsa_pss_verify/extconf.rb +15 -0
  10. data/ext/openssl_rsa_pss_verify/openssl_rsa_pss_verify_ext.c +56 -0
  11. data/lib/openssl_rsa_pss_verify/version.rb +3 -0
  12. data/lib/openssl_rsa_pss_verify.rb +2 -0
  13. data/openssl_rsa_pss_verify.gemspec +26 -0
  14. data/tasks/compile.rake +12 -0
  15. data/tasks/rspec.rake +12 -0
  16. data/vendor/openssl/include/openssl/aes.h +147 -0
  17. data/vendor/openssl/include/openssl/asn1.h +1404 -0
  18. data/vendor/openssl/include/openssl/asn1_mac.h +578 -0
  19. data/vendor/openssl/include/openssl/asn1t.h +960 -0
  20. data/vendor/openssl/include/openssl/bio.h +847 -0
  21. data/vendor/openssl/include/openssl/blowfish.h +129 -0
  22. data/vendor/openssl/include/openssl/bn.h +891 -0
  23. data/vendor/openssl/include/openssl/buffer.h +119 -0
  24. data/vendor/openssl/include/openssl/camellia.h +130 -0
  25. data/vendor/openssl/include/openssl/cast.h +107 -0
  26. data/vendor/openssl/include/openssl/cmac.h +82 -0
  27. data/vendor/openssl/include/openssl/cms.h +501 -0
  28. data/vendor/openssl/include/openssl/comp.h +80 -0
  29. data/vendor/openssl/include/openssl/conf.h +263 -0
  30. data/vendor/openssl/include/openssl/conf_api.h +89 -0
  31. data/vendor/openssl/include/openssl/crypto.h +611 -0
  32. data/vendor/openssl/include/openssl/des.h +248 -0
  33. data/vendor/openssl/include/openssl/des_old.h +446 -0
  34. data/vendor/openssl/include/openssl/dh.h +280 -0
  35. data/vendor/openssl/include/openssl/dsa.h +327 -0
  36. data/vendor/openssl/include/openssl/dso.h +409 -0
  37. data/vendor/openssl/include/openssl/dtls1.h +287 -0
  38. data/vendor/openssl/include/openssl/e_os2.h +315 -0
  39. data/vendor/openssl/include/openssl/ebcdic.h +19 -0
  40. data/vendor/openssl/include/openssl/ec.h +1167 -0
  41. data/vendor/openssl/include/openssl/ecdh.h +125 -0
  42. data/vendor/openssl/include/openssl/ecdsa.h +260 -0
  43. data/vendor/openssl/include/openssl/engine.h +842 -0
  44. data/vendor/openssl/include/openssl/err.h +386 -0
  45. data/vendor/openssl/include/openssl/evp.h +1409 -0
  46. data/vendor/openssl/include/openssl/hmac.h +110 -0
  47. data/vendor/openssl/include/openssl/idea.h +103 -0
  48. data/vendor/openssl/include/openssl/krb5_asn.h +256 -0
  49. data/vendor/openssl/include/openssl/kssl.h +183 -0
  50. data/vendor/openssl/include/openssl/lhash.h +241 -0
  51. data/vendor/openssl/include/openssl/md4.h +120 -0
  52. data/vendor/openssl/include/openssl/md5.h +120 -0
  53. data/vendor/openssl/include/openssl/mdc2.h +98 -0
  54. data/vendor/openssl/include/openssl/modes.h +135 -0
  55. data/vendor/openssl/include/openssl/obj_mac.h +4032 -0
  56. data/vendor/openssl/include/openssl/objects.h +1138 -0
  57. data/vendor/openssl/include/openssl/ocsp.h +623 -0
  58. data/vendor/openssl/include/openssl/opensslconf.h +234 -0
  59. data/vendor/openssl/include/openssl/opensslv.h +89 -0
  60. data/vendor/openssl/include/openssl/ossl_typ.h +202 -0
  61. data/vendor/openssl/include/openssl/pem.h +641 -0
  62. data/vendor/openssl/include/openssl/pem2.h +70 -0
  63. data/vendor/openssl/include/openssl/pkcs12.h +331 -0
  64. data/vendor/openssl/include/openssl/pkcs7.h +499 -0
  65. data/vendor/openssl/include/openssl/pqueue.h +94 -0
  66. data/vendor/openssl/include/openssl/rand.h +149 -0
  67. data/vendor/openssl/include/openssl/rc2.h +103 -0
  68. data/vendor/openssl/include/openssl/rc4.h +90 -0
  69. data/vendor/openssl/include/openssl/ripemd.h +107 -0
  70. data/vendor/openssl/include/openssl/rsa.h +582 -0
  71. data/vendor/openssl/include/openssl/safestack.h +2663 -0
  72. data/vendor/openssl/include/openssl/seed.h +139 -0
  73. data/vendor/openssl/include/openssl/sha.h +214 -0
  74. data/vendor/openssl/include/openssl/srp.h +172 -0
  75. data/vendor/openssl/include/openssl/srtp.h +145 -0
  76. data/vendor/openssl/include/openssl/ssl.h +2579 -0
  77. data/vendor/openssl/include/openssl/ssl2.h +272 -0
  78. data/vendor/openssl/include/openssl/ssl23.h +83 -0
  79. data/vendor/openssl/include/openssl/ssl3.h +684 -0
  80. data/vendor/openssl/include/openssl/stack.h +108 -0
  81. data/vendor/openssl/include/openssl/symhacks.h +475 -0
  82. data/vendor/openssl/include/openssl/tls1.h +735 -0
  83. data/vendor/openssl/include/openssl/ts.h +858 -0
  84. data/vendor/openssl/include/openssl/txt_db.h +112 -0
  85. data/vendor/openssl/include/openssl/ui.h +383 -0
  86. data/vendor/openssl/include/openssl/ui_compat.h +83 -0
  87. data/vendor/openssl/include/openssl/whrlpool.h +41 -0
  88. data/vendor/openssl/include/openssl/x509.h +1297 -0
  89. data/vendor/openssl/include/openssl/x509_vfy.h +567 -0
  90. data/vendor/openssl/include/openssl/x509v3.h +1007 -0
  91. data/vendor/openssl/lib/engines/lib4758cca.so +0 -0
  92. data/vendor/openssl/lib/engines/libaep.so +0 -0
  93. data/vendor/openssl/lib/engines/libatalla.so +0 -0
  94. data/vendor/openssl/lib/engines/libcapi.so +0 -0
  95. data/vendor/openssl/lib/engines/libchil.so +0 -0
  96. data/vendor/openssl/lib/engines/libcswift.so +0 -0
  97. data/vendor/openssl/lib/engines/libgmp.so +0 -0
  98. data/vendor/openssl/lib/engines/libgost.so +0 -0
  99. data/vendor/openssl/lib/engines/libnuron.so +0 -0
  100. data/vendor/openssl/lib/engines/libpadlock.so +0 -0
  101. data/vendor/openssl/lib/engines/libsureware.so +0 -0
  102. data/vendor/openssl/lib/engines/libubsec.so +0 -0
  103. data/vendor/openssl/lib/libcrypto.a +0 -0
  104. data/vendor/openssl/lib/libcrypto.so +0 -0
  105. data/vendor/openssl/lib/libcrypto.so.1.0.0 +0 -0
  106. data/vendor/openssl/lib/libssl.a +0 -0
  107. data/vendor/openssl/lib/libssl.so +0 -0
  108. data/vendor/openssl/lib/libssl.so.1.0.0 +0 -0
  109. data/vendor/openssl/lib/pkgconfig/libcrypto.pc +12 -0
  110. data/vendor/openssl/lib/pkgconfig/libssl.pc +12 -0
  111. data/vendor/openssl/lib/pkgconfig/openssl.pc +12 -0
  112. metadata +208 -0
@@ -0,0 +1,112 @@
1
+ /* crypto/txt_db/txt_db.h */
2
+ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3
+ * All rights reserved.
4
+ *
5
+ * This package is an SSL implementation written
6
+ * by Eric Young (eay@cryptsoft.com).
7
+ * The implementation was written so as to conform with Netscapes SSL.
8
+ *
9
+ * This library is free for commercial and non-commercial use as long as
10
+ * the following conditions are aheared to. The following conditions
11
+ * apply to all code found in this distribution, be it the RC4, RSA,
12
+ * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13
+ * included with this distribution is covered by the same copyright terms
14
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15
+ *
16
+ * Copyright remains Eric Young's, and as such any Copyright notices in
17
+ * the code are not to be removed.
18
+ * If this package is used in a product, Eric Young should be given attribution
19
+ * as the author of the parts of the library used.
20
+ * This can be in the form of a textual message at program startup or
21
+ * in documentation (online or textual) provided with the package.
22
+ *
23
+ * Redistribution and use in source and binary forms, with or without
24
+ * modification, are permitted provided that the following conditions
25
+ * are met:
26
+ * 1. Redistributions of source code must retain the copyright
27
+ * notice, this list of conditions and the following disclaimer.
28
+ * 2. Redistributions in binary form must reproduce the above copyright
29
+ * notice, this list of conditions and the following disclaimer in the
30
+ * documentation and/or other materials provided with the distribution.
31
+ * 3. All advertising materials mentioning features or use of this software
32
+ * must display the following acknowledgement:
33
+ * "This product includes cryptographic software written by
34
+ * Eric Young (eay@cryptsoft.com)"
35
+ * The word 'cryptographic' can be left out if the rouines from the library
36
+ * being used are not cryptographic related :-).
37
+ * 4. If you include any Windows specific code (or a derivative thereof) from
38
+ * the apps directory (application code) you must include an acknowledgement:
39
+ * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40
+ *
41
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51
+ * SUCH DAMAGE.
52
+ *
53
+ * The licence and distribution terms for any publically available version or
54
+ * derivative of this code cannot be changed. i.e. this code cannot simply be
55
+ * copied and put under another distribution licence
56
+ * [including the GNU Public Licence.]
57
+ */
58
+
59
+ #ifndef HEADER_TXT_DB_H
60
+ #define HEADER_TXT_DB_H
61
+
62
+ #include <openssl/opensslconf.h>
63
+ #ifndef OPENSSL_NO_BIO
64
+ #include <openssl/bio.h>
65
+ #endif
66
+ #include <openssl/stack.h>
67
+ #include <openssl/lhash.h>
68
+
69
+ #define DB_ERROR_OK 0
70
+ #define DB_ERROR_MALLOC 1
71
+ #define DB_ERROR_INDEX_CLASH 2
72
+ #define DB_ERROR_INDEX_OUT_OF_RANGE 3
73
+ #define DB_ERROR_NO_INDEX 4
74
+ #define DB_ERROR_INSERT_INDEX_CLASH 5
75
+
76
+ #ifdef __cplusplus
77
+ extern "C" {
78
+ #endif
79
+
80
+ typedef OPENSSL_STRING *OPENSSL_PSTRING;
81
+ DECLARE_SPECIAL_STACK_OF(OPENSSL_PSTRING, OPENSSL_STRING)
82
+
83
+ typedef struct txt_db_st
84
+ {
85
+ int num_fields;
86
+ STACK_OF(OPENSSL_PSTRING) *data;
87
+ LHASH_OF(OPENSSL_STRING) **index;
88
+ int (**qual)(OPENSSL_STRING *);
89
+ long error;
90
+ long arg1;
91
+ long arg2;
92
+ OPENSSL_STRING *arg_row;
93
+ } TXT_DB;
94
+
95
+ #ifndef OPENSSL_NO_BIO
96
+ TXT_DB *TXT_DB_read(BIO *in, int num);
97
+ long TXT_DB_write(BIO *out, TXT_DB *db);
98
+ #else
99
+ TXT_DB *TXT_DB_read(char *in, int num);
100
+ long TXT_DB_write(char *out, TXT_DB *db);
101
+ #endif
102
+ int TXT_DB_create_index(TXT_DB *db,int field,int (*qual)(OPENSSL_STRING *),
103
+ LHASH_HASH_FN_TYPE hash, LHASH_COMP_FN_TYPE cmp);
104
+ void TXT_DB_free(TXT_DB *db);
105
+ OPENSSL_STRING *TXT_DB_get_by_index(TXT_DB *db, int idx, OPENSSL_STRING *value);
106
+ int TXT_DB_insert(TXT_DB *db, OPENSSL_STRING *value);
107
+
108
+ #ifdef __cplusplus
109
+ }
110
+ #endif
111
+
112
+ #endif
@@ -0,0 +1,383 @@
1
+ /* crypto/ui/ui.h -*- mode:C; c-file-style: "eay" -*- */
2
+ /* Written by Richard Levitte (richard@levitte.org) for the OpenSSL
3
+ * project 2001.
4
+ */
5
+ /* ====================================================================
6
+ * Copyright (c) 2001 The OpenSSL Project. All rights reserved.
7
+ *
8
+ * Redistribution and use in source and binary forms, with or without
9
+ * modification, are permitted provided that the following conditions
10
+ * are met:
11
+ *
12
+ * 1. Redistributions of source code must retain the above copyright
13
+ * notice, this list of conditions and the following disclaimer.
14
+ *
15
+ * 2. Redistributions in binary form must reproduce the above copyright
16
+ * notice, this list of conditions and the following disclaimer in
17
+ * the documentation and/or other materials provided with the
18
+ * distribution.
19
+ *
20
+ * 3. All advertising materials mentioning features or use of this
21
+ * software must display the following acknowledgment:
22
+ * "This product includes software developed by the OpenSSL Project
23
+ * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
24
+ *
25
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
26
+ * endorse or promote products derived from this software without
27
+ * prior written permission. For written permission, please contact
28
+ * openssl-core@openssl.org.
29
+ *
30
+ * 5. Products derived from this software may not be called "OpenSSL"
31
+ * nor may "OpenSSL" appear in their names without prior written
32
+ * permission of the OpenSSL Project.
33
+ *
34
+ * 6. Redistributions of any form whatsoever must retain the following
35
+ * acknowledgment:
36
+ * "This product includes software developed by the OpenSSL Project
37
+ * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
38
+ *
39
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
40
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
41
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
42
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
43
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
44
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
45
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
46
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
47
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
48
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
49
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
50
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
51
+ * ====================================================================
52
+ *
53
+ * This product includes cryptographic software written by Eric Young
54
+ * (eay@cryptsoft.com). This product includes software written by Tim
55
+ * Hudson (tjh@cryptsoft.com).
56
+ *
57
+ */
58
+
59
+ #ifndef HEADER_UI_H
60
+ #define HEADER_UI_H
61
+
62
+ #ifndef OPENSSL_NO_DEPRECATED
63
+ #include <openssl/crypto.h>
64
+ #endif
65
+ #include <openssl/safestack.h>
66
+ #include <openssl/ossl_typ.h>
67
+
68
+ #ifdef __cplusplus
69
+ extern "C" {
70
+ #endif
71
+
72
+ /* Declared already in ossl_typ.h */
73
+ /* typedef struct ui_st UI; */
74
+ /* typedef struct ui_method_st UI_METHOD; */
75
+
76
+
77
+ /* All the following functions return -1 or NULL on error and in some cases
78
+ (UI_process()) -2 if interrupted or in some other way cancelled.
79
+ When everything is fine, they return 0, a positive value or a non-NULL
80
+ pointer, all depending on their purpose. */
81
+
82
+ /* Creators and destructor. */
83
+ UI *UI_new(void);
84
+ UI *UI_new_method(const UI_METHOD *method);
85
+ void UI_free(UI *ui);
86
+
87
+ /* The following functions are used to add strings to be printed and prompt
88
+ strings to prompt for data. The names are UI_{add,dup}_<function>_string
89
+ and UI_{add,dup}_input_boolean.
90
+
91
+ UI_{add,dup}_<function>_string have the following meanings:
92
+ add add a text or prompt string. The pointers given to these
93
+ functions are used verbatim, no copying is done.
94
+ dup make a copy of the text or prompt string, then add the copy
95
+ to the collection of strings in the user interface.
96
+ <function>
97
+ The function is a name for the functionality that the given
98
+ string shall be used for. It can be one of:
99
+ input use the string as data prompt.
100
+ verify use the string as verification prompt. This
101
+ is used to verify a previous input.
102
+ info use the string for informational output.
103
+ error use the string for error output.
104
+ Honestly, there's currently no difference between info and error for the
105
+ moment.
106
+
107
+ UI_{add,dup}_input_boolean have the same semantics for "add" and "dup",
108
+ and are typically used when one wants to prompt for a yes/no response.
109
+
110
+
111
+ All of the functions in this group take a UI and a prompt string.
112
+ The string input and verify addition functions also take a flag argument,
113
+ a buffer for the result to end up with, a minimum input size and a maximum
114
+ input size (the result buffer MUST be large enough to be able to contain
115
+ the maximum number of characters). Additionally, the verify addition
116
+ functions takes another buffer to compare the result against.
117
+ The boolean input functions take an action description string (which should
118
+ be safe to ignore if the expected user action is obvious, for example with
119
+ a dialog box with an OK button and a Cancel button), a string of acceptable
120
+ characters to mean OK and to mean Cancel. The two last strings are checked
121
+ to make sure they don't have common characters. Additionally, the same
122
+ flag argument as for the string input is taken, as well as a result buffer.
123
+ The result buffer is required to be at least one byte long. Depending on
124
+ the answer, the first character from the OK or the Cancel character strings
125
+ will be stored in the first byte of the result buffer. No NUL will be
126
+ added, so the result is *not* a string.
127
+
128
+ On success, the all return an index of the added information. That index
129
+ is usefull when retrieving results with UI_get0_result(). */
130
+ int UI_add_input_string(UI *ui, const char *prompt, int flags,
131
+ char *result_buf, int minsize, int maxsize);
132
+ int UI_dup_input_string(UI *ui, const char *prompt, int flags,
133
+ char *result_buf, int minsize, int maxsize);
134
+ int UI_add_verify_string(UI *ui, const char *prompt, int flags,
135
+ char *result_buf, int minsize, int maxsize, const char *test_buf);
136
+ int UI_dup_verify_string(UI *ui, const char *prompt, int flags,
137
+ char *result_buf, int minsize, int maxsize, const char *test_buf);
138
+ int UI_add_input_boolean(UI *ui, const char *prompt, const char *action_desc,
139
+ const char *ok_chars, const char *cancel_chars,
140
+ int flags, char *result_buf);
141
+ int UI_dup_input_boolean(UI *ui, const char *prompt, const char *action_desc,
142
+ const char *ok_chars, const char *cancel_chars,
143
+ int flags, char *result_buf);
144
+ int UI_add_info_string(UI *ui, const char *text);
145
+ int UI_dup_info_string(UI *ui, const char *text);
146
+ int UI_add_error_string(UI *ui, const char *text);
147
+ int UI_dup_error_string(UI *ui, const char *text);
148
+
149
+ /* These are the possible flags. They can be or'ed together. */
150
+ /* Use to have echoing of input */
151
+ #define UI_INPUT_FLAG_ECHO 0x01
152
+ /* Use a default password. Where that password is found is completely
153
+ up to the application, it might for example be in the user data set
154
+ with UI_add_user_data(). It is not recommended to have more than
155
+ one input in each UI being marked with this flag, or the application
156
+ might get confused. */
157
+ #define UI_INPUT_FLAG_DEFAULT_PWD 0x02
158
+
159
+ /* The user of these routines may want to define flags of their own. The core
160
+ UI won't look at those, but will pass them on to the method routines. They
161
+ must use higher bits so they don't get confused with the UI bits above.
162
+ UI_INPUT_FLAG_USER_BASE tells which is the lowest bit to use. A good
163
+ example of use is this:
164
+
165
+ #define MY_UI_FLAG1 (0x01 << UI_INPUT_FLAG_USER_BASE)
166
+
167
+ */
168
+ #define UI_INPUT_FLAG_USER_BASE 16
169
+
170
+
171
+ /* The following function helps construct a prompt. object_desc is a
172
+ textual short description of the object, for example "pass phrase",
173
+ and object_name is the name of the object (might be a card name or
174
+ a file name.
175
+ The returned string shall always be allocated on the heap with
176
+ OPENSSL_malloc(), and need to be free'd with OPENSSL_free().
177
+
178
+ If the ui_method doesn't contain a pointer to a user-defined prompt
179
+ constructor, a default string is built, looking like this:
180
+
181
+ "Enter {object_desc} for {object_name}:"
182
+
183
+ So, if object_desc has the value "pass phrase" and object_name has
184
+ the value "foo.key", the resulting string is:
185
+
186
+ "Enter pass phrase for foo.key:"
187
+ */
188
+ char *UI_construct_prompt(UI *ui_method,
189
+ const char *object_desc, const char *object_name);
190
+
191
+
192
+ /* The following function is used to store a pointer to user-specific data.
193
+ Any previous such pointer will be returned and replaced.
194
+
195
+ For callback purposes, this function makes a lot more sense than using
196
+ ex_data, since the latter requires that different parts of OpenSSL or
197
+ applications share the same ex_data index.
198
+
199
+ Note that the UI_OpenSSL() method completely ignores the user data.
200
+ Other methods may not, however. */
201
+ void *UI_add_user_data(UI *ui, void *user_data);
202
+ /* We need a user data retrieving function as well. */
203
+ void *UI_get0_user_data(UI *ui);
204
+
205
+ /* Return the result associated with a prompt given with the index i. */
206
+ const char *UI_get0_result(UI *ui, int i);
207
+
208
+ /* When all strings have been added, process the whole thing. */
209
+ int UI_process(UI *ui);
210
+
211
+ /* Give a user interface parametrised control commands. This can be used to
212
+ send down an integer, a data pointer or a function pointer, as well as
213
+ be used to get information from a UI. */
214
+ int UI_ctrl(UI *ui, int cmd, long i, void *p, void (*f)(void));
215
+
216
+ /* The commands */
217
+ /* Use UI_CONTROL_PRINT_ERRORS with the value 1 to have UI_process print the
218
+ OpenSSL error stack before printing any info or added error messages and
219
+ before any prompting. */
220
+ #define UI_CTRL_PRINT_ERRORS 1
221
+ /* Check if a UI_process() is possible to do again with the same instance of
222
+ a user interface. This makes UI_ctrl() return 1 if it is redoable, and 0
223
+ if not. */
224
+ #define UI_CTRL_IS_REDOABLE 2
225
+
226
+
227
+ /* Some methods may use extra data */
228
+ #define UI_set_app_data(s,arg) UI_set_ex_data(s,0,arg)
229
+ #define UI_get_app_data(s) UI_get_ex_data(s,0)
230
+ int UI_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
231
+ CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
232
+ int UI_set_ex_data(UI *r,int idx,void *arg);
233
+ void *UI_get_ex_data(UI *r, int idx);
234
+
235
+ /* Use specific methods instead of the built-in one */
236
+ void UI_set_default_method(const UI_METHOD *meth);
237
+ const UI_METHOD *UI_get_default_method(void);
238
+ const UI_METHOD *UI_get_method(UI *ui);
239
+ const UI_METHOD *UI_set_method(UI *ui, const UI_METHOD *meth);
240
+
241
+ /* The method with all the built-in thingies */
242
+ UI_METHOD *UI_OpenSSL(void);
243
+
244
+
245
+ /* ---------- For method writers ---------- */
246
+ /* A method contains a number of functions that implement the low level
247
+ of the User Interface. The functions are:
248
+
249
+ an opener This function starts a session, maybe by opening
250
+ a channel to a tty, or by opening a window.
251
+ a writer This function is called to write a given string,
252
+ maybe to the tty, maybe as a field label in a
253
+ window.
254
+ a flusher This function is called to flush everything that
255
+ has been output so far. It can be used to actually
256
+ display a dialog box after it has been built.
257
+ a reader This function is called to read a given prompt,
258
+ maybe from the tty, maybe from a field in a
259
+ window. Note that it's called wth all string
260
+ structures, not only the prompt ones, so it must
261
+ check such things itself.
262
+ a closer This function closes the session, maybe by closing
263
+ the channel to the tty, or closing the window.
264
+
265
+ All these functions are expected to return:
266
+
267
+ 0 on error.
268
+ 1 on success.
269
+ -1 on out-of-band events, for example if some prompting has
270
+ been canceled (by pressing Ctrl-C, for example). This is
271
+ only checked when returned by the flusher or the reader.
272
+
273
+ The way this is used, the opener is first called, then the writer for all
274
+ strings, then the flusher, then the reader for all strings and finally the
275
+ closer. Note that if you want to prompt from a terminal or other command
276
+ line interface, the best is to have the reader also write the prompts
277
+ instead of having the writer do it. If you want to prompt from a dialog
278
+ box, the writer can be used to build up the contents of the box, and the
279
+ flusher to actually display the box and run the event loop until all data
280
+ has been given, after which the reader only grabs the given data and puts
281
+ them back into the UI strings.
282
+
283
+ All method functions take a UI as argument. Additionally, the writer and
284
+ the reader take a UI_STRING.
285
+ */
286
+
287
+ /* The UI_STRING type is the data structure that contains all the needed info
288
+ about a string or a prompt, including test data for a verification prompt.
289
+ */
290
+ typedef struct ui_string_st UI_STRING;
291
+ DECLARE_STACK_OF(UI_STRING)
292
+
293
+ /* The different types of strings that are currently supported.
294
+ This is only needed by method authors. */
295
+ enum UI_string_types
296
+ {
297
+ UIT_NONE=0,
298
+ UIT_PROMPT, /* Prompt for a string */
299
+ UIT_VERIFY, /* Prompt for a string and verify */
300
+ UIT_BOOLEAN, /* Prompt for a yes/no response */
301
+ UIT_INFO, /* Send info to the user */
302
+ UIT_ERROR /* Send an error message to the user */
303
+ };
304
+
305
+ /* Create and manipulate methods */
306
+ UI_METHOD *UI_create_method(char *name);
307
+ void UI_destroy_method(UI_METHOD *ui_method);
308
+ int UI_method_set_opener(UI_METHOD *method, int (*opener)(UI *ui));
309
+ int UI_method_set_writer(UI_METHOD *method, int (*writer)(UI *ui, UI_STRING *uis));
310
+ int UI_method_set_flusher(UI_METHOD *method, int (*flusher)(UI *ui));
311
+ int UI_method_set_reader(UI_METHOD *method, int (*reader)(UI *ui, UI_STRING *uis));
312
+ int UI_method_set_closer(UI_METHOD *method, int (*closer)(UI *ui));
313
+ int UI_method_set_prompt_constructor(UI_METHOD *method, char *(*prompt_constructor)(UI* ui, const char* object_desc, const char* object_name));
314
+ int (*UI_method_get_opener(UI_METHOD *method))(UI*);
315
+ int (*UI_method_get_writer(UI_METHOD *method))(UI*,UI_STRING*);
316
+ int (*UI_method_get_flusher(UI_METHOD *method))(UI*);
317
+ int (*UI_method_get_reader(UI_METHOD *method))(UI*,UI_STRING*);
318
+ int (*UI_method_get_closer(UI_METHOD *method))(UI*);
319
+ char * (*UI_method_get_prompt_constructor(UI_METHOD *method))(UI*, const char*, const char*);
320
+
321
+ /* The following functions are helpers for method writers to access relevant
322
+ data from a UI_STRING. */
323
+
324
+ /* Return type of the UI_STRING */
325
+ enum UI_string_types UI_get_string_type(UI_STRING *uis);
326
+ /* Return input flags of the UI_STRING */
327
+ int UI_get_input_flags(UI_STRING *uis);
328
+ /* Return the actual string to output (the prompt, info or error) */
329
+ const char *UI_get0_output_string(UI_STRING *uis);
330
+ /* Return the optional action string to output (the boolean promtp instruction) */
331
+ const char *UI_get0_action_string(UI_STRING *uis);
332
+ /* Return the result of a prompt */
333
+ const char *UI_get0_result_string(UI_STRING *uis);
334
+ /* Return the string to test the result against. Only useful with verifies. */
335
+ const char *UI_get0_test_string(UI_STRING *uis);
336
+ /* Return the required minimum size of the result */
337
+ int UI_get_result_minsize(UI_STRING *uis);
338
+ /* Return the required maximum size of the result */
339
+ int UI_get_result_maxsize(UI_STRING *uis);
340
+ /* Set the result of a UI_STRING. */
341
+ int UI_set_result(UI *ui, UI_STRING *uis, const char *result);
342
+
343
+
344
+ /* A couple of popular utility functions */
345
+ int UI_UTIL_read_pw_string(char *buf,int length,const char *prompt,int verify);
346
+ int UI_UTIL_read_pw(char *buf,char *buff,int size,const char *prompt,int verify);
347
+
348
+
349
+ /* BEGIN ERROR CODES */
350
+ /* The following lines are auto generated by the script mkerr.pl. Any changes
351
+ * made after this point may be overwritten when the script is next run.
352
+ */
353
+ void ERR_load_UI_strings(void);
354
+
355
+ /* Error codes for the UI functions. */
356
+
357
+ /* Function codes. */
358
+ #define UI_F_GENERAL_ALLOCATE_BOOLEAN 108
359
+ #define UI_F_GENERAL_ALLOCATE_PROMPT 109
360
+ #define UI_F_GENERAL_ALLOCATE_STRING 100
361
+ #define UI_F_UI_CTRL 111
362
+ #define UI_F_UI_DUP_ERROR_STRING 101
363
+ #define UI_F_UI_DUP_INFO_STRING 102
364
+ #define UI_F_UI_DUP_INPUT_BOOLEAN 110
365
+ #define UI_F_UI_DUP_INPUT_STRING 103
366
+ #define UI_F_UI_DUP_VERIFY_STRING 106
367
+ #define UI_F_UI_GET0_RESULT 107
368
+ #define UI_F_UI_NEW_METHOD 104
369
+ #define UI_F_UI_SET_RESULT 105
370
+
371
+ /* Reason codes. */
372
+ #define UI_R_COMMON_OK_AND_CANCEL_CHARACTERS 104
373
+ #define UI_R_INDEX_TOO_LARGE 102
374
+ #define UI_R_INDEX_TOO_SMALL 103
375
+ #define UI_R_NO_RESULT_BUFFER 105
376
+ #define UI_R_RESULT_TOO_LARGE 100
377
+ #define UI_R_RESULT_TOO_SMALL 101
378
+ #define UI_R_UNKNOWN_CONTROL_COMMAND 106
379
+
380
+ #ifdef __cplusplus
381
+ }
382
+ #endif
383
+ #endif
@@ -0,0 +1,83 @@
1
+ /* crypto/ui/ui.h -*- mode:C; c-file-style: "eay" -*- */
2
+ /* Written by Richard Levitte (richard@levitte.org) for the OpenSSL
3
+ * project 2001.
4
+ */
5
+ /* ====================================================================
6
+ * Copyright (c) 2001 The OpenSSL Project. All rights reserved.
7
+ *
8
+ * Redistribution and use in source and binary forms, with or without
9
+ * modification, are permitted provided that the following conditions
10
+ * are met:
11
+ *
12
+ * 1. Redistributions of source code must retain the above copyright
13
+ * notice, this list of conditions and the following disclaimer.
14
+ *
15
+ * 2. Redistributions in binary form must reproduce the above copyright
16
+ * notice, this list of conditions and the following disclaimer in
17
+ * the documentation and/or other materials provided with the
18
+ * distribution.
19
+ *
20
+ * 3. All advertising materials mentioning features or use of this
21
+ * software must display the following acknowledgment:
22
+ * "This product includes software developed by the OpenSSL Project
23
+ * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
24
+ *
25
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
26
+ * endorse or promote products derived from this software without
27
+ * prior written permission. For written permission, please contact
28
+ * openssl-core@openssl.org.
29
+ *
30
+ * 5. Products derived from this software may not be called "OpenSSL"
31
+ * nor may "OpenSSL" appear in their names without prior written
32
+ * permission of the OpenSSL Project.
33
+ *
34
+ * 6. Redistributions of any form whatsoever must retain the following
35
+ * acknowledgment:
36
+ * "This product includes software developed by the OpenSSL Project
37
+ * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
38
+ *
39
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
40
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
41
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
42
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
43
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
44
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
45
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
46
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
47
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
48
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
49
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
50
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
51
+ * ====================================================================
52
+ *
53
+ * This product includes cryptographic software written by Eric Young
54
+ * (eay@cryptsoft.com). This product includes software written by Tim
55
+ * Hudson (tjh@cryptsoft.com).
56
+ *
57
+ */
58
+
59
+ #ifndef HEADER_UI_COMPAT_H
60
+ #define HEADER_UI_COMPAT_H
61
+
62
+ #include <openssl/opensslconf.h>
63
+ #include <openssl/ui.h>
64
+
65
+ #ifdef __cplusplus
66
+ extern "C" {
67
+ #endif
68
+
69
+ /* The following functions were previously part of the DES section,
70
+ and are provided here for backward compatibility reasons. */
71
+
72
+ #define des_read_pw_string(b,l,p,v) \
73
+ _ossl_old_des_read_pw_string((b),(l),(p),(v))
74
+ #define des_read_pw(b,bf,s,p,v) \
75
+ _ossl_old_des_read_pw((b),(bf),(s),(p),(v))
76
+
77
+ int _ossl_old_des_read_pw_string(char *buf,int length,const char *prompt,int verify);
78
+ int _ossl_old_des_read_pw(char *buf,char *buff,int size,const char *prompt,int verify);
79
+
80
+ #ifdef __cplusplus
81
+ }
82
+ #endif
83
+ #endif
@@ -0,0 +1,41 @@
1
+ #ifndef HEADER_WHRLPOOL_H
2
+ #define HEADER_WHRLPOOL_H
3
+
4
+ #include <openssl/e_os2.h>
5
+ #include <stddef.h>
6
+
7
+ #ifdef __cplusplus
8
+ extern "C" {
9
+ #endif
10
+
11
+ #define WHIRLPOOL_DIGEST_LENGTH (512/8)
12
+ #define WHIRLPOOL_BBLOCK 512
13
+ #define WHIRLPOOL_COUNTER (256/8)
14
+
15
+ typedef struct {
16
+ union {
17
+ unsigned char c[WHIRLPOOL_DIGEST_LENGTH];
18
+ /* double q is here to ensure 64-bit alignment */
19
+ double q[WHIRLPOOL_DIGEST_LENGTH/sizeof(double)];
20
+ } H;
21
+ unsigned char data[WHIRLPOOL_BBLOCK/8];
22
+ unsigned int bitoff;
23
+ size_t bitlen[WHIRLPOOL_COUNTER/sizeof(size_t)];
24
+ } WHIRLPOOL_CTX;
25
+
26
+ #ifndef OPENSSL_NO_WHIRLPOOL
27
+ #ifdef OPENSSL_FIPS
28
+ int private_WHIRLPOOL_Init(WHIRLPOOL_CTX *c);
29
+ #endif
30
+ int WHIRLPOOL_Init (WHIRLPOOL_CTX *c);
31
+ int WHIRLPOOL_Update (WHIRLPOOL_CTX *c,const void *inp,size_t bytes);
32
+ void WHIRLPOOL_BitUpdate(WHIRLPOOL_CTX *c,const void *inp,size_t bits);
33
+ int WHIRLPOOL_Final (unsigned char *md,WHIRLPOOL_CTX *c);
34
+ unsigned char *WHIRLPOOL(const void *inp,size_t bytes,unsigned char *md);
35
+ #endif
36
+
37
+ #ifdef __cplusplus
38
+ }
39
+ #endif
40
+
41
+ #endif