licentivo-launch 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 (143) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +21 -0
  3. data/README.md +35 -0
  4. data/ext/launch_native/extconf.rb +28 -0
  5. data/lib/licentivo_launch/vendor/licentivo.rb +262 -0
  6. data/lib/licentivo_launch.rb +352 -0
  7. data/vendor/LICENSE +21 -0
  8. data/vendor/NOTICE +17 -0
  9. data/vendor/VERSION +1 -0
  10. data/vendor/c/app.c +33 -0
  11. data/vendor/c/demo.c +77 -0
  12. data/vendor/c/feature_tasks.h +72 -0
  13. data/vendor/c/licentivo.c +382 -0
  14. data/vendor/c/licentivo.h +67 -0
  15. data/vendor/c/quickstart.c +51 -0
  16. data/vendor/c/test_vectors.c +4 -0
  17. data/vendor/c/vendor/Monocypher-LICENCE.md +173 -0
  18. data/vendor/c/vendor/cJSON-LICENSE +20 -0
  19. data/vendor/c/vendor/cJSON.c +3191 -0
  20. data/vendor/c/vendor/cJSON.h +306 -0
  21. data/vendor/c/vendor/monocypher-ed25519.c +500 -0
  22. data/vendor/c/vendor/monocypher-ed25519.h +140 -0
  23. data/vendor/c/vendor/monocypher.c +2956 -0
  24. data/vendor/c/vendor/monocypher.h +321 -0
  25. data/vendor/curl/COPYING.txt +22 -0
  26. data/vendor/curl/bin/libcurl-x64.dll +0 -0
  27. data/vendor/curl/include/brotli/decode.h +409 -0
  28. data/vendor/curl/include/brotli/encode.h +505 -0
  29. data/vendor/curl/include/brotli/port.h +302 -0
  30. data/vendor/curl/include/brotli/shared_dictionary.h +100 -0
  31. data/vendor/curl/include/brotli/types.h +83 -0
  32. data/vendor/curl/include/curl/curl.h +3374 -0
  33. data/vendor/curl/include/curl/curlver.h +77 -0
  34. data/vendor/curl/include/curl/easy.h +123 -0
  35. data/vendor/curl/include/curl/header.h +74 -0
  36. data/vendor/curl/include/curl/mprintf.h +85 -0
  37. data/vendor/curl/include/curl/multi.h +561 -0
  38. data/vendor/curl/include/curl/options.h +70 -0
  39. data/vendor/curl/include/curl/stdcheaders.h +35 -0
  40. data/vendor/curl/include/curl/system.h +399 -0
  41. data/vendor/curl/include/curl/typecheck-gcc.h +964 -0
  42. data/vendor/curl/include/curl/urlapi.h +156 -0
  43. data/vendor/curl/include/curl/websockets.h +98 -0
  44. data/vendor/curl/include/libpsl.h +207 -0
  45. data/vendor/curl/include/libssh2.h +1516 -0
  46. data/vendor/curl/include/libssh2_publickey.h +128 -0
  47. data/vendor/curl/include/libssh2_sftp.h +382 -0
  48. data/vendor/curl/include/nghttp2/nghttp2.h +6878 -0
  49. data/vendor/curl/include/nghttp2/nghttp2ver.h +42 -0
  50. data/vendor/curl/include/nghttp3/nghttp3.h +3704 -0
  51. data/vendor/curl/include/nghttp3/version.h +46 -0
  52. data/vendor/curl/include/ngtcp2/ngtcp2.h +7485 -0
  53. data/vendor/curl/include/ngtcp2/ngtcp2_crypto.h +1071 -0
  54. data/vendor/curl/include/ngtcp2/ngtcp2_crypto_quictls.h +147 -0
  55. data/vendor/curl/include/ngtcp2/version.h +51 -0
  56. data/vendor/curl/include/openssl/aes.h +120 -0
  57. data/vendor/curl/include/openssl/asn1.h +1121 -0
  58. data/vendor/curl/include/openssl/asn1t.h +996 -0
  59. data/vendor/curl/include/openssl/bio.h +716 -0
  60. data/vendor/curl/include/openssl/blowfish.h +106 -0
  61. data/vendor/curl/include/openssl/bn.h +480 -0
  62. data/vendor/curl/include/openssl/buffer.h +102 -0
  63. data/vendor/curl/include/openssl/camellia.h +121 -0
  64. data/vendor/curl/include/openssl/cast.h +99 -0
  65. data/vendor/curl/include/openssl/chacha.h +54 -0
  66. data/vendor/curl/include/openssl/cmac.h +81 -0
  67. data/vendor/curl/include/openssl/cms.h +541 -0
  68. data/vendor/curl/include/openssl/comp.h +7 -0
  69. data/vendor/curl/include/openssl/conf.h +189 -0
  70. data/vendor/curl/include/openssl/crypto.h +458 -0
  71. data/vendor/curl/include/openssl/ct.h +567 -0
  72. data/vendor/curl/include/openssl/curve25519.h +104 -0
  73. data/vendor/curl/include/openssl/des.h +215 -0
  74. data/vendor/curl/include/openssl/dh.h +245 -0
  75. data/vendor/curl/include/openssl/dsa.h +263 -0
  76. data/vendor/curl/include/openssl/dtls1.h +107 -0
  77. data/vendor/curl/include/openssl/ec.h +675 -0
  78. data/vendor/curl/include/openssl/ecdh.h +6 -0
  79. data/vendor/curl/include/openssl/ecdsa.h +6 -0
  80. data/vendor/curl/include/openssl/engine.h +215 -0
  81. data/vendor/curl/include/openssl/err.h +325 -0
  82. data/vendor/curl/include/openssl/evp.h +1288 -0
  83. data/vendor/curl/include/openssl/hkdf.h +65 -0
  84. data/vendor/curl/include/openssl/hmac.h +101 -0
  85. data/vendor/curl/include/openssl/idea.h +99 -0
  86. data/vendor/curl/include/openssl/kdf.h +137 -0
  87. data/vendor/curl/include/openssl/lhash.h +179 -0
  88. data/vendor/curl/include/openssl/md4.h +105 -0
  89. data/vendor/curl/include/openssl/md5.h +99 -0
  90. data/vendor/curl/include/openssl/mlkem.h +236 -0
  91. data/vendor/curl/include/openssl/modes.h +118 -0
  92. data/vendor/curl/include/openssl/obj_mac.h +4646 -0
  93. data/vendor/curl/include/openssl/objects.h +137 -0
  94. data/vendor/curl/include/openssl/ocsp.h +484 -0
  95. data/vendor/curl/include/openssl/opensslconf.h +16 -0
  96. data/vendor/curl/include/openssl/opensslfeatures.h +153 -0
  97. data/vendor/curl/include/openssl/opensslv.h +18 -0
  98. data/vendor/curl/include/openssl/ossl_typ.h +196 -0
  99. data/vendor/curl/include/openssl/pem.h +542 -0
  100. data/vendor/curl/include/openssl/pkcs12.h +284 -0
  101. data/vendor/curl/include/openssl/pkcs7.h +523 -0
  102. data/vendor/curl/include/openssl/poly1305.h +45 -0
  103. data/vendor/curl/include/openssl/posix_time.h +54 -0
  104. data/vendor/curl/include/openssl/rand.h +118 -0
  105. data/vendor/curl/include/openssl/rc2.h +101 -0
  106. data/vendor/curl/include/openssl/rc4.h +88 -0
  107. data/vendor/curl/include/openssl/ripemd.h +107 -0
  108. data/vendor/curl/include/openssl/rsa.h +603 -0
  109. data/vendor/curl/include/openssl/safestack.h +1739 -0
  110. data/vendor/curl/include/openssl/sha.h +190 -0
  111. data/vendor/curl/include/openssl/sm3.h +49 -0
  112. data/vendor/curl/include/openssl/sm4.h +47 -0
  113. data/vendor/curl/include/openssl/srtp.h +148 -0
  114. data/vendor/curl/include/openssl/ssl.h +2336 -0
  115. data/vendor/curl/include/openssl/ssl3.h +441 -0
  116. data/vendor/curl/include/openssl/stack.h +99 -0
  117. data/vendor/curl/include/openssl/tls1.h +764 -0
  118. data/vendor/curl/include/openssl/ts.h +660 -0
  119. data/vendor/curl/include/openssl/txt_db.h +112 -0
  120. data/vendor/curl/include/openssl/ui.h +397 -0
  121. data/vendor/curl/include/openssl/x509.h +1037 -0
  122. data/vendor/curl/include/openssl/x509_vfy.h +464 -0
  123. data/vendor/curl/include/openssl/x509v3.h +1039 -0
  124. data/vendor/curl/include/zconf.h +206 -0
  125. data/vendor/curl/include/zdict.h +481 -0
  126. data/vendor/curl/include/zlib.h +1859 -0
  127. data/vendor/curl/include/zlib_name_mangling.h +8 -0
  128. data/vendor/curl/include/zstd.h +3198 -0
  129. data/vendor/curl/include/zstd_errors.h +107 -0
  130. data/vendor/curl/lib/libcurl.dll.a +0 -0
  131. data/vendor/curl/licenses/brotli/LICENSE.txt +19 -0
  132. data/vendor/curl/licenses/certdata/LICENSE.url +2 -0
  133. data/vendor/curl/licenses/libpsl/COPYING.txt +20 -0
  134. data/vendor/curl/licenses/libressl/COPYING.txt +133 -0
  135. data/vendor/curl/licenses/libssh2/COPYING.txt +43 -0
  136. data/vendor/curl/licenses/nghttp2/COPYING.txt +23 -0
  137. data/vendor/curl/licenses/nghttp3/COPYING.txt +22 -0
  138. data/vendor/curl/licenses/ngtcp2/COPYING.txt +22 -0
  139. data/vendor/curl/licenses/psl/LICENSE.txt +373 -0
  140. data/vendor/curl/licenses/trurl/COPYING.txt +22 -0
  141. data/vendor/curl/licenses/zlibng/LICENSE.md +19 -0
  142. data/vendor/curl/licenses/zstd/LICENSE.txt +30 -0
  143. metadata +205 -0
@@ -0,0 +1,523 @@
1
+ /* $OpenBSD: pkcs7.h,v 1.25 2025/12/20 07:22:43 tb Exp $ */
2
+ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3
+ * All rights reserved.
4
+ *
5
+ * This package is an SSL implementation written
6
+ * by Eric Young (eay@cryptsoft.com).
7
+ * The implementation was written so as to conform with Netscapes SSL.
8
+ *
9
+ * This library is free for commercial and non-commercial use as long as
10
+ * the following conditions are aheared to. The following conditions
11
+ * apply to all code found in this distribution, be it the RC4, RSA,
12
+ * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13
+ * included with this distribution is covered by the same copyright terms
14
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15
+ *
16
+ * Copyright remains Eric Young's, and as such any Copyright notices in
17
+ * the code are not to be removed.
18
+ * If this package is used in a product, Eric Young should be given attribution
19
+ * as the author of the parts of the library used.
20
+ * This can be in the form of a textual message at program startup or
21
+ * in documentation (online or textual) provided with the package.
22
+ *
23
+ * Redistribution and use in source and binary forms, with or without
24
+ * modification, are permitted provided that the following conditions
25
+ * are met:
26
+ * 1. Redistributions of source code must retain the copyright
27
+ * notice, this list of conditions and the following disclaimer.
28
+ * 2. Redistributions in binary form must reproduce the above copyright
29
+ * notice, this list of conditions and the following disclaimer in the
30
+ * documentation and/or other materials provided with the distribution.
31
+ * 3. All advertising materials mentioning features or use of this software
32
+ * must display the following acknowledgement:
33
+ * "This product includes cryptographic software written by
34
+ * Eric Young (eay@cryptsoft.com)"
35
+ * The word 'cryptographic' can be left out if the rouines from the library
36
+ * being used are not cryptographic related :-).
37
+ * 4. If you include any Windows specific code (or a derivative thereof) from
38
+ * the apps directory (application code) you must include an acknowledgement:
39
+ * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40
+ *
41
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51
+ * SUCH DAMAGE.
52
+ *
53
+ * The licence and distribution terms for any publically available version or
54
+ * derivative of this code cannot be changed. i.e. this code cannot simply be
55
+ * copied and put under another distribution licence
56
+ * [including the GNU Public Licence.]
57
+ */
58
+
59
+ #ifndef HEADER_PKCS7_H
60
+ #define HEADER_PKCS7_H
61
+
62
+ #include <openssl/opensslconf.h>
63
+
64
+ #include <openssl/asn1.h>
65
+ #include <openssl/bio.h>
66
+ #include <openssl/ossl_typ.h>
67
+
68
+ #ifdef __cplusplus
69
+ extern "C" {
70
+ #endif
71
+
72
+ #if defined(_WIN32) && defined(__WINCRYPT_H__)
73
+ #if !defined(LIBRESSL_INTERNAL) && !defined(LIBRESSL_DISABLE_OVERRIDE_WINCRYPT_DEFINES_WARNING)
74
+ #ifdef _MSC_VER
75
+ #pragma message("Warning, overriding WinCrypt defines")
76
+ #else
77
+ #warning overriding WinCrypt defines
78
+ #endif
79
+ #endif
80
+ #undef PKCS7_ISSUER_AND_SERIAL
81
+ #undef PKCS7_SIGNER_INFO
82
+ #endif
83
+
84
+ /*
85
+ Encryption_ID DES-CBC
86
+ Digest_ID MD5
87
+ Digest_Encryption_ID rsaEncryption
88
+ Key_Encryption_ID rsaEncryption
89
+ */
90
+
91
+ typedef struct pkcs7_issuer_and_serial_st {
92
+ X509_NAME *issuer;
93
+ ASN1_INTEGER *serial;
94
+ } PKCS7_ISSUER_AND_SERIAL;
95
+
96
+ typedef struct pkcs7_signer_info_st {
97
+ ASN1_INTEGER *version; /* version 1 */
98
+ PKCS7_ISSUER_AND_SERIAL *issuer_and_serial;
99
+ X509_ALGOR *digest_alg;
100
+ STACK_OF(X509_ATTRIBUTE) *auth_attr; /* [ 0 ] */
101
+ X509_ALGOR *digest_enc_alg;
102
+ ASN1_OCTET_STRING *enc_digest;
103
+ STACK_OF(X509_ATTRIBUTE) *unauth_attr; /* [ 1 ] */
104
+
105
+ /* The private key to sign with */
106
+ EVP_PKEY *pkey;
107
+ } PKCS7_SIGNER_INFO;
108
+
109
+ DECLARE_STACK_OF(PKCS7_SIGNER_INFO)
110
+
111
+ typedef struct pkcs7_recip_info_st {
112
+ ASN1_INTEGER *version; /* version 0 */
113
+ PKCS7_ISSUER_AND_SERIAL *issuer_and_serial;
114
+ X509_ALGOR *key_enc_algor;
115
+ ASN1_OCTET_STRING *enc_key;
116
+ X509 *cert; /* get the pub-key from this */
117
+ } PKCS7_RECIP_INFO;
118
+
119
+ DECLARE_STACK_OF(PKCS7_RECIP_INFO)
120
+
121
+ typedef struct pkcs7_signed_st {
122
+ ASN1_INTEGER *version; /* version 1 */
123
+ STACK_OF(X509_ALGOR) *md_algs; /* md used */
124
+ STACK_OF(X509) *cert; /* [ 0 ] */
125
+ STACK_OF(X509_CRL) *crl; /* [ 1 ] */
126
+ STACK_OF(PKCS7_SIGNER_INFO) *signer_info;
127
+
128
+ struct pkcs7_st *contents;
129
+ } PKCS7_SIGNED;
130
+ /* The above structure is very very similar to PKCS7_SIGN_ENVELOPE.
131
+ * How about merging the two */
132
+
133
+ typedef struct pkcs7_enc_content_st {
134
+ ASN1_OBJECT *content_type;
135
+ X509_ALGOR *algorithm;
136
+ ASN1_OCTET_STRING *enc_data; /* [ 0 ] */
137
+ const EVP_CIPHER *cipher;
138
+ } PKCS7_ENC_CONTENT;
139
+
140
+ typedef struct pkcs7_enveloped_st {
141
+ ASN1_INTEGER *version; /* version 0 */
142
+ STACK_OF(PKCS7_RECIP_INFO) *recipientinfo;
143
+ PKCS7_ENC_CONTENT *enc_data;
144
+ } PKCS7_ENVELOPE;
145
+
146
+ typedef struct pkcs7_signedandenveloped_st {
147
+ ASN1_INTEGER *version; /* version 1 */
148
+ STACK_OF(X509_ALGOR) *md_algs; /* md used */
149
+ STACK_OF(X509) *cert; /* [ 0 ] */
150
+ STACK_OF(X509_CRL) *crl; /* [ 1 ] */
151
+ STACK_OF(PKCS7_SIGNER_INFO) *signer_info;
152
+
153
+ PKCS7_ENC_CONTENT *enc_data;
154
+ STACK_OF(PKCS7_RECIP_INFO) *recipientinfo;
155
+ } PKCS7_SIGN_ENVELOPE;
156
+
157
+ typedef struct pkcs7_digest_st {
158
+ ASN1_INTEGER *version; /* version 0 */
159
+ X509_ALGOR *md; /* md used */
160
+ struct pkcs7_st *contents;
161
+ ASN1_OCTET_STRING *digest;
162
+ } PKCS7_DIGEST;
163
+
164
+ typedef struct pkcs7_encrypted_st {
165
+ ASN1_INTEGER *version; /* version 0 */
166
+ PKCS7_ENC_CONTENT *enc_data;
167
+ } PKCS7_ENCRYPT;
168
+
169
+ typedef struct pkcs7_st {
170
+ /* The following is non NULL if it contains ASN1 encoding of
171
+ * this structure */
172
+ unsigned char *asn1;
173
+ long length;
174
+
175
+ #define PKCS7_S_HEADER 0
176
+ #define PKCS7_S_BODY 1
177
+ #define PKCS7_S_TAIL 2
178
+ int state; /* used during processing */
179
+
180
+ int detached;
181
+
182
+ ASN1_OBJECT *type;
183
+ /* content as defined by the type */
184
+ /* all encryption/message digests are applied to the 'contents',
185
+ * leaving out the 'type' field. */
186
+ union {
187
+ char *ptr;
188
+
189
+ /* NID_pkcs7_data */
190
+ ASN1_OCTET_STRING *data;
191
+
192
+ /* NID_pkcs7_signed */
193
+ PKCS7_SIGNED *sign;
194
+
195
+ /* NID_pkcs7_enveloped */
196
+ PKCS7_ENVELOPE *enveloped;
197
+
198
+ /* NID_pkcs7_signedAndEnveloped */
199
+ PKCS7_SIGN_ENVELOPE *signed_and_enveloped;
200
+
201
+ /* NID_pkcs7_digest */
202
+ PKCS7_DIGEST *digest;
203
+
204
+ /* NID_pkcs7_encrypted */
205
+ PKCS7_ENCRYPT *encrypted;
206
+
207
+ /* Anything else */
208
+ ASN1_TYPE *other;
209
+ } d;
210
+ } PKCS7;
211
+
212
+ DECLARE_STACK_OF(PKCS7)
213
+ DECLARE_PKCS12_STACK_OF(PKCS7)
214
+
215
+ #define PKCS7_OP_SET_DETACHED_SIGNATURE 1
216
+ #define PKCS7_OP_GET_DETACHED_SIGNATURE 2
217
+
218
+ #define PKCS7_get_signed_attributes(si) ((si)->auth_attr)
219
+ #define PKCS7_get_attributes(si) ((si)->unauth_attr)
220
+
221
+ #define PKCS7_type_is_signed(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_signed)
222
+ #define PKCS7_type_is_encrypted(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_encrypted)
223
+ #define PKCS7_type_is_enveloped(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_enveloped)
224
+ #define PKCS7_type_is_signedAndEnveloped(a) \
225
+ (OBJ_obj2nid((a)->type) == NID_pkcs7_signedAndEnveloped)
226
+ #define PKCS7_type_is_data(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_data)
227
+ #define PKCS7_type_is_digest(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_digest)
228
+ #define PKCS7_type_is_encrypted(a) \
229
+ (OBJ_obj2nid((a)->type) == NID_pkcs7_encrypted)
230
+
231
+ #define PKCS7_set_detached(p,v) \
232
+ PKCS7_ctrl(p,PKCS7_OP_SET_DETACHED_SIGNATURE,v,NULL)
233
+ #define PKCS7_get_detached(p) \
234
+ PKCS7_ctrl(p,PKCS7_OP_GET_DETACHED_SIGNATURE,0,NULL)
235
+
236
+ #define PKCS7_is_detached(p7) (PKCS7_type_is_signed(p7) && PKCS7_get_detached(p7))
237
+
238
+ /* S/MIME related flags */
239
+
240
+ #define PKCS7_TEXT 0x1
241
+ #define PKCS7_NOCERTS 0x2
242
+ #define PKCS7_NOSIGS 0x4
243
+ #define PKCS7_NOCHAIN 0x8
244
+ #define PKCS7_NOINTERN 0x10
245
+ #define PKCS7_NOVERIFY 0x20
246
+ #define PKCS7_DETACHED 0x40
247
+ #define PKCS7_BINARY 0x80
248
+ #define PKCS7_NOATTR 0x100
249
+ #define PKCS7_NOSMIMECAP 0x200
250
+ #define PKCS7_NOOLDMIMETYPE 0x400
251
+ #define PKCS7_CRLFEOL 0x800
252
+ #define PKCS7_STREAM 0x1000
253
+ #define PKCS7_NOCRL 0x2000
254
+ #define PKCS7_PARTIAL 0x4000
255
+ #define PKCS7_REUSE_DIGEST 0x8000
256
+ #define PKCS7_NO_DUAL_CONTENT 0x10000
257
+
258
+ /* Flags: for compatibility with older code */
259
+
260
+ #define SMIME_TEXT PKCS7_TEXT
261
+ #define SMIME_NOCERTS PKCS7_NOCERTS
262
+ #define SMIME_NOSIGS PKCS7_NOSIGS
263
+ #define SMIME_NOCHAIN PKCS7_NOCHAIN
264
+ #define SMIME_NOINTERN PKCS7_NOINTERN
265
+ #define SMIME_NOVERIFY PKCS7_NOVERIFY
266
+ #define SMIME_DETACHED PKCS7_DETACHED
267
+ #define SMIME_BINARY PKCS7_BINARY
268
+ #define SMIME_NOATTR PKCS7_NOATTR
269
+
270
+ PKCS7_ISSUER_AND_SERIAL *PKCS7_ISSUER_AND_SERIAL_new(void);
271
+ void PKCS7_ISSUER_AND_SERIAL_free(PKCS7_ISSUER_AND_SERIAL *a);
272
+ PKCS7_ISSUER_AND_SERIAL *d2i_PKCS7_ISSUER_AND_SERIAL(PKCS7_ISSUER_AND_SERIAL **a, const unsigned char **in, long len);
273
+ int i2d_PKCS7_ISSUER_AND_SERIAL(PKCS7_ISSUER_AND_SERIAL *a, unsigned char **out);
274
+ extern const ASN1_ITEM PKCS7_ISSUER_AND_SERIAL_it;
275
+
276
+ int PKCS7_ISSUER_AND_SERIAL_digest(PKCS7_ISSUER_AND_SERIAL *data,
277
+ const EVP_MD *type, unsigned char *md, unsigned int *len);
278
+ PKCS7 *d2i_PKCS7_fp(FILE *fp, PKCS7 **p7);
279
+ int i2d_PKCS7_fp(FILE *fp, PKCS7 *p7);
280
+ PKCS7 *PKCS7_dup(PKCS7 *p7);
281
+ PKCS7 *d2i_PKCS7_bio(BIO *bp, PKCS7 **p7);
282
+ int i2d_PKCS7_bio(BIO *bp, PKCS7 *p7);
283
+ int i2d_PKCS7_bio_stream(BIO *out, PKCS7 *p7, BIO *in, int flags);
284
+ int PEM_write_bio_PKCS7_stream(BIO *out, PKCS7 *p7, BIO *in, int flags);
285
+
286
+ PKCS7_SIGNER_INFO *PKCS7_SIGNER_INFO_new(void);
287
+ void PKCS7_SIGNER_INFO_free(PKCS7_SIGNER_INFO *a);
288
+ PKCS7_SIGNER_INFO *d2i_PKCS7_SIGNER_INFO(PKCS7_SIGNER_INFO **a, const unsigned char **in, long len);
289
+ int i2d_PKCS7_SIGNER_INFO(PKCS7_SIGNER_INFO *a, unsigned char **out);
290
+ extern const ASN1_ITEM PKCS7_SIGNER_INFO_it;
291
+ PKCS7_RECIP_INFO *PKCS7_RECIP_INFO_new(void);
292
+ void PKCS7_RECIP_INFO_free(PKCS7_RECIP_INFO *a);
293
+ PKCS7_RECIP_INFO *d2i_PKCS7_RECIP_INFO(PKCS7_RECIP_INFO **a, const unsigned char **in, long len);
294
+ int i2d_PKCS7_RECIP_INFO(PKCS7_RECIP_INFO *a, unsigned char **out);
295
+ extern const ASN1_ITEM PKCS7_RECIP_INFO_it;
296
+ PKCS7_SIGNED *PKCS7_SIGNED_new(void);
297
+ void PKCS7_SIGNED_free(PKCS7_SIGNED *a);
298
+ PKCS7_SIGNED *d2i_PKCS7_SIGNED(PKCS7_SIGNED **a, const unsigned char **in, long len);
299
+ int i2d_PKCS7_SIGNED(PKCS7_SIGNED *a, unsigned char **out);
300
+ extern const ASN1_ITEM PKCS7_SIGNED_it;
301
+ PKCS7_ENC_CONTENT *PKCS7_ENC_CONTENT_new(void);
302
+ void PKCS7_ENC_CONTENT_free(PKCS7_ENC_CONTENT *a);
303
+ PKCS7_ENC_CONTENT *d2i_PKCS7_ENC_CONTENT(PKCS7_ENC_CONTENT **a, const unsigned char **in, long len);
304
+ int i2d_PKCS7_ENC_CONTENT(PKCS7_ENC_CONTENT *a, unsigned char **out);
305
+ extern const ASN1_ITEM PKCS7_ENC_CONTENT_it;
306
+ PKCS7_ENVELOPE *PKCS7_ENVELOPE_new(void);
307
+ void PKCS7_ENVELOPE_free(PKCS7_ENVELOPE *a);
308
+ PKCS7_ENVELOPE *d2i_PKCS7_ENVELOPE(PKCS7_ENVELOPE **a, const unsigned char **in, long len);
309
+ int i2d_PKCS7_ENVELOPE(PKCS7_ENVELOPE *a, unsigned char **out);
310
+ extern const ASN1_ITEM PKCS7_ENVELOPE_it;
311
+ PKCS7_SIGN_ENVELOPE *PKCS7_SIGN_ENVELOPE_new(void);
312
+ void PKCS7_SIGN_ENVELOPE_free(PKCS7_SIGN_ENVELOPE *a);
313
+ PKCS7_SIGN_ENVELOPE *d2i_PKCS7_SIGN_ENVELOPE(PKCS7_SIGN_ENVELOPE **a, const unsigned char **in, long len);
314
+ int i2d_PKCS7_SIGN_ENVELOPE(PKCS7_SIGN_ENVELOPE *a, unsigned char **out);
315
+ extern const ASN1_ITEM PKCS7_SIGN_ENVELOPE_it;
316
+ PKCS7_DIGEST *PKCS7_DIGEST_new(void);
317
+ void PKCS7_DIGEST_free(PKCS7_DIGEST *a);
318
+ PKCS7_DIGEST *d2i_PKCS7_DIGEST(PKCS7_DIGEST **a, const unsigned char **in, long len);
319
+ int i2d_PKCS7_DIGEST(PKCS7_DIGEST *a, unsigned char **out);
320
+ extern const ASN1_ITEM PKCS7_DIGEST_it;
321
+ PKCS7_ENCRYPT *PKCS7_ENCRYPT_new(void);
322
+ void PKCS7_ENCRYPT_free(PKCS7_ENCRYPT *a);
323
+ PKCS7_ENCRYPT *d2i_PKCS7_ENCRYPT(PKCS7_ENCRYPT **a, const unsigned char **in, long len);
324
+ int i2d_PKCS7_ENCRYPT(PKCS7_ENCRYPT *a, unsigned char **out);
325
+ extern const ASN1_ITEM PKCS7_ENCRYPT_it;
326
+ PKCS7 *PKCS7_new(void);
327
+ void PKCS7_free(PKCS7 *a);
328
+ PKCS7 *d2i_PKCS7(PKCS7 **a, const unsigned char **in, long len);
329
+ int i2d_PKCS7(PKCS7 *a, unsigned char **out);
330
+ extern const ASN1_ITEM PKCS7_it;
331
+
332
+ extern const ASN1_ITEM PKCS7_ATTR_SIGN_it;
333
+ extern const ASN1_ITEM PKCS7_ATTR_VERIFY_it;
334
+
335
+ int PKCS7_print_ctx(BIO *out, PKCS7 *x, int indent, const ASN1_PCTX *pctx);
336
+
337
+ long PKCS7_ctrl(PKCS7 *p7, int cmd, long larg, char *parg);
338
+
339
+ int PKCS7_set_type(PKCS7 *p7, int type);
340
+ int PKCS7_set0_type_other(PKCS7 *p7, int type, ASN1_TYPE *other);
341
+ int PKCS7_set_content(PKCS7 *p7, PKCS7 *p7_data);
342
+ int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey,
343
+ const EVP_MD *dgst);
344
+ int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si);
345
+ int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i);
346
+ int PKCS7_add_certificate(PKCS7 *p7, X509 *x509);
347
+ int PKCS7_add_crl(PKCS7 *p7, X509_CRL *x509);
348
+ int PKCS7_content_new(PKCS7 *p7, int nid);
349
+ int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx,
350
+ BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si);
351
+ int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si,
352
+ X509 *x509);
353
+
354
+ BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio);
355
+ int PKCS7_dataFinal(PKCS7 *p7, BIO *bio);
356
+ BIO *PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert);
357
+
358
+
359
+ PKCS7_SIGNER_INFO *PKCS7_add_signature(PKCS7 *p7, X509 *x509,
360
+ EVP_PKEY *pkey, const EVP_MD *dgst);
361
+ X509 *PKCS7_cert_from_signer_info(PKCS7 *p7, PKCS7_SIGNER_INFO *si);
362
+ int PKCS7_set_digest(PKCS7 *p7, const EVP_MD *md);
363
+ STACK_OF(PKCS7_SIGNER_INFO) *PKCS7_get_signer_info(PKCS7 *p7);
364
+
365
+ PKCS7_RECIP_INFO *PKCS7_add_recipient(PKCS7 *p7, X509 *x509);
366
+ void PKCS7_SIGNER_INFO_get0_algs(PKCS7_SIGNER_INFO *si, EVP_PKEY **pk,
367
+ X509_ALGOR **pdig, X509_ALGOR **psig);
368
+ void PKCS7_RECIP_INFO_get0_alg(PKCS7_RECIP_INFO *ri, X509_ALGOR **penc);
369
+ int PKCS7_add_recipient_info(PKCS7 *p7, PKCS7_RECIP_INFO *ri);
370
+ int PKCS7_RECIP_INFO_set(PKCS7_RECIP_INFO *p7i, X509 *x509);
371
+ int PKCS7_set_cipher(PKCS7 *p7, const EVP_CIPHER *cipher);
372
+ int PKCS7_stream(unsigned char ***boundary, PKCS7 *p7);
373
+
374
+ PKCS7_ISSUER_AND_SERIAL *PKCS7_get_issuer_and_serial(PKCS7 *p7, int idx);
375
+ ASN1_OCTET_STRING *PKCS7_digest_from_attributes(STACK_OF(X509_ATTRIBUTE) *sk);
376
+ int PKCS7_add_signed_attribute(PKCS7_SIGNER_INFO *p7si, int nid, int type,
377
+ void *data);
378
+ int PKCS7_add_attribute(PKCS7_SIGNER_INFO *p7si, int nid, int atrtype,
379
+ void *value);
380
+ ASN1_TYPE *PKCS7_get_attribute(PKCS7_SIGNER_INFO *si, int nid);
381
+ ASN1_TYPE *PKCS7_get_signed_attribute(PKCS7_SIGNER_INFO *si, int nid);
382
+ int PKCS7_set_signed_attributes(PKCS7_SIGNER_INFO *p7si,
383
+ STACK_OF(X509_ATTRIBUTE) *sk);
384
+ int PKCS7_set_attributes(PKCS7_SIGNER_INFO *p7si, STACK_OF(X509_ATTRIBUTE) *sk);
385
+
386
+
387
+ PKCS7 *PKCS7_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs,
388
+ BIO *data, int flags);
389
+
390
+ PKCS7_SIGNER_INFO *PKCS7_sign_add_signer(PKCS7 *p7,
391
+ X509 *signcert, EVP_PKEY *pkey, const EVP_MD *md,
392
+ int flags);
393
+
394
+ int PKCS7_final(PKCS7 *p7, BIO *data, int flags);
395
+ int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store,
396
+ BIO *indata, BIO *out, int flags);
397
+ STACK_OF(X509) *PKCS7_get0_signers(PKCS7 *p7, STACK_OF(X509) *certs, int flags);
398
+ PKCS7 *PKCS7_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher,
399
+ int flags);
400
+ int PKCS7_decrypt(PKCS7 *p7, EVP_PKEY *pkey, X509 *cert, BIO *data, int flags);
401
+
402
+ int PKCS7_add_attrib_smimecap(PKCS7_SIGNER_INFO *si,
403
+ STACK_OF(X509_ALGOR) *cap);
404
+ STACK_OF(X509_ALGOR) *PKCS7_get_smimecap(PKCS7_SIGNER_INFO *si);
405
+ int PKCS7_simple_smimecap(STACK_OF(X509_ALGOR) *sk, int nid, int arg);
406
+
407
+ int PKCS7_add_attrib_content_type(PKCS7_SIGNER_INFO *si, ASN1_OBJECT *coid);
408
+ int PKCS7_add0_attrib_signing_time(PKCS7_SIGNER_INFO *si, ASN1_TIME *t);
409
+ int PKCS7_add1_attrib_digest(PKCS7_SIGNER_INFO *si,
410
+ const unsigned char *md, int mdlen);
411
+
412
+ int SMIME_write_PKCS7(BIO *bio, PKCS7 *p7, BIO *data, int flags);
413
+ PKCS7 *SMIME_read_PKCS7(BIO *bio, BIO **bcont);
414
+
415
+ BIO *BIO_new_PKCS7(BIO *out, PKCS7 *p7);
416
+
417
+
418
+ void ERR_load_PKCS7_strings(void);
419
+
420
+ /* Error codes for the PKCS7 functions. */
421
+
422
+ /* Function codes. */
423
+ #define PKCS7_F_B64_READ_PKCS7 120
424
+ #define PKCS7_F_B64_WRITE_PKCS7 121
425
+ #define PKCS7_F_DO_PKCS7_SIGNED_ATTRIB 136
426
+ #define PKCS7_F_I2D_PKCS7_BIO_STREAM 140
427
+ #define PKCS7_F_PKCS7_ADD0_ATTRIB_SIGNING_TIME 135
428
+ #define PKCS7_F_PKCS7_ADD_ATTRIB_SMIMECAP 118
429
+ #define PKCS7_F_PKCS7_ADD_CERTIFICATE 100
430
+ #define PKCS7_F_PKCS7_ADD_CRL 101
431
+ #define PKCS7_F_PKCS7_ADD_RECIPIENT_INFO 102
432
+ #define PKCS7_F_PKCS7_ADD_SIGNATURE 131
433
+ #define PKCS7_F_PKCS7_ADD_SIGNER 103
434
+ #define PKCS7_F_PKCS7_BIO_ADD_DIGEST 125
435
+ #define PKCS7_F_PKCS7_COPY_EXISTING_DIGEST 138
436
+ #define PKCS7_F_PKCS7_CTRL 104
437
+ #define PKCS7_F_PKCS7_DATADECODE 112
438
+ #define PKCS7_F_PKCS7_DATAFINAL 128
439
+ #define PKCS7_F_PKCS7_DATAINIT 105
440
+ #define PKCS7_F_PKCS7_DATASIGN 106
441
+ #define PKCS7_F_PKCS7_DATAVERIFY 107
442
+ #define PKCS7_F_PKCS7_DECRYPT 114
443
+ #define PKCS7_F_PKCS7_DECRYPT_RINFO 133
444
+ #define PKCS7_F_PKCS7_ENCODE_RINFO 132
445
+ #define PKCS7_F_PKCS7_ENCRYPT 115
446
+ #define PKCS7_F_PKCS7_FINAL 134
447
+ #define PKCS7_F_PKCS7_FIND_DIGEST 127
448
+ #define PKCS7_F_PKCS7_GET0_SIGNERS 124
449
+ #define PKCS7_F_PKCS7_RECIP_INFO_SET 130
450
+ #define PKCS7_F_PKCS7_SET_CIPHER 108
451
+ #define PKCS7_F_PKCS7_SET_CONTENT 109
452
+ #define PKCS7_F_PKCS7_SET_DIGEST 126
453
+ #define PKCS7_F_PKCS7_SET_TYPE 110
454
+ #define PKCS7_F_PKCS7_SIGN 116
455
+ #define PKCS7_F_PKCS7_SIGNATUREVERIFY 113
456
+ #define PKCS7_F_PKCS7_SIGNER_INFO_SET 129
457
+ #define PKCS7_F_PKCS7_SIGNER_INFO_SIGN 139
458
+ #define PKCS7_F_PKCS7_SIGN_ADD_SIGNER 137
459
+ #define PKCS7_F_PKCS7_SIMPLE_SMIMECAP 119
460
+ #define PKCS7_F_PKCS7_VERIFY 117
461
+ #define PKCS7_F_SMIME_READ_PKCS7 122
462
+ #define PKCS7_F_SMIME_TEXT 123
463
+
464
+ /* Reason codes. */
465
+ #define PKCS7_R_CERTIFICATE_VERIFY_ERROR 117
466
+ #define PKCS7_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER 144
467
+ #define PKCS7_R_CIPHER_NOT_INITIALIZED 116
468
+ #define PKCS7_R_CONTENT_AND_DATA_PRESENT 118
469
+ #define PKCS7_R_CTRL_ERROR 152
470
+ #define PKCS7_R_DECODE_ERROR 130
471
+ #define PKCS7_R_DECRYPTED_KEY_IS_WRONG_LENGTH 100
472
+ #define PKCS7_R_DECRYPT_ERROR 119
473
+ #define PKCS7_R_DIGEST_FAILURE 101
474
+ #define PKCS7_R_ENCRYPTION_CTRL_FAILURE 149
475
+ #define PKCS7_R_ENCRYPTION_NOT_SUPPORTED_FOR_THIS_KEY_TYPE 150
476
+ #define PKCS7_R_ERROR_ADDING_RECIPIENT 120
477
+ #define PKCS7_R_ERROR_SETTING_CIPHER 121
478
+ #define PKCS7_R_INVALID_MIME_TYPE 131
479
+ #define PKCS7_R_INVALID_NULL_POINTER 143
480
+ #define PKCS7_R_MIME_NO_CONTENT_TYPE 132
481
+ #define PKCS7_R_MIME_PARSE_ERROR 133
482
+ #define PKCS7_R_MIME_SIG_PARSE_ERROR 134
483
+ #define PKCS7_R_MISSING_CERIPEND_INFO 103
484
+ #define PKCS7_R_NO_CONTENT 122
485
+ #define PKCS7_R_NO_CONTENT_TYPE 135
486
+ #define PKCS7_R_NO_DEFAULT_DIGEST 151
487
+ #define PKCS7_R_NO_MATCHING_DIGEST_TYPE_FOUND 154
488
+ #define PKCS7_R_NO_MULTIPART_BODY_FAILURE 136
489
+ #define PKCS7_R_NO_MULTIPART_BOUNDARY 137
490
+ #define PKCS7_R_NO_RECIPIENT_MATCHES_CERTIFICATE 115
491
+ #define PKCS7_R_NO_RECIPIENT_MATCHES_KEY 146
492
+ #define PKCS7_R_NO_SIGNATURES_ON_DATA 123
493
+ #define PKCS7_R_NO_SIGNERS 142
494
+ #define PKCS7_R_NO_SIG_CONTENT_TYPE 138
495
+ #define PKCS7_R_OPERATION_NOT_SUPPORTED_ON_THIS_TYPE 104
496
+ #define PKCS7_R_PKCS7_ADD_SIGNATURE_ERROR 124
497
+ #define PKCS7_R_PKCS7_ADD_SIGNER_ERROR 153
498
+ #define PKCS7_R_PKCS7_DATAFINAL 126
499
+ #define PKCS7_R_PKCS7_DATAFINAL_ERROR 125
500
+ #define PKCS7_R_PKCS7_DATASIGN 145
501
+ #define PKCS7_R_PKCS7_PARSE_ERROR 139
502
+ #define PKCS7_R_PKCS7_SIG_PARSE_ERROR 140
503
+ #define PKCS7_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 127
504
+ #define PKCS7_R_SIGNATURE_FAILURE 105
505
+ #define PKCS7_R_SIGNER_CERTIFICATE_NOT_FOUND 128
506
+ #define PKCS7_R_SIGNING_CTRL_FAILURE 147
507
+ #define PKCS7_R_SIGNING_NOT_SUPPORTED_FOR_THIS_KEY_TYPE 148
508
+ #define PKCS7_R_SIG_INVALID_MIME_TYPE 141
509
+ #define PKCS7_R_SMIME_TEXT_ERROR 129
510
+ #define PKCS7_R_UNABLE_TO_FIND_CERTIFICATE 106
511
+ #define PKCS7_R_UNABLE_TO_FIND_MEM_BIO 107
512
+ #define PKCS7_R_UNABLE_TO_FIND_MESSAGE_DIGEST 108
513
+ #define PKCS7_R_UNKNOWN_DIGEST_TYPE 109
514
+ #define PKCS7_R_UNKNOWN_OPERATION 110
515
+ #define PKCS7_R_UNSUPPORTED_CIPHER_TYPE 111
516
+ #define PKCS7_R_UNSUPPORTED_CONTENT_TYPE 112
517
+ #define PKCS7_R_WRONG_CONTENT_TYPE 113
518
+ #define PKCS7_R_WRONG_PKCS7_TYPE 114
519
+
520
+ #ifdef __cplusplus
521
+ }
522
+ #endif
523
+ #endif
@@ -0,0 +1,45 @@
1
+ /* $OpenBSD: poly1305.h,v 1.4 2025/01/25 17:59:44 tb Exp $ */
2
+ /*
3
+ * Copyright (c) 2014 Joel Sing <jsing@openbsd.org>
4
+ *
5
+ * Permission to use, copy, modify, and distribute this software for any
6
+ * purpose with or without fee is hereby granted, provided that the above
7
+ * copyright notice and this permission notice appear in all copies.
8
+ *
9
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16
+ */
17
+
18
+ #ifndef HEADER_POLY1305_H
19
+ #define HEADER_POLY1305_H
20
+
21
+ #include <openssl/opensslconf.h>
22
+
23
+ #include <stddef.h>
24
+
25
+ #ifdef __cplusplus
26
+ extern "C" {
27
+ #endif
28
+
29
+ typedef struct poly1305_context {
30
+ size_t aligner;
31
+ unsigned char opaque[136];
32
+ } poly1305_context;
33
+
34
+ typedef struct poly1305_context poly1305_state;
35
+
36
+ void CRYPTO_poly1305_init(poly1305_context *ctx, const unsigned char key[32]);
37
+ void CRYPTO_poly1305_update(poly1305_context *ctx, const unsigned char *in,
38
+ size_t len);
39
+ void CRYPTO_poly1305_finish(poly1305_context *ctx, unsigned char mac[16]);
40
+
41
+ #ifdef __cplusplus
42
+ }
43
+ #endif
44
+
45
+ #endif /* HEADER_POLY1305_H */
@@ -0,0 +1,54 @@
1
+ /* $OpenBSD: posix_time.h,v 1.1 2024/02/18 16:28:38 tb Exp $ */
2
+ /*
3
+ * Copyright (c) 2022, Google Inc.
4
+ *
5
+ * Permission to use, copy, modify, and/or distribute this software for any
6
+ * purpose with or without fee is hereby granted, provided that the above
7
+ * copyright notice and this permission notice appear in all copies.
8
+ *
9
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
12
+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
14
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
15
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16
+ */
17
+
18
+ #ifndef OPENSSL_HEADER_POSIX_TIME_H
19
+ #define OPENSSL_HEADER_POSIX_TIME_H
20
+
21
+ #include <stdint.h>
22
+ #include <time.h>
23
+
24
+ #if defined(__cplusplus)
25
+ extern "C" {
26
+ #endif
27
+
28
+ /*
29
+ * OPENSSL_posix_to_tm converts a int64_t POSIX time value in |time|, which must
30
+ * be in the range of year 0000 to 9999, to a broken out time value in |tm|. It
31
+ * returns one on success and zero on error.
32
+ */
33
+ int OPENSSL_posix_to_tm(int64_t time, struct tm *out_tm);
34
+
35
+ /*
36
+ * OPENSSL_tm_to_posix converts a time value between the years 0 and 9999 in
37
+ * |tm| to a POSIX time value in |out|. One is returned on success, zero is
38
+ * returned on failure. It is a failure if |tm| contains out of range values.
39
+ */
40
+ int OPENSSL_tm_to_posix(const struct tm *tm, int64_t *out);
41
+
42
+ /*
43
+ * OPENSSL_timegm converts a time value between the years 0 and 9999 in |tm| to
44
+ * a time_t value in |out|. One is returned on success, zero is returned on
45
+ * failure. It is a failure if the converted time can not be represented in a
46
+ * time_t, or if the tm contains out of range values.
47
+ */
48
+ int OPENSSL_timegm(const struct tm *tm, time_t *out);
49
+
50
+ #if defined(__cplusplus)
51
+ } /* extern C */
52
+ #endif
53
+
54
+ #endif /* OPENSSL_HEADER_POSIX_TIME_H */