motion-openssl 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (88) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +53 -0
  3. data/lib/OpenSSL/aes.h +149 -0
  4. data/lib/OpenSSL/asn1.h +1419 -0
  5. data/lib/OpenSSL/asn1_mac.h +579 -0
  6. data/lib/OpenSSL/asn1t.h +973 -0
  7. data/lib/OpenSSL/bio.h +879 -0
  8. data/lib/OpenSSL/blowfish.h +130 -0
  9. data/lib/OpenSSL/bn.h +939 -0
  10. data/lib/OpenSSL/buffer.h +125 -0
  11. data/lib/OpenSSL/camellia.h +132 -0
  12. data/lib/OpenSSL/cast.h +107 -0
  13. data/lib/OpenSSL/cmac.h +82 -0
  14. data/lib/OpenSSL/cms.h +555 -0
  15. data/lib/OpenSSL/comp.h +79 -0
  16. data/lib/OpenSSL/conf.h +267 -0
  17. data/lib/OpenSSL/conf_api.h +89 -0
  18. data/lib/OpenSSL/crypto.h +661 -0
  19. data/lib/OpenSSL/des.h +257 -0
  20. data/lib/OpenSSL/des_old.h +497 -0
  21. data/lib/OpenSSL/dh.h +392 -0
  22. data/lib/OpenSSL/dsa.h +332 -0
  23. data/lib/OpenSSL/dso.h +451 -0
  24. data/lib/OpenSSL/dtls1.h +272 -0
  25. data/lib/OpenSSL/e_os2.h +328 -0
  26. data/lib/OpenSSL/ebcdic.h +26 -0
  27. data/lib/OpenSSL/ec.h +1282 -0
  28. data/lib/OpenSSL/ecdh.h +134 -0
  29. data/lib/OpenSSL/ecdsa.h +335 -0
  30. data/lib/OpenSSL/engine.h +960 -0
  31. data/lib/OpenSSL/err.h +389 -0
  32. data/lib/OpenSSL/evp.h +1534 -0
  33. data/lib/OpenSSL/hmac.h +109 -0
  34. data/lib/OpenSSL/idea.h +105 -0
  35. data/lib/OpenSSL/krb5_asn.h +240 -0
  36. data/lib/OpenSSL/kssl.h +197 -0
  37. data/lib/OpenSSL/lhash.h +240 -0
  38. data/lib/OpenSSL/libcrypto-tvOS.a +0 -0
  39. data/lib/OpenSSL/libcrypto.a +0 -0
  40. data/lib/OpenSSL/libssl-tvOS.a +0 -0
  41. data/lib/OpenSSL/libssl.a +0 -0
  42. data/lib/OpenSSL/md4.h +119 -0
  43. data/lib/OpenSSL/md5.h +119 -0
  44. data/lib/OpenSSL/mdc2.h +94 -0
  45. data/lib/OpenSSL/modes.h +163 -0
  46. data/lib/OpenSSL/obj_mac.h +4194 -0
  47. data/lib/OpenSSL/objects.h +1143 -0
  48. data/lib/OpenSSL/ocsp.h +637 -0
  49. data/lib/OpenSSL/opensslconf.h +262 -0
  50. data/lib/OpenSSL/opensslv.h +97 -0
  51. data/lib/OpenSSL/ossl_typ.h +211 -0
  52. data/lib/OpenSSL/pem.h +615 -0
  53. data/lib/OpenSSL/pem2.h +70 -0
  54. data/lib/OpenSSL/pkcs12.h +342 -0
  55. data/lib/OpenSSL/pkcs7.h +481 -0
  56. data/lib/OpenSSL/pqueue.h +99 -0
  57. data/lib/OpenSSL/rand.h +150 -0
  58. data/lib/OpenSSL/rc2.h +103 -0
  59. data/lib/OpenSSL/rc4.h +88 -0
  60. data/lib/OpenSSL/ripemd.h +105 -0
  61. data/lib/OpenSSL/rsa.h +664 -0
  62. data/lib/OpenSSL/safestack.h +2672 -0
  63. data/lib/OpenSSL/seed.h +149 -0
  64. data/lib/OpenSSL/sha.h +214 -0
  65. data/lib/OpenSSL/srp.h +169 -0
  66. data/lib/OpenSSL/srtp.h +147 -0
  67. data/lib/OpenSSL/ssl.h +3168 -0
  68. data/lib/OpenSSL/ssl2.h +265 -0
  69. data/lib/OpenSSL/ssl23.h +84 -0
  70. data/lib/OpenSSL/ssl3.h +774 -0
  71. data/lib/OpenSSL/stack.h +107 -0
  72. data/lib/OpenSSL/symhacks.h +516 -0
  73. data/lib/OpenSSL/tls1.h +810 -0
  74. data/lib/OpenSSL/ts.h +862 -0
  75. data/lib/OpenSSL/txt_db.h +112 -0
  76. data/lib/OpenSSL/ui.h +415 -0
  77. data/lib/OpenSSL/ui_compat.h +88 -0
  78. data/lib/OpenSSL/whrlpool.h +41 -0
  79. data/lib/OpenSSL/x509.h +1327 -0
  80. data/lib/OpenSSL/x509_vfy.h +647 -0
  81. data/lib/OpenSSL/x509v3.h +1055 -0
  82. data/lib/motion-openssl.rb +8 -0
  83. data/lib/motion-openssl/hooks.rb +8 -0
  84. data/lib/motion-openssl/hooks/openssl.rb +20 -0
  85. data/lib/motion-openssl/version.rb +5 -0
  86. data/motion/openssl.rb +1 -0
  87. data/motion/openssl/random.rb +18 -0
  88. metadata +229 -0
@@ -0,0 +1,125 @@
1
+ /* crypto/buffer/buffer.h */
2
+ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3
+ * All rights reserved.
4
+ *
5
+ * This package is an SSL implementation written
6
+ * by Eric Young (eay@cryptsoft.com).
7
+ * The implementation was written so as to conform with Netscapes SSL.
8
+ *
9
+ * This library is free for commercial and non-commercial use as long as
10
+ * the following conditions are aheared to. The following conditions
11
+ * apply to all code found in this distribution, be it the RC4, RSA,
12
+ * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13
+ * included with this distribution is covered by the same copyright terms
14
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15
+ *
16
+ * Copyright remains Eric Young's, and as such any Copyright notices in
17
+ * the code are not to be removed.
18
+ * If this package is used in a product, Eric Young should be given attribution
19
+ * as the author of the parts of the library used.
20
+ * This can be in the form of a textual message at program startup or
21
+ * in documentation (online or textual) provided with the package.
22
+ *
23
+ * Redistribution and use in source and binary forms, with or without
24
+ * modification, are permitted provided that the following conditions
25
+ * are met:
26
+ * 1. Redistributions of source code must retain the copyright
27
+ * notice, this list of conditions and the following disclaimer.
28
+ * 2. Redistributions in binary form must reproduce the above copyright
29
+ * notice, this list of conditions and the following disclaimer in the
30
+ * documentation and/or other materials provided with the distribution.
31
+ * 3. All advertising materials mentioning features or use of this software
32
+ * must display the following acknowledgement:
33
+ * "This product includes cryptographic software written by
34
+ * Eric Young (eay@cryptsoft.com)"
35
+ * The word 'cryptographic' can be left out if the rouines from the library
36
+ * being used are not cryptographic related :-).
37
+ * 4. If you include any Windows specific code (or a derivative thereof) from
38
+ * the apps directory (application code) you must include an acknowledgement:
39
+ * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40
+ *
41
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51
+ * SUCH DAMAGE.
52
+ *
53
+ * The licence and distribution terms for any publically available version or
54
+ * derivative of this code cannot be changed. i.e. this code cannot simply be
55
+ * copied and put under another distribution licence
56
+ * [including the GNU Public Licence.]
57
+ */
58
+
59
+ #ifndef HEADER_BUFFER_H
60
+ # define HEADER_BUFFER_H
61
+
62
+ # include <openssl/ossl_typ.h>
63
+
64
+ #ifdef __cplusplus
65
+ extern "C" {
66
+ #endif
67
+
68
+ # include <stddef.h>
69
+
70
+ # if !defined(NO_SYS_TYPES_H)
71
+ # include <sys/types.h>
72
+ # endif
73
+
74
+ /* Already declared in ossl_typ.h */
75
+ /* typedef struct buf_mem_st BUF_MEM; */
76
+
77
+ struct buf_mem_st {
78
+ size_t length; /* current number of bytes */
79
+ char *data;
80
+ size_t max; /* size of buffer */
81
+ };
82
+
83
+ BUF_MEM *BUF_MEM_new(void);
84
+ void BUF_MEM_free(BUF_MEM *a);
85
+ int BUF_MEM_grow(BUF_MEM *str, size_t len);
86
+ int BUF_MEM_grow_clean(BUF_MEM *str, size_t len);
87
+ size_t BUF_strnlen(const char *str, size_t maxlen);
88
+ char *BUF_strdup(const char *str);
89
+
90
+ /*
91
+ * Like strndup, but in addition, explicitly guarantees to never read past the
92
+ * first |siz| bytes of |str|.
93
+ */
94
+ char *BUF_strndup(const char *str, size_t siz);
95
+
96
+ void *BUF_memdup(const void *data, size_t siz);
97
+ void BUF_reverse(unsigned char *out, const unsigned char *in, size_t siz);
98
+
99
+ /* safe string functions */
100
+ size_t BUF_strlcpy(char *dst, const char *src, size_t siz);
101
+ size_t BUF_strlcat(char *dst, const char *src, size_t siz);
102
+
103
+ /* BEGIN ERROR CODES */
104
+ /*
105
+ * The following lines are auto generated by the script mkerr.pl. Any changes
106
+ * made after this point may be overwritten when the script is next run.
107
+ */
108
+ void ERR_load_BUF_strings(void);
109
+
110
+ /* Error codes for the BUF functions. */
111
+
112
+ /* Function codes. */
113
+ # define BUF_F_BUF_MEMDUP 103
114
+ # define BUF_F_BUF_MEM_GROW 100
115
+ # define BUF_F_BUF_MEM_GROW_CLEAN 105
116
+ # define BUF_F_BUF_MEM_NEW 101
117
+ # define BUF_F_BUF_STRDUP 102
118
+ # define BUF_F_BUF_STRNDUP 104
119
+
120
+ /* Reason codes. */
121
+
122
+ #ifdef __cplusplus
123
+ }
124
+ #endif
125
+ #endif
@@ -0,0 +1,132 @@
1
+ /* crypto/camellia/camellia.h -*- mode:C; c-file-style: "eay" -*- */
2
+ /* ====================================================================
3
+ * Copyright (c) 2006 The OpenSSL Project. All rights reserved.
4
+ *
5
+ * Redistribution and use in source and binary forms, with or without
6
+ * modification, are permitted provided that the following conditions
7
+ * are met:
8
+ *
9
+ * 1. Redistributions of source code must retain the above copyright
10
+ * notice, this list of conditions and the following disclaimer.
11
+ *
12
+ * 2. Redistributions in binary form must reproduce the above copyright
13
+ * notice, this list of conditions and the following disclaimer in
14
+ * the documentation and/or other materials provided with the
15
+ * distribution.
16
+ *
17
+ * 3. All advertising materials mentioning features or use of this
18
+ * software must display the following acknowledgment:
19
+ * "This product includes software developed by the OpenSSL Project
20
+ * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
21
+ *
22
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
23
+ * endorse or promote products derived from this software without
24
+ * prior written permission. For written permission, please contact
25
+ * openssl-core@openssl.org.
26
+ *
27
+ * 5. Products derived from this software may not be called "OpenSSL"
28
+ * nor may "OpenSSL" appear in their names without prior written
29
+ * permission of the OpenSSL Project.
30
+ *
31
+ * 6. Redistributions of any form whatsoever must retain the following
32
+ * acknowledgment:
33
+ * "This product includes software developed by the OpenSSL Project
34
+ * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
35
+ *
36
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
37
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
38
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
39
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
40
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
41
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
42
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
43
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
44
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
45
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
46
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
47
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
48
+ * ====================================================================
49
+ *
50
+ */
51
+
52
+ #ifndef HEADER_CAMELLIA_H
53
+ # define HEADER_CAMELLIA_H
54
+
55
+ # include <openssl/opensslconf.h>
56
+
57
+ # ifdef OPENSSL_NO_CAMELLIA
58
+ # error CAMELLIA is disabled.
59
+ # endif
60
+
61
+ # include <stddef.h>
62
+
63
+ # define CAMELLIA_ENCRYPT 1
64
+ # define CAMELLIA_DECRYPT 0
65
+
66
+ /*
67
+ * Because array size can't be a const in C, the following two are macros.
68
+ * Both sizes are in bytes.
69
+ */
70
+
71
+ #ifdef __cplusplus
72
+ extern "C" {
73
+ #endif
74
+
75
+ /* This should be a hidden type, but EVP requires that the size be known */
76
+
77
+ # define CAMELLIA_BLOCK_SIZE 16
78
+ # define CAMELLIA_TABLE_BYTE_LEN 272
79
+ # define CAMELLIA_TABLE_WORD_LEN (CAMELLIA_TABLE_BYTE_LEN / 4)
80
+
81
+ typedef unsigned int KEY_TABLE_TYPE[CAMELLIA_TABLE_WORD_LEN]; /* to match
82
+ * with WORD */
83
+
84
+ struct camellia_key_st {
85
+ union {
86
+ double d; /* ensures 64-bit align */
87
+ KEY_TABLE_TYPE rd_key;
88
+ } u;
89
+ int grand_rounds;
90
+ };
91
+ typedef struct camellia_key_st CAMELLIA_KEY;
92
+
93
+ # ifdef OPENSSL_FIPS
94
+ int private_Camellia_set_key(const unsigned char *userKey, const int bits,
95
+ CAMELLIA_KEY *key);
96
+ # endif
97
+ int Camellia_set_key(const unsigned char *userKey, const int bits,
98
+ CAMELLIA_KEY *key);
99
+
100
+ void Camellia_encrypt(const unsigned char *in, unsigned char *out,
101
+ const CAMELLIA_KEY *key);
102
+ void Camellia_decrypt(const unsigned char *in, unsigned char *out,
103
+ const CAMELLIA_KEY *key);
104
+
105
+ void Camellia_ecb_encrypt(const unsigned char *in, unsigned char *out,
106
+ const CAMELLIA_KEY *key, const int enc);
107
+ void Camellia_cbc_encrypt(const unsigned char *in, unsigned char *out,
108
+ size_t length, const CAMELLIA_KEY *key,
109
+ unsigned char *ivec, const int enc);
110
+ void Camellia_cfb128_encrypt(const unsigned char *in, unsigned char *out,
111
+ size_t length, const CAMELLIA_KEY *key,
112
+ unsigned char *ivec, int *num, const int enc);
113
+ void Camellia_cfb1_encrypt(const unsigned char *in, unsigned char *out,
114
+ size_t length, const CAMELLIA_KEY *key,
115
+ unsigned char *ivec, int *num, const int enc);
116
+ void Camellia_cfb8_encrypt(const unsigned char *in, unsigned char *out,
117
+ size_t length, const CAMELLIA_KEY *key,
118
+ unsigned char *ivec, int *num, const int enc);
119
+ void Camellia_ofb128_encrypt(const unsigned char *in, unsigned char *out,
120
+ size_t length, const CAMELLIA_KEY *key,
121
+ unsigned char *ivec, int *num);
122
+ void Camellia_ctr128_encrypt(const unsigned char *in, unsigned char *out,
123
+ size_t length, const CAMELLIA_KEY *key,
124
+ unsigned char ivec[CAMELLIA_BLOCK_SIZE],
125
+ unsigned char ecount_buf[CAMELLIA_BLOCK_SIZE],
126
+ unsigned int *num);
127
+
128
+ #ifdef __cplusplus
129
+ }
130
+ #endif
131
+
132
+ #endif /* !HEADER_Camellia_H */
@@ -0,0 +1,107 @@
1
+ /* crypto/cast/cast.h */
2
+ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3
+ * All rights reserved.
4
+ *
5
+ * This package is an SSL implementation written
6
+ * by Eric Young (eay@cryptsoft.com).
7
+ * The implementation was written so as to conform with Netscapes SSL.
8
+ *
9
+ * This library is free for commercial and non-commercial use as long as
10
+ * the following conditions are aheared to. The following conditions
11
+ * apply to all code found in this distribution, be it the RC4, RSA,
12
+ * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13
+ * included with this distribution is covered by the same copyright terms
14
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15
+ *
16
+ * Copyright remains Eric Young's, and as such any Copyright notices in
17
+ * the code are not to be removed.
18
+ * If this package is used in a product, Eric Young should be given attribution
19
+ * as the author of the parts of the library used.
20
+ * This can be in the form of a textual message at program startup or
21
+ * in documentation (online or textual) provided with the package.
22
+ *
23
+ * Redistribution and use in source and binary forms, with or without
24
+ * modification, are permitted provided that the following conditions
25
+ * are met:
26
+ * 1. Redistributions of source code must retain the copyright
27
+ * notice, this list of conditions and the following disclaimer.
28
+ * 2. Redistributions in binary form must reproduce the above copyright
29
+ * notice, this list of conditions and the following disclaimer in the
30
+ * documentation and/or other materials provided with the distribution.
31
+ * 3. All advertising materials mentioning features or use of this software
32
+ * must display the following acknowledgement:
33
+ * "This product includes cryptographic software written by
34
+ * Eric Young (eay@cryptsoft.com)"
35
+ * The word 'cryptographic' can be left out if the rouines from the library
36
+ * being used are not cryptographic related :-).
37
+ * 4. If you include any Windows specific code (or a derivative thereof) from
38
+ * the apps directory (application code) you must include an acknowledgement:
39
+ * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40
+ *
41
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51
+ * SUCH DAMAGE.
52
+ *
53
+ * The licence and distribution terms for any publically available version or
54
+ * derivative of this code cannot be changed. i.e. this code cannot simply be
55
+ * copied and put under another distribution licence
56
+ * [including the GNU Public Licence.]
57
+ */
58
+
59
+ #ifndef HEADER_CAST_H
60
+ # define HEADER_CAST_H
61
+
62
+ #ifdef __cplusplus
63
+ extern "C" {
64
+ #endif
65
+
66
+ # include <openssl/opensslconf.h>
67
+
68
+ # ifdef OPENSSL_NO_CAST
69
+ # error CAST is disabled.
70
+ # endif
71
+
72
+ # define CAST_ENCRYPT 1
73
+ # define CAST_DECRYPT 0
74
+
75
+ # define CAST_LONG unsigned int
76
+
77
+ # define CAST_BLOCK 8
78
+ # define CAST_KEY_LENGTH 16
79
+
80
+ typedef struct cast_key_st {
81
+ CAST_LONG data[32];
82
+ int short_key; /* Use reduced rounds for short key */
83
+ } CAST_KEY;
84
+
85
+ # ifdef OPENSSL_FIPS
86
+ void private_CAST_set_key(CAST_KEY *key, int len, const unsigned char *data);
87
+ # endif
88
+ void CAST_set_key(CAST_KEY *key, int len, const unsigned char *data);
89
+ void CAST_ecb_encrypt(const unsigned char *in, unsigned char *out,
90
+ const CAST_KEY *key, int enc);
91
+ void CAST_encrypt(CAST_LONG *data, const CAST_KEY *key);
92
+ void CAST_decrypt(CAST_LONG *data, const CAST_KEY *key);
93
+ void CAST_cbc_encrypt(const unsigned char *in, unsigned char *out,
94
+ long length, const CAST_KEY *ks, unsigned char *iv,
95
+ int enc);
96
+ void CAST_cfb64_encrypt(const unsigned char *in, unsigned char *out,
97
+ long length, const CAST_KEY *schedule,
98
+ unsigned char *ivec, int *num, int enc);
99
+ void CAST_ofb64_encrypt(const unsigned char *in, unsigned char *out,
100
+ long length, const CAST_KEY *schedule,
101
+ unsigned char *ivec, int *num);
102
+
103
+ #ifdef __cplusplus
104
+ }
105
+ #endif
106
+
107
+ #endif
@@ -0,0 +1,82 @@
1
+ /* crypto/cmac/cmac.h */
2
+ /*
3
+ * Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
4
+ * project.
5
+ */
6
+ /* ====================================================================
7
+ * Copyright (c) 2010 The OpenSSL Project. All rights reserved.
8
+ *
9
+ * Redistribution and use in source and binary forms, with or without
10
+ * modification, are permitted provided that the following conditions
11
+ * are met:
12
+ *
13
+ * 1. Redistributions of source code must retain the above copyright
14
+ * notice, this list of conditions and the following disclaimer.
15
+ *
16
+ * 2. Redistributions in binary form must reproduce the above copyright
17
+ * notice, this list of conditions and the following disclaimer in
18
+ * the documentation and/or other materials provided with the
19
+ * distribution.
20
+ *
21
+ * 3. All advertising materials mentioning features or use of this
22
+ * software must display the following acknowledgment:
23
+ * "This product includes software developed by the OpenSSL Project
24
+ * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
25
+ *
26
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
27
+ * endorse or promote products derived from this software without
28
+ * prior written permission. For written permission, please contact
29
+ * licensing@OpenSSL.org.
30
+ *
31
+ * 5. Products derived from this software may not be called "OpenSSL"
32
+ * nor may "OpenSSL" appear in their names without prior written
33
+ * permission of the OpenSSL Project.
34
+ *
35
+ * 6. Redistributions of any form whatsoever must retain the following
36
+ * acknowledgment:
37
+ * "This product includes software developed by the OpenSSL Project
38
+ * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
39
+ *
40
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
41
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
42
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
43
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
44
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
45
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
46
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
47
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
49
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
50
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
51
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
52
+ * ====================================================================
53
+ */
54
+
55
+ #ifndef HEADER_CMAC_H
56
+ # define HEADER_CMAC_H
57
+
58
+ #ifdef __cplusplus
59
+ extern "C" {
60
+ #endif
61
+
62
+ # include <openssl/evp.h>
63
+
64
+ /* Opaque */
65
+ typedef struct CMAC_CTX_st CMAC_CTX;
66
+
67
+ CMAC_CTX *CMAC_CTX_new(void);
68
+ void CMAC_CTX_cleanup(CMAC_CTX *ctx);
69
+ void CMAC_CTX_free(CMAC_CTX *ctx);
70
+ EVP_CIPHER_CTX *CMAC_CTX_get0_cipher_ctx(CMAC_CTX *ctx);
71
+ int CMAC_CTX_copy(CMAC_CTX *out, const CMAC_CTX *in);
72
+
73
+ int CMAC_Init(CMAC_CTX *ctx, const void *key, size_t keylen,
74
+ const EVP_CIPHER *cipher, ENGINE *impl);
75
+ int CMAC_Update(CMAC_CTX *ctx, const void *data, size_t dlen);
76
+ int CMAC_Final(CMAC_CTX *ctx, unsigned char *out, size_t *poutlen);
77
+ int CMAC_resume(CMAC_CTX *ctx);
78
+
79
+ #ifdef __cplusplus
80
+ }
81
+ #endif
82
+ #endif
@@ -0,0 +1,555 @@
1
+ /* crypto/cms/cms.h */
2
+ /*
3
+ * Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
4
+ * project.
5
+ */
6
+ /* ====================================================================
7
+ * Copyright (c) 2008 The OpenSSL Project. All rights reserved.
8
+ *
9
+ * Redistribution and use in source and binary forms, with or without
10
+ * modification, are permitted provided that the following conditions
11
+ * are met:
12
+ *
13
+ * 1. Redistributions of source code must retain the above copyright
14
+ * notice, this list of conditions and the following disclaimer.
15
+ *
16
+ * 2. Redistributions in binary form must reproduce the above copyright
17
+ * notice, this list of conditions and the following disclaimer in
18
+ * the documentation and/or other materials provided with the
19
+ * distribution.
20
+ *
21
+ * 3. All advertising materials mentioning features or use of this
22
+ * software must display the following acknowledgment:
23
+ * "This product includes software developed by the OpenSSL Project
24
+ * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
25
+ *
26
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
27
+ * endorse or promote products derived from this software without
28
+ * prior written permission. For written permission, please contact
29
+ * licensing@OpenSSL.org.
30
+ *
31
+ * 5. Products derived from this software may not be called "OpenSSL"
32
+ * nor may "OpenSSL" appear in their names without prior written
33
+ * permission of the OpenSSL Project.
34
+ *
35
+ * 6. Redistributions of any form whatsoever must retain the following
36
+ * acknowledgment:
37
+ * "This product includes software developed by the OpenSSL Project
38
+ * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
39
+ *
40
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
41
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
42
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
43
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
44
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
45
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
46
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
47
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
49
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
50
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
51
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
52
+ * ====================================================================
53
+ */
54
+
55
+ #ifndef HEADER_CMS_H
56
+ # define HEADER_CMS_H
57
+
58
+ # include <openssl/x509.h>
59
+
60
+ # ifdef OPENSSL_NO_CMS
61
+ # error CMS is disabled.
62
+ # endif
63
+
64
+ #ifdef __cplusplus
65
+ extern "C" {
66
+ #endif
67
+
68
+ typedef struct CMS_ContentInfo_st CMS_ContentInfo;
69
+ typedef struct CMS_SignerInfo_st CMS_SignerInfo;
70
+ typedef struct CMS_CertificateChoices CMS_CertificateChoices;
71
+ typedef struct CMS_RevocationInfoChoice_st CMS_RevocationInfoChoice;
72
+ typedef struct CMS_RecipientInfo_st CMS_RecipientInfo;
73
+ typedef struct CMS_ReceiptRequest_st CMS_ReceiptRequest;
74
+ typedef struct CMS_Receipt_st CMS_Receipt;
75
+ typedef struct CMS_RecipientEncryptedKey_st CMS_RecipientEncryptedKey;
76
+ typedef struct CMS_OtherKeyAttribute_st CMS_OtherKeyAttribute;
77
+
78
+ DECLARE_STACK_OF(CMS_SignerInfo)
79
+ DECLARE_STACK_OF(GENERAL_NAMES)
80
+ DECLARE_STACK_OF(CMS_RecipientEncryptedKey)
81
+ DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo)
82
+ DECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest)
83
+ DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo)
84
+
85
+ # define CMS_SIGNERINFO_ISSUER_SERIAL 0
86
+ # define CMS_SIGNERINFO_KEYIDENTIFIER 1
87
+
88
+ # define CMS_RECIPINFO_NONE -1
89
+ # define CMS_RECIPINFO_TRANS 0
90
+ # define CMS_RECIPINFO_AGREE 1
91
+ # define CMS_RECIPINFO_KEK 2
92
+ # define CMS_RECIPINFO_PASS 3
93
+ # define CMS_RECIPINFO_OTHER 4
94
+
95
+ /* S/MIME related flags */
96
+
97
+ # define CMS_TEXT 0x1
98
+ # define CMS_NOCERTS 0x2
99
+ # define CMS_NO_CONTENT_VERIFY 0x4
100
+ # define CMS_NO_ATTR_VERIFY 0x8
101
+ # define CMS_NOSIGS \
102
+ (CMS_NO_CONTENT_VERIFY|CMS_NO_ATTR_VERIFY)
103
+ # define CMS_NOINTERN 0x10
104
+ # define CMS_NO_SIGNER_CERT_VERIFY 0x20
105
+ # define CMS_NOVERIFY 0x20
106
+ # define CMS_DETACHED 0x40
107
+ # define CMS_BINARY 0x80
108
+ # define CMS_NOATTR 0x100
109
+ # define CMS_NOSMIMECAP 0x200
110
+ # define CMS_NOOLDMIMETYPE 0x400
111
+ # define CMS_CRLFEOL 0x800
112
+ # define CMS_STREAM 0x1000
113
+ # define CMS_NOCRL 0x2000
114
+ # define CMS_PARTIAL 0x4000
115
+ # define CMS_REUSE_DIGEST 0x8000
116
+ # define CMS_USE_KEYID 0x10000
117
+ # define CMS_DEBUG_DECRYPT 0x20000
118
+ # define CMS_KEY_PARAM 0x40000
119
+
120
+ const ASN1_OBJECT *CMS_get0_type(CMS_ContentInfo *cms);
121
+
122
+ BIO *CMS_dataInit(CMS_ContentInfo *cms, BIO *icont);
123
+ int CMS_dataFinal(CMS_ContentInfo *cms, BIO *bio);
124
+
125
+ ASN1_OCTET_STRING **CMS_get0_content(CMS_ContentInfo *cms);
126
+ int CMS_is_detached(CMS_ContentInfo *cms);
127
+ int CMS_set_detached(CMS_ContentInfo *cms, int detached);
128
+
129
+ # ifdef HEADER_PEM_H
130
+ DECLARE_PEM_rw_const(CMS, CMS_ContentInfo)
131
+ # endif
132
+ int CMS_stream(unsigned char ***boundary, CMS_ContentInfo *cms);
133
+ CMS_ContentInfo *d2i_CMS_bio(BIO *bp, CMS_ContentInfo **cms);
134
+ int i2d_CMS_bio(BIO *bp, CMS_ContentInfo *cms);
135
+
136
+ BIO *BIO_new_CMS(BIO *out, CMS_ContentInfo *cms);
137
+ int i2d_CMS_bio_stream(BIO *out, CMS_ContentInfo *cms, BIO *in, int flags);
138
+ int PEM_write_bio_CMS_stream(BIO *out, CMS_ContentInfo *cms, BIO *in,
139
+ int flags);
140
+ CMS_ContentInfo *SMIME_read_CMS(BIO *bio, BIO **bcont);
141
+ int SMIME_write_CMS(BIO *bio, CMS_ContentInfo *cms, BIO *data, int flags);
142
+
143
+ int CMS_final(CMS_ContentInfo *cms, BIO *data, BIO *dcont,
144
+ unsigned int flags);
145
+
146
+ CMS_ContentInfo *CMS_sign(X509 *signcert, EVP_PKEY *pkey,
147
+ STACK_OF(X509) *certs, BIO *data,
148
+ unsigned int flags);
149
+
150
+ CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si,
151
+ X509 *signcert, EVP_PKEY *pkey,
152
+ STACK_OF(X509) *certs, unsigned int flags);
153
+
154
+ int CMS_data(CMS_ContentInfo *cms, BIO *out, unsigned int flags);
155
+ CMS_ContentInfo *CMS_data_create(BIO *in, unsigned int flags);
156
+
157
+ int CMS_digest_verify(CMS_ContentInfo *cms, BIO *dcont, BIO *out,
158
+ unsigned int flags);
159
+ CMS_ContentInfo *CMS_digest_create(BIO *in, const EVP_MD *md,
160
+ unsigned int flags);
161
+
162
+ int CMS_EncryptedData_decrypt(CMS_ContentInfo *cms,
163
+ const unsigned char *key, size_t keylen,
164
+ BIO *dcont, BIO *out, unsigned int flags);
165
+
166
+ CMS_ContentInfo *CMS_EncryptedData_encrypt(BIO *in, const EVP_CIPHER *cipher,
167
+ const unsigned char *key,
168
+ size_t keylen, unsigned int flags);
169
+
170
+ int CMS_EncryptedData_set1_key(CMS_ContentInfo *cms, const EVP_CIPHER *ciph,
171
+ const unsigned char *key, size_t keylen);
172
+
173
+ int CMS_verify(CMS_ContentInfo *cms, STACK_OF(X509) *certs,
174
+ X509_STORE *store, BIO *dcont, BIO *out, unsigned int flags);
175
+
176
+ int CMS_verify_receipt(CMS_ContentInfo *rcms, CMS_ContentInfo *ocms,
177
+ STACK_OF(X509) *certs,
178
+ X509_STORE *store, unsigned int flags);
179
+
180
+ STACK_OF(X509) *CMS_get0_signers(CMS_ContentInfo *cms);
181
+
182
+ CMS_ContentInfo *CMS_encrypt(STACK_OF(X509) *certs, BIO *in,
183
+ const EVP_CIPHER *cipher, unsigned int flags);
184
+
185
+ int CMS_decrypt(CMS_ContentInfo *cms, EVP_PKEY *pkey, X509 *cert,
186
+ BIO *dcont, BIO *out, unsigned int flags);
187
+
188
+ int CMS_decrypt_set1_pkey(CMS_ContentInfo *cms, EVP_PKEY *pk, X509 *cert);
189
+ int CMS_decrypt_set1_key(CMS_ContentInfo *cms,
190
+ unsigned char *key, size_t keylen,
191
+ unsigned char *id, size_t idlen);
192
+ int CMS_decrypt_set1_password(CMS_ContentInfo *cms,
193
+ unsigned char *pass, ossl_ssize_t passlen);
194
+
195
+ STACK_OF(CMS_RecipientInfo) *CMS_get0_RecipientInfos(CMS_ContentInfo *cms);
196
+ int CMS_RecipientInfo_type(CMS_RecipientInfo *ri);
197
+ EVP_PKEY_CTX *CMS_RecipientInfo_get0_pkey_ctx(CMS_RecipientInfo *ri);
198
+ CMS_ContentInfo *CMS_EnvelopedData_create(const EVP_CIPHER *cipher);
199
+ CMS_RecipientInfo *CMS_add1_recipient_cert(CMS_ContentInfo *cms,
200
+ X509 *recip, unsigned int flags);
201
+ int CMS_RecipientInfo_set0_pkey(CMS_RecipientInfo *ri, EVP_PKEY *pkey);
202
+ int CMS_RecipientInfo_ktri_cert_cmp(CMS_RecipientInfo *ri, X509 *cert);
203
+ int CMS_RecipientInfo_ktri_get0_algs(CMS_RecipientInfo *ri,
204
+ EVP_PKEY **pk, X509 **recip,
205
+ X509_ALGOR **palg);
206
+ int CMS_RecipientInfo_ktri_get0_signer_id(CMS_RecipientInfo *ri,
207
+ ASN1_OCTET_STRING **keyid,
208
+ X509_NAME **issuer,
209
+ ASN1_INTEGER **sno);
210
+
211
+ CMS_RecipientInfo *CMS_add0_recipient_key(CMS_ContentInfo *cms, int nid,
212
+ unsigned char *key, size_t keylen,
213
+ unsigned char *id, size_t idlen,
214
+ ASN1_GENERALIZEDTIME *date,
215
+ ASN1_OBJECT *otherTypeId,
216
+ ASN1_TYPE *otherType);
217
+
218
+ int CMS_RecipientInfo_kekri_get0_id(CMS_RecipientInfo *ri,
219
+ X509_ALGOR **palg,
220
+ ASN1_OCTET_STRING **pid,
221
+ ASN1_GENERALIZEDTIME **pdate,
222
+ ASN1_OBJECT **potherid,
223
+ ASN1_TYPE **pothertype);
224
+
225
+ int CMS_RecipientInfo_set0_key(CMS_RecipientInfo *ri,
226
+ unsigned char *key, size_t keylen);
227
+
228
+ int CMS_RecipientInfo_kekri_id_cmp(CMS_RecipientInfo *ri,
229
+ const unsigned char *id, size_t idlen);
230
+
231
+ int CMS_RecipientInfo_set0_password(CMS_RecipientInfo *ri,
232
+ unsigned char *pass,
233
+ ossl_ssize_t passlen);
234
+
235
+ CMS_RecipientInfo *CMS_add0_recipient_password(CMS_ContentInfo *cms,
236
+ int iter, int wrap_nid,
237
+ int pbe_nid,
238
+ unsigned char *pass,
239
+ ossl_ssize_t passlen,
240
+ const EVP_CIPHER *kekciph);
241
+
242
+ int CMS_RecipientInfo_decrypt(CMS_ContentInfo *cms, CMS_RecipientInfo *ri);
243
+ int CMS_RecipientInfo_encrypt(CMS_ContentInfo *cms, CMS_RecipientInfo *ri);
244
+
245
+ int CMS_uncompress(CMS_ContentInfo *cms, BIO *dcont, BIO *out,
246
+ unsigned int flags);
247
+ CMS_ContentInfo *CMS_compress(BIO *in, int comp_nid, unsigned int flags);
248
+
249
+ int CMS_set1_eContentType(CMS_ContentInfo *cms, const ASN1_OBJECT *oid);
250
+ const ASN1_OBJECT *CMS_get0_eContentType(CMS_ContentInfo *cms);
251
+
252
+ CMS_CertificateChoices *CMS_add0_CertificateChoices(CMS_ContentInfo *cms);
253
+ int CMS_add0_cert(CMS_ContentInfo *cms, X509 *cert);
254
+ int CMS_add1_cert(CMS_ContentInfo *cms, X509 *cert);
255
+ STACK_OF(X509) *CMS_get1_certs(CMS_ContentInfo *cms);
256
+
257
+ CMS_RevocationInfoChoice *CMS_add0_RevocationInfoChoice(CMS_ContentInfo *cms);
258
+ int CMS_add0_crl(CMS_ContentInfo *cms, X509_CRL *crl);
259
+ int CMS_add1_crl(CMS_ContentInfo *cms, X509_CRL *crl);
260
+ STACK_OF(X509_CRL) *CMS_get1_crls(CMS_ContentInfo *cms);
261
+
262
+ int CMS_SignedData_init(CMS_ContentInfo *cms);
263
+ CMS_SignerInfo *CMS_add1_signer(CMS_ContentInfo *cms,
264
+ X509 *signer, EVP_PKEY *pk, const EVP_MD *md,
265
+ unsigned int flags);
266
+ EVP_PKEY_CTX *CMS_SignerInfo_get0_pkey_ctx(CMS_SignerInfo *si);
267
+ EVP_MD_CTX *CMS_SignerInfo_get0_md_ctx(CMS_SignerInfo *si);
268
+ STACK_OF(CMS_SignerInfo) *CMS_get0_SignerInfos(CMS_ContentInfo *cms);
269
+
270
+ void CMS_SignerInfo_set1_signer_cert(CMS_SignerInfo *si, X509 *signer);
271
+ int CMS_SignerInfo_get0_signer_id(CMS_SignerInfo *si,
272
+ ASN1_OCTET_STRING **keyid,
273
+ X509_NAME **issuer, ASN1_INTEGER **sno);
274
+ int CMS_SignerInfo_cert_cmp(CMS_SignerInfo *si, X509 *cert);
275
+ int CMS_set1_signers_certs(CMS_ContentInfo *cms, STACK_OF(X509) *certs,
276
+ unsigned int flags);
277
+ void CMS_SignerInfo_get0_algs(CMS_SignerInfo *si, EVP_PKEY **pk,
278
+ X509 **signer, X509_ALGOR **pdig,
279
+ X509_ALGOR **psig);
280
+ ASN1_OCTET_STRING *CMS_SignerInfo_get0_signature(CMS_SignerInfo *si);
281
+ int CMS_SignerInfo_sign(CMS_SignerInfo *si);
282
+ int CMS_SignerInfo_verify(CMS_SignerInfo *si);
283
+ int CMS_SignerInfo_verify_content(CMS_SignerInfo *si, BIO *chain);
284
+
285
+ int CMS_add_smimecap(CMS_SignerInfo *si, STACK_OF(X509_ALGOR) *algs);
286
+ int CMS_add_simple_smimecap(STACK_OF(X509_ALGOR) **algs,
287
+ int algnid, int keysize);
288
+ int CMS_add_standard_smimecap(STACK_OF(X509_ALGOR) **smcap);
289
+
290
+ int CMS_signed_get_attr_count(const CMS_SignerInfo *si);
291
+ int CMS_signed_get_attr_by_NID(const CMS_SignerInfo *si, int nid,
292
+ int lastpos);
293
+ int CMS_signed_get_attr_by_OBJ(const CMS_SignerInfo *si, ASN1_OBJECT *obj,
294
+ int lastpos);
295
+ X509_ATTRIBUTE *CMS_signed_get_attr(const CMS_SignerInfo *si, int loc);
296
+ X509_ATTRIBUTE *CMS_signed_delete_attr(CMS_SignerInfo *si, int loc);
297
+ int CMS_signed_add1_attr(CMS_SignerInfo *si, X509_ATTRIBUTE *attr);
298
+ int CMS_signed_add1_attr_by_OBJ(CMS_SignerInfo *si,
299
+ const ASN1_OBJECT *obj, int type,
300
+ const void *bytes, int len);
301
+ int CMS_signed_add1_attr_by_NID(CMS_SignerInfo *si,
302
+ int nid, int type,
303
+ const void *bytes, int len);
304
+ int CMS_signed_add1_attr_by_txt(CMS_SignerInfo *si,
305
+ const char *attrname, int type,
306
+ const void *bytes, int len);
307
+ void *CMS_signed_get0_data_by_OBJ(CMS_SignerInfo *si, ASN1_OBJECT *oid,
308
+ int lastpos, int type);
309
+
310
+ int CMS_unsigned_get_attr_count(const CMS_SignerInfo *si);
311
+ int CMS_unsigned_get_attr_by_NID(const CMS_SignerInfo *si, int nid,
312
+ int lastpos);
313
+ int CMS_unsigned_get_attr_by_OBJ(const CMS_SignerInfo *si, ASN1_OBJECT *obj,
314
+ int lastpos);
315
+ X509_ATTRIBUTE *CMS_unsigned_get_attr(const CMS_SignerInfo *si, int loc);
316
+ X509_ATTRIBUTE *CMS_unsigned_delete_attr(CMS_SignerInfo *si, int loc);
317
+ int CMS_unsigned_add1_attr(CMS_SignerInfo *si, X509_ATTRIBUTE *attr);
318
+ int CMS_unsigned_add1_attr_by_OBJ(CMS_SignerInfo *si,
319
+ const ASN1_OBJECT *obj, int type,
320
+ const void *bytes, int len);
321
+ int CMS_unsigned_add1_attr_by_NID(CMS_SignerInfo *si,
322
+ int nid, int type,
323
+ const void *bytes, int len);
324
+ int CMS_unsigned_add1_attr_by_txt(CMS_SignerInfo *si,
325
+ const char *attrname, int type,
326
+ const void *bytes, int len);
327
+ void *CMS_unsigned_get0_data_by_OBJ(CMS_SignerInfo *si, ASN1_OBJECT *oid,
328
+ int lastpos, int type);
329
+
330
+ # ifdef HEADER_X509V3_H
331
+
332
+ int CMS_get1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest **prr);
333
+ CMS_ReceiptRequest *CMS_ReceiptRequest_create0(unsigned char *id, int idlen,
334
+ int allorfirst,
335
+ STACK_OF(GENERAL_NAMES)
336
+ *receiptList, STACK_OF(GENERAL_NAMES)
337
+ *receiptsTo);
338
+ int CMS_add1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest *rr);
339
+ void CMS_ReceiptRequest_get0_values(CMS_ReceiptRequest *rr,
340
+ ASN1_STRING **pcid,
341
+ int *pallorfirst,
342
+ STACK_OF(GENERAL_NAMES) **plist,
343
+ STACK_OF(GENERAL_NAMES) **prto);
344
+ # endif
345
+ int CMS_RecipientInfo_kari_get0_alg(CMS_RecipientInfo *ri,
346
+ X509_ALGOR **palg,
347
+ ASN1_OCTET_STRING **pukm);
348
+ STACK_OF(CMS_RecipientEncryptedKey)
349
+ *CMS_RecipientInfo_kari_get0_reks(CMS_RecipientInfo *ri);
350
+
351
+ int CMS_RecipientInfo_kari_get0_orig_id(CMS_RecipientInfo *ri,
352
+ X509_ALGOR **pubalg,
353
+ ASN1_BIT_STRING **pubkey,
354
+ ASN1_OCTET_STRING **keyid,
355
+ X509_NAME **issuer,
356
+ ASN1_INTEGER **sno);
357
+
358
+ int CMS_RecipientInfo_kari_orig_id_cmp(CMS_RecipientInfo *ri, X509 *cert);
359
+
360
+ int CMS_RecipientEncryptedKey_get0_id(CMS_RecipientEncryptedKey *rek,
361
+ ASN1_OCTET_STRING **keyid,
362
+ ASN1_GENERALIZEDTIME **tm,
363
+ CMS_OtherKeyAttribute **other,
364
+ X509_NAME **issuer, ASN1_INTEGER **sno);
365
+ int CMS_RecipientEncryptedKey_cert_cmp(CMS_RecipientEncryptedKey *rek,
366
+ X509 *cert);
367
+ int CMS_RecipientInfo_kari_set0_pkey(CMS_RecipientInfo *ri, EVP_PKEY *pk);
368
+ EVP_CIPHER_CTX *CMS_RecipientInfo_kari_get0_ctx(CMS_RecipientInfo *ri);
369
+ int CMS_RecipientInfo_kari_decrypt(CMS_ContentInfo *cms,
370
+ CMS_RecipientInfo *ri,
371
+ CMS_RecipientEncryptedKey *rek);
372
+
373
+ int CMS_SharedInfo_encode(unsigned char **pder, X509_ALGOR *kekalg,
374
+ ASN1_OCTET_STRING *ukm, int keylen);
375
+
376
+ /* BEGIN ERROR CODES */
377
+ /*
378
+ * The following lines are auto generated by the script mkerr.pl. Any changes
379
+ * made after this point may be overwritten when the script is next run.
380
+ */
381
+ void ERR_load_CMS_strings(void);
382
+
383
+ /* Error codes for the CMS functions. */
384
+
385
+ /* Function codes. */
386
+ # define CMS_F_CHECK_CONTENT 99
387
+ # define CMS_F_CMS_ADD0_CERT 164
388
+ # define CMS_F_CMS_ADD0_RECIPIENT_KEY 100
389
+ # define CMS_F_CMS_ADD0_RECIPIENT_PASSWORD 165
390
+ # define CMS_F_CMS_ADD1_RECEIPTREQUEST 158
391
+ # define CMS_F_CMS_ADD1_RECIPIENT_CERT 101
392
+ # define CMS_F_CMS_ADD1_SIGNER 102
393
+ # define CMS_F_CMS_ADD1_SIGNINGTIME 103
394
+ # define CMS_F_CMS_COMPRESS 104
395
+ # define CMS_F_CMS_COMPRESSEDDATA_CREATE 105
396
+ # define CMS_F_CMS_COMPRESSEDDATA_INIT_BIO 106
397
+ # define CMS_F_CMS_COPY_CONTENT 107
398
+ # define CMS_F_CMS_COPY_MESSAGEDIGEST 108
399
+ # define CMS_F_CMS_DATA 109
400
+ # define CMS_F_CMS_DATAFINAL 110
401
+ # define CMS_F_CMS_DATAINIT 111
402
+ # define CMS_F_CMS_DECRYPT 112
403
+ # define CMS_F_CMS_DECRYPT_SET1_KEY 113
404
+ # define CMS_F_CMS_DECRYPT_SET1_PASSWORD 166
405
+ # define CMS_F_CMS_DECRYPT_SET1_PKEY 114
406
+ # define CMS_F_CMS_DIGESTALGORITHM_FIND_CTX 115
407
+ # define CMS_F_CMS_DIGESTALGORITHM_INIT_BIO 116
408
+ # define CMS_F_CMS_DIGESTEDDATA_DO_FINAL 117
409
+ # define CMS_F_CMS_DIGEST_VERIFY 118
410
+ # define CMS_F_CMS_ENCODE_RECEIPT 161
411
+ # define CMS_F_CMS_ENCRYPT 119
412
+ # define CMS_F_CMS_ENCRYPTEDCONTENT_INIT_BIO 120
413
+ # define CMS_F_CMS_ENCRYPTEDDATA_DECRYPT 121
414
+ # define CMS_F_CMS_ENCRYPTEDDATA_ENCRYPT 122
415
+ # define CMS_F_CMS_ENCRYPTEDDATA_SET1_KEY 123
416
+ # define CMS_F_CMS_ENVELOPEDDATA_CREATE 124
417
+ # define CMS_F_CMS_ENVELOPEDDATA_INIT_BIO 125
418
+ # define CMS_F_CMS_ENVELOPED_DATA_INIT 126
419
+ # define CMS_F_CMS_ENV_ASN1_CTRL 171
420
+ # define CMS_F_CMS_FINAL 127
421
+ # define CMS_F_CMS_GET0_CERTIFICATE_CHOICES 128
422
+ # define CMS_F_CMS_GET0_CONTENT 129
423
+ # define CMS_F_CMS_GET0_ECONTENT_TYPE 130
424
+ # define CMS_F_CMS_GET0_ENVELOPED 131
425
+ # define CMS_F_CMS_GET0_REVOCATION_CHOICES 132
426
+ # define CMS_F_CMS_GET0_SIGNED 133
427
+ # define CMS_F_CMS_MSGSIGDIGEST_ADD1 162
428
+ # define CMS_F_CMS_RECEIPTREQUEST_CREATE0 159
429
+ # define CMS_F_CMS_RECEIPT_VERIFY 160
430
+ # define CMS_F_CMS_RECIPIENTINFO_DECRYPT 134
431
+ # define CMS_F_CMS_RECIPIENTINFO_ENCRYPT 169
432
+ # define CMS_F_CMS_RECIPIENTINFO_KARI_ENCRYPT 178
433
+ # define CMS_F_CMS_RECIPIENTINFO_KARI_GET0_ALG 175
434
+ # define CMS_F_CMS_RECIPIENTINFO_KARI_GET0_ORIG_ID 173
435
+ # define CMS_F_CMS_RECIPIENTINFO_KARI_GET0_REKS 172
436
+ # define CMS_F_CMS_RECIPIENTINFO_KARI_ORIG_ID_CMP 174
437
+ # define CMS_F_CMS_RECIPIENTINFO_KEKRI_DECRYPT 135
438
+ # define CMS_F_CMS_RECIPIENTINFO_KEKRI_ENCRYPT 136
439
+ # define CMS_F_CMS_RECIPIENTINFO_KEKRI_GET0_ID 137
440
+ # define CMS_F_CMS_RECIPIENTINFO_KEKRI_ID_CMP 138
441
+ # define CMS_F_CMS_RECIPIENTINFO_KTRI_CERT_CMP 139
442
+ # define CMS_F_CMS_RECIPIENTINFO_KTRI_DECRYPT 140
443
+ # define CMS_F_CMS_RECIPIENTINFO_KTRI_ENCRYPT 141
444
+ # define CMS_F_CMS_RECIPIENTINFO_KTRI_GET0_ALGS 142
445
+ # define CMS_F_CMS_RECIPIENTINFO_KTRI_GET0_SIGNER_ID 143
446
+ # define CMS_F_CMS_RECIPIENTINFO_PWRI_CRYPT 167
447
+ # define CMS_F_CMS_RECIPIENTINFO_SET0_KEY 144
448
+ # define CMS_F_CMS_RECIPIENTINFO_SET0_PASSWORD 168
449
+ # define CMS_F_CMS_RECIPIENTINFO_SET0_PKEY 145
450
+ # define CMS_F_CMS_SD_ASN1_CTRL 170
451
+ # define CMS_F_CMS_SET1_IAS 176
452
+ # define CMS_F_CMS_SET1_KEYID 177
453
+ # define CMS_F_CMS_SET1_SIGNERIDENTIFIER 146
454
+ # define CMS_F_CMS_SET_DETACHED 147
455
+ # define CMS_F_CMS_SIGN 148
456
+ # define CMS_F_CMS_SIGNED_DATA_INIT 149
457
+ # define CMS_F_CMS_SIGNERINFO_CONTENT_SIGN 150
458
+ # define CMS_F_CMS_SIGNERINFO_SIGN 151
459
+ # define CMS_F_CMS_SIGNERINFO_VERIFY 152
460
+ # define CMS_F_CMS_SIGNERINFO_VERIFY_CERT 153
461
+ # define CMS_F_CMS_SIGNERINFO_VERIFY_CONTENT 154
462
+ # define CMS_F_CMS_SIGN_RECEIPT 163
463
+ # define CMS_F_CMS_STREAM 155
464
+ # define CMS_F_CMS_UNCOMPRESS 156
465
+ # define CMS_F_CMS_VERIFY 157
466
+
467
+ /* Reason codes. */
468
+ # define CMS_R_ADD_SIGNER_ERROR 99
469
+ # define CMS_R_CERTIFICATE_ALREADY_PRESENT 175
470
+ # define CMS_R_CERTIFICATE_HAS_NO_KEYID 160
471
+ # define CMS_R_CERTIFICATE_VERIFY_ERROR 100
472
+ # define CMS_R_CIPHER_INITIALISATION_ERROR 101
473
+ # define CMS_R_CIPHER_PARAMETER_INITIALISATION_ERROR 102
474
+ # define CMS_R_CMS_DATAFINAL_ERROR 103
475
+ # define CMS_R_CMS_LIB 104
476
+ # define CMS_R_CONTENTIDENTIFIER_MISMATCH 170
477
+ # define CMS_R_CONTENT_NOT_FOUND 105
478
+ # define CMS_R_CONTENT_TYPE_MISMATCH 171
479
+ # define CMS_R_CONTENT_TYPE_NOT_COMPRESSED_DATA 106
480
+ # define CMS_R_CONTENT_TYPE_NOT_ENVELOPED_DATA 107
481
+ # define CMS_R_CONTENT_TYPE_NOT_SIGNED_DATA 108
482
+ # define CMS_R_CONTENT_VERIFY_ERROR 109
483
+ # define CMS_R_CTRL_ERROR 110
484
+ # define CMS_R_CTRL_FAILURE 111
485
+ # define CMS_R_DECRYPT_ERROR 112
486
+ # define CMS_R_DIGEST_ERROR 161
487
+ # define CMS_R_ERROR_GETTING_PUBLIC_KEY 113
488
+ # define CMS_R_ERROR_READING_MESSAGEDIGEST_ATTRIBUTE 114
489
+ # define CMS_R_ERROR_SETTING_KEY 115
490
+ # define CMS_R_ERROR_SETTING_RECIPIENTINFO 116
491
+ # define CMS_R_INVALID_ENCRYPTED_KEY_LENGTH 117
492
+ # define CMS_R_INVALID_KEY_ENCRYPTION_PARAMETER 176
493
+ # define CMS_R_INVALID_KEY_LENGTH 118
494
+ # define CMS_R_MD_BIO_INIT_ERROR 119
495
+ # define CMS_R_MESSAGEDIGEST_ATTRIBUTE_WRONG_LENGTH 120
496
+ # define CMS_R_MESSAGEDIGEST_WRONG_LENGTH 121
497
+ # define CMS_R_MSGSIGDIGEST_ERROR 172
498
+ # define CMS_R_MSGSIGDIGEST_VERIFICATION_FAILURE 162
499
+ # define CMS_R_MSGSIGDIGEST_WRONG_LENGTH 163
500
+ # define CMS_R_NEED_ONE_SIGNER 164
501
+ # define CMS_R_NOT_A_SIGNED_RECEIPT 165
502
+ # define CMS_R_NOT_ENCRYPTED_DATA 122
503
+ # define CMS_R_NOT_KEK 123
504
+ # define CMS_R_NOT_KEY_AGREEMENT 181
505
+ # define CMS_R_NOT_KEY_TRANSPORT 124
506
+ # define CMS_R_NOT_PWRI 177
507
+ # define CMS_R_NOT_SUPPORTED_FOR_THIS_KEY_TYPE 125
508
+ # define CMS_R_NO_CIPHER 126
509
+ # define CMS_R_NO_CONTENT 127
510
+ # define CMS_R_NO_CONTENT_TYPE 173
511
+ # define CMS_R_NO_DEFAULT_DIGEST 128
512
+ # define CMS_R_NO_DIGEST_SET 129
513
+ # define CMS_R_NO_KEY 130
514
+ # define CMS_R_NO_KEY_OR_CERT 174
515
+ # define CMS_R_NO_MATCHING_DIGEST 131
516
+ # define CMS_R_NO_MATCHING_RECIPIENT 132
517
+ # define CMS_R_NO_MATCHING_SIGNATURE 166
518
+ # define CMS_R_NO_MSGSIGDIGEST 167
519
+ # define CMS_R_NO_PASSWORD 178
520
+ # define CMS_R_NO_PRIVATE_KEY 133
521
+ # define CMS_R_NO_PUBLIC_KEY 134
522
+ # define CMS_R_NO_RECEIPT_REQUEST 168
523
+ # define CMS_R_NO_SIGNERS 135
524
+ # define CMS_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 136
525
+ # define CMS_R_RECEIPT_DECODE_ERROR 169
526
+ # define CMS_R_RECIPIENT_ERROR 137
527
+ # define CMS_R_SIGNER_CERTIFICATE_NOT_FOUND 138
528
+ # define CMS_R_SIGNFINAL_ERROR 139
529
+ # define CMS_R_SMIME_TEXT_ERROR 140
530
+ # define CMS_R_STORE_INIT_ERROR 141
531
+ # define CMS_R_TYPE_NOT_COMPRESSED_DATA 142
532
+ # define CMS_R_TYPE_NOT_DATA 143
533
+ # define CMS_R_TYPE_NOT_DIGESTED_DATA 144
534
+ # define CMS_R_TYPE_NOT_ENCRYPTED_DATA 145
535
+ # define CMS_R_TYPE_NOT_ENVELOPED_DATA 146
536
+ # define CMS_R_UNABLE_TO_FINALIZE_CONTEXT 147
537
+ # define CMS_R_UNKNOWN_CIPHER 148
538
+ # define CMS_R_UNKNOWN_DIGEST_ALGORIHM 149
539
+ # define CMS_R_UNKNOWN_ID 150
540
+ # define CMS_R_UNSUPPORTED_COMPRESSION_ALGORITHM 151
541
+ # define CMS_R_UNSUPPORTED_CONTENT_TYPE 152
542
+ # define CMS_R_UNSUPPORTED_KEK_ALGORITHM 153
543
+ # define CMS_R_UNSUPPORTED_KEY_ENCRYPTION_ALGORITHM 179
544
+ # define CMS_R_UNSUPPORTED_RECIPIENT_TYPE 154
545
+ # define CMS_R_UNSUPPORTED_RECPIENTINFO_TYPE 155
546
+ # define CMS_R_UNSUPPORTED_TYPE 156
547
+ # define CMS_R_UNWRAP_ERROR 157
548
+ # define CMS_R_UNWRAP_FAILURE 180
549
+ # define CMS_R_VERIFICATION_FAILURE 158
550
+ # define CMS_R_WRAP_ERROR 159
551
+
552
+ #ifdef __cplusplus
553
+ }
554
+ #endif
555
+ #endif