@annadata/capacitor-mqtt-quic 0.1.0 → 0.1.1

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 (148) hide show
  1. package/ios/include/nghttp3/nghttp3.h +3295 -0
  2. package/ios/include/nghttp3/version.h +46 -0
  3. package/ios/include/ngtcp2/ngtcp2.h +6254 -0
  4. package/ios/include/ngtcp2/ngtcp2_crypto.h +1037 -0
  5. package/ios/include/ngtcp2/ngtcp2_crypto_quictls.h +147 -0
  6. package/ios/include/ngtcp2/version.h +51 -0
  7. package/ios/include/openssl/aes.h +111 -0
  8. package/ios/include/openssl/asn1.h +1131 -0
  9. package/ios/include/openssl/asn1_mac.h +10 -0
  10. package/ios/include/openssl/asn1err.h +140 -0
  11. package/ios/include/openssl/asn1t.h +946 -0
  12. package/ios/include/openssl/async.h +96 -0
  13. package/ios/include/openssl/asyncerr.h +29 -0
  14. package/ios/include/openssl/bio.h +887 -0
  15. package/ios/include/openssl/bioerr.h +65 -0
  16. package/ios/include/openssl/blowfish.h +78 -0
  17. package/ios/include/openssl/bn.h +584 -0
  18. package/ios/include/openssl/bnerr.h +47 -0
  19. package/ios/include/openssl/buffer.h +62 -0
  20. package/ios/include/openssl/buffererr.h +25 -0
  21. package/ios/include/openssl/camellia.h +117 -0
  22. package/ios/include/openssl/cast.h +71 -0
  23. package/ios/include/openssl/cmac.h +52 -0
  24. package/ios/include/openssl/cmp.h +597 -0
  25. package/ios/include/openssl/cmp_util.h +56 -0
  26. package/ios/include/openssl/cmperr.h +116 -0
  27. package/ios/include/openssl/cms.h +493 -0
  28. package/ios/include/openssl/cmserr.h +124 -0
  29. package/ios/include/openssl/comp.h +59 -0
  30. package/ios/include/openssl/comperr.h +31 -0
  31. package/ios/include/openssl/conf.h +214 -0
  32. package/ios/include/openssl/conf_api.h +46 -0
  33. package/ios/include/openssl/conferr.h +52 -0
  34. package/ios/include/openssl/configuration.h +149 -0
  35. package/ios/include/openssl/conftypes.h +44 -0
  36. package/ios/include/openssl/core.h +233 -0
  37. package/ios/include/openssl/core_dispatch.h +960 -0
  38. package/ios/include/openssl/core_names.h +561 -0
  39. package/ios/include/openssl/core_object.h +41 -0
  40. package/ios/include/openssl/crmf.h +227 -0
  41. package/ios/include/openssl/crmferr.h +50 -0
  42. package/ios/include/openssl/crypto.h +558 -0
  43. package/ios/include/openssl/cryptoerr.h +55 -0
  44. package/ios/include/openssl/cryptoerr_legacy.h +1466 -0
  45. package/ios/include/openssl/ct.h +573 -0
  46. package/ios/include/openssl/cterr.h +45 -0
  47. package/ios/include/openssl/decoder.h +133 -0
  48. package/ios/include/openssl/decodererr.h +28 -0
  49. package/ios/include/openssl/des.h +211 -0
  50. package/ios/include/openssl/dh.h +335 -0
  51. package/ios/include/openssl/dherr.h +58 -0
  52. package/ios/include/openssl/dsa.h +280 -0
  53. package/ios/include/openssl/dsaerr.h +44 -0
  54. package/ios/include/openssl/dtls1.h +57 -0
  55. package/ios/include/openssl/e_os2.h +308 -0
  56. package/ios/include/openssl/ebcdic.h +39 -0
  57. package/ios/include/openssl/ec.h +1572 -0
  58. package/ios/include/openssl/ecdh.h +10 -0
  59. package/ios/include/openssl/ecdsa.h +10 -0
  60. package/ios/include/openssl/ecerr.h +104 -0
  61. package/ios/include/openssl/encoder.h +124 -0
  62. package/ios/include/openssl/encodererr.h +28 -0
  63. package/ios/include/openssl/engine.h +833 -0
  64. package/ios/include/openssl/engineerr.h +63 -0
  65. package/ios/include/openssl/err.h +504 -0
  66. package/ios/include/openssl/ess.h +128 -0
  67. package/ios/include/openssl/esserr.h +32 -0
  68. package/ios/include/openssl/evp.h +2175 -0
  69. package/ios/include/openssl/evperr.h +134 -0
  70. package/ios/include/openssl/fips_names.h +77 -0
  71. package/ios/include/openssl/fipskey.h +36 -0
  72. package/ios/include/openssl/hmac.h +62 -0
  73. package/ios/include/openssl/http.h +109 -0
  74. package/ios/include/openssl/httperr.h +55 -0
  75. package/ios/include/openssl/idea.h +82 -0
  76. package/ios/include/openssl/kdf.h +138 -0
  77. package/ios/include/openssl/kdferr.h +16 -0
  78. package/ios/include/openssl/lhash.h +331 -0
  79. package/ios/include/openssl/macros.h +325 -0
  80. package/ios/include/openssl/md2.h +56 -0
  81. package/ios/include/openssl/md4.h +63 -0
  82. package/ios/include/openssl/md5.h +62 -0
  83. package/ios/include/openssl/mdc2.h +55 -0
  84. package/ios/include/openssl/modes.h +219 -0
  85. package/ios/include/openssl/obj_mac.h +5481 -0
  86. package/ios/include/openssl/objects.h +183 -0
  87. package/ios/include/openssl/objectserr.h +28 -0
  88. package/ios/include/openssl/ocsp.h +483 -0
  89. package/ios/include/openssl/ocsperr.h +53 -0
  90. package/ios/include/openssl/opensslconf.h +17 -0
  91. package/ios/include/openssl/opensslv.h +114 -0
  92. package/ios/include/openssl/ossl_typ.h +16 -0
  93. package/ios/include/openssl/param_build.h +63 -0
  94. package/ios/include/openssl/params.h +160 -0
  95. package/ios/include/openssl/pem.h +541 -0
  96. package/ios/include/openssl/pem2.h +19 -0
  97. package/ios/include/openssl/pemerr.h +58 -0
  98. package/ios/include/openssl/pkcs12.h +353 -0
  99. package/ios/include/openssl/pkcs12err.h +45 -0
  100. package/ios/include/openssl/pkcs7.h +430 -0
  101. package/ios/include/openssl/pkcs7err.h +63 -0
  102. package/ios/include/openssl/prov_ssl.h +34 -0
  103. package/ios/include/openssl/proverr.h +149 -0
  104. package/ios/include/openssl/provider.h +60 -0
  105. package/ios/include/openssl/quic.h +19 -0
  106. package/ios/include/openssl/rand.h +125 -0
  107. package/ios/include/openssl/randerr.h +69 -0
  108. package/ios/include/openssl/rc2.h +68 -0
  109. package/ios/include/openssl/rc4.h +47 -0
  110. package/ios/include/openssl/rc5.h +79 -0
  111. package/ios/include/openssl/ripemd.h +59 -0
  112. package/ios/include/openssl/rsa.h +610 -0
  113. package/ios/include/openssl/rsaerr.h +107 -0
  114. package/ios/include/openssl/safestack.h +297 -0
  115. package/ios/include/openssl/seed.h +113 -0
  116. package/ios/include/openssl/self_test.h +94 -0
  117. package/ios/include/openssl/sha.h +138 -0
  118. package/ios/include/openssl/srp.h +285 -0
  119. package/ios/include/openssl/srtp.h +56 -0
  120. package/ios/include/openssl/ssl.h +2671 -0
  121. package/ios/include/openssl/ssl2.h +30 -0
  122. package/ios/include/openssl/ssl3.h +347 -0
  123. package/ios/include/openssl/sslerr.h +348 -0
  124. package/ios/include/openssl/sslerr_legacy.h +468 -0
  125. package/ios/include/openssl/stack.h +90 -0
  126. package/ios/include/openssl/store.h +369 -0
  127. package/ios/include/openssl/storeerr.h +49 -0
  128. package/ios/include/openssl/symhacks.h +39 -0
  129. package/ios/include/openssl/tls1.h +1186 -0
  130. package/ios/include/openssl/trace.h +312 -0
  131. package/ios/include/openssl/ts.h +505 -0
  132. package/ios/include/openssl/tserr.h +67 -0
  133. package/ios/include/openssl/txt_db.h +63 -0
  134. package/ios/include/openssl/types.h +239 -0
  135. package/ios/include/openssl/ui.h +407 -0
  136. package/ios/include/openssl/uierr.h +38 -0
  137. package/ios/include/openssl/whrlpool.h +62 -0
  138. package/ios/include/openssl/x509.h +1279 -0
  139. package/ios/include/openssl/x509_vfy.h +894 -0
  140. package/ios/include/openssl/x509err.h +69 -0
  141. package/ios/include/openssl/x509v3.h +1453 -0
  142. package/ios/include/openssl/x509v3err.h +93 -0
  143. package/ios/libs/libcrypto.a +0 -0
  144. package/ios/libs/libnghttp3.a +0 -0
  145. package/ios/libs/libngtcp2.a +0 -0
  146. package/ios/libs/libngtcp2_crypto_quictls.a +0 -0
  147. package/ios/libs/libssl.a +0 -0
  148. package/package.json +2 -2
@@ -0,0 +1,2175 @@
1
+ /*
2
+ * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.
3
+ *
4
+ * Licensed under the Apache License 2.0 (the "License"). You may not use
5
+ * this file except in compliance with the License. You can obtain a copy
6
+ * in the file LICENSE in the source distribution or at
7
+ * https://www.openssl.org/source/license.html
8
+ */
9
+
10
+ #ifndef OPENSSL_EVP_H
11
+ # define OPENSSL_EVP_H
12
+ # pragma once
13
+
14
+ # include <openssl/macros.h>
15
+ # ifndef OPENSSL_NO_DEPRECATED_3_0
16
+ # define HEADER_ENVELOPE_H
17
+ # endif
18
+
19
+ # include <stdarg.h>
20
+
21
+ # ifndef OPENSSL_NO_STDIO
22
+ # include <stdio.h>
23
+ # endif
24
+
25
+ # include <openssl/opensslconf.h>
26
+ # include <openssl/types.h>
27
+ # include <openssl/core.h>
28
+ # include <openssl/core_dispatch.h>
29
+ # include <openssl/symhacks.h>
30
+ # include <openssl/bio.h>
31
+ # include <openssl/evperr.h>
32
+ # include <openssl/params.h>
33
+
34
+ # define EVP_MAX_MD_SIZE 64/* longest known is SHA512 */
35
+ # define EVP_MAX_KEY_LENGTH 64
36
+ # define EVP_MAX_IV_LENGTH 16
37
+ # define EVP_MAX_BLOCK_LENGTH 32
38
+
39
+ # define PKCS5_SALT_LEN 8
40
+ /* Default PKCS#5 iteration count */
41
+ # define PKCS5_DEFAULT_ITER 2048
42
+
43
+ # include <openssl/objects.h>
44
+
45
+ # ifndef OPENSSL_NO_DEPRECATED_3_0
46
+ # define EVP_PK_RSA 0x0001
47
+ # define EVP_PK_DSA 0x0002
48
+ # define EVP_PK_DH 0x0004
49
+ # define EVP_PK_EC 0x0008
50
+ # define EVP_PKT_SIGN 0x0010
51
+ # define EVP_PKT_ENC 0x0020
52
+ # define EVP_PKT_EXCH 0x0040
53
+ # define EVP_PKS_RSA 0x0100
54
+ # define EVP_PKS_DSA 0x0200
55
+ # define EVP_PKS_EC 0x0400
56
+ # endif
57
+
58
+ # define EVP_PKEY_NONE NID_undef
59
+ # define EVP_PKEY_RSA NID_rsaEncryption
60
+ # define EVP_PKEY_RSA2 NID_rsa
61
+ # define EVP_PKEY_RSA_PSS NID_rsassaPss
62
+ # define EVP_PKEY_DSA NID_dsa
63
+ # define EVP_PKEY_DSA1 NID_dsa_2
64
+ # define EVP_PKEY_DSA2 NID_dsaWithSHA
65
+ # define EVP_PKEY_DSA3 NID_dsaWithSHA1
66
+ # define EVP_PKEY_DSA4 NID_dsaWithSHA1_2
67
+ # define EVP_PKEY_DH NID_dhKeyAgreement
68
+ # define EVP_PKEY_DHX NID_dhpublicnumber
69
+ # define EVP_PKEY_EC NID_X9_62_id_ecPublicKey
70
+ # define EVP_PKEY_SM2 NID_sm2
71
+ # define EVP_PKEY_HMAC NID_hmac
72
+ # define EVP_PKEY_CMAC NID_cmac
73
+ # define EVP_PKEY_SCRYPT NID_id_scrypt
74
+ # define EVP_PKEY_TLS1_PRF NID_tls1_prf
75
+ # define EVP_PKEY_HKDF NID_hkdf
76
+ # define EVP_PKEY_POLY1305 NID_poly1305
77
+ # define EVP_PKEY_SIPHASH NID_siphash
78
+ # define EVP_PKEY_X25519 NID_X25519
79
+ # define EVP_PKEY_ED25519 NID_ED25519
80
+ # define EVP_PKEY_X448 NID_X448
81
+ # define EVP_PKEY_ED448 NID_ED448
82
+ /* Special indicator that the object is uniquely provider side */
83
+ # define EVP_PKEY_KEYMGMT -1
84
+
85
+ /* Easy to use macros for EVP_PKEY related selections */
86
+ # define EVP_PKEY_KEY_PARAMETERS \
87
+ ( OSSL_KEYMGMT_SELECT_ALL_PARAMETERS )
88
+ # define EVP_PKEY_PRIVATE_KEY \
89
+ ( EVP_PKEY_KEY_PARAMETERS | OSSL_KEYMGMT_SELECT_PRIVATE_KEY )
90
+ # define EVP_PKEY_PUBLIC_KEY \
91
+ ( EVP_PKEY_KEY_PARAMETERS | OSSL_KEYMGMT_SELECT_PUBLIC_KEY )
92
+ # define EVP_PKEY_KEYPAIR \
93
+ ( EVP_PKEY_PUBLIC_KEY | OSSL_KEYMGMT_SELECT_PRIVATE_KEY )
94
+
95
+ #ifdef __cplusplus
96
+ extern "C" {
97
+ #endif
98
+
99
+ int EVP_set_default_properties(OSSL_LIB_CTX *libctx, const char *propq);
100
+ int EVP_default_properties_is_fips_enabled(OSSL_LIB_CTX *libctx);
101
+ int EVP_default_properties_enable_fips(OSSL_LIB_CTX *libctx, int enable);
102
+
103
+ # define EVP_PKEY_MO_SIGN 0x0001
104
+ # define EVP_PKEY_MO_VERIFY 0x0002
105
+ # define EVP_PKEY_MO_ENCRYPT 0x0004
106
+ # define EVP_PKEY_MO_DECRYPT 0x0008
107
+
108
+ # ifndef EVP_MD
109
+ # ifndef OPENSSL_NO_DEPRECATED_3_0
110
+ OSSL_DEPRECATEDIN_3_0 EVP_MD *EVP_MD_meth_new(int md_type, int pkey_type);
111
+ OSSL_DEPRECATEDIN_3_0 EVP_MD *EVP_MD_meth_dup(const EVP_MD *md);
112
+ OSSL_DEPRECATEDIN_3_0 void EVP_MD_meth_free(EVP_MD *md);
113
+ OSSL_DEPRECATEDIN_3_0
114
+ int EVP_MD_meth_set_input_blocksize(EVP_MD *md, int blocksize);
115
+ OSSL_DEPRECATEDIN_3_0
116
+ int EVP_MD_meth_set_result_size(EVP_MD *md, int resultsize);
117
+ OSSL_DEPRECATEDIN_3_0
118
+ int EVP_MD_meth_set_app_datasize(EVP_MD *md, int datasize);
119
+ OSSL_DEPRECATEDIN_3_0
120
+ int EVP_MD_meth_set_flags(EVP_MD *md, unsigned long flags);
121
+ OSSL_DEPRECATEDIN_3_0
122
+ int EVP_MD_meth_set_init(EVP_MD *md, int (*init)(EVP_MD_CTX *ctx));
123
+ OSSL_DEPRECATEDIN_3_0
124
+ int EVP_MD_meth_set_update(EVP_MD *md, int (*update)(EVP_MD_CTX *ctx,
125
+ const void *data,
126
+ size_t count));
127
+ OSSL_DEPRECATEDIN_3_0
128
+ int EVP_MD_meth_set_final(EVP_MD *md, int (*final)(EVP_MD_CTX *ctx,
129
+ unsigned char *md));
130
+ OSSL_DEPRECATEDIN_3_0
131
+ int EVP_MD_meth_set_copy(EVP_MD *md, int (*copy)(EVP_MD_CTX *to,
132
+ const EVP_MD_CTX *from));
133
+ OSSL_DEPRECATEDIN_3_0
134
+ int EVP_MD_meth_set_cleanup(EVP_MD *md, int (*cleanup)(EVP_MD_CTX *ctx));
135
+ OSSL_DEPRECATEDIN_3_0
136
+ int EVP_MD_meth_set_ctrl(EVP_MD *md, int (*ctrl)(EVP_MD_CTX *ctx, int cmd,
137
+ int p1, void *p2));
138
+ OSSL_DEPRECATEDIN_3_0 int EVP_MD_meth_get_input_blocksize(const EVP_MD *md);
139
+ OSSL_DEPRECATEDIN_3_0 int EVP_MD_meth_get_result_size(const EVP_MD *md);
140
+ OSSL_DEPRECATEDIN_3_0 int EVP_MD_meth_get_app_datasize(const EVP_MD *md);
141
+ OSSL_DEPRECATEDIN_3_0 unsigned long EVP_MD_meth_get_flags(const EVP_MD *md);
142
+ OSSL_DEPRECATEDIN_3_0
143
+ int (*EVP_MD_meth_get_init(const EVP_MD *md))(EVP_MD_CTX *ctx);
144
+ OSSL_DEPRECATEDIN_3_0
145
+ int (*EVP_MD_meth_get_update(const EVP_MD *md))(EVP_MD_CTX *ctx,
146
+ const void *data, size_t count);
147
+ OSSL_DEPRECATEDIN_3_0
148
+ int (*EVP_MD_meth_get_final(const EVP_MD *md))(EVP_MD_CTX *ctx,
149
+ unsigned char *md);
150
+ OSSL_DEPRECATEDIN_3_0
151
+ int (*EVP_MD_meth_get_copy(const EVP_MD *md))(EVP_MD_CTX *to,
152
+ const EVP_MD_CTX *from);
153
+ OSSL_DEPRECATEDIN_3_0
154
+ int (*EVP_MD_meth_get_cleanup(const EVP_MD *md))(EVP_MD_CTX *ctx);
155
+ OSSL_DEPRECATEDIN_3_0
156
+ int (*EVP_MD_meth_get_ctrl(const EVP_MD *md))(EVP_MD_CTX *ctx, int cmd,
157
+ int p1, void *p2);
158
+ # endif
159
+ /* digest can only handle a single block */
160
+ # define EVP_MD_FLAG_ONESHOT 0x0001
161
+
162
+ /* digest is extensible-output function, XOF */
163
+ # define EVP_MD_FLAG_XOF 0x0002
164
+
165
+ /* DigestAlgorithmIdentifier flags... */
166
+
167
+ # define EVP_MD_FLAG_DIGALGID_MASK 0x0018
168
+
169
+ /* NULL or absent parameter accepted. Use NULL */
170
+
171
+ # define EVP_MD_FLAG_DIGALGID_NULL 0x0000
172
+
173
+ /* NULL or absent parameter accepted. Use NULL for PKCS#1 otherwise absent */
174
+
175
+ # define EVP_MD_FLAG_DIGALGID_ABSENT 0x0008
176
+
177
+ /* Custom handling via ctrl */
178
+
179
+ # define EVP_MD_FLAG_DIGALGID_CUSTOM 0x0018
180
+
181
+ /* Note if suitable for use in FIPS mode */
182
+ # define EVP_MD_FLAG_FIPS 0x0400
183
+
184
+ /* Digest ctrls */
185
+
186
+ # define EVP_MD_CTRL_DIGALGID 0x1
187
+ # define EVP_MD_CTRL_MICALG 0x2
188
+ # define EVP_MD_CTRL_XOF_LEN 0x3
189
+ # define EVP_MD_CTRL_TLSTREE 0x4
190
+
191
+ /* Minimum Algorithm specific ctrl value */
192
+
193
+ # define EVP_MD_CTRL_ALG_CTRL 0x1000
194
+
195
+ # endif /* !EVP_MD */
196
+
197
+ /* values for EVP_MD_CTX flags */
198
+
199
+ # define EVP_MD_CTX_FLAG_ONESHOT 0x0001/* digest update will be
200
+ * called once only */
201
+ # define EVP_MD_CTX_FLAG_CLEANED 0x0002/* context has already been
202
+ * cleaned */
203
+ # define EVP_MD_CTX_FLAG_REUSE 0x0004/* Don't free up ctx->md_data
204
+ * in EVP_MD_CTX_reset */
205
+ /*
206
+ * FIPS and pad options are ignored in 1.0.0, definitions are here so we
207
+ * don't accidentally reuse the values for other purposes.
208
+ */
209
+
210
+ /* This flag has no effect from openssl-3.0 onwards */
211
+ # define EVP_MD_CTX_FLAG_NON_FIPS_ALLOW 0x0008
212
+
213
+ /*
214
+ * The following PAD options are also currently ignored in 1.0.0, digest
215
+ * parameters are handled through EVP_DigestSign*() and EVP_DigestVerify*()
216
+ * instead.
217
+ */
218
+ # define EVP_MD_CTX_FLAG_PAD_MASK 0xF0/* RSA mode to use */
219
+ # define EVP_MD_CTX_FLAG_PAD_PKCS1 0x00/* PKCS#1 v1.5 mode */
220
+ # define EVP_MD_CTX_FLAG_PAD_X931 0x10/* X9.31 mode */
221
+ # define EVP_MD_CTX_FLAG_PAD_PSS 0x20/* PSS mode */
222
+
223
+ # define EVP_MD_CTX_FLAG_NO_INIT 0x0100/* Don't initialize md_data */
224
+ /*
225
+ * Some functions such as EVP_DigestSign only finalise copies of internal
226
+ * contexts so additional data can be included after the finalisation call.
227
+ * This is inefficient if this functionality is not required: it is disabled
228
+ * if the following flag is set.
229
+ */
230
+ # define EVP_MD_CTX_FLAG_FINALISE 0x0200
231
+ /* NOTE: 0x0400 is reserved for internal usage */
232
+ # ifndef OPENSSL_NO_DEPRECATED_3_0
233
+ OSSL_DEPRECATEDIN_3_0
234
+ EVP_CIPHER *EVP_CIPHER_meth_new(int cipher_type, int block_size, int key_len);
235
+ OSSL_DEPRECATEDIN_3_0
236
+ EVP_CIPHER *EVP_CIPHER_meth_dup(const EVP_CIPHER *cipher);
237
+ OSSL_DEPRECATEDIN_3_0
238
+ void EVP_CIPHER_meth_free(EVP_CIPHER *cipher);
239
+ OSSL_DEPRECATEDIN_3_0
240
+ int EVP_CIPHER_meth_set_iv_length(EVP_CIPHER *cipher, int iv_len);
241
+ OSSL_DEPRECATEDIN_3_0
242
+ int EVP_CIPHER_meth_set_flags(EVP_CIPHER *cipher, unsigned long flags);
243
+ OSSL_DEPRECATEDIN_3_0
244
+ int EVP_CIPHER_meth_set_impl_ctx_size(EVP_CIPHER *cipher, int ctx_size);
245
+ OSSL_DEPRECATEDIN_3_0
246
+ int EVP_CIPHER_meth_set_init(EVP_CIPHER *cipher,
247
+ int (*init) (EVP_CIPHER_CTX *ctx,
248
+ const unsigned char *key,
249
+ const unsigned char *iv,
250
+ int enc));
251
+ OSSL_DEPRECATEDIN_3_0
252
+ int EVP_CIPHER_meth_set_do_cipher(EVP_CIPHER *cipher,
253
+ int (*do_cipher) (EVP_CIPHER_CTX *ctx,
254
+ unsigned char *out,
255
+ const unsigned char *in,
256
+ size_t inl));
257
+ OSSL_DEPRECATEDIN_3_0
258
+ int EVP_CIPHER_meth_set_cleanup(EVP_CIPHER *cipher,
259
+ int (*cleanup) (EVP_CIPHER_CTX *));
260
+ OSSL_DEPRECATEDIN_3_0
261
+ int EVP_CIPHER_meth_set_set_asn1_params(EVP_CIPHER *cipher,
262
+ int (*set_asn1_parameters) (EVP_CIPHER_CTX *,
263
+ ASN1_TYPE *));
264
+ OSSL_DEPRECATEDIN_3_0
265
+ int EVP_CIPHER_meth_set_get_asn1_params(EVP_CIPHER *cipher,
266
+ int (*get_asn1_parameters) (EVP_CIPHER_CTX *,
267
+ ASN1_TYPE *));
268
+ OSSL_DEPRECATEDIN_3_0
269
+ int EVP_CIPHER_meth_set_ctrl(EVP_CIPHER *cipher,
270
+ int (*ctrl) (EVP_CIPHER_CTX *, int type,
271
+ int arg, void *ptr));
272
+ OSSL_DEPRECATEDIN_3_0 int
273
+ (*EVP_CIPHER_meth_get_init(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *ctx,
274
+ const unsigned char *key,
275
+ const unsigned char *iv,
276
+ int enc);
277
+ OSSL_DEPRECATEDIN_3_0 int
278
+ (*EVP_CIPHER_meth_get_do_cipher(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *ctx,
279
+ unsigned char *out,
280
+ const unsigned char *in,
281
+ size_t inl);
282
+ OSSL_DEPRECATEDIN_3_0 int
283
+ (*EVP_CIPHER_meth_get_cleanup(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *);
284
+ OSSL_DEPRECATEDIN_3_0 int
285
+ (*EVP_CIPHER_meth_get_set_asn1_params(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *,
286
+ ASN1_TYPE *);
287
+ OSSL_DEPRECATEDIN_3_0 int
288
+ (*EVP_CIPHER_meth_get_get_asn1_params(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *,
289
+ ASN1_TYPE *);
290
+ OSSL_DEPRECATEDIN_3_0 int
291
+ (*EVP_CIPHER_meth_get_ctrl(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *, int type,
292
+ int arg, void *ptr);
293
+ # endif
294
+
295
+ /* Values for cipher flags */
296
+
297
+ /* Modes for ciphers */
298
+
299
+ # define EVP_CIPH_STREAM_CIPHER 0x0
300
+ # define EVP_CIPH_ECB_MODE 0x1
301
+ # define EVP_CIPH_CBC_MODE 0x2
302
+ # define EVP_CIPH_CFB_MODE 0x3
303
+ # define EVP_CIPH_OFB_MODE 0x4
304
+ # define EVP_CIPH_CTR_MODE 0x5
305
+ # define EVP_CIPH_GCM_MODE 0x6
306
+ # define EVP_CIPH_CCM_MODE 0x7
307
+ # define EVP_CIPH_XTS_MODE 0x10001
308
+ # define EVP_CIPH_WRAP_MODE 0x10002
309
+ # define EVP_CIPH_OCB_MODE 0x10003
310
+ # define EVP_CIPH_SIV_MODE 0x10004
311
+ # define EVP_CIPH_MODE 0xF0007
312
+ /* Set if variable length cipher */
313
+ # define EVP_CIPH_VARIABLE_LENGTH 0x8
314
+ /* Set if the iv handling should be done by the cipher itself */
315
+ # define EVP_CIPH_CUSTOM_IV 0x10
316
+ /* Set if the cipher's init() function should be called if key is NULL */
317
+ # define EVP_CIPH_ALWAYS_CALL_INIT 0x20
318
+ /* Call ctrl() to init cipher parameters */
319
+ # define EVP_CIPH_CTRL_INIT 0x40
320
+ /* Don't use standard key length function */
321
+ # define EVP_CIPH_CUSTOM_KEY_LENGTH 0x80
322
+ /* Don't use standard block padding */
323
+ # define EVP_CIPH_NO_PADDING 0x100
324
+ /* cipher handles random key generation */
325
+ # define EVP_CIPH_RAND_KEY 0x200
326
+ /* cipher has its own additional copying logic */
327
+ # define EVP_CIPH_CUSTOM_COPY 0x400
328
+ /* Don't use standard iv length function */
329
+ # define EVP_CIPH_CUSTOM_IV_LENGTH 0x800
330
+ /* Legacy and no longer relevant: Allow use default ASN1 get/set iv */
331
+ # define EVP_CIPH_FLAG_DEFAULT_ASN1 0
332
+ /* Free: 0x1000 */
333
+ /* Buffer length in bits not bytes: CFB1 mode only */
334
+ # define EVP_CIPH_FLAG_LENGTH_BITS 0x2000
335
+ /* Deprecated FIPS flag: was 0x4000 */
336
+ # define EVP_CIPH_FLAG_FIPS 0
337
+ /* Deprecated FIPS flag: was 0x8000 */
338
+ # define EVP_CIPH_FLAG_NON_FIPS_ALLOW 0
339
+
340
+ /*
341
+ * Cipher handles any and all padding logic as well as finalisation.
342
+ */
343
+ # define EVP_CIPH_FLAG_CTS 0x4000
344
+ # define EVP_CIPH_FLAG_CUSTOM_CIPHER 0x100000
345
+ # define EVP_CIPH_FLAG_AEAD_CIPHER 0x200000
346
+ # define EVP_CIPH_FLAG_TLS1_1_MULTIBLOCK 0x400000
347
+ /* Cipher can handle pipeline operations */
348
+ # define EVP_CIPH_FLAG_PIPELINE 0X800000
349
+ /* For provider implementations that handle ASN1 get/set param themselves */
350
+ # define EVP_CIPH_FLAG_CUSTOM_ASN1 0x1000000
351
+ /* For ciphers generating unprotected CMS attributes */
352
+ # define EVP_CIPH_FLAG_CIPHER_WITH_MAC 0x2000000
353
+ /* For supplementary wrap cipher support */
354
+ # define EVP_CIPH_FLAG_GET_WRAP_CIPHER 0x4000000
355
+ # define EVP_CIPH_FLAG_INVERSE_CIPHER 0x8000000
356
+
357
+ /*
358
+ * Cipher context flag to indicate we can handle wrap mode: if allowed in
359
+ * older applications it could overflow buffers.
360
+ */
361
+
362
+ # define EVP_CIPHER_CTX_FLAG_WRAP_ALLOW 0x1
363
+
364
+ /* ctrl() values */
365
+
366
+ # define EVP_CTRL_INIT 0x0
367
+ # define EVP_CTRL_SET_KEY_LENGTH 0x1
368
+ # define EVP_CTRL_GET_RC2_KEY_BITS 0x2
369
+ # define EVP_CTRL_SET_RC2_KEY_BITS 0x3
370
+ # define EVP_CTRL_GET_RC5_ROUNDS 0x4
371
+ # define EVP_CTRL_SET_RC5_ROUNDS 0x5
372
+ # define EVP_CTRL_RAND_KEY 0x6
373
+ # define EVP_CTRL_PBE_PRF_NID 0x7
374
+ # define EVP_CTRL_COPY 0x8
375
+ # define EVP_CTRL_AEAD_SET_IVLEN 0x9
376
+ # define EVP_CTRL_AEAD_GET_TAG 0x10
377
+ # define EVP_CTRL_AEAD_SET_TAG 0x11
378
+ # define EVP_CTRL_AEAD_SET_IV_FIXED 0x12
379
+ # define EVP_CTRL_GCM_SET_IVLEN EVP_CTRL_AEAD_SET_IVLEN
380
+ # define EVP_CTRL_GCM_GET_TAG EVP_CTRL_AEAD_GET_TAG
381
+ # define EVP_CTRL_GCM_SET_TAG EVP_CTRL_AEAD_SET_TAG
382
+ # define EVP_CTRL_GCM_SET_IV_FIXED EVP_CTRL_AEAD_SET_IV_FIXED
383
+ # define EVP_CTRL_GCM_IV_GEN 0x13
384
+ # define EVP_CTRL_CCM_SET_IVLEN EVP_CTRL_AEAD_SET_IVLEN
385
+ # define EVP_CTRL_CCM_GET_TAG EVP_CTRL_AEAD_GET_TAG
386
+ # define EVP_CTRL_CCM_SET_TAG EVP_CTRL_AEAD_SET_TAG
387
+ # define EVP_CTRL_CCM_SET_IV_FIXED EVP_CTRL_AEAD_SET_IV_FIXED
388
+ # define EVP_CTRL_CCM_SET_L 0x14
389
+ # define EVP_CTRL_CCM_SET_MSGLEN 0x15
390
+ /*
391
+ * AEAD cipher deduces payload length and returns number of bytes required to
392
+ * store MAC and eventual padding. Subsequent call to EVP_Cipher even
393
+ * appends/verifies MAC.
394
+ */
395
+ # define EVP_CTRL_AEAD_TLS1_AAD 0x16
396
+ /* Used by composite AEAD ciphers, no-op in GCM, CCM... */
397
+ # define EVP_CTRL_AEAD_SET_MAC_KEY 0x17
398
+ /* Set the GCM invocation field, decrypt only */
399
+ # define EVP_CTRL_GCM_SET_IV_INV 0x18
400
+
401
+ # define EVP_CTRL_TLS1_1_MULTIBLOCK_AAD 0x19
402
+ # define EVP_CTRL_TLS1_1_MULTIBLOCK_ENCRYPT 0x1a
403
+ # define EVP_CTRL_TLS1_1_MULTIBLOCK_DECRYPT 0x1b
404
+ # define EVP_CTRL_TLS1_1_MULTIBLOCK_MAX_BUFSIZE 0x1c
405
+
406
+ # define EVP_CTRL_SSL3_MASTER_SECRET 0x1d
407
+
408
+ /* EVP_CTRL_SET_SBOX takes the char * specifying S-boxes */
409
+ # define EVP_CTRL_SET_SBOX 0x1e
410
+ /*
411
+ * EVP_CTRL_SBOX_USED takes a 'size_t' and 'char *', pointing at a
412
+ * pre-allocated buffer with specified size
413
+ */
414
+ # define EVP_CTRL_SBOX_USED 0x1f
415
+ /* EVP_CTRL_KEY_MESH takes 'size_t' number of bytes to mesh the key after,
416
+ * 0 switches meshing off
417
+ */
418
+ # define EVP_CTRL_KEY_MESH 0x20
419
+ /* EVP_CTRL_BLOCK_PADDING_MODE takes the padding mode */
420
+ # define EVP_CTRL_BLOCK_PADDING_MODE 0x21
421
+
422
+ /* Set the output buffers to use for a pipelined operation */
423
+ # define EVP_CTRL_SET_PIPELINE_OUTPUT_BUFS 0x22
424
+ /* Set the input buffers to use for a pipelined operation */
425
+ # define EVP_CTRL_SET_PIPELINE_INPUT_BUFS 0x23
426
+ /* Set the input buffer lengths to use for a pipelined operation */
427
+ # define EVP_CTRL_SET_PIPELINE_INPUT_LENS 0x24
428
+ /* Get the IV length used by the cipher */
429
+ # define EVP_CTRL_GET_IVLEN 0x25
430
+ /* 0x26 is unused */
431
+ /* Tell the cipher it's doing a speed test (SIV disallows multiple ops) */
432
+ # define EVP_CTRL_SET_SPEED 0x27
433
+ /* Get the unprotectedAttrs from cipher ctx */
434
+ # define EVP_CTRL_PROCESS_UNPROTECTED 0x28
435
+ /* Get the supplementary wrap cipher */
436
+ #define EVP_CTRL_GET_WRAP_CIPHER 0x29
437
+ /* TLSTREE key diversification */
438
+ #define EVP_CTRL_TLSTREE 0x2A
439
+
440
+ /* Padding modes */
441
+ #define EVP_PADDING_PKCS7 1
442
+ #define EVP_PADDING_ISO7816_4 2
443
+ #define EVP_PADDING_ANSI923 3
444
+ #define EVP_PADDING_ISO10126 4
445
+ #define EVP_PADDING_ZERO 5
446
+
447
+ /* RFC 5246 defines additional data to be 13 bytes in length */
448
+ # define EVP_AEAD_TLS1_AAD_LEN 13
449
+
450
+ typedef struct {
451
+ unsigned char *out;
452
+ const unsigned char *inp;
453
+ size_t len;
454
+ unsigned int interleave;
455
+ } EVP_CTRL_TLS1_1_MULTIBLOCK_PARAM;
456
+
457
+ /* GCM TLS constants */
458
+ /* Length of fixed part of IV derived from PRF */
459
+ # define EVP_GCM_TLS_FIXED_IV_LEN 4
460
+ /* Length of explicit part of IV part of TLS records */
461
+ # define EVP_GCM_TLS_EXPLICIT_IV_LEN 8
462
+ /* Length of tag for TLS */
463
+ # define EVP_GCM_TLS_TAG_LEN 16
464
+
465
+ /* CCM TLS constants */
466
+ /* Length of fixed part of IV derived from PRF */
467
+ # define EVP_CCM_TLS_FIXED_IV_LEN 4
468
+ /* Length of explicit part of IV part of TLS records */
469
+ # define EVP_CCM_TLS_EXPLICIT_IV_LEN 8
470
+ /* Total length of CCM IV length for TLS */
471
+ # define EVP_CCM_TLS_IV_LEN 12
472
+ /* Length of tag for TLS */
473
+ # define EVP_CCM_TLS_TAG_LEN 16
474
+ /* Length of CCM8 tag for TLS */
475
+ # define EVP_CCM8_TLS_TAG_LEN 8
476
+
477
+ /* Length of tag for TLS */
478
+ # define EVP_CHACHAPOLY_TLS_TAG_LEN 16
479
+
480
+ typedef struct evp_cipher_info_st {
481
+ const EVP_CIPHER *cipher;
482
+ unsigned char iv[EVP_MAX_IV_LENGTH];
483
+ } EVP_CIPHER_INFO;
484
+
485
+
486
+ /* Password based encryption function */
487
+ typedef int (EVP_PBE_KEYGEN) (EVP_CIPHER_CTX *ctx, const char *pass,
488
+ int passlen, ASN1_TYPE *param,
489
+ const EVP_CIPHER *cipher, const EVP_MD *md,
490
+ int en_de);
491
+
492
+ typedef int (EVP_PBE_KEYGEN_EX) (EVP_CIPHER_CTX *ctx, const char *pass,
493
+ int passlen, ASN1_TYPE *param,
494
+ const EVP_CIPHER *cipher, const EVP_MD *md,
495
+ int en_de, OSSL_LIB_CTX *libctx, const char *propq);
496
+
497
+ # ifndef OPENSSL_NO_DEPRECATED_3_0
498
+ # define EVP_PKEY_assign_RSA(pkey,rsa) EVP_PKEY_assign((pkey),EVP_PKEY_RSA,\
499
+ (rsa))
500
+ # endif
501
+
502
+ # ifndef OPENSSL_NO_DSA
503
+ # define EVP_PKEY_assign_DSA(pkey,dsa) EVP_PKEY_assign((pkey),EVP_PKEY_DSA,\
504
+ (dsa))
505
+ # endif
506
+
507
+ # if !defined(OPENSSL_NO_DH) && !defined(OPENSSL_NO_DEPRECATED_3_0)
508
+ # define EVP_PKEY_assign_DH(pkey,dh) EVP_PKEY_assign((pkey),EVP_PKEY_DH,(dh))
509
+ # endif
510
+
511
+ # ifndef OPENSSL_NO_DEPRECATED_3_0
512
+ # ifndef OPENSSL_NO_EC
513
+ # define EVP_PKEY_assign_EC_KEY(pkey,eckey) \
514
+ EVP_PKEY_assign((pkey), EVP_PKEY_EC, (eckey))
515
+ # endif
516
+ # endif
517
+ # ifndef OPENSSL_NO_SIPHASH
518
+ # define EVP_PKEY_assign_SIPHASH(pkey,shkey) EVP_PKEY_assign((pkey),\
519
+ EVP_PKEY_SIPHASH,(shkey))
520
+ # endif
521
+
522
+ # ifndef OPENSSL_NO_POLY1305
523
+ # define EVP_PKEY_assign_POLY1305(pkey,polykey) EVP_PKEY_assign((pkey),\
524
+ EVP_PKEY_POLY1305,(polykey))
525
+ # endif
526
+
527
+ /* Add some extra combinations */
528
+ # define EVP_get_digestbynid(a) EVP_get_digestbyname(OBJ_nid2sn(a))
529
+ # define EVP_get_digestbyobj(a) EVP_get_digestbynid(OBJ_obj2nid(a))
530
+ # define EVP_get_cipherbynid(a) EVP_get_cipherbyname(OBJ_nid2sn(a))
531
+ # define EVP_get_cipherbyobj(a) EVP_get_cipherbynid(OBJ_obj2nid(a))
532
+
533
+ int EVP_MD_get_type(const EVP_MD *md);
534
+ # define EVP_MD_type EVP_MD_get_type
535
+ # define EVP_MD_nid EVP_MD_get_type
536
+ const char *EVP_MD_get0_name(const EVP_MD *md);
537
+ # define EVP_MD_name EVP_MD_get0_name
538
+ const char *EVP_MD_get0_description(const EVP_MD *md);
539
+ int EVP_MD_is_a(const EVP_MD *md, const char *name);
540
+ int EVP_MD_names_do_all(const EVP_MD *md,
541
+ void (*fn)(const char *name, void *data),
542
+ void *data);
543
+ const OSSL_PROVIDER *EVP_MD_get0_provider(const EVP_MD *md);
544
+ int EVP_MD_get_pkey_type(const EVP_MD *md);
545
+ # define EVP_MD_pkey_type EVP_MD_get_pkey_type
546
+ int EVP_MD_get_size(const EVP_MD *md);
547
+ # define EVP_MD_size EVP_MD_get_size
548
+ int EVP_MD_get_block_size(const EVP_MD *md);
549
+ # define EVP_MD_block_size EVP_MD_get_block_size
550
+ unsigned long EVP_MD_get_flags(const EVP_MD *md);
551
+ # define EVP_MD_flags EVP_MD_get_flags
552
+
553
+ const EVP_MD *EVP_MD_CTX_get0_md(const EVP_MD_CTX *ctx);
554
+ EVP_MD *EVP_MD_CTX_get1_md(EVP_MD_CTX *ctx);
555
+ # ifndef OPENSSL_NO_DEPRECATED_3_0
556
+ OSSL_DEPRECATEDIN_3_0
557
+ const EVP_MD *EVP_MD_CTX_md(const EVP_MD_CTX *ctx);
558
+ OSSL_DEPRECATEDIN_3_0
559
+ int (*EVP_MD_CTX_update_fn(EVP_MD_CTX *ctx))(EVP_MD_CTX *ctx,
560
+ const void *data, size_t count);
561
+ OSSL_DEPRECATEDIN_3_0
562
+ void EVP_MD_CTX_set_update_fn(EVP_MD_CTX *ctx,
563
+ int (*update) (EVP_MD_CTX *ctx,
564
+ const void *data, size_t count));
565
+ # endif
566
+ # define EVP_MD_CTX_get0_name(e) EVP_MD_get0_name(EVP_MD_CTX_get0_md(e))
567
+ # define EVP_MD_CTX_get_size(e) EVP_MD_get_size(EVP_MD_CTX_get0_md(e))
568
+ # define EVP_MD_CTX_size EVP_MD_CTX_get_size
569
+ # define EVP_MD_CTX_get_block_size(e) EVP_MD_get_block_size(EVP_MD_CTX_get0_md(e))
570
+ # define EVP_MD_CTX_block_size EVP_MD_CTX_get_block_size
571
+ # define EVP_MD_CTX_get_type(e) EVP_MD_get_type(EVP_MD_CTX_get0_md(e))
572
+ # define EVP_MD_CTX_type EVP_MD_CTX_get_type
573
+ EVP_PKEY_CTX *EVP_MD_CTX_get_pkey_ctx(const EVP_MD_CTX *ctx);
574
+ # define EVP_MD_CTX_pkey_ctx EVP_MD_CTX_get_pkey_ctx
575
+ void EVP_MD_CTX_set_pkey_ctx(EVP_MD_CTX *ctx, EVP_PKEY_CTX *pctx);
576
+ void *EVP_MD_CTX_get0_md_data(const EVP_MD_CTX *ctx);
577
+ # define EVP_MD_CTX_md_data EVP_MD_CTX_get0_md_data
578
+
579
+ int EVP_CIPHER_get_nid(const EVP_CIPHER *cipher);
580
+ # define EVP_CIPHER_nid EVP_CIPHER_get_nid
581
+ const char *EVP_CIPHER_get0_name(const EVP_CIPHER *cipher);
582
+ # define EVP_CIPHER_name EVP_CIPHER_get0_name
583
+ const char *EVP_CIPHER_get0_description(const EVP_CIPHER *cipher);
584
+ int EVP_CIPHER_is_a(const EVP_CIPHER *cipher, const char *name);
585
+ int EVP_CIPHER_names_do_all(const EVP_CIPHER *cipher,
586
+ void (*fn)(const char *name, void *data),
587
+ void *data);
588
+ const OSSL_PROVIDER *EVP_CIPHER_get0_provider(const EVP_CIPHER *cipher);
589
+ int EVP_CIPHER_get_block_size(const EVP_CIPHER *cipher);
590
+ # define EVP_CIPHER_block_size EVP_CIPHER_get_block_size
591
+ # ifndef OPENSSL_NO_DEPRECATED_3_0
592
+ OSSL_DEPRECATEDIN_3_0
593
+ int EVP_CIPHER_impl_ctx_size(const EVP_CIPHER *cipher);
594
+ # endif
595
+ int EVP_CIPHER_get_key_length(const EVP_CIPHER *cipher);
596
+ # define EVP_CIPHER_key_length EVP_CIPHER_get_key_length
597
+ int EVP_CIPHER_get_iv_length(const EVP_CIPHER *cipher);
598
+ # define EVP_CIPHER_iv_length EVP_CIPHER_get_iv_length
599
+ unsigned long EVP_CIPHER_get_flags(const EVP_CIPHER *cipher);
600
+ # define EVP_CIPHER_flags EVP_CIPHER_get_flags
601
+ int EVP_CIPHER_get_mode(const EVP_CIPHER *cipher);
602
+ # define EVP_CIPHER_mode EVP_CIPHER_get_mode
603
+ int EVP_CIPHER_get_type(const EVP_CIPHER *cipher);
604
+ # define EVP_CIPHER_type EVP_CIPHER_get_type
605
+ EVP_CIPHER *EVP_CIPHER_fetch(OSSL_LIB_CTX *ctx, const char *algorithm,
606
+ const char *properties);
607
+ int EVP_CIPHER_up_ref(EVP_CIPHER *cipher);
608
+ void EVP_CIPHER_free(EVP_CIPHER *cipher);
609
+
610
+ const EVP_CIPHER *EVP_CIPHER_CTX_get0_cipher(const EVP_CIPHER_CTX *ctx);
611
+ EVP_CIPHER *EVP_CIPHER_CTX_get1_cipher(EVP_CIPHER_CTX *ctx);
612
+ int EVP_CIPHER_CTX_is_encrypting(const EVP_CIPHER_CTX *ctx);
613
+ # define EVP_CIPHER_CTX_encrypting EVP_CIPHER_CTX_is_encrypting
614
+ int EVP_CIPHER_CTX_get_nid(const EVP_CIPHER_CTX *ctx);
615
+ # define EVP_CIPHER_CTX_nid EVP_CIPHER_CTX_get_nid
616
+ int EVP_CIPHER_CTX_get_block_size(const EVP_CIPHER_CTX *ctx);
617
+ # define EVP_CIPHER_CTX_block_size EVP_CIPHER_CTX_get_block_size
618
+ int EVP_CIPHER_CTX_get_key_length(const EVP_CIPHER_CTX *ctx);
619
+ # define EVP_CIPHER_CTX_key_length EVP_CIPHER_CTX_get_key_length
620
+ int EVP_CIPHER_CTX_get_iv_length(const EVP_CIPHER_CTX *ctx);
621
+ # define EVP_CIPHER_CTX_iv_length EVP_CIPHER_CTX_get_iv_length
622
+ int EVP_CIPHER_CTX_get_tag_length(const EVP_CIPHER_CTX *ctx);
623
+ # define EVP_CIPHER_CTX_tag_length EVP_CIPHER_CTX_get_tag_length
624
+ # ifndef OPENSSL_NO_DEPRECATED_3_0
625
+ const EVP_CIPHER *EVP_CIPHER_CTX_cipher(const EVP_CIPHER_CTX *ctx);
626
+ OSSL_DEPRECATEDIN_3_0 const unsigned char *EVP_CIPHER_CTX_iv(const EVP_CIPHER_CTX *ctx);
627
+ OSSL_DEPRECATEDIN_3_0 const unsigned char *EVP_CIPHER_CTX_original_iv(const EVP_CIPHER_CTX *ctx);
628
+ OSSL_DEPRECATEDIN_3_0 unsigned char *EVP_CIPHER_CTX_iv_noconst(EVP_CIPHER_CTX *ctx);
629
+ # endif
630
+ int EVP_CIPHER_CTX_get_updated_iv(EVP_CIPHER_CTX *ctx, void *buf, size_t len);
631
+ int EVP_CIPHER_CTX_get_original_iv(EVP_CIPHER_CTX *ctx, void *buf, size_t len);
632
+ # ifndef OPENSSL_NO_DEPRECATED_3_0
633
+ OSSL_DEPRECATEDIN_3_0
634
+ unsigned char *EVP_CIPHER_CTX_buf_noconst(EVP_CIPHER_CTX *ctx);
635
+ # endif
636
+ int EVP_CIPHER_CTX_get_num(const EVP_CIPHER_CTX *ctx);
637
+ # define EVP_CIPHER_CTX_num EVP_CIPHER_CTX_get_num
638
+ int EVP_CIPHER_CTX_set_num(EVP_CIPHER_CTX *ctx, int num);
639
+ EVP_CIPHER_CTX *EVP_CIPHER_CTX_dup(const EVP_CIPHER_CTX *in);
640
+ int EVP_CIPHER_CTX_copy(EVP_CIPHER_CTX *out, const EVP_CIPHER_CTX *in);
641
+ void *EVP_CIPHER_CTX_get_app_data(const EVP_CIPHER_CTX *ctx);
642
+ void EVP_CIPHER_CTX_set_app_data(EVP_CIPHER_CTX *ctx, void *data);
643
+ void *EVP_CIPHER_CTX_get_cipher_data(const EVP_CIPHER_CTX *ctx);
644
+ void *EVP_CIPHER_CTX_set_cipher_data(EVP_CIPHER_CTX *ctx, void *cipher_data);
645
+ # define EVP_CIPHER_CTX_get0_name(c) EVP_CIPHER_get0_name(EVP_CIPHER_CTX_get0_cipher(c))
646
+ # define EVP_CIPHER_CTX_get_type(c) EVP_CIPHER_get_type(EVP_CIPHER_CTX_get0_cipher(c))
647
+ # define EVP_CIPHER_CTX_type EVP_CIPHER_CTX_get_type
648
+ # ifndef OPENSSL_NO_DEPRECATED_1_1_0
649
+ # define EVP_CIPHER_CTX_flags(c) EVP_CIPHER_get_flags(EVP_CIPHER_CTX_get0_cipher(c))
650
+ # endif
651
+ # define EVP_CIPHER_CTX_get_mode(c) EVP_CIPHER_get_mode(EVP_CIPHER_CTX_get0_cipher(c))
652
+ # define EVP_CIPHER_CTX_mode EVP_CIPHER_CTX_get_mode
653
+
654
+ # define EVP_ENCODE_LENGTH(l) ((((l)+2)/3*4)+((l)/48+1)*2+80)
655
+ # define EVP_DECODE_LENGTH(l) (((l)+3)/4*3+80)
656
+
657
+ # define EVP_SignInit_ex(a,b,c) EVP_DigestInit_ex(a,b,c)
658
+ # define EVP_SignInit(a,b) EVP_DigestInit(a,b)
659
+ # define EVP_SignUpdate(a,b,c) EVP_DigestUpdate(a,b,c)
660
+ # define EVP_VerifyInit_ex(a,b,c) EVP_DigestInit_ex(a,b,c)
661
+ # define EVP_VerifyInit(a,b) EVP_DigestInit(a,b)
662
+ # define EVP_VerifyUpdate(a,b,c) EVP_DigestUpdate(a,b,c)
663
+ # define EVP_OpenUpdate(a,b,c,d,e) EVP_DecryptUpdate(a,b,c,d,e)
664
+ # define EVP_SealUpdate(a,b,c,d,e) EVP_EncryptUpdate(a,b,c,d,e)
665
+
666
+ # ifdef CONST_STRICT
667
+ void BIO_set_md(BIO *, const EVP_MD *md);
668
+ # else
669
+ # define BIO_set_md(b,md) BIO_ctrl(b,BIO_C_SET_MD,0,(void *)(md))
670
+ # endif
671
+ # define BIO_get_md(b,mdp) BIO_ctrl(b,BIO_C_GET_MD,0,(mdp))
672
+ # define BIO_get_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_GET_MD_CTX,0,(mdcp))
673
+ # define BIO_set_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_SET_MD_CTX,0,(mdcp))
674
+ # define BIO_get_cipher_status(b) BIO_ctrl(b,BIO_C_GET_CIPHER_STATUS,0,NULL)
675
+ # define BIO_get_cipher_ctx(b,c_pp) BIO_ctrl(b,BIO_C_GET_CIPHER_CTX,0,(c_pp))
676
+
677
+ /*__owur*/ int EVP_Cipher(EVP_CIPHER_CTX *c,
678
+ unsigned char *out,
679
+ const unsigned char *in, unsigned int inl);
680
+
681
+ # define EVP_add_cipher_alias(n,alias) \
682
+ OBJ_NAME_add((alias),OBJ_NAME_TYPE_CIPHER_METH|OBJ_NAME_ALIAS,(n))
683
+ # define EVP_add_digest_alias(n,alias) \
684
+ OBJ_NAME_add((alias),OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS,(n))
685
+ # define EVP_delete_cipher_alias(alias) \
686
+ OBJ_NAME_remove(alias,OBJ_NAME_TYPE_CIPHER_METH|OBJ_NAME_ALIAS);
687
+ # define EVP_delete_digest_alias(alias) \
688
+ OBJ_NAME_remove(alias,OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS);
689
+
690
+ int EVP_MD_get_params(const EVP_MD *digest, OSSL_PARAM params[]);
691
+ int EVP_MD_CTX_set_params(EVP_MD_CTX *ctx, const OSSL_PARAM params[]);
692
+ int EVP_MD_CTX_get_params(EVP_MD_CTX *ctx, OSSL_PARAM params[]);
693
+ const OSSL_PARAM *EVP_MD_gettable_params(const EVP_MD *digest);
694
+ const OSSL_PARAM *EVP_MD_settable_ctx_params(const EVP_MD *md);
695
+ const OSSL_PARAM *EVP_MD_gettable_ctx_params(const EVP_MD *md);
696
+ const OSSL_PARAM *EVP_MD_CTX_settable_params(EVP_MD_CTX *ctx);
697
+ const OSSL_PARAM *EVP_MD_CTX_gettable_params(EVP_MD_CTX *ctx);
698
+ int EVP_MD_CTX_ctrl(EVP_MD_CTX *ctx, int cmd, int p1, void *p2);
699
+ EVP_MD_CTX *EVP_MD_CTX_new(void);
700
+ int EVP_MD_CTX_reset(EVP_MD_CTX *ctx);
701
+ void EVP_MD_CTX_free(EVP_MD_CTX *ctx);
702
+ # define EVP_MD_CTX_create() EVP_MD_CTX_new()
703
+ # define EVP_MD_CTX_init(ctx) EVP_MD_CTX_reset((ctx))
704
+ # define EVP_MD_CTX_destroy(ctx) EVP_MD_CTX_free((ctx))
705
+ __owur EVP_MD_CTX *EVP_MD_CTX_dup(const EVP_MD_CTX *in);
706
+ __owur int EVP_MD_CTX_copy_ex(EVP_MD_CTX *out, const EVP_MD_CTX *in);
707
+ void EVP_MD_CTX_set_flags(EVP_MD_CTX *ctx, int flags);
708
+ void EVP_MD_CTX_clear_flags(EVP_MD_CTX *ctx, int flags);
709
+ int EVP_MD_CTX_test_flags(const EVP_MD_CTX *ctx, int flags);
710
+ __owur int EVP_DigestInit_ex2(EVP_MD_CTX *ctx, const EVP_MD *type,
711
+ const OSSL_PARAM params[]);
712
+ __owur int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type,
713
+ ENGINE *impl);
714
+ __owur int EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *d,
715
+ size_t cnt);
716
+ __owur int EVP_DigestFinal_ex(EVP_MD_CTX *ctx, unsigned char *md,
717
+ unsigned int *s);
718
+ __owur int EVP_Digest(const void *data, size_t count,
719
+ unsigned char *md, unsigned int *size,
720
+ const EVP_MD *type, ENGINE *impl);
721
+ __owur int EVP_Q_digest(OSSL_LIB_CTX *libctx, const char *name,
722
+ const char *propq, const void *data, size_t datalen,
723
+ unsigned char *md, size_t *mdlen);
724
+
725
+ __owur int EVP_MD_CTX_copy(EVP_MD_CTX *out, const EVP_MD_CTX *in);
726
+ __owur int EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type);
727
+ __owur int EVP_DigestFinal(EVP_MD_CTX *ctx, unsigned char *md,
728
+ unsigned int *s);
729
+ __owur int EVP_DigestFinalXOF(EVP_MD_CTX *ctx, unsigned char *md,
730
+ size_t len);
731
+
732
+ __owur EVP_MD *EVP_MD_fetch(OSSL_LIB_CTX *ctx, const char *algorithm,
733
+ const char *properties);
734
+
735
+ int EVP_MD_up_ref(EVP_MD *md);
736
+ void EVP_MD_free(EVP_MD *md);
737
+
738
+ int EVP_read_pw_string(char *buf, int length, const char *prompt, int verify);
739
+ int EVP_read_pw_string_min(char *buf, int minlen, int maxlen,
740
+ const char *prompt, int verify);
741
+ void EVP_set_pw_prompt(const char *prompt);
742
+ char *EVP_get_pw_prompt(void);
743
+
744
+ __owur int EVP_BytesToKey(const EVP_CIPHER *type, const EVP_MD *md,
745
+ const unsigned char *salt,
746
+ const unsigned char *data, int datal, int count,
747
+ unsigned char *key, unsigned char *iv);
748
+
749
+ void EVP_CIPHER_CTX_set_flags(EVP_CIPHER_CTX *ctx, int flags);
750
+ void EVP_CIPHER_CTX_clear_flags(EVP_CIPHER_CTX *ctx, int flags);
751
+ int EVP_CIPHER_CTX_test_flags(const EVP_CIPHER_CTX *ctx, int flags);
752
+
753
+ __owur int EVP_EncryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
754
+ const unsigned char *key, const unsigned char *iv);
755
+ /*__owur*/ int EVP_EncryptInit_ex(EVP_CIPHER_CTX *ctx,
756
+ const EVP_CIPHER *cipher, ENGINE *impl,
757
+ const unsigned char *key,
758
+ const unsigned char *iv);
759
+ __owur int EVP_EncryptInit_ex2(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
760
+ const unsigned char *key,
761
+ const unsigned char *iv,
762
+ const OSSL_PARAM params[]);
763
+ /*__owur*/ int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out,
764
+ int *outl, const unsigned char *in, int inl);
765
+ /*__owur*/ int EVP_EncryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out,
766
+ int *outl);
767
+ /*__owur*/ int EVP_EncryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *out,
768
+ int *outl);
769
+
770
+ __owur int EVP_DecryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
771
+ const unsigned char *key, const unsigned char *iv);
772
+ /*__owur*/ int EVP_DecryptInit_ex(EVP_CIPHER_CTX *ctx,
773
+ const EVP_CIPHER *cipher, ENGINE *impl,
774
+ const unsigned char *key,
775
+ const unsigned char *iv);
776
+ __owur int EVP_DecryptInit_ex2(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
777
+ const unsigned char *key,
778
+ const unsigned char *iv,
779
+ const OSSL_PARAM params[]);
780
+ /*__owur*/ int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out,
781
+ int *outl, const unsigned char *in, int inl);
782
+ __owur int EVP_DecryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm,
783
+ int *outl);
784
+ /*__owur*/ int EVP_DecryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm,
785
+ int *outl);
786
+
787
+ __owur int EVP_CipherInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
788
+ const unsigned char *key, const unsigned char *iv,
789
+ int enc);
790
+ /*__owur*/ int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx,
791
+ const EVP_CIPHER *cipher, ENGINE *impl,
792
+ const unsigned char *key,
793
+ const unsigned char *iv, int enc);
794
+ __owur int EVP_CipherInit_ex2(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
795
+ const unsigned char *key, const unsigned char *iv,
796
+ int enc, const OSSL_PARAM params[]);
797
+ __owur int EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out,
798
+ int *outl, const unsigned char *in, int inl);
799
+ __owur int EVP_CipherFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm,
800
+ int *outl);
801
+ __owur int EVP_CipherFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm,
802
+ int *outl);
803
+
804
+ __owur int EVP_SignFinal(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s,
805
+ EVP_PKEY *pkey);
806
+ __owur int EVP_SignFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s,
807
+ EVP_PKEY *pkey, OSSL_LIB_CTX *libctx,
808
+ const char *propq);
809
+
810
+ __owur int EVP_DigestSign(EVP_MD_CTX *ctx, unsigned char *sigret,
811
+ size_t *siglen, const unsigned char *tbs,
812
+ size_t tbslen);
813
+
814
+ __owur int EVP_VerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sigbuf,
815
+ unsigned int siglen, EVP_PKEY *pkey);
816
+ __owur int EVP_VerifyFinal_ex(EVP_MD_CTX *ctx, const unsigned char *sigbuf,
817
+ unsigned int siglen, EVP_PKEY *pkey,
818
+ OSSL_LIB_CTX *libctx, const char *propq);
819
+
820
+ __owur int EVP_DigestVerify(EVP_MD_CTX *ctx, const unsigned char *sigret,
821
+ size_t siglen, const unsigned char *tbs,
822
+ size_t tbslen);
823
+
824
+ int EVP_DigestSignInit_ex(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx,
825
+ const char *mdname, OSSL_LIB_CTX *libctx,
826
+ const char *props, EVP_PKEY *pkey,
827
+ const OSSL_PARAM params[]);
828
+ /*__owur*/ int EVP_DigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx,
829
+ const EVP_MD *type, ENGINE *e,
830
+ EVP_PKEY *pkey);
831
+ int EVP_DigestSignUpdate(EVP_MD_CTX *ctx, const void *data, size_t dsize);
832
+ __owur int EVP_DigestSignFinal(EVP_MD_CTX *ctx, unsigned char *sigret,
833
+ size_t *siglen);
834
+
835
+ int EVP_DigestVerifyInit_ex(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx,
836
+ const char *mdname, OSSL_LIB_CTX *libctx,
837
+ const char *props, EVP_PKEY *pkey,
838
+ const OSSL_PARAM params[]);
839
+ __owur int EVP_DigestVerifyInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx,
840
+ const EVP_MD *type, ENGINE *e,
841
+ EVP_PKEY *pkey);
842
+ int EVP_DigestVerifyUpdate(EVP_MD_CTX *ctx, const void *data, size_t dsize);
843
+ __owur int EVP_DigestVerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sig,
844
+ size_t siglen);
845
+
846
+ __owur int EVP_OpenInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type,
847
+ const unsigned char *ek, int ekl,
848
+ const unsigned char *iv, EVP_PKEY *priv);
849
+ __owur int EVP_OpenFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl);
850
+
851
+ __owur int EVP_SealInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type,
852
+ unsigned char **ek, int *ekl, unsigned char *iv,
853
+ EVP_PKEY **pubk, int npubk);
854
+ __owur int EVP_SealFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl);
855
+
856
+ EVP_ENCODE_CTX *EVP_ENCODE_CTX_new(void);
857
+ void EVP_ENCODE_CTX_free(EVP_ENCODE_CTX *ctx);
858
+ int EVP_ENCODE_CTX_copy(EVP_ENCODE_CTX *dctx, const EVP_ENCODE_CTX *sctx);
859
+ int EVP_ENCODE_CTX_num(EVP_ENCODE_CTX *ctx);
860
+ void EVP_EncodeInit(EVP_ENCODE_CTX *ctx);
861
+ int EVP_EncodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl,
862
+ const unsigned char *in, int inl);
863
+ void EVP_EncodeFinal(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl);
864
+ int EVP_EncodeBlock(unsigned char *t, const unsigned char *f, int n);
865
+
866
+ void EVP_DecodeInit(EVP_ENCODE_CTX *ctx);
867
+ int EVP_DecodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl,
868
+ const unsigned char *in, int inl);
869
+ int EVP_DecodeFinal(EVP_ENCODE_CTX *ctx, unsigned
870
+ char *out, int *outl);
871
+ int EVP_DecodeBlock(unsigned char *t, const unsigned char *f, int n);
872
+
873
+ # ifndef OPENSSL_NO_DEPRECATED_1_1_0
874
+ # define EVP_CIPHER_CTX_init(c) EVP_CIPHER_CTX_reset(c)
875
+ # define EVP_CIPHER_CTX_cleanup(c) EVP_CIPHER_CTX_reset(c)
876
+ # endif
877
+ EVP_CIPHER_CTX *EVP_CIPHER_CTX_new(void);
878
+ int EVP_CIPHER_CTX_reset(EVP_CIPHER_CTX *c);
879
+ void EVP_CIPHER_CTX_free(EVP_CIPHER_CTX *c);
880
+ int EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX *x, int keylen);
881
+ int EVP_CIPHER_CTX_set_padding(EVP_CIPHER_CTX *c, int pad);
882
+ int EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr);
883
+ int EVP_CIPHER_CTX_rand_key(EVP_CIPHER_CTX *ctx, unsigned char *key);
884
+ int EVP_CIPHER_get_params(EVP_CIPHER *cipher, OSSL_PARAM params[]);
885
+ int EVP_CIPHER_CTX_set_params(EVP_CIPHER_CTX *ctx, const OSSL_PARAM params[]);
886
+ int EVP_CIPHER_CTX_get_params(EVP_CIPHER_CTX *ctx, OSSL_PARAM params[]);
887
+ const OSSL_PARAM *EVP_CIPHER_gettable_params(const EVP_CIPHER *cipher);
888
+ const OSSL_PARAM *EVP_CIPHER_settable_ctx_params(const EVP_CIPHER *cipher);
889
+ const OSSL_PARAM *EVP_CIPHER_gettable_ctx_params(const EVP_CIPHER *cipher);
890
+ const OSSL_PARAM *EVP_CIPHER_CTX_settable_params(EVP_CIPHER_CTX *ctx);
891
+ const OSSL_PARAM *EVP_CIPHER_CTX_gettable_params(EVP_CIPHER_CTX *ctx);
892
+
893
+ const BIO_METHOD *BIO_f_md(void);
894
+ const BIO_METHOD *BIO_f_base64(void);
895
+ const BIO_METHOD *BIO_f_cipher(void);
896
+ const BIO_METHOD *BIO_f_reliable(void);
897
+ __owur int BIO_set_cipher(BIO *b, const EVP_CIPHER *c, const unsigned char *k,
898
+ const unsigned char *i, int enc);
899
+
900
+ const EVP_MD *EVP_md_null(void);
901
+ # ifndef OPENSSL_NO_MD2
902
+ const EVP_MD *EVP_md2(void);
903
+ # endif
904
+ # ifndef OPENSSL_NO_MD4
905
+ const EVP_MD *EVP_md4(void);
906
+ # endif
907
+ # ifndef OPENSSL_NO_MD5
908
+ const EVP_MD *EVP_md5(void);
909
+ const EVP_MD *EVP_md5_sha1(void);
910
+ # endif
911
+ # ifndef OPENSSL_NO_BLAKE2
912
+ const EVP_MD *EVP_blake2b512(void);
913
+ const EVP_MD *EVP_blake2s256(void);
914
+ # endif
915
+ const EVP_MD *EVP_sha1(void);
916
+ const EVP_MD *EVP_sha224(void);
917
+ const EVP_MD *EVP_sha256(void);
918
+ const EVP_MD *EVP_sha384(void);
919
+ const EVP_MD *EVP_sha512(void);
920
+ const EVP_MD *EVP_sha512_224(void);
921
+ const EVP_MD *EVP_sha512_256(void);
922
+ const EVP_MD *EVP_sha3_224(void);
923
+ const EVP_MD *EVP_sha3_256(void);
924
+ const EVP_MD *EVP_sha3_384(void);
925
+ const EVP_MD *EVP_sha3_512(void);
926
+ const EVP_MD *EVP_shake128(void);
927
+ const EVP_MD *EVP_shake256(void);
928
+
929
+ # ifndef OPENSSL_NO_MDC2
930
+ const EVP_MD *EVP_mdc2(void);
931
+ # endif
932
+ # ifndef OPENSSL_NO_RMD160
933
+ const EVP_MD *EVP_ripemd160(void);
934
+ # endif
935
+ # ifndef OPENSSL_NO_WHIRLPOOL
936
+ const EVP_MD *EVP_whirlpool(void);
937
+ # endif
938
+ # ifndef OPENSSL_NO_SM3
939
+ const EVP_MD *EVP_sm3(void);
940
+ # endif
941
+ const EVP_CIPHER *EVP_enc_null(void); /* does nothing :-) */
942
+ # ifndef OPENSSL_NO_DES
943
+ const EVP_CIPHER *EVP_des_ecb(void);
944
+ const EVP_CIPHER *EVP_des_ede(void);
945
+ const EVP_CIPHER *EVP_des_ede3(void);
946
+ const EVP_CIPHER *EVP_des_ede_ecb(void);
947
+ const EVP_CIPHER *EVP_des_ede3_ecb(void);
948
+ const EVP_CIPHER *EVP_des_cfb64(void);
949
+ # define EVP_des_cfb EVP_des_cfb64
950
+ const EVP_CIPHER *EVP_des_cfb1(void);
951
+ const EVP_CIPHER *EVP_des_cfb8(void);
952
+ const EVP_CIPHER *EVP_des_ede_cfb64(void);
953
+ # define EVP_des_ede_cfb EVP_des_ede_cfb64
954
+ const EVP_CIPHER *EVP_des_ede3_cfb64(void);
955
+ # define EVP_des_ede3_cfb EVP_des_ede3_cfb64
956
+ const EVP_CIPHER *EVP_des_ede3_cfb1(void);
957
+ const EVP_CIPHER *EVP_des_ede3_cfb8(void);
958
+ const EVP_CIPHER *EVP_des_ofb(void);
959
+ const EVP_CIPHER *EVP_des_ede_ofb(void);
960
+ const EVP_CIPHER *EVP_des_ede3_ofb(void);
961
+ const EVP_CIPHER *EVP_des_cbc(void);
962
+ const EVP_CIPHER *EVP_des_ede_cbc(void);
963
+ const EVP_CIPHER *EVP_des_ede3_cbc(void);
964
+ const EVP_CIPHER *EVP_desx_cbc(void);
965
+ const EVP_CIPHER *EVP_des_ede3_wrap(void);
966
+ /*
967
+ * This should now be supported through the dev_crypto ENGINE. But also, why
968
+ * are rc4 and md5 declarations made here inside a "NO_DES" precompiler
969
+ * branch?
970
+ */
971
+ # endif
972
+ # ifndef OPENSSL_NO_RC4
973
+ const EVP_CIPHER *EVP_rc4(void);
974
+ const EVP_CIPHER *EVP_rc4_40(void);
975
+ # ifndef OPENSSL_NO_MD5
976
+ const EVP_CIPHER *EVP_rc4_hmac_md5(void);
977
+ # endif
978
+ # endif
979
+ # ifndef OPENSSL_NO_IDEA
980
+ const EVP_CIPHER *EVP_idea_ecb(void);
981
+ const EVP_CIPHER *EVP_idea_cfb64(void);
982
+ # define EVP_idea_cfb EVP_idea_cfb64
983
+ const EVP_CIPHER *EVP_idea_ofb(void);
984
+ const EVP_CIPHER *EVP_idea_cbc(void);
985
+ # endif
986
+ # ifndef OPENSSL_NO_RC2
987
+ const EVP_CIPHER *EVP_rc2_ecb(void);
988
+ const EVP_CIPHER *EVP_rc2_cbc(void);
989
+ const EVP_CIPHER *EVP_rc2_40_cbc(void);
990
+ const EVP_CIPHER *EVP_rc2_64_cbc(void);
991
+ const EVP_CIPHER *EVP_rc2_cfb64(void);
992
+ # define EVP_rc2_cfb EVP_rc2_cfb64
993
+ const EVP_CIPHER *EVP_rc2_ofb(void);
994
+ # endif
995
+ # ifndef OPENSSL_NO_BF
996
+ const EVP_CIPHER *EVP_bf_ecb(void);
997
+ const EVP_CIPHER *EVP_bf_cbc(void);
998
+ const EVP_CIPHER *EVP_bf_cfb64(void);
999
+ # define EVP_bf_cfb EVP_bf_cfb64
1000
+ const EVP_CIPHER *EVP_bf_ofb(void);
1001
+ # endif
1002
+ # ifndef OPENSSL_NO_CAST
1003
+ const EVP_CIPHER *EVP_cast5_ecb(void);
1004
+ const EVP_CIPHER *EVP_cast5_cbc(void);
1005
+ const EVP_CIPHER *EVP_cast5_cfb64(void);
1006
+ # define EVP_cast5_cfb EVP_cast5_cfb64
1007
+ const EVP_CIPHER *EVP_cast5_ofb(void);
1008
+ # endif
1009
+ # ifndef OPENSSL_NO_RC5
1010
+ const EVP_CIPHER *EVP_rc5_32_12_16_cbc(void);
1011
+ const EVP_CIPHER *EVP_rc5_32_12_16_ecb(void);
1012
+ const EVP_CIPHER *EVP_rc5_32_12_16_cfb64(void);
1013
+ # define EVP_rc5_32_12_16_cfb EVP_rc5_32_12_16_cfb64
1014
+ const EVP_CIPHER *EVP_rc5_32_12_16_ofb(void);
1015
+ # endif
1016
+ const EVP_CIPHER *EVP_aes_128_ecb(void);
1017
+ const EVP_CIPHER *EVP_aes_128_cbc(void);
1018
+ const EVP_CIPHER *EVP_aes_128_cfb1(void);
1019
+ const EVP_CIPHER *EVP_aes_128_cfb8(void);
1020
+ const EVP_CIPHER *EVP_aes_128_cfb128(void);
1021
+ # define EVP_aes_128_cfb EVP_aes_128_cfb128
1022
+ const EVP_CIPHER *EVP_aes_128_ofb(void);
1023
+ const EVP_CIPHER *EVP_aes_128_ctr(void);
1024
+ const EVP_CIPHER *EVP_aes_128_ccm(void);
1025
+ const EVP_CIPHER *EVP_aes_128_gcm(void);
1026
+ const EVP_CIPHER *EVP_aes_128_xts(void);
1027
+ const EVP_CIPHER *EVP_aes_128_wrap(void);
1028
+ const EVP_CIPHER *EVP_aes_128_wrap_pad(void);
1029
+ # ifndef OPENSSL_NO_OCB
1030
+ const EVP_CIPHER *EVP_aes_128_ocb(void);
1031
+ # endif
1032
+ const EVP_CIPHER *EVP_aes_192_ecb(void);
1033
+ const EVP_CIPHER *EVP_aes_192_cbc(void);
1034
+ const EVP_CIPHER *EVP_aes_192_cfb1(void);
1035
+ const EVP_CIPHER *EVP_aes_192_cfb8(void);
1036
+ const EVP_CIPHER *EVP_aes_192_cfb128(void);
1037
+ # define EVP_aes_192_cfb EVP_aes_192_cfb128
1038
+ const EVP_CIPHER *EVP_aes_192_ofb(void);
1039
+ const EVP_CIPHER *EVP_aes_192_ctr(void);
1040
+ const EVP_CIPHER *EVP_aes_192_ccm(void);
1041
+ const EVP_CIPHER *EVP_aes_192_gcm(void);
1042
+ const EVP_CIPHER *EVP_aes_192_wrap(void);
1043
+ const EVP_CIPHER *EVP_aes_192_wrap_pad(void);
1044
+ # ifndef OPENSSL_NO_OCB
1045
+ const EVP_CIPHER *EVP_aes_192_ocb(void);
1046
+ # endif
1047
+ const EVP_CIPHER *EVP_aes_256_ecb(void);
1048
+ const EVP_CIPHER *EVP_aes_256_cbc(void);
1049
+ const EVP_CIPHER *EVP_aes_256_cfb1(void);
1050
+ const EVP_CIPHER *EVP_aes_256_cfb8(void);
1051
+ const EVP_CIPHER *EVP_aes_256_cfb128(void);
1052
+ # define EVP_aes_256_cfb EVP_aes_256_cfb128
1053
+ const EVP_CIPHER *EVP_aes_256_ofb(void);
1054
+ const EVP_CIPHER *EVP_aes_256_ctr(void);
1055
+ const EVP_CIPHER *EVP_aes_256_ccm(void);
1056
+ const EVP_CIPHER *EVP_aes_256_gcm(void);
1057
+ const EVP_CIPHER *EVP_aes_256_xts(void);
1058
+ const EVP_CIPHER *EVP_aes_256_wrap(void);
1059
+ const EVP_CIPHER *EVP_aes_256_wrap_pad(void);
1060
+ # ifndef OPENSSL_NO_OCB
1061
+ const EVP_CIPHER *EVP_aes_256_ocb(void);
1062
+ # endif
1063
+ const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha1(void);
1064
+ const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha1(void);
1065
+ const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha256(void);
1066
+ const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha256(void);
1067
+ # ifndef OPENSSL_NO_ARIA
1068
+ const EVP_CIPHER *EVP_aria_128_ecb(void);
1069
+ const EVP_CIPHER *EVP_aria_128_cbc(void);
1070
+ const EVP_CIPHER *EVP_aria_128_cfb1(void);
1071
+ const EVP_CIPHER *EVP_aria_128_cfb8(void);
1072
+ const EVP_CIPHER *EVP_aria_128_cfb128(void);
1073
+ # define EVP_aria_128_cfb EVP_aria_128_cfb128
1074
+ const EVP_CIPHER *EVP_aria_128_ctr(void);
1075
+ const EVP_CIPHER *EVP_aria_128_ofb(void);
1076
+ const EVP_CIPHER *EVP_aria_128_gcm(void);
1077
+ const EVP_CIPHER *EVP_aria_128_ccm(void);
1078
+ const EVP_CIPHER *EVP_aria_192_ecb(void);
1079
+ const EVP_CIPHER *EVP_aria_192_cbc(void);
1080
+ const EVP_CIPHER *EVP_aria_192_cfb1(void);
1081
+ const EVP_CIPHER *EVP_aria_192_cfb8(void);
1082
+ const EVP_CIPHER *EVP_aria_192_cfb128(void);
1083
+ # define EVP_aria_192_cfb EVP_aria_192_cfb128
1084
+ const EVP_CIPHER *EVP_aria_192_ctr(void);
1085
+ const EVP_CIPHER *EVP_aria_192_ofb(void);
1086
+ const EVP_CIPHER *EVP_aria_192_gcm(void);
1087
+ const EVP_CIPHER *EVP_aria_192_ccm(void);
1088
+ const EVP_CIPHER *EVP_aria_256_ecb(void);
1089
+ const EVP_CIPHER *EVP_aria_256_cbc(void);
1090
+ const EVP_CIPHER *EVP_aria_256_cfb1(void);
1091
+ const EVP_CIPHER *EVP_aria_256_cfb8(void);
1092
+ const EVP_CIPHER *EVP_aria_256_cfb128(void);
1093
+ # define EVP_aria_256_cfb EVP_aria_256_cfb128
1094
+ const EVP_CIPHER *EVP_aria_256_ctr(void);
1095
+ const EVP_CIPHER *EVP_aria_256_ofb(void);
1096
+ const EVP_CIPHER *EVP_aria_256_gcm(void);
1097
+ const EVP_CIPHER *EVP_aria_256_ccm(void);
1098
+ # endif
1099
+ # ifndef OPENSSL_NO_CAMELLIA
1100
+ const EVP_CIPHER *EVP_camellia_128_ecb(void);
1101
+ const EVP_CIPHER *EVP_camellia_128_cbc(void);
1102
+ const EVP_CIPHER *EVP_camellia_128_cfb1(void);
1103
+ const EVP_CIPHER *EVP_camellia_128_cfb8(void);
1104
+ const EVP_CIPHER *EVP_camellia_128_cfb128(void);
1105
+ # define EVP_camellia_128_cfb EVP_camellia_128_cfb128
1106
+ const EVP_CIPHER *EVP_camellia_128_ofb(void);
1107
+ const EVP_CIPHER *EVP_camellia_128_ctr(void);
1108
+ const EVP_CIPHER *EVP_camellia_192_ecb(void);
1109
+ const EVP_CIPHER *EVP_camellia_192_cbc(void);
1110
+ const EVP_CIPHER *EVP_camellia_192_cfb1(void);
1111
+ const EVP_CIPHER *EVP_camellia_192_cfb8(void);
1112
+ const EVP_CIPHER *EVP_camellia_192_cfb128(void);
1113
+ # define EVP_camellia_192_cfb EVP_camellia_192_cfb128
1114
+ const EVP_CIPHER *EVP_camellia_192_ofb(void);
1115
+ const EVP_CIPHER *EVP_camellia_192_ctr(void);
1116
+ const EVP_CIPHER *EVP_camellia_256_ecb(void);
1117
+ const EVP_CIPHER *EVP_camellia_256_cbc(void);
1118
+ const EVP_CIPHER *EVP_camellia_256_cfb1(void);
1119
+ const EVP_CIPHER *EVP_camellia_256_cfb8(void);
1120
+ const EVP_CIPHER *EVP_camellia_256_cfb128(void);
1121
+ # define EVP_camellia_256_cfb EVP_camellia_256_cfb128
1122
+ const EVP_CIPHER *EVP_camellia_256_ofb(void);
1123
+ const EVP_CIPHER *EVP_camellia_256_ctr(void);
1124
+ # endif
1125
+ # ifndef OPENSSL_NO_CHACHA
1126
+ const EVP_CIPHER *EVP_chacha20(void);
1127
+ # ifndef OPENSSL_NO_POLY1305
1128
+ const EVP_CIPHER *EVP_chacha20_poly1305(void);
1129
+ # endif
1130
+ # endif
1131
+
1132
+ # ifndef OPENSSL_NO_SEED
1133
+ const EVP_CIPHER *EVP_seed_ecb(void);
1134
+ const EVP_CIPHER *EVP_seed_cbc(void);
1135
+ const EVP_CIPHER *EVP_seed_cfb128(void);
1136
+ # define EVP_seed_cfb EVP_seed_cfb128
1137
+ const EVP_CIPHER *EVP_seed_ofb(void);
1138
+ # endif
1139
+
1140
+ # ifndef OPENSSL_NO_SM4
1141
+ const EVP_CIPHER *EVP_sm4_ecb(void);
1142
+ const EVP_CIPHER *EVP_sm4_cbc(void);
1143
+ const EVP_CIPHER *EVP_sm4_cfb128(void);
1144
+ # define EVP_sm4_cfb EVP_sm4_cfb128
1145
+ const EVP_CIPHER *EVP_sm4_ofb(void);
1146
+ const EVP_CIPHER *EVP_sm4_ctr(void);
1147
+ # endif
1148
+
1149
+ # ifndef OPENSSL_NO_DEPRECATED_1_1_0
1150
+ # define OPENSSL_add_all_algorithms_conf() \
1151
+ OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \
1152
+ | OPENSSL_INIT_ADD_ALL_DIGESTS \
1153
+ | OPENSSL_INIT_LOAD_CONFIG, NULL)
1154
+ # define OPENSSL_add_all_algorithms_noconf() \
1155
+ OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \
1156
+ | OPENSSL_INIT_ADD_ALL_DIGESTS, NULL)
1157
+
1158
+ # ifdef OPENSSL_LOAD_CONF
1159
+ # define OpenSSL_add_all_algorithms() OPENSSL_add_all_algorithms_conf()
1160
+ # else
1161
+ # define OpenSSL_add_all_algorithms() OPENSSL_add_all_algorithms_noconf()
1162
+ # endif
1163
+
1164
+ # define OpenSSL_add_all_ciphers() \
1165
+ OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS, NULL)
1166
+ # define OpenSSL_add_all_digests() \
1167
+ OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_DIGESTS, NULL)
1168
+
1169
+ # define EVP_cleanup() while(0) continue
1170
+ # endif
1171
+
1172
+ int EVP_add_cipher(const EVP_CIPHER *cipher);
1173
+ int EVP_add_digest(const EVP_MD *digest);
1174
+
1175
+ const EVP_CIPHER *EVP_get_cipherbyname(const char *name);
1176
+ const EVP_MD *EVP_get_digestbyname(const char *name);
1177
+
1178
+ void EVP_CIPHER_do_all(void (*fn) (const EVP_CIPHER *ciph,
1179
+ const char *from, const char *to, void *x),
1180
+ void *arg);
1181
+ void EVP_CIPHER_do_all_sorted(void (*fn)
1182
+ (const EVP_CIPHER *ciph, const char *from,
1183
+ const char *to, void *x), void *arg);
1184
+ void EVP_CIPHER_do_all_provided(OSSL_LIB_CTX *libctx,
1185
+ void (*fn)(EVP_CIPHER *cipher, void *arg),
1186
+ void *arg);
1187
+
1188
+ void EVP_MD_do_all(void (*fn) (const EVP_MD *ciph,
1189
+ const char *from, const char *to, void *x),
1190
+ void *arg);
1191
+ void EVP_MD_do_all_sorted(void (*fn)
1192
+ (const EVP_MD *ciph, const char *from,
1193
+ const char *to, void *x), void *arg);
1194
+ void EVP_MD_do_all_provided(OSSL_LIB_CTX *libctx,
1195
+ void (*fn)(EVP_MD *md, void *arg),
1196
+ void *arg);
1197
+
1198
+ /* MAC stuff */
1199
+
1200
+ EVP_MAC *EVP_MAC_fetch(OSSL_LIB_CTX *libctx, const char *algorithm,
1201
+ const char *properties);
1202
+ int EVP_MAC_up_ref(EVP_MAC *mac);
1203
+ void EVP_MAC_free(EVP_MAC *mac);
1204
+ const char *EVP_MAC_get0_name(const EVP_MAC *mac);
1205
+ const char *EVP_MAC_get0_description(const EVP_MAC *mac);
1206
+ int EVP_MAC_is_a(const EVP_MAC *mac, const char *name);
1207
+ const OSSL_PROVIDER *EVP_MAC_get0_provider(const EVP_MAC *mac);
1208
+ int EVP_MAC_get_params(EVP_MAC *mac, OSSL_PARAM params[]);
1209
+
1210
+ EVP_MAC_CTX *EVP_MAC_CTX_new(EVP_MAC *mac);
1211
+ void EVP_MAC_CTX_free(EVP_MAC_CTX *ctx);
1212
+ EVP_MAC_CTX *EVP_MAC_CTX_dup(const EVP_MAC_CTX *src);
1213
+ EVP_MAC *EVP_MAC_CTX_get0_mac(EVP_MAC_CTX *ctx);
1214
+ int EVP_MAC_CTX_get_params(EVP_MAC_CTX *ctx, OSSL_PARAM params[]);
1215
+ int EVP_MAC_CTX_set_params(EVP_MAC_CTX *ctx, const OSSL_PARAM params[]);
1216
+
1217
+ size_t EVP_MAC_CTX_get_mac_size(EVP_MAC_CTX *ctx);
1218
+ size_t EVP_MAC_CTX_get_block_size(EVP_MAC_CTX *ctx);
1219
+ unsigned char *EVP_Q_mac(OSSL_LIB_CTX *libctx, const char *name, const char *propq,
1220
+ const char *subalg, const OSSL_PARAM *params,
1221
+ const void *key, size_t keylen,
1222
+ const unsigned char *data, size_t datalen,
1223
+ unsigned char *out, size_t outsize, size_t *outlen);
1224
+ int EVP_MAC_init(EVP_MAC_CTX *ctx, const unsigned char *key, size_t keylen,
1225
+ const OSSL_PARAM params[]);
1226
+ int EVP_MAC_update(EVP_MAC_CTX *ctx, const unsigned char *data, size_t datalen);
1227
+ int EVP_MAC_final(EVP_MAC_CTX *ctx,
1228
+ unsigned char *out, size_t *outl, size_t outsize);
1229
+ int EVP_MAC_finalXOF(EVP_MAC_CTX *ctx, unsigned char *out, size_t outsize);
1230
+ const OSSL_PARAM *EVP_MAC_gettable_params(const EVP_MAC *mac);
1231
+ const OSSL_PARAM *EVP_MAC_gettable_ctx_params(const EVP_MAC *mac);
1232
+ const OSSL_PARAM *EVP_MAC_settable_ctx_params(const EVP_MAC *mac);
1233
+ const OSSL_PARAM *EVP_MAC_CTX_gettable_params(EVP_MAC_CTX *ctx);
1234
+ const OSSL_PARAM *EVP_MAC_CTX_settable_params(EVP_MAC_CTX *ctx);
1235
+
1236
+ void EVP_MAC_do_all_provided(OSSL_LIB_CTX *libctx,
1237
+ void (*fn)(EVP_MAC *mac, void *arg),
1238
+ void *arg);
1239
+ int EVP_MAC_names_do_all(const EVP_MAC *mac,
1240
+ void (*fn)(const char *name, void *data),
1241
+ void *data);
1242
+
1243
+ /* RAND stuff */
1244
+ EVP_RAND *EVP_RAND_fetch(OSSL_LIB_CTX *libctx, const char *algorithm,
1245
+ const char *properties);
1246
+ int EVP_RAND_up_ref(EVP_RAND *rand);
1247
+ void EVP_RAND_free(EVP_RAND *rand);
1248
+ const char *EVP_RAND_get0_name(const EVP_RAND *rand);
1249
+ const char *EVP_RAND_get0_description(const EVP_RAND *md);
1250
+ int EVP_RAND_is_a(const EVP_RAND *rand, const char *name);
1251
+ const OSSL_PROVIDER *EVP_RAND_get0_provider(const EVP_RAND *rand);
1252
+ int EVP_RAND_get_params(EVP_RAND *rand, OSSL_PARAM params[]);
1253
+
1254
+ EVP_RAND_CTX *EVP_RAND_CTX_new(EVP_RAND *rand, EVP_RAND_CTX *parent);
1255
+ int EVP_RAND_CTX_up_ref(EVP_RAND_CTX *ctx);
1256
+ void EVP_RAND_CTX_free(EVP_RAND_CTX *ctx);
1257
+ EVP_RAND *EVP_RAND_CTX_get0_rand(EVP_RAND_CTX *ctx);
1258
+ int EVP_RAND_CTX_get_params(EVP_RAND_CTX *ctx, OSSL_PARAM params[]);
1259
+ int EVP_RAND_CTX_set_params(EVP_RAND_CTX *ctx, const OSSL_PARAM params[]);
1260
+ const OSSL_PARAM *EVP_RAND_gettable_params(const EVP_RAND *rand);
1261
+ const OSSL_PARAM *EVP_RAND_gettable_ctx_params(const EVP_RAND *rand);
1262
+ const OSSL_PARAM *EVP_RAND_settable_ctx_params(const EVP_RAND *rand);
1263
+ const OSSL_PARAM *EVP_RAND_CTX_gettable_params(EVP_RAND_CTX *ctx);
1264
+ const OSSL_PARAM *EVP_RAND_CTX_settable_params(EVP_RAND_CTX *ctx);
1265
+
1266
+ void EVP_RAND_do_all_provided(OSSL_LIB_CTX *libctx,
1267
+ void (*fn)(EVP_RAND *rand, void *arg),
1268
+ void *arg);
1269
+ int EVP_RAND_names_do_all(const EVP_RAND *rand,
1270
+ void (*fn)(const char *name, void *data),
1271
+ void *data);
1272
+
1273
+ __owur int EVP_RAND_instantiate(EVP_RAND_CTX *ctx, unsigned int strength,
1274
+ int prediction_resistance,
1275
+ const unsigned char *pstr, size_t pstr_len,
1276
+ const OSSL_PARAM params[]);
1277
+ int EVP_RAND_uninstantiate(EVP_RAND_CTX *ctx);
1278
+ __owur int EVP_RAND_generate(EVP_RAND_CTX *ctx, unsigned char *out,
1279
+ size_t outlen, unsigned int strength,
1280
+ int prediction_resistance,
1281
+ const unsigned char *addin, size_t addin_len);
1282
+ int EVP_RAND_reseed(EVP_RAND_CTX *ctx, int prediction_resistance,
1283
+ const unsigned char *ent, size_t ent_len,
1284
+ const unsigned char *addin, size_t addin_len);
1285
+ __owur int EVP_RAND_nonce(EVP_RAND_CTX *ctx, unsigned char *out, size_t outlen);
1286
+ __owur int EVP_RAND_enable_locking(EVP_RAND_CTX *ctx);
1287
+
1288
+ int EVP_RAND_verify_zeroization(EVP_RAND_CTX *ctx);
1289
+ unsigned int EVP_RAND_get_strength(EVP_RAND_CTX *ctx);
1290
+ int EVP_RAND_get_state(EVP_RAND_CTX *ctx);
1291
+
1292
+ # define EVP_RAND_STATE_UNINITIALISED 0
1293
+ # define EVP_RAND_STATE_READY 1
1294
+ # define EVP_RAND_STATE_ERROR 2
1295
+
1296
+ /* PKEY stuff */
1297
+ # ifndef OPENSSL_NO_DEPRECATED_3_0
1298
+ OSSL_DEPRECATEDIN_3_0 int EVP_PKEY_decrypt_old(unsigned char *dec_key,
1299
+ const unsigned char *enc_key,
1300
+ int enc_key_len,
1301
+ EVP_PKEY *private_key);
1302
+ OSSL_DEPRECATEDIN_3_0 int EVP_PKEY_encrypt_old(unsigned char *enc_key,
1303
+ const unsigned char *key,
1304
+ int key_len, EVP_PKEY *pub_key);
1305
+ # endif
1306
+ int EVP_PKEY_is_a(const EVP_PKEY *pkey, const char *name);
1307
+ int EVP_PKEY_type_names_do_all(const EVP_PKEY *pkey,
1308
+ void (*fn)(const char *name, void *data),
1309
+ void *data);
1310
+ int EVP_PKEY_type(int type);
1311
+ int EVP_PKEY_get_id(const EVP_PKEY *pkey);
1312
+ # define EVP_PKEY_id EVP_PKEY_get_id
1313
+ int EVP_PKEY_get_base_id(const EVP_PKEY *pkey);
1314
+ # define EVP_PKEY_base_id EVP_PKEY_get_base_id
1315
+ int EVP_PKEY_get_bits(const EVP_PKEY *pkey);
1316
+ # define EVP_PKEY_bits EVP_PKEY_get_bits
1317
+ int EVP_PKEY_get_security_bits(const EVP_PKEY *pkey);
1318
+ # define EVP_PKEY_security_bits EVP_PKEY_get_security_bits
1319
+ int EVP_PKEY_get_size(const EVP_PKEY *pkey);
1320
+ # define EVP_PKEY_size EVP_PKEY_get_size
1321
+ int EVP_PKEY_can_sign(const EVP_PKEY *pkey);
1322
+ int EVP_PKEY_set_type(EVP_PKEY *pkey, int type);
1323
+ int EVP_PKEY_set_type_str(EVP_PKEY *pkey, const char *str, int len);
1324
+ int EVP_PKEY_set_type_by_keymgmt(EVP_PKEY *pkey, EVP_KEYMGMT *keymgmt);
1325
+ # ifndef OPENSSL_NO_DEPRECATED_3_0
1326
+ # ifndef OPENSSL_NO_ENGINE
1327
+ OSSL_DEPRECATEDIN_3_0
1328
+ int EVP_PKEY_set1_engine(EVP_PKEY *pkey, ENGINE *e);
1329
+ OSSL_DEPRECATEDIN_3_0
1330
+ ENGINE *EVP_PKEY_get0_engine(const EVP_PKEY *pkey);
1331
+ # endif
1332
+ OSSL_DEPRECATEDIN_3_0
1333
+ int EVP_PKEY_assign(EVP_PKEY *pkey, int type, void *key);
1334
+ OSSL_DEPRECATEDIN_3_0
1335
+ void *EVP_PKEY_get0(const EVP_PKEY *pkey);
1336
+ OSSL_DEPRECATEDIN_3_0
1337
+ const unsigned char *EVP_PKEY_get0_hmac(const EVP_PKEY *pkey, size_t *len);
1338
+ # ifndef OPENSSL_NO_POLY1305
1339
+ OSSL_DEPRECATEDIN_3_0
1340
+ const unsigned char *EVP_PKEY_get0_poly1305(const EVP_PKEY *pkey, size_t *len);
1341
+ # endif
1342
+ # ifndef OPENSSL_NO_SIPHASH
1343
+ OSSL_DEPRECATEDIN_3_0
1344
+ const unsigned char *EVP_PKEY_get0_siphash(const EVP_PKEY *pkey, size_t *len);
1345
+ # endif
1346
+
1347
+ struct rsa_st;
1348
+ OSSL_DEPRECATEDIN_3_0
1349
+ int EVP_PKEY_set1_RSA(EVP_PKEY *pkey, struct rsa_st *key);
1350
+ OSSL_DEPRECATEDIN_3_0
1351
+ const struct rsa_st *EVP_PKEY_get0_RSA(const EVP_PKEY *pkey);
1352
+ OSSL_DEPRECATEDIN_3_0
1353
+ struct rsa_st *EVP_PKEY_get1_RSA(EVP_PKEY *pkey);
1354
+
1355
+ # ifndef OPENSSL_NO_DSA
1356
+ struct dsa_st;
1357
+ OSSL_DEPRECATEDIN_3_0
1358
+ int EVP_PKEY_set1_DSA(EVP_PKEY *pkey, struct dsa_st *key);
1359
+ OSSL_DEPRECATEDIN_3_0
1360
+ const struct dsa_st *EVP_PKEY_get0_DSA(const EVP_PKEY *pkey);
1361
+ OSSL_DEPRECATEDIN_3_0
1362
+ struct dsa_st *EVP_PKEY_get1_DSA(EVP_PKEY *pkey);
1363
+ # endif
1364
+
1365
+ # ifndef OPENSSL_NO_DH
1366
+ struct dh_st;
1367
+ OSSL_DEPRECATEDIN_3_0 int EVP_PKEY_set1_DH(EVP_PKEY *pkey, struct dh_st *key);
1368
+ OSSL_DEPRECATEDIN_3_0 const struct dh_st *EVP_PKEY_get0_DH(const EVP_PKEY *pkey);
1369
+ OSSL_DEPRECATEDIN_3_0 struct dh_st *EVP_PKEY_get1_DH(EVP_PKEY *pkey);
1370
+ # endif
1371
+
1372
+ # ifndef OPENSSL_NO_EC
1373
+ struct ec_key_st;
1374
+ OSSL_DEPRECATEDIN_3_0
1375
+ int EVP_PKEY_set1_EC_KEY(EVP_PKEY *pkey, struct ec_key_st *key);
1376
+ OSSL_DEPRECATEDIN_3_0
1377
+ const struct ec_key_st *EVP_PKEY_get0_EC_KEY(const EVP_PKEY *pkey);
1378
+ OSSL_DEPRECATEDIN_3_0
1379
+ struct ec_key_st *EVP_PKEY_get1_EC_KEY(EVP_PKEY *pkey);
1380
+ # endif
1381
+ # endif /* OPENSSL_NO_DEPRECATED_3_0 */
1382
+
1383
+ EVP_PKEY *EVP_PKEY_new(void);
1384
+ int EVP_PKEY_up_ref(EVP_PKEY *pkey);
1385
+ EVP_PKEY *EVP_PKEY_dup(EVP_PKEY *pkey);
1386
+ void EVP_PKEY_free(EVP_PKEY *pkey);
1387
+ const char *EVP_PKEY_get0_description(const EVP_PKEY *pkey);
1388
+ const OSSL_PROVIDER *EVP_PKEY_get0_provider(const EVP_PKEY *key);
1389
+
1390
+ EVP_PKEY *d2i_PublicKey(int type, EVP_PKEY **a, const unsigned char **pp,
1391
+ long length);
1392
+ int i2d_PublicKey(const EVP_PKEY *a, unsigned char **pp);
1393
+
1394
+
1395
+ EVP_PKEY *d2i_PrivateKey_ex(int type, EVP_PKEY **a, const unsigned char **pp,
1396
+ long length, OSSL_LIB_CTX *libctx,
1397
+ const char *propq);
1398
+ EVP_PKEY *d2i_PrivateKey(int type, EVP_PKEY **a, const unsigned char **pp,
1399
+ long length);
1400
+ EVP_PKEY *d2i_AutoPrivateKey_ex(EVP_PKEY **a, const unsigned char **pp,
1401
+ long length, OSSL_LIB_CTX *libctx,
1402
+ const char *propq);
1403
+ EVP_PKEY *d2i_AutoPrivateKey(EVP_PKEY **a, const unsigned char **pp,
1404
+ long length);
1405
+ int i2d_PrivateKey(const EVP_PKEY *a, unsigned char **pp);
1406
+
1407
+ int i2d_KeyParams(const EVP_PKEY *a, unsigned char **pp);
1408
+ EVP_PKEY *d2i_KeyParams(int type, EVP_PKEY **a, const unsigned char **pp,
1409
+ long length);
1410
+ int i2d_KeyParams_bio(BIO *bp, const EVP_PKEY *pkey);
1411
+ EVP_PKEY *d2i_KeyParams_bio(int type, EVP_PKEY **a, BIO *in);
1412
+
1413
+ int EVP_PKEY_copy_parameters(EVP_PKEY *to, const EVP_PKEY *from);
1414
+ int EVP_PKEY_missing_parameters(const EVP_PKEY *pkey);
1415
+ int EVP_PKEY_save_parameters(EVP_PKEY *pkey, int mode);
1416
+ int EVP_PKEY_parameters_eq(const EVP_PKEY *a, const EVP_PKEY *b);
1417
+ int EVP_PKEY_eq(const EVP_PKEY *a, const EVP_PKEY *b);
1418
+
1419
+ # ifndef OPENSSL_NO_DEPRECATED_3_0
1420
+ OSSL_DEPRECATEDIN_3_0
1421
+ int EVP_PKEY_cmp_parameters(const EVP_PKEY *a, const EVP_PKEY *b);
1422
+ OSSL_DEPRECATEDIN_3_0
1423
+ int EVP_PKEY_cmp(const EVP_PKEY *a, const EVP_PKEY *b);
1424
+ # endif
1425
+
1426
+ int EVP_PKEY_print_public(BIO *out, const EVP_PKEY *pkey,
1427
+ int indent, ASN1_PCTX *pctx);
1428
+ int EVP_PKEY_print_private(BIO *out, const EVP_PKEY *pkey,
1429
+ int indent, ASN1_PCTX *pctx);
1430
+ int EVP_PKEY_print_params(BIO *out, const EVP_PKEY *pkey,
1431
+ int indent, ASN1_PCTX *pctx);
1432
+ # ifndef OPENSSL_NO_STDIO
1433
+ int EVP_PKEY_print_public_fp(FILE *fp, const EVP_PKEY *pkey,
1434
+ int indent, ASN1_PCTX *pctx);
1435
+ int EVP_PKEY_print_private_fp(FILE *fp, const EVP_PKEY *pkey,
1436
+ int indent, ASN1_PCTX *pctx);
1437
+ int EVP_PKEY_print_params_fp(FILE *fp, const EVP_PKEY *pkey,
1438
+ int indent, ASN1_PCTX *pctx);
1439
+ # endif
1440
+
1441
+ int EVP_PKEY_get_default_digest_nid(EVP_PKEY *pkey, int *pnid);
1442
+ int EVP_PKEY_get_default_digest_name(EVP_PKEY *pkey,
1443
+ char *mdname, size_t mdname_sz);
1444
+ int EVP_PKEY_digestsign_supports_digest(EVP_PKEY *pkey, OSSL_LIB_CTX *libctx,
1445
+ const char *name, const char *propq);
1446
+
1447
+ # ifndef OPENSSL_NO_DEPRECATED_3_0
1448
+ /*
1449
+ * For backwards compatibility. Use EVP_PKEY_set1_encoded_public_key in
1450
+ * preference
1451
+ */
1452
+ # define EVP_PKEY_set1_tls_encodedpoint(pkey, pt, ptlen) \
1453
+ EVP_PKEY_set1_encoded_public_key((pkey), (pt), (ptlen))
1454
+ # endif
1455
+
1456
+ int EVP_PKEY_set1_encoded_public_key(EVP_PKEY *pkey,
1457
+ const unsigned char *pub, size_t publen);
1458
+
1459
+ # ifndef OPENSSL_NO_DEPRECATED_3_0
1460
+ /*
1461
+ * For backwards compatibility. Use EVP_PKEY_get1_encoded_public_key in
1462
+ * preference
1463
+ */
1464
+ # define EVP_PKEY_get1_tls_encodedpoint(pkey, ppt) \
1465
+ EVP_PKEY_get1_encoded_public_key((pkey), (ppt))
1466
+ # endif
1467
+
1468
+ size_t EVP_PKEY_get1_encoded_public_key(EVP_PKEY *pkey, unsigned char **ppub);
1469
+
1470
+ /* calls methods */
1471
+ int EVP_CIPHER_param_to_asn1(EVP_CIPHER_CTX *c, ASN1_TYPE *type);
1472
+ int EVP_CIPHER_asn1_to_param(EVP_CIPHER_CTX *c, ASN1_TYPE *type);
1473
+
1474
+ /* These are used by EVP_CIPHER methods */
1475
+ int EVP_CIPHER_set_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type);
1476
+ int EVP_CIPHER_get_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type);
1477
+
1478
+ /* PKCS5 password based encryption */
1479
+ int PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen,
1480
+ ASN1_TYPE *param, const EVP_CIPHER *cipher,
1481
+ const EVP_MD *md, int en_de);
1482
+ int PKCS5_PBE_keyivgen_ex(EVP_CIPHER_CTX *cctx, const char *pass, int passlen,
1483
+ ASN1_TYPE *param, const EVP_CIPHER *cipher,
1484
+ const EVP_MD *md, int en_de, OSSL_LIB_CTX *libctx,
1485
+ const char *propq);
1486
+ int PKCS5_PBKDF2_HMAC_SHA1(const char *pass, int passlen,
1487
+ const unsigned char *salt, int saltlen, int iter,
1488
+ int keylen, unsigned char *out);
1489
+ int PKCS5_PBKDF2_HMAC(const char *pass, int passlen,
1490
+ const unsigned char *salt, int saltlen, int iter,
1491
+ const EVP_MD *digest, int keylen, unsigned char *out);
1492
+ int PKCS5_v2_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen,
1493
+ ASN1_TYPE *param, const EVP_CIPHER *cipher,
1494
+ const EVP_MD *md, int en_de);
1495
+ int PKCS5_v2_PBE_keyivgen_ex(EVP_CIPHER_CTX *ctx, const char *pass, int passlen,
1496
+ ASN1_TYPE *param, const EVP_CIPHER *cipher,
1497
+ const EVP_MD *md, int en_de,
1498
+ OSSL_LIB_CTX *libctx, const char *propq);
1499
+
1500
+ #ifndef OPENSSL_NO_SCRYPT
1501
+ int EVP_PBE_scrypt(const char *pass, size_t passlen,
1502
+ const unsigned char *salt, size_t saltlen,
1503
+ uint64_t N, uint64_t r, uint64_t p, uint64_t maxmem,
1504
+ unsigned char *key, size_t keylen);
1505
+ int EVP_PBE_scrypt_ex(const char *pass, size_t passlen,
1506
+ const unsigned char *salt, size_t saltlen,
1507
+ uint64_t N, uint64_t r, uint64_t p, uint64_t maxmem,
1508
+ unsigned char *key, size_t keylen,
1509
+ OSSL_LIB_CTX *ctx, const char *propq);
1510
+
1511
+ int PKCS5_v2_scrypt_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass,
1512
+ int passlen, ASN1_TYPE *param,
1513
+ const EVP_CIPHER *c, const EVP_MD *md, int en_de);
1514
+ int PKCS5_v2_scrypt_keyivgen_ex(EVP_CIPHER_CTX *ctx, const char *pass,
1515
+ int passlen, ASN1_TYPE *param,
1516
+ const EVP_CIPHER *c, const EVP_MD *md, int en_de,
1517
+ OSSL_LIB_CTX *libctx, const char *propq);
1518
+ #endif
1519
+
1520
+ void PKCS5_PBE_add(void);
1521
+
1522
+ int EVP_PBE_CipherInit(ASN1_OBJECT *pbe_obj, const char *pass, int passlen,
1523
+ ASN1_TYPE *param, EVP_CIPHER_CTX *ctx, int en_de);
1524
+
1525
+ int EVP_PBE_CipherInit_ex(ASN1_OBJECT *pbe_obj, const char *pass, int passlen,
1526
+ ASN1_TYPE *param, EVP_CIPHER_CTX *ctx, int en_de,
1527
+ OSSL_LIB_CTX *libctx, const char *propq);
1528
+
1529
+ /* PBE type */
1530
+
1531
+ /* Can appear as the outermost AlgorithmIdentifier */
1532
+ # define EVP_PBE_TYPE_OUTER 0x0
1533
+ /* Is an PRF type OID */
1534
+ # define EVP_PBE_TYPE_PRF 0x1
1535
+ /* Is a PKCS#5 v2.0 KDF */
1536
+ # define EVP_PBE_TYPE_KDF 0x2
1537
+
1538
+ int EVP_PBE_alg_add_type(int pbe_type, int pbe_nid, int cipher_nid,
1539
+ int md_nid, EVP_PBE_KEYGEN *keygen);
1540
+ int EVP_PBE_alg_add(int nid, const EVP_CIPHER *cipher, const EVP_MD *md,
1541
+ EVP_PBE_KEYGEN *keygen);
1542
+ int EVP_PBE_find(int type, int pbe_nid, int *pcnid, int *pmnid,
1543
+ EVP_PBE_KEYGEN **pkeygen);
1544
+ int EVP_PBE_find_ex(int type, int pbe_nid, int *pcnid, int *pmnid,
1545
+ EVP_PBE_KEYGEN **pkeygen, EVP_PBE_KEYGEN_EX **pkeygen_ex);
1546
+ void EVP_PBE_cleanup(void);
1547
+ int EVP_PBE_get(int *ptype, int *ppbe_nid, size_t num);
1548
+
1549
+ # define ASN1_PKEY_ALIAS 0x1
1550
+ # define ASN1_PKEY_DYNAMIC 0x2
1551
+ # define ASN1_PKEY_SIGPARAM_NULL 0x4
1552
+
1553
+ # define ASN1_PKEY_CTRL_PKCS7_SIGN 0x1
1554
+ # define ASN1_PKEY_CTRL_PKCS7_ENCRYPT 0x2
1555
+ # define ASN1_PKEY_CTRL_DEFAULT_MD_NID 0x3
1556
+ # define ASN1_PKEY_CTRL_CMS_SIGN 0x5
1557
+ # define ASN1_PKEY_CTRL_CMS_ENVELOPE 0x7
1558
+ # define ASN1_PKEY_CTRL_CMS_RI_TYPE 0x8
1559
+
1560
+ # define ASN1_PKEY_CTRL_SET1_TLS_ENCPT 0x9
1561
+ # define ASN1_PKEY_CTRL_GET1_TLS_ENCPT 0xa
1562
+ # define ASN1_PKEY_CTRL_CMS_IS_RI_TYPE_SUPPORTED 0xb
1563
+
1564
+ int EVP_PKEY_asn1_get_count(void);
1565
+ const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_get0(int idx);
1566
+ const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find(ENGINE **pe, int type);
1567
+ const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find_str(ENGINE **pe,
1568
+ const char *str, int len);
1569
+ int EVP_PKEY_asn1_add0(const EVP_PKEY_ASN1_METHOD *ameth);
1570
+ int EVP_PKEY_asn1_add_alias(int to, int from);
1571
+ int EVP_PKEY_asn1_get0_info(int *ppkey_id, int *pkey_base_id,
1572
+ int *ppkey_flags, const char **pinfo,
1573
+ const char **ppem_str,
1574
+ const EVP_PKEY_ASN1_METHOD *ameth);
1575
+
1576
+ const EVP_PKEY_ASN1_METHOD *EVP_PKEY_get0_asn1(const EVP_PKEY *pkey);
1577
+ EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_new(int id, int flags,
1578
+ const char *pem_str,
1579
+ const char *info);
1580
+ void EVP_PKEY_asn1_copy(EVP_PKEY_ASN1_METHOD *dst,
1581
+ const EVP_PKEY_ASN1_METHOD *src);
1582
+ void EVP_PKEY_asn1_free(EVP_PKEY_ASN1_METHOD *ameth);
1583
+ void EVP_PKEY_asn1_set_public(EVP_PKEY_ASN1_METHOD *ameth,
1584
+ int (*pub_decode) (EVP_PKEY *pk,
1585
+ const X509_PUBKEY *pub),
1586
+ int (*pub_encode) (X509_PUBKEY *pub,
1587
+ const EVP_PKEY *pk),
1588
+ int (*pub_cmp) (const EVP_PKEY *a,
1589
+ const EVP_PKEY *b),
1590
+ int (*pub_print) (BIO *out,
1591
+ const EVP_PKEY *pkey,
1592
+ int indent, ASN1_PCTX *pctx),
1593
+ int (*pkey_size) (const EVP_PKEY *pk),
1594
+ int (*pkey_bits) (const EVP_PKEY *pk));
1595
+ void EVP_PKEY_asn1_set_private(EVP_PKEY_ASN1_METHOD *ameth,
1596
+ int (*priv_decode) (EVP_PKEY *pk,
1597
+ const PKCS8_PRIV_KEY_INFO
1598
+ *p8inf),
1599
+ int (*priv_encode) (PKCS8_PRIV_KEY_INFO *p8,
1600
+ const EVP_PKEY *pk),
1601
+ int (*priv_print) (BIO *out,
1602
+ const EVP_PKEY *pkey,
1603
+ int indent,
1604
+ ASN1_PCTX *pctx));
1605
+ void EVP_PKEY_asn1_set_param(EVP_PKEY_ASN1_METHOD *ameth,
1606
+ int (*param_decode) (EVP_PKEY *pkey,
1607
+ const unsigned char **pder,
1608
+ int derlen),
1609
+ int (*param_encode) (const EVP_PKEY *pkey,
1610
+ unsigned char **pder),
1611
+ int (*param_missing) (const EVP_PKEY *pk),
1612
+ int (*param_copy) (EVP_PKEY *to,
1613
+ const EVP_PKEY *from),
1614
+ int (*param_cmp) (const EVP_PKEY *a,
1615
+ const EVP_PKEY *b),
1616
+ int (*param_print) (BIO *out,
1617
+ const EVP_PKEY *pkey,
1618
+ int indent,
1619
+ ASN1_PCTX *pctx));
1620
+
1621
+ void EVP_PKEY_asn1_set_free(EVP_PKEY_ASN1_METHOD *ameth,
1622
+ void (*pkey_free) (EVP_PKEY *pkey));
1623
+ void EVP_PKEY_asn1_set_ctrl(EVP_PKEY_ASN1_METHOD *ameth,
1624
+ int (*pkey_ctrl) (EVP_PKEY *pkey, int op,
1625
+ long arg1, void *arg2));
1626
+ void EVP_PKEY_asn1_set_item(EVP_PKEY_ASN1_METHOD *ameth,
1627
+ int (*item_verify) (EVP_MD_CTX *ctx,
1628
+ const ASN1_ITEM *it,
1629
+ const void *data,
1630
+ const X509_ALGOR *a,
1631
+ const ASN1_BIT_STRING *sig,
1632
+ EVP_PKEY *pkey),
1633
+ int (*item_sign) (EVP_MD_CTX *ctx,
1634
+ const ASN1_ITEM *it,
1635
+ const void *data,
1636
+ X509_ALGOR *alg1,
1637
+ X509_ALGOR *alg2,
1638
+ ASN1_BIT_STRING *sig));
1639
+
1640
+ void EVP_PKEY_asn1_set_siginf(EVP_PKEY_ASN1_METHOD *ameth,
1641
+ int (*siginf_set) (X509_SIG_INFO *siginf,
1642
+ const X509_ALGOR *alg,
1643
+ const ASN1_STRING *sig));
1644
+
1645
+ void EVP_PKEY_asn1_set_check(EVP_PKEY_ASN1_METHOD *ameth,
1646
+ int (*pkey_check) (const EVP_PKEY *pk));
1647
+
1648
+ void EVP_PKEY_asn1_set_public_check(EVP_PKEY_ASN1_METHOD *ameth,
1649
+ int (*pkey_pub_check) (const EVP_PKEY *pk));
1650
+
1651
+ void EVP_PKEY_asn1_set_param_check(EVP_PKEY_ASN1_METHOD *ameth,
1652
+ int (*pkey_param_check) (const EVP_PKEY *pk));
1653
+
1654
+ void EVP_PKEY_asn1_set_set_priv_key(EVP_PKEY_ASN1_METHOD *ameth,
1655
+ int (*set_priv_key) (EVP_PKEY *pk,
1656
+ const unsigned char
1657
+ *priv,
1658
+ size_t len));
1659
+ void EVP_PKEY_asn1_set_set_pub_key(EVP_PKEY_ASN1_METHOD *ameth,
1660
+ int (*set_pub_key) (EVP_PKEY *pk,
1661
+ const unsigned char *pub,
1662
+ size_t len));
1663
+ void EVP_PKEY_asn1_set_get_priv_key(EVP_PKEY_ASN1_METHOD *ameth,
1664
+ int (*get_priv_key) (const EVP_PKEY *pk,
1665
+ unsigned char *priv,
1666
+ size_t *len));
1667
+ void EVP_PKEY_asn1_set_get_pub_key(EVP_PKEY_ASN1_METHOD *ameth,
1668
+ int (*get_pub_key) (const EVP_PKEY *pk,
1669
+ unsigned char *pub,
1670
+ size_t *len));
1671
+
1672
+ void EVP_PKEY_asn1_set_security_bits(EVP_PKEY_ASN1_METHOD *ameth,
1673
+ int (*pkey_security_bits) (const EVP_PKEY
1674
+ *pk));
1675
+
1676
+ int EVP_PKEY_CTX_get_signature_md(EVP_PKEY_CTX *ctx, const EVP_MD **md);
1677
+ int EVP_PKEY_CTX_set_signature_md(EVP_PKEY_CTX *ctx, const EVP_MD *md);
1678
+
1679
+ int EVP_PKEY_CTX_set1_id(EVP_PKEY_CTX *ctx, const void *id, int len);
1680
+ int EVP_PKEY_CTX_get1_id(EVP_PKEY_CTX *ctx, void *id);
1681
+ int EVP_PKEY_CTX_get1_id_len(EVP_PKEY_CTX *ctx, size_t *id_len);
1682
+
1683
+ int EVP_PKEY_CTX_set_kem_op(EVP_PKEY_CTX *ctx, const char *op);
1684
+
1685
+ const char *EVP_PKEY_get0_type_name(const EVP_PKEY *key);
1686
+
1687
+ # define EVP_PKEY_OP_UNDEFINED 0
1688
+ # define EVP_PKEY_OP_PARAMGEN (1<<1)
1689
+ # define EVP_PKEY_OP_KEYGEN (1<<2)
1690
+ # define EVP_PKEY_OP_FROMDATA (1<<3)
1691
+ # define EVP_PKEY_OP_SIGN (1<<4)
1692
+ # define EVP_PKEY_OP_VERIFY (1<<5)
1693
+ # define EVP_PKEY_OP_VERIFYRECOVER (1<<6)
1694
+ # define EVP_PKEY_OP_SIGNCTX (1<<7)
1695
+ # define EVP_PKEY_OP_VERIFYCTX (1<<8)
1696
+ # define EVP_PKEY_OP_ENCRYPT (1<<9)
1697
+ # define EVP_PKEY_OP_DECRYPT (1<<10)
1698
+ # define EVP_PKEY_OP_DERIVE (1<<11)
1699
+ # define EVP_PKEY_OP_ENCAPSULATE (1<<12)
1700
+ # define EVP_PKEY_OP_DECAPSULATE (1<<13)
1701
+
1702
+ # define EVP_PKEY_OP_TYPE_SIG \
1703
+ (EVP_PKEY_OP_SIGN | EVP_PKEY_OP_VERIFY | EVP_PKEY_OP_VERIFYRECOVER \
1704
+ | EVP_PKEY_OP_SIGNCTX | EVP_PKEY_OP_VERIFYCTX)
1705
+
1706
+ # define EVP_PKEY_OP_TYPE_CRYPT \
1707
+ (EVP_PKEY_OP_ENCRYPT | EVP_PKEY_OP_DECRYPT)
1708
+
1709
+ # define EVP_PKEY_OP_TYPE_NOGEN \
1710
+ (EVP_PKEY_OP_TYPE_SIG | EVP_PKEY_OP_TYPE_CRYPT | EVP_PKEY_OP_DERIVE)
1711
+
1712
+ # define EVP_PKEY_OP_TYPE_GEN \
1713
+ (EVP_PKEY_OP_PARAMGEN | EVP_PKEY_OP_KEYGEN)
1714
+
1715
+
1716
+ int EVP_PKEY_CTX_set_mac_key(EVP_PKEY_CTX *ctx, const unsigned char *key,
1717
+ int keylen);
1718
+
1719
+ # define EVP_PKEY_CTRL_MD 1
1720
+ # define EVP_PKEY_CTRL_PEER_KEY 2
1721
+ # define EVP_PKEY_CTRL_SET_MAC_KEY 6
1722
+ # define EVP_PKEY_CTRL_DIGESTINIT 7
1723
+ /* Used by GOST key encryption in TLS */
1724
+ # define EVP_PKEY_CTRL_SET_IV 8
1725
+ # ifndef OPENSSL_NO_DEPRECATED_3_0
1726
+ # define EVP_PKEY_CTRL_PKCS7_ENCRYPT 3
1727
+ # define EVP_PKEY_CTRL_PKCS7_DECRYPT 4
1728
+ # define EVP_PKEY_CTRL_PKCS7_SIGN 5
1729
+ # define EVP_PKEY_CTRL_CMS_ENCRYPT 9
1730
+ # define EVP_PKEY_CTRL_CMS_DECRYPT 10
1731
+ # define EVP_PKEY_CTRL_CMS_SIGN 11
1732
+ # endif
1733
+ # define EVP_PKEY_CTRL_CIPHER 12
1734
+ # define EVP_PKEY_CTRL_GET_MD 13
1735
+ # define EVP_PKEY_CTRL_SET_DIGEST_SIZE 14
1736
+ # define EVP_PKEY_CTRL_SET1_ID 15
1737
+ # define EVP_PKEY_CTRL_GET1_ID 16
1738
+ # define EVP_PKEY_CTRL_GET1_ID_LEN 17
1739
+
1740
+ # define EVP_PKEY_ALG_CTRL 0x1000
1741
+
1742
+ # define EVP_PKEY_FLAG_AUTOARGLEN 2
1743
+ /*
1744
+ * Method handles all operations: don't assume any digest related defaults.
1745
+ */
1746
+ # define EVP_PKEY_FLAG_SIGCTX_CUSTOM 4
1747
+ # ifndef OPENSSL_NO_DEPRECATED_3_0
1748
+ OSSL_DEPRECATEDIN_3_0 const EVP_PKEY_METHOD *EVP_PKEY_meth_find(int type);
1749
+ OSSL_DEPRECATEDIN_3_0 EVP_PKEY_METHOD *EVP_PKEY_meth_new(int id, int flags);
1750
+ OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get0_info(int *ppkey_id, int *pflags,
1751
+ const EVP_PKEY_METHOD *meth);
1752
+ OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_copy(EVP_PKEY_METHOD *dst,
1753
+ const EVP_PKEY_METHOD *src);
1754
+ OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_free(EVP_PKEY_METHOD *pmeth);
1755
+ OSSL_DEPRECATEDIN_3_0 int EVP_PKEY_meth_add0(const EVP_PKEY_METHOD *pmeth);
1756
+ OSSL_DEPRECATEDIN_3_0 int EVP_PKEY_meth_remove(const EVP_PKEY_METHOD *pmeth);
1757
+ OSSL_DEPRECATEDIN_3_0 size_t EVP_PKEY_meth_get_count(void);
1758
+ OSSL_DEPRECATEDIN_3_0 const EVP_PKEY_METHOD *EVP_PKEY_meth_get0(size_t idx);
1759
+ # endif
1760
+
1761
+ EVP_KEYMGMT *EVP_KEYMGMT_fetch(OSSL_LIB_CTX *ctx, const char *algorithm,
1762
+ const char *properties);
1763
+ int EVP_KEYMGMT_up_ref(EVP_KEYMGMT *keymgmt);
1764
+ void EVP_KEYMGMT_free(EVP_KEYMGMT *keymgmt);
1765
+ const OSSL_PROVIDER *EVP_KEYMGMT_get0_provider(const EVP_KEYMGMT *keymgmt);
1766
+ const char *EVP_KEYMGMT_get0_name(const EVP_KEYMGMT *keymgmt);
1767
+ const char *EVP_KEYMGMT_get0_description(const EVP_KEYMGMT *keymgmt);
1768
+ int EVP_KEYMGMT_is_a(const EVP_KEYMGMT *keymgmt, const char *name);
1769
+ void EVP_KEYMGMT_do_all_provided(OSSL_LIB_CTX *libctx,
1770
+ void (*fn)(EVP_KEYMGMT *keymgmt, void *arg),
1771
+ void *arg);
1772
+ int EVP_KEYMGMT_names_do_all(const EVP_KEYMGMT *keymgmt,
1773
+ void (*fn)(const char *name, void *data),
1774
+ void *data);
1775
+ const OSSL_PARAM *EVP_KEYMGMT_gettable_params(const EVP_KEYMGMT *keymgmt);
1776
+ const OSSL_PARAM *EVP_KEYMGMT_settable_params(const EVP_KEYMGMT *keymgmt);
1777
+ const OSSL_PARAM *EVP_KEYMGMT_gen_settable_params(const EVP_KEYMGMT *keymgmt);
1778
+
1779
+ EVP_PKEY_CTX *EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *e);
1780
+ EVP_PKEY_CTX *EVP_PKEY_CTX_new_id(int id, ENGINE *e);
1781
+ EVP_PKEY_CTX *EVP_PKEY_CTX_new_from_name(OSSL_LIB_CTX *libctx,
1782
+ const char *name,
1783
+ const char *propquery);
1784
+ EVP_PKEY_CTX *EVP_PKEY_CTX_new_from_pkey(OSSL_LIB_CTX *libctx,
1785
+ EVP_PKEY *pkey, const char *propquery);
1786
+ EVP_PKEY_CTX *EVP_PKEY_CTX_dup(const EVP_PKEY_CTX *ctx);
1787
+ void EVP_PKEY_CTX_free(EVP_PKEY_CTX *ctx);
1788
+ int EVP_PKEY_CTX_is_a(EVP_PKEY_CTX *ctx, const char *keytype);
1789
+
1790
+ int EVP_PKEY_CTX_get_params(EVP_PKEY_CTX *ctx, OSSL_PARAM *params);
1791
+ const OSSL_PARAM *EVP_PKEY_CTX_gettable_params(const EVP_PKEY_CTX *ctx);
1792
+ int EVP_PKEY_CTX_set_params(EVP_PKEY_CTX *ctx, const OSSL_PARAM *params);
1793
+ const OSSL_PARAM *EVP_PKEY_CTX_settable_params(const EVP_PKEY_CTX *ctx);
1794
+ int EVP_PKEY_CTX_ctrl(EVP_PKEY_CTX *ctx, int keytype, int optype,
1795
+ int cmd, int p1, void *p2);
1796
+ int EVP_PKEY_CTX_ctrl_str(EVP_PKEY_CTX *ctx, const char *type,
1797
+ const char *value);
1798
+ int EVP_PKEY_CTX_ctrl_uint64(EVP_PKEY_CTX *ctx, int keytype, int optype,
1799
+ int cmd, uint64_t value);
1800
+
1801
+ int EVP_PKEY_CTX_str2ctrl(EVP_PKEY_CTX *ctx, int cmd, const char *str);
1802
+ int EVP_PKEY_CTX_hex2ctrl(EVP_PKEY_CTX *ctx, int cmd, const char *hex);
1803
+
1804
+ int EVP_PKEY_CTX_md(EVP_PKEY_CTX *ctx, int optype, int cmd, const char *md);
1805
+
1806
+ int EVP_PKEY_CTX_get_operation(EVP_PKEY_CTX *ctx);
1807
+ void EVP_PKEY_CTX_set0_keygen_info(EVP_PKEY_CTX *ctx, int *dat, int datlen);
1808
+
1809
+ EVP_PKEY *EVP_PKEY_new_mac_key(int type, ENGINE *e,
1810
+ const unsigned char *key, int keylen);
1811
+ EVP_PKEY *EVP_PKEY_new_raw_private_key_ex(OSSL_LIB_CTX *libctx,
1812
+ const char *keytype,
1813
+ const char *propq,
1814
+ const unsigned char *priv, size_t len);
1815
+ EVP_PKEY *EVP_PKEY_new_raw_private_key(int type, ENGINE *e,
1816
+ const unsigned char *priv,
1817
+ size_t len);
1818
+ EVP_PKEY *EVP_PKEY_new_raw_public_key_ex(OSSL_LIB_CTX *libctx,
1819
+ const char *keytype, const char *propq,
1820
+ const unsigned char *pub, size_t len);
1821
+ EVP_PKEY *EVP_PKEY_new_raw_public_key(int type, ENGINE *e,
1822
+ const unsigned char *pub,
1823
+ size_t len);
1824
+ int EVP_PKEY_get_raw_private_key(const EVP_PKEY *pkey, unsigned char *priv,
1825
+ size_t *len);
1826
+ int EVP_PKEY_get_raw_public_key(const EVP_PKEY *pkey, unsigned char *pub,
1827
+ size_t *len);
1828
+
1829
+ # ifndef OPENSSL_NO_DEPRECATED_3_0
1830
+ OSSL_DEPRECATEDIN_3_0
1831
+ EVP_PKEY *EVP_PKEY_new_CMAC_key(ENGINE *e, const unsigned char *priv,
1832
+ size_t len, const EVP_CIPHER *cipher);
1833
+ # endif
1834
+
1835
+ void EVP_PKEY_CTX_set_data(EVP_PKEY_CTX *ctx, void *data);
1836
+ void *EVP_PKEY_CTX_get_data(const EVP_PKEY_CTX *ctx);
1837
+ EVP_PKEY *EVP_PKEY_CTX_get0_pkey(EVP_PKEY_CTX *ctx);
1838
+
1839
+ EVP_PKEY *EVP_PKEY_CTX_get0_peerkey(EVP_PKEY_CTX *ctx);
1840
+
1841
+ void EVP_PKEY_CTX_set_app_data(EVP_PKEY_CTX *ctx, void *data);
1842
+ void *EVP_PKEY_CTX_get_app_data(EVP_PKEY_CTX *ctx);
1843
+
1844
+ void EVP_SIGNATURE_free(EVP_SIGNATURE *signature);
1845
+ int EVP_SIGNATURE_up_ref(EVP_SIGNATURE *signature);
1846
+ OSSL_PROVIDER *EVP_SIGNATURE_get0_provider(const EVP_SIGNATURE *signature);
1847
+ EVP_SIGNATURE *EVP_SIGNATURE_fetch(OSSL_LIB_CTX *ctx, const char *algorithm,
1848
+ const char *properties);
1849
+ int EVP_SIGNATURE_is_a(const EVP_SIGNATURE *signature, const char *name);
1850
+ const char *EVP_SIGNATURE_get0_name(const EVP_SIGNATURE *signature);
1851
+ const char *EVP_SIGNATURE_get0_description(const EVP_SIGNATURE *signature);
1852
+ void EVP_SIGNATURE_do_all_provided(OSSL_LIB_CTX *libctx,
1853
+ void (*fn)(EVP_SIGNATURE *signature,
1854
+ void *data),
1855
+ void *data);
1856
+ int EVP_SIGNATURE_names_do_all(const EVP_SIGNATURE *signature,
1857
+ void (*fn)(const char *name, void *data),
1858
+ void *data);
1859
+ const OSSL_PARAM *EVP_SIGNATURE_gettable_ctx_params(const EVP_SIGNATURE *sig);
1860
+ const OSSL_PARAM *EVP_SIGNATURE_settable_ctx_params(const EVP_SIGNATURE *sig);
1861
+
1862
+ void EVP_ASYM_CIPHER_free(EVP_ASYM_CIPHER *cipher);
1863
+ int EVP_ASYM_CIPHER_up_ref(EVP_ASYM_CIPHER *cipher);
1864
+ OSSL_PROVIDER *EVP_ASYM_CIPHER_get0_provider(const EVP_ASYM_CIPHER *cipher);
1865
+ EVP_ASYM_CIPHER *EVP_ASYM_CIPHER_fetch(OSSL_LIB_CTX *ctx, const char *algorithm,
1866
+ const char *properties);
1867
+ int EVP_ASYM_CIPHER_is_a(const EVP_ASYM_CIPHER *cipher, const char *name);
1868
+ const char *EVP_ASYM_CIPHER_get0_name(const EVP_ASYM_CIPHER *cipher);
1869
+ const char *EVP_ASYM_CIPHER_get0_description(const EVP_ASYM_CIPHER *cipher);
1870
+ void EVP_ASYM_CIPHER_do_all_provided(OSSL_LIB_CTX *libctx,
1871
+ void (*fn)(EVP_ASYM_CIPHER *cipher,
1872
+ void *arg),
1873
+ void *arg);
1874
+ int EVP_ASYM_CIPHER_names_do_all(const EVP_ASYM_CIPHER *cipher,
1875
+ void (*fn)(const char *name, void *data),
1876
+ void *data);
1877
+ const OSSL_PARAM *EVP_ASYM_CIPHER_gettable_ctx_params(const EVP_ASYM_CIPHER *ciph);
1878
+ const OSSL_PARAM *EVP_ASYM_CIPHER_settable_ctx_params(const EVP_ASYM_CIPHER *ciph);
1879
+
1880
+ void EVP_KEM_free(EVP_KEM *wrap);
1881
+ int EVP_KEM_up_ref(EVP_KEM *wrap);
1882
+ OSSL_PROVIDER *EVP_KEM_get0_provider(const EVP_KEM *wrap);
1883
+ EVP_KEM *EVP_KEM_fetch(OSSL_LIB_CTX *ctx, const char *algorithm,
1884
+ const char *properties);
1885
+ int EVP_KEM_is_a(const EVP_KEM *wrap, const char *name);
1886
+ const char *EVP_KEM_get0_name(const EVP_KEM *wrap);
1887
+ const char *EVP_KEM_get0_description(const EVP_KEM *wrap);
1888
+ void EVP_KEM_do_all_provided(OSSL_LIB_CTX *libctx,
1889
+ void (*fn)(EVP_KEM *wrap, void *arg), void *arg);
1890
+ int EVP_KEM_names_do_all(const EVP_KEM *wrap,
1891
+ void (*fn)(const char *name, void *data), void *data);
1892
+ const OSSL_PARAM *EVP_KEM_gettable_ctx_params(const EVP_KEM *kem);
1893
+ const OSSL_PARAM *EVP_KEM_settable_ctx_params(const EVP_KEM *kem);
1894
+
1895
+ int EVP_PKEY_sign_init(EVP_PKEY_CTX *ctx);
1896
+ int EVP_PKEY_sign_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]);
1897
+ int EVP_PKEY_sign(EVP_PKEY_CTX *ctx,
1898
+ unsigned char *sig, size_t *siglen,
1899
+ const unsigned char *tbs, size_t tbslen);
1900
+ int EVP_PKEY_verify_init(EVP_PKEY_CTX *ctx);
1901
+ int EVP_PKEY_verify_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]);
1902
+ int EVP_PKEY_verify(EVP_PKEY_CTX *ctx,
1903
+ const unsigned char *sig, size_t siglen,
1904
+ const unsigned char *tbs, size_t tbslen);
1905
+ int EVP_PKEY_verify_recover_init(EVP_PKEY_CTX *ctx);
1906
+ int EVP_PKEY_verify_recover_init_ex(EVP_PKEY_CTX *ctx,
1907
+ const OSSL_PARAM params[]);
1908
+ int EVP_PKEY_verify_recover(EVP_PKEY_CTX *ctx,
1909
+ unsigned char *rout, size_t *routlen,
1910
+ const unsigned char *sig, size_t siglen);
1911
+ int EVP_PKEY_encrypt_init(EVP_PKEY_CTX *ctx);
1912
+ int EVP_PKEY_encrypt_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]);
1913
+ int EVP_PKEY_encrypt(EVP_PKEY_CTX *ctx,
1914
+ unsigned char *out, size_t *outlen,
1915
+ const unsigned char *in, size_t inlen);
1916
+ int EVP_PKEY_decrypt_init(EVP_PKEY_CTX *ctx);
1917
+ int EVP_PKEY_decrypt_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]);
1918
+ int EVP_PKEY_decrypt(EVP_PKEY_CTX *ctx,
1919
+ unsigned char *out, size_t *outlen,
1920
+ const unsigned char *in, size_t inlen);
1921
+
1922
+ int EVP_PKEY_derive_init(EVP_PKEY_CTX *ctx);
1923
+ int EVP_PKEY_derive_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]);
1924
+ int EVP_PKEY_derive_set_peer_ex(EVP_PKEY_CTX *ctx, EVP_PKEY *peer,
1925
+ int validate_peer);
1926
+ int EVP_PKEY_derive_set_peer(EVP_PKEY_CTX *ctx, EVP_PKEY *peer);
1927
+ int EVP_PKEY_derive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen);
1928
+
1929
+ int EVP_PKEY_encapsulate_init(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]);
1930
+ int EVP_PKEY_encapsulate(EVP_PKEY_CTX *ctx,
1931
+ unsigned char *wrappedkey, size_t *wrappedkeylen,
1932
+ unsigned char *genkey, size_t *genkeylen);
1933
+ int EVP_PKEY_decapsulate_init(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]);
1934
+ int EVP_PKEY_decapsulate(EVP_PKEY_CTX *ctx,
1935
+ unsigned char *unwrapped, size_t *unwrappedlen,
1936
+ const unsigned char *wrapped, size_t wrappedlen);
1937
+
1938
+ typedef int EVP_PKEY_gen_cb(EVP_PKEY_CTX *ctx);
1939
+
1940
+ int EVP_PKEY_fromdata_init(EVP_PKEY_CTX *ctx);
1941
+ int EVP_PKEY_fromdata(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey, int selection,
1942
+ OSSL_PARAM param[]);
1943
+ const OSSL_PARAM *EVP_PKEY_fromdata_settable(EVP_PKEY_CTX *ctx, int selection);
1944
+
1945
+ int EVP_PKEY_todata(const EVP_PKEY *pkey, int selection, OSSL_PARAM **params);
1946
+ int EVP_PKEY_export(const EVP_PKEY *pkey, int selection,
1947
+ OSSL_CALLBACK *export_cb, void *export_cbarg);
1948
+
1949
+ const OSSL_PARAM *EVP_PKEY_gettable_params(const EVP_PKEY *pkey);
1950
+ int EVP_PKEY_get_params(const EVP_PKEY *pkey, OSSL_PARAM params[]);
1951
+ int EVP_PKEY_get_int_param(const EVP_PKEY *pkey, const char *key_name,
1952
+ int *out);
1953
+ int EVP_PKEY_get_size_t_param(const EVP_PKEY *pkey, const char *key_name,
1954
+ size_t *out);
1955
+ int EVP_PKEY_get_bn_param(const EVP_PKEY *pkey, const char *key_name,
1956
+ BIGNUM **bn);
1957
+ int EVP_PKEY_get_utf8_string_param(const EVP_PKEY *pkey, const char *key_name,
1958
+ char *str, size_t max_buf_sz, size_t *out_sz);
1959
+ int EVP_PKEY_get_octet_string_param(const EVP_PKEY *pkey, const char *key_name,
1960
+ unsigned char *buf, size_t max_buf_sz,
1961
+ size_t *out_sz);
1962
+
1963
+ const OSSL_PARAM *EVP_PKEY_settable_params(const EVP_PKEY *pkey);
1964
+ int EVP_PKEY_set_params(EVP_PKEY *pkey, OSSL_PARAM params[]);
1965
+ int EVP_PKEY_set_int_param(EVP_PKEY *pkey, const char *key_name, int in);
1966
+ int EVP_PKEY_set_size_t_param(EVP_PKEY *pkey, const char *key_name, size_t in);
1967
+ int EVP_PKEY_set_bn_param(EVP_PKEY *pkey, const char *key_name,
1968
+ const BIGNUM *bn);
1969
+ int EVP_PKEY_set_utf8_string_param(EVP_PKEY *pkey, const char *key_name,
1970
+ const char *str);
1971
+ int EVP_PKEY_set_octet_string_param(EVP_PKEY *pkey, const char *key_name,
1972
+ const unsigned char *buf, size_t bsize);
1973
+
1974
+ int EVP_PKEY_get_ec_point_conv_form(const EVP_PKEY *pkey);
1975
+ int EVP_PKEY_get_field_type(const EVP_PKEY *pkey);
1976
+
1977
+ EVP_PKEY *EVP_PKEY_Q_keygen(OSSL_LIB_CTX *libctx, const char *propq,
1978
+ const char *type, ...);
1979
+ int EVP_PKEY_paramgen_init(EVP_PKEY_CTX *ctx);
1980
+ int EVP_PKEY_paramgen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey);
1981
+ int EVP_PKEY_keygen_init(EVP_PKEY_CTX *ctx);
1982
+ int EVP_PKEY_keygen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey);
1983
+ int EVP_PKEY_generate(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey);
1984
+ int EVP_PKEY_check(EVP_PKEY_CTX *ctx);
1985
+ int EVP_PKEY_public_check(EVP_PKEY_CTX *ctx);
1986
+ int EVP_PKEY_public_check_quick(EVP_PKEY_CTX *ctx);
1987
+ int EVP_PKEY_param_check(EVP_PKEY_CTX *ctx);
1988
+ int EVP_PKEY_param_check_quick(EVP_PKEY_CTX *ctx);
1989
+ int EVP_PKEY_private_check(EVP_PKEY_CTX *ctx);
1990
+ int EVP_PKEY_pairwise_check(EVP_PKEY_CTX *ctx);
1991
+
1992
+ # define EVP_PKEY_get_ex_new_index(l, p, newf, dupf, freef) \
1993
+ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_EVP_PKEY, l, p, newf, dupf, freef)
1994
+ int EVP_PKEY_set_ex_data(EVP_PKEY *key, int idx, void *arg);
1995
+ void *EVP_PKEY_get_ex_data(const EVP_PKEY *key, int idx);
1996
+
1997
+ void EVP_PKEY_CTX_set_cb(EVP_PKEY_CTX *ctx, EVP_PKEY_gen_cb *cb);
1998
+ EVP_PKEY_gen_cb *EVP_PKEY_CTX_get_cb(EVP_PKEY_CTX *ctx);
1999
+
2000
+ int EVP_PKEY_CTX_get_keygen_info(EVP_PKEY_CTX *ctx, int idx);
2001
+ # ifndef OPENSSL_NO_DEPRECATED_3_0
2002
+ OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_init(EVP_PKEY_METHOD *pmeth,
2003
+ int (*init) (EVP_PKEY_CTX *ctx));
2004
+ OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_copy
2005
+ (EVP_PKEY_METHOD *pmeth, int (*copy) (EVP_PKEY_CTX *dst,
2006
+ const EVP_PKEY_CTX *src));
2007
+ OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_cleanup
2008
+ (EVP_PKEY_METHOD *pmeth, void (*cleanup) (EVP_PKEY_CTX *ctx));
2009
+ OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_paramgen
2010
+ (EVP_PKEY_METHOD *pmeth, int (*paramgen_init) (EVP_PKEY_CTX *ctx),
2011
+ int (*paramgen) (EVP_PKEY_CTX *ctx, EVP_PKEY *pkey));
2012
+ OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_keygen
2013
+ (EVP_PKEY_METHOD *pmeth, int (*keygen_init) (EVP_PKEY_CTX *ctx),
2014
+ int (*keygen) (EVP_PKEY_CTX *ctx, EVP_PKEY *pkey));
2015
+ OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_sign
2016
+ (EVP_PKEY_METHOD *pmeth, int (*sign_init) (EVP_PKEY_CTX *ctx),
2017
+ int (*sign) (EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen,
2018
+ const unsigned char *tbs, size_t tbslen));
2019
+ OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_verify
2020
+ (EVP_PKEY_METHOD *pmeth, int (*verify_init) (EVP_PKEY_CTX *ctx),
2021
+ int (*verify) (EVP_PKEY_CTX *ctx, const unsigned char *sig, size_t siglen,
2022
+ const unsigned char *tbs, size_t tbslen));
2023
+ OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_verify_recover
2024
+ (EVP_PKEY_METHOD *pmeth, int (*verify_recover_init) (EVP_PKEY_CTX *ctx),
2025
+ int (*verify_recover) (EVP_PKEY_CTX *ctx, unsigned char *sig,
2026
+ size_t *siglen, const unsigned char *tbs,
2027
+ size_t tbslen));
2028
+ OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_signctx
2029
+ (EVP_PKEY_METHOD *pmeth, int (*signctx_init) (EVP_PKEY_CTX *ctx,
2030
+ EVP_MD_CTX *mctx),
2031
+ int (*signctx) (EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen,
2032
+ EVP_MD_CTX *mctx));
2033
+ OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_verifyctx
2034
+ (EVP_PKEY_METHOD *pmeth, int (*verifyctx_init) (EVP_PKEY_CTX *ctx,
2035
+ EVP_MD_CTX *mctx),
2036
+ int (*verifyctx) (EVP_PKEY_CTX *ctx, const unsigned char *sig, int siglen,
2037
+ EVP_MD_CTX *mctx));
2038
+ OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_encrypt
2039
+ (EVP_PKEY_METHOD *pmeth, int (*encrypt_init) (EVP_PKEY_CTX *ctx),
2040
+ int (*encryptfn) (EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen,
2041
+ const unsigned char *in, size_t inlen));
2042
+ OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_decrypt
2043
+ (EVP_PKEY_METHOD *pmeth, int (*decrypt_init) (EVP_PKEY_CTX *ctx),
2044
+ int (*decrypt) (EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen,
2045
+ const unsigned char *in, size_t inlen));
2046
+ OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_derive
2047
+ (EVP_PKEY_METHOD *pmeth, int (*derive_init) (EVP_PKEY_CTX *ctx),
2048
+ int (*derive) (EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen));
2049
+ OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_ctrl
2050
+ (EVP_PKEY_METHOD *pmeth, int (*ctrl) (EVP_PKEY_CTX *ctx, int type, int p1,
2051
+ void *p2),
2052
+ int (*ctrl_str) (EVP_PKEY_CTX *ctx, const char *type, const char *value));
2053
+ OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_digestsign
2054
+ (EVP_PKEY_METHOD *pmeth,
2055
+ int (*digestsign) (EVP_MD_CTX *ctx, unsigned char *sig, size_t *siglen,
2056
+ const unsigned char *tbs, size_t tbslen));
2057
+ OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_digestverify
2058
+ (EVP_PKEY_METHOD *pmeth,
2059
+ int (*digestverify) (EVP_MD_CTX *ctx, const unsigned char *sig,
2060
+ size_t siglen, const unsigned char *tbs,
2061
+ size_t tbslen));
2062
+ OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_check
2063
+ (EVP_PKEY_METHOD *pmeth, int (*check) (EVP_PKEY *pkey));
2064
+ OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_public_check
2065
+ (EVP_PKEY_METHOD *pmeth, int (*check) (EVP_PKEY *pkey));
2066
+ OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_param_check
2067
+ (EVP_PKEY_METHOD *pmeth, int (*check) (EVP_PKEY *pkey));
2068
+ OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_set_digest_custom
2069
+ (EVP_PKEY_METHOD *pmeth, int (*digest_custom) (EVP_PKEY_CTX *ctx,
2070
+ EVP_MD_CTX *mctx));
2071
+ OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_init
2072
+ (const EVP_PKEY_METHOD *pmeth, int (**pinit) (EVP_PKEY_CTX *ctx));
2073
+ OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_copy
2074
+ (const EVP_PKEY_METHOD *pmeth, int (**pcopy) (EVP_PKEY_CTX *dst,
2075
+ const EVP_PKEY_CTX *src));
2076
+ OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_cleanup
2077
+ (const EVP_PKEY_METHOD *pmeth, void (**pcleanup) (EVP_PKEY_CTX *ctx));
2078
+ OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_paramgen
2079
+ (const EVP_PKEY_METHOD *pmeth, int (**pparamgen_init) (EVP_PKEY_CTX *ctx),
2080
+ int (**pparamgen) (EVP_PKEY_CTX *ctx, EVP_PKEY *pkey));
2081
+ OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_keygen
2082
+ (const EVP_PKEY_METHOD *pmeth, int (**pkeygen_init) (EVP_PKEY_CTX *ctx),
2083
+ int (**pkeygen) (EVP_PKEY_CTX *ctx, EVP_PKEY *pkey));
2084
+ OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_sign
2085
+ (const EVP_PKEY_METHOD *pmeth, int (**psign_init) (EVP_PKEY_CTX *ctx),
2086
+ int (**psign) (EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen,
2087
+ const unsigned char *tbs, size_t tbslen));
2088
+ OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_verify
2089
+ (const EVP_PKEY_METHOD *pmeth, int (**pverify_init) (EVP_PKEY_CTX *ctx),
2090
+ int (**pverify) (EVP_PKEY_CTX *ctx, const unsigned char *sig,
2091
+ size_t siglen, const unsigned char *tbs, size_t tbslen));
2092
+ OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_verify_recover
2093
+ (const EVP_PKEY_METHOD *pmeth,
2094
+ int (**pverify_recover_init) (EVP_PKEY_CTX *ctx),
2095
+ int (**pverify_recover) (EVP_PKEY_CTX *ctx, unsigned char *sig,
2096
+ size_t *siglen, const unsigned char *tbs,
2097
+ size_t tbslen));
2098
+ OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_signctx
2099
+ (const EVP_PKEY_METHOD *pmeth,
2100
+ int (**psignctx_init) (EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx),
2101
+ int (**psignctx) (EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen,
2102
+ EVP_MD_CTX *mctx));
2103
+ OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_verifyctx
2104
+ (const EVP_PKEY_METHOD *pmeth,
2105
+ int (**pverifyctx_init) (EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx),
2106
+ int (**pverifyctx) (EVP_PKEY_CTX *ctx, const unsigned char *sig,
2107
+ int siglen, EVP_MD_CTX *mctx));
2108
+ OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_encrypt
2109
+ (const EVP_PKEY_METHOD *pmeth, int (**pencrypt_init) (EVP_PKEY_CTX *ctx),
2110
+ int (**pencryptfn) (EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen,
2111
+ const unsigned char *in, size_t inlen));
2112
+ OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_decrypt
2113
+ (const EVP_PKEY_METHOD *pmeth, int (**pdecrypt_init) (EVP_PKEY_CTX *ctx),
2114
+ int (**pdecrypt) (EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen,
2115
+ const unsigned char *in, size_t inlen));
2116
+ OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_derive
2117
+ (const EVP_PKEY_METHOD *pmeth, int (**pderive_init) (EVP_PKEY_CTX *ctx),
2118
+ int (**pderive) (EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen));
2119
+ OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_ctrl
2120
+ (const EVP_PKEY_METHOD *pmeth,
2121
+ int (**pctrl) (EVP_PKEY_CTX *ctx, int type, int p1, void *p2),
2122
+ int (**pctrl_str) (EVP_PKEY_CTX *ctx, const char *type,
2123
+ const char *value));
2124
+ OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_digestsign
2125
+ (const EVP_PKEY_METHOD *pmeth,
2126
+ int (**digestsign) (EVP_MD_CTX *ctx, unsigned char *sig, size_t *siglen,
2127
+ const unsigned char *tbs, size_t tbslen));
2128
+ OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_digestverify
2129
+ (const EVP_PKEY_METHOD *pmeth,
2130
+ int (**digestverify) (EVP_MD_CTX *ctx, const unsigned char *sig,
2131
+ size_t siglen, const unsigned char *tbs,
2132
+ size_t tbslen));
2133
+ OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_check
2134
+ (const EVP_PKEY_METHOD *pmeth, int (**pcheck) (EVP_PKEY *pkey));
2135
+ OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_public_check
2136
+ (const EVP_PKEY_METHOD *pmeth, int (**pcheck) (EVP_PKEY *pkey));
2137
+ OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_param_check
2138
+ (const EVP_PKEY_METHOD *pmeth, int (**pcheck) (EVP_PKEY *pkey));
2139
+ OSSL_DEPRECATEDIN_3_0 void EVP_PKEY_meth_get_digest_custom
2140
+ (const EVP_PKEY_METHOD *pmeth,
2141
+ int (**pdigest_custom) (EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx));
2142
+ # endif
2143
+
2144
+ void EVP_KEYEXCH_free(EVP_KEYEXCH *exchange);
2145
+ int EVP_KEYEXCH_up_ref(EVP_KEYEXCH *exchange);
2146
+ EVP_KEYEXCH *EVP_KEYEXCH_fetch(OSSL_LIB_CTX *ctx, const char *algorithm,
2147
+ const char *properties);
2148
+ OSSL_PROVIDER *EVP_KEYEXCH_get0_provider(const EVP_KEYEXCH *exchange);
2149
+ int EVP_KEYEXCH_is_a(const EVP_KEYEXCH *keyexch, const char *name);
2150
+ const char *EVP_KEYEXCH_get0_name(const EVP_KEYEXCH *keyexch);
2151
+ const char *EVP_KEYEXCH_get0_description(const EVP_KEYEXCH *keyexch);
2152
+ void EVP_KEYEXCH_do_all_provided(OSSL_LIB_CTX *libctx,
2153
+ void (*fn)(EVP_KEYEXCH *keyexch, void *data),
2154
+ void *data);
2155
+ int EVP_KEYEXCH_names_do_all(const EVP_KEYEXCH *keyexch,
2156
+ void (*fn)(const char *name, void *data),
2157
+ void *data);
2158
+ const OSSL_PARAM *EVP_KEYEXCH_gettable_ctx_params(const EVP_KEYEXCH *keyexch);
2159
+ const OSSL_PARAM *EVP_KEYEXCH_settable_ctx_params(const EVP_KEYEXCH *keyexch);
2160
+
2161
+ void EVP_add_alg_module(void);
2162
+
2163
+ int EVP_PKEY_CTX_set_group_name(EVP_PKEY_CTX *ctx, const char *name);
2164
+ int EVP_PKEY_CTX_get_group_name(EVP_PKEY_CTX *ctx, char *name, size_t namelen);
2165
+ int EVP_PKEY_get_group_name(const EVP_PKEY *pkey, char *name, size_t name_sz,
2166
+ size_t *gname_len);
2167
+
2168
+ OSSL_LIB_CTX *EVP_PKEY_CTX_get0_libctx(EVP_PKEY_CTX *ctx);
2169
+ const char *EVP_PKEY_CTX_get0_propq(const EVP_PKEY_CTX *ctx);
2170
+ const OSSL_PROVIDER *EVP_PKEY_CTX_get0_provider(const EVP_PKEY_CTX *ctx);
2171
+
2172
+ # ifdef __cplusplus
2173
+ }
2174
+ # endif
2175
+ #endif