openssl_rsa_pss_verify 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (112) hide show
  1. data/.gitignore +5 -0
  2. data/.rspec +2 -0
  3. data/.ruby-gemset +1 -0
  4. data/.ruby-version +1 -0
  5. data/Gemfile +4 -0
  6. data/Gemfile.lock +35 -0
  7. data/README +1 -0
  8. data/Rakefile +4 -0
  9. data/ext/openssl_rsa_pss_verify/extconf.rb +15 -0
  10. data/ext/openssl_rsa_pss_verify/openssl_rsa_pss_verify_ext.c +56 -0
  11. data/lib/openssl_rsa_pss_verify/version.rb +3 -0
  12. data/lib/openssl_rsa_pss_verify.rb +2 -0
  13. data/openssl_rsa_pss_verify.gemspec +26 -0
  14. data/tasks/compile.rake +12 -0
  15. data/tasks/rspec.rake +12 -0
  16. data/vendor/openssl/include/openssl/aes.h +147 -0
  17. data/vendor/openssl/include/openssl/asn1.h +1404 -0
  18. data/vendor/openssl/include/openssl/asn1_mac.h +578 -0
  19. data/vendor/openssl/include/openssl/asn1t.h +960 -0
  20. data/vendor/openssl/include/openssl/bio.h +847 -0
  21. data/vendor/openssl/include/openssl/blowfish.h +129 -0
  22. data/vendor/openssl/include/openssl/bn.h +891 -0
  23. data/vendor/openssl/include/openssl/buffer.h +119 -0
  24. data/vendor/openssl/include/openssl/camellia.h +130 -0
  25. data/vendor/openssl/include/openssl/cast.h +107 -0
  26. data/vendor/openssl/include/openssl/cmac.h +82 -0
  27. data/vendor/openssl/include/openssl/cms.h +501 -0
  28. data/vendor/openssl/include/openssl/comp.h +80 -0
  29. data/vendor/openssl/include/openssl/conf.h +263 -0
  30. data/vendor/openssl/include/openssl/conf_api.h +89 -0
  31. data/vendor/openssl/include/openssl/crypto.h +611 -0
  32. data/vendor/openssl/include/openssl/des.h +248 -0
  33. data/vendor/openssl/include/openssl/des_old.h +446 -0
  34. data/vendor/openssl/include/openssl/dh.h +280 -0
  35. data/vendor/openssl/include/openssl/dsa.h +327 -0
  36. data/vendor/openssl/include/openssl/dso.h +409 -0
  37. data/vendor/openssl/include/openssl/dtls1.h +287 -0
  38. data/vendor/openssl/include/openssl/e_os2.h +315 -0
  39. data/vendor/openssl/include/openssl/ebcdic.h +19 -0
  40. data/vendor/openssl/include/openssl/ec.h +1167 -0
  41. data/vendor/openssl/include/openssl/ecdh.h +125 -0
  42. data/vendor/openssl/include/openssl/ecdsa.h +260 -0
  43. data/vendor/openssl/include/openssl/engine.h +842 -0
  44. data/vendor/openssl/include/openssl/err.h +386 -0
  45. data/vendor/openssl/include/openssl/evp.h +1409 -0
  46. data/vendor/openssl/include/openssl/hmac.h +110 -0
  47. data/vendor/openssl/include/openssl/idea.h +103 -0
  48. data/vendor/openssl/include/openssl/krb5_asn.h +256 -0
  49. data/vendor/openssl/include/openssl/kssl.h +183 -0
  50. data/vendor/openssl/include/openssl/lhash.h +241 -0
  51. data/vendor/openssl/include/openssl/md4.h +120 -0
  52. data/vendor/openssl/include/openssl/md5.h +120 -0
  53. data/vendor/openssl/include/openssl/mdc2.h +98 -0
  54. data/vendor/openssl/include/openssl/modes.h +135 -0
  55. data/vendor/openssl/include/openssl/obj_mac.h +4032 -0
  56. data/vendor/openssl/include/openssl/objects.h +1138 -0
  57. data/vendor/openssl/include/openssl/ocsp.h +623 -0
  58. data/vendor/openssl/include/openssl/opensslconf.h +234 -0
  59. data/vendor/openssl/include/openssl/opensslv.h +89 -0
  60. data/vendor/openssl/include/openssl/ossl_typ.h +202 -0
  61. data/vendor/openssl/include/openssl/pem.h +641 -0
  62. data/vendor/openssl/include/openssl/pem2.h +70 -0
  63. data/vendor/openssl/include/openssl/pkcs12.h +331 -0
  64. data/vendor/openssl/include/openssl/pkcs7.h +499 -0
  65. data/vendor/openssl/include/openssl/pqueue.h +94 -0
  66. data/vendor/openssl/include/openssl/rand.h +149 -0
  67. data/vendor/openssl/include/openssl/rc2.h +103 -0
  68. data/vendor/openssl/include/openssl/rc4.h +90 -0
  69. data/vendor/openssl/include/openssl/ripemd.h +107 -0
  70. data/vendor/openssl/include/openssl/rsa.h +582 -0
  71. data/vendor/openssl/include/openssl/safestack.h +2663 -0
  72. data/vendor/openssl/include/openssl/seed.h +139 -0
  73. data/vendor/openssl/include/openssl/sha.h +214 -0
  74. data/vendor/openssl/include/openssl/srp.h +172 -0
  75. data/vendor/openssl/include/openssl/srtp.h +145 -0
  76. data/vendor/openssl/include/openssl/ssl.h +2579 -0
  77. data/vendor/openssl/include/openssl/ssl2.h +272 -0
  78. data/vendor/openssl/include/openssl/ssl23.h +83 -0
  79. data/vendor/openssl/include/openssl/ssl3.h +684 -0
  80. data/vendor/openssl/include/openssl/stack.h +108 -0
  81. data/vendor/openssl/include/openssl/symhacks.h +475 -0
  82. data/vendor/openssl/include/openssl/tls1.h +735 -0
  83. data/vendor/openssl/include/openssl/ts.h +858 -0
  84. data/vendor/openssl/include/openssl/txt_db.h +112 -0
  85. data/vendor/openssl/include/openssl/ui.h +383 -0
  86. data/vendor/openssl/include/openssl/ui_compat.h +83 -0
  87. data/vendor/openssl/include/openssl/whrlpool.h +41 -0
  88. data/vendor/openssl/include/openssl/x509.h +1297 -0
  89. data/vendor/openssl/include/openssl/x509_vfy.h +567 -0
  90. data/vendor/openssl/include/openssl/x509v3.h +1007 -0
  91. data/vendor/openssl/lib/engines/lib4758cca.so +0 -0
  92. data/vendor/openssl/lib/engines/libaep.so +0 -0
  93. data/vendor/openssl/lib/engines/libatalla.so +0 -0
  94. data/vendor/openssl/lib/engines/libcapi.so +0 -0
  95. data/vendor/openssl/lib/engines/libchil.so +0 -0
  96. data/vendor/openssl/lib/engines/libcswift.so +0 -0
  97. data/vendor/openssl/lib/engines/libgmp.so +0 -0
  98. data/vendor/openssl/lib/engines/libgost.so +0 -0
  99. data/vendor/openssl/lib/engines/libnuron.so +0 -0
  100. data/vendor/openssl/lib/engines/libpadlock.so +0 -0
  101. data/vendor/openssl/lib/engines/libsureware.so +0 -0
  102. data/vendor/openssl/lib/engines/libubsec.so +0 -0
  103. data/vendor/openssl/lib/libcrypto.a +0 -0
  104. data/vendor/openssl/lib/libcrypto.so +0 -0
  105. data/vendor/openssl/lib/libcrypto.so.1.0.0 +0 -0
  106. data/vendor/openssl/lib/libssl.a +0 -0
  107. data/vendor/openssl/lib/libssl.so +0 -0
  108. data/vendor/openssl/lib/libssl.so.1.0.0 +0 -0
  109. data/vendor/openssl/lib/pkgconfig/libcrypto.pc +12 -0
  110. data/vendor/openssl/lib/pkgconfig/libssl.pc +12 -0
  111. data/vendor/openssl/lib/pkgconfig/openssl.pc +12 -0
  112. metadata +208 -0
@@ -0,0 +1,110 @@
1
+ /* crypto/hmac/hmac.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
+ #ifndef HEADER_HMAC_H
59
+ #define HEADER_HMAC_H
60
+
61
+ #include <openssl/opensslconf.h>
62
+
63
+ #ifdef OPENSSL_NO_HMAC
64
+ #error HMAC is disabled.
65
+ #endif
66
+
67
+ #include <openssl/evp.h>
68
+
69
+ #define HMAC_MAX_MD_CBLOCK 128 /* largest known is SHA512 */
70
+
71
+ #ifdef __cplusplus
72
+ extern "C" {
73
+ #endif
74
+
75
+ typedef struct hmac_ctx_st
76
+ {
77
+ const EVP_MD *md;
78
+ EVP_MD_CTX md_ctx;
79
+ EVP_MD_CTX i_ctx;
80
+ EVP_MD_CTX o_ctx;
81
+ unsigned int key_length;
82
+ unsigned char key[HMAC_MAX_MD_CBLOCK];
83
+ } HMAC_CTX;
84
+
85
+ #define HMAC_size(e) (EVP_MD_size((e)->md))
86
+
87
+
88
+ void HMAC_CTX_init(HMAC_CTX *ctx);
89
+ void HMAC_CTX_cleanup(HMAC_CTX *ctx);
90
+
91
+ #define HMAC_cleanup(ctx) HMAC_CTX_cleanup(ctx) /* deprecated */
92
+
93
+ int HMAC_Init(HMAC_CTX *ctx, const void *key, int len,
94
+ const EVP_MD *md); /* deprecated */
95
+ int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len,
96
+ const EVP_MD *md, ENGINE *impl);
97
+ int HMAC_Update(HMAC_CTX *ctx, const unsigned char *data, size_t len);
98
+ int HMAC_Final(HMAC_CTX *ctx, unsigned char *md, unsigned int *len);
99
+ unsigned char *HMAC(const EVP_MD *evp_md, const void *key, int key_len,
100
+ const unsigned char *d, size_t n, unsigned char *md,
101
+ unsigned int *md_len);
102
+ int HMAC_CTX_copy(HMAC_CTX *dctx, HMAC_CTX *sctx);
103
+
104
+ void HMAC_CTX_set_flags(HMAC_CTX *ctx, unsigned long flags);
105
+
106
+ #ifdef __cplusplus
107
+ }
108
+ #endif
109
+
110
+ #endif
@@ -0,0 +1,103 @@
1
+ /* crypto/idea/idea.h */
2
+ /* Copyright (C) 1995-1997 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_IDEA_H
60
+ #define HEADER_IDEA_H
61
+
62
+ #include <openssl/opensslconf.h> /* IDEA_INT, OPENSSL_NO_IDEA */
63
+
64
+ #ifdef OPENSSL_NO_IDEA
65
+ #error IDEA is disabled.
66
+ #endif
67
+
68
+ #define IDEA_ENCRYPT 1
69
+ #define IDEA_DECRYPT 0
70
+
71
+ #define IDEA_BLOCK 8
72
+ #define IDEA_KEY_LENGTH 16
73
+
74
+ #ifdef __cplusplus
75
+ extern "C" {
76
+ #endif
77
+
78
+ typedef struct idea_key_st
79
+ {
80
+ IDEA_INT data[9][6];
81
+ } IDEA_KEY_SCHEDULE;
82
+
83
+ const char *idea_options(void);
84
+ void idea_ecb_encrypt(const unsigned char *in, unsigned char *out,
85
+ IDEA_KEY_SCHEDULE *ks);
86
+ #ifdef OPENSSL_FIPS
87
+ void private_idea_set_encrypt_key(const unsigned char *key, IDEA_KEY_SCHEDULE *ks);
88
+ #endif
89
+ void idea_set_encrypt_key(const unsigned char *key, IDEA_KEY_SCHEDULE *ks);
90
+ void idea_set_decrypt_key(IDEA_KEY_SCHEDULE *ek, IDEA_KEY_SCHEDULE *dk);
91
+ void idea_cbc_encrypt(const unsigned char *in, unsigned char *out,
92
+ long length, IDEA_KEY_SCHEDULE *ks, unsigned char *iv,int enc);
93
+ void idea_cfb64_encrypt(const unsigned char *in, unsigned char *out,
94
+ long length, IDEA_KEY_SCHEDULE *ks, unsigned char *iv,
95
+ int *num,int enc);
96
+ void idea_ofb64_encrypt(const unsigned char *in, unsigned char *out,
97
+ long length, IDEA_KEY_SCHEDULE *ks, unsigned char *iv, int *num);
98
+ void idea_encrypt(unsigned long *in, IDEA_KEY_SCHEDULE *ks);
99
+ #ifdef __cplusplus
100
+ }
101
+ #endif
102
+
103
+ #endif
@@ -0,0 +1,256 @@
1
+ /* krb5_asn.h */
2
+ /* Written by Vern Staats <staatsvr@asc.hpc.mil> for the OpenSSL project,
3
+ ** using ocsp/{*.h,*asn*.c} as a starting point
4
+ */
5
+
6
+ /* ====================================================================
7
+ * Copyright (c) 1998-2000 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
+ * openssl-core@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
+ * This product includes cryptographic software written by Eric Young
55
+ * (eay@cryptsoft.com). This product includes software written by Tim
56
+ * Hudson (tjh@cryptsoft.com).
57
+ *
58
+ */
59
+
60
+ #ifndef HEADER_KRB5_ASN_H
61
+ #define HEADER_KRB5_ASN_H
62
+
63
+ /*
64
+ #include <krb5.h>
65
+ */
66
+ #include <openssl/safestack.h>
67
+
68
+ #ifdef __cplusplus
69
+ extern "C" {
70
+ #endif
71
+
72
+
73
+ /* ASN.1 from Kerberos RFC 1510
74
+ */
75
+
76
+ /* EncryptedData ::= SEQUENCE {
77
+ ** etype[0] INTEGER, -- EncryptionType
78
+ ** kvno[1] INTEGER OPTIONAL,
79
+ ** cipher[2] OCTET STRING -- ciphertext
80
+ ** }
81
+ */
82
+ typedef struct krb5_encdata_st
83
+ {
84
+ ASN1_INTEGER *etype;
85
+ ASN1_INTEGER *kvno;
86
+ ASN1_OCTET_STRING *cipher;
87
+ } KRB5_ENCDATA;
88
+
89
+ DECLARE_STACK_OF(KRB5_ENCDATA)
90
+
91
+ /* PrincipalName ::= SEQUENCE {
92
+ ** name-type[0] INTEGER,
93
+ ** name-string[1] SEQUENCE OF GeneralString
94
+ ** }
95
+ */
96
+ typedef struct krb5_princname_st
97
+ {
98
+ ASN1_INTEGER *nametype;
99
+ STACK_OF(ASN1_GENERALSTRING) *namestring;
100
+ } KRB5_PRINCNAME;
101
+
102
+ DECLARE_STACK_OF(KRB5_PRINCNAME)
103
+
104
+
105
+ /* Ticket ::= [APPLICATION 1] SEQUENCE {
106
+ ** tkt-vno[0] INTEGER,
107
+ ** realm[1] Realm,
108
+ ** sname[2] PrincipalName,
109
+ ** enc-part[3] EncryptedData
110
+ ** }
111
+ */
112
+ typedef struct krb5_tktbody_st
113
+ {
114
+ ASN1_INTEGER *tktvno;
115
+ ASN1_GENERALSTRING *realm;
116
+ KRB5_PRINCNAME *sname;
117
+ KRB5_ENCDATA *encdata;
118
+ } KRB5_TKTBODY;
119
+
120
+ typedef STACK_OF(KRB5_TKTBODY) KRB5_TICKET;
121
+ DECLARE_STACK_OF(KRB5_TKTBODY)
122
+
123
+
124
+ /* AP-REQ ::= [APPLICATION 14] SEQUENCE {
125
+ ** pvno[0] INTEGER,
126
+ ** msg-type[1] INTEGER,
127
+ ** ap-options[2] APOptions,
128
+ ** ticket[3] Ticket,
129
+ ** authenticator[4] EncryptedData
130
+ ** }
131
+ **
132
+ ** APOptions ::= BIT STRING {
133
+ ** reserved(0), use-session-key(1), mutual-required(2) }
134
+ */
135
+ typedef struct krb5_ap_req_st
136
+ {
137
+ ASN1_INTEGER *pvno;
138
+ ASN1_INTEGER *msgtype;
139
+ ASN1_BIT_STRING *apoptions;
140
+ KRB5_TICKET *ticket;
141
+ KRB5_ENCDATA *authenticator;
142
+ } KRB5_APREQBODY;
143
+
144
+ typedef STACK_OF(KRB5_APREQBODY) KRB5_APREQ;
145
+ DECLARE_STACK_OF(KRB5_APREQBODY)
146
+
147
+
148
+ /* Authenticator Stuff */
149
+
150
+
151
+ /* Checksum ::= SEQUENCE {
152
+ ** cksumtype[0] INTEGER,
153
+ ** checksum[1] OCTET STRING
154
+ ** }
155
+ */
156
+ typedef struct krb5_checksum_st
157
+ {
158
+ ASN1_INTEGER *ctype;
159
+ ASN1_OCTET_STRING *checksum;
160
+ } KRB5_CHECKSUM;
161
+
162
+ DECLARE_STACK_OF(KRB5_CHECKSUM)
163
+
164
+
165
+ /* EncryptionKey ::= SEQUENCE {
166
+ ** keytype[0] INTEGER,
167
+ ** keyvalue[1] OCTET STRING
168
+ ** }
169
+ */
170
+ typedef struct krb5_encryptionkey_st
171
+ {
172
+ ASN1_INTEGER *ktype;
173
+ ASN1_OCTET_STRING *keyvalue;
174
+ } KRB5_ENCKEY;
175
+
176
+ DECLARE_STACK_OF(KRB5_ENCKEY)
177
+
178
+
179
+ /* AuthorizationData ::= SEQUENCE OF SEQUENCE {
180
+ ** ad-type[0] INTEGER,
181
+ ** ad-data[1] OCTET STRING
182
+ ** }
183
+ */
184
+ typedef struct krb5_authorization_st
185
+ {
186
+ ASN1_INTEGER *adtype;
187
+ ASN1_OCTET_STRING *addata;
188
+ } KRB5_AUTHDATA;
189
+
190
+ DECLARE_STACK_OF(KRB5_AUTHDATA)
191
+
192
+
193
+ /* -- Unencrypted authenticator
194
+ ** Authenticator ::= [APPLICATION 2] SEQUENCE {
195
+ ** authenticator-vno[0] INTEGER,
196
+ ** crealm[1] Realm,
197
+ ** cname[2] PrincipalName,
198
+ ** cksum[3] Checksum OPTIONAL,
199
+ ** cusec[4] INTEGER,
200
+ ** ctime[5] KerberosTime,
201
+ ** subkey[6] EncryptionKey OPTIONAL,
202
+ ** seq-number[7] INTEGER OPTIONAL,
203
+ ** authorization-data[8] AuthorizationData OPTIONAL
204
+ ** }
205
+ */
206
+ typedef struct krb5_authenticator_st
207
+ {
208
+ ASN1_INTEGER *avno;
209
+ ASN1_GENERALSTRING *crealm;
210
+ KRB5_PRINCNAME *cname;
211
+ KRB5_CHECKSUM *cksum;
212
+ ASN1_INTEGER *cusec;
213
+ ASN1_GENERALIZEDTIME *ctime;
214
+ KRB5_ENCKEY *subkey;
215
+ ASN1_INTEGER *seqnum;
216
+ KRB5_AUTHDATA *authorization;
217
+ } KRB5_AUTHENTBODY;
218
+
219
+ typedef STACK_OF(KRB5_AUTHENTBODY) KRB5_AUTHENT;
220
+ DECLARE_STACK_OF(KRB5_AUTHENTBODY)
221
+
222
+
223
+ /* DECLARE_ASN1_FUNCTIONS(type) = DECLARE_ASN1_FUNCTIONS_name(type, type) =
224
+ ** type *name##_new(void);
225
+ ** void name##_free(type *a);
226
+ ** DECLARE_ASN1_ENCODE_FUNCTIONS(type, name, name) =
227
+ ** DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name) =
228
+ ** type *d2i_##name(type **a, const unsigned char **in, long len);
229
+ ** int i2d_##name(type *a, unsigned char **out);
230
+ ** DECLARE_ASN1_ITEM(itname) = OPENSSL_EXTERN const ASN1_ITEM itname##_it
231
+ */
232
+
233
+ DECLARE_ASN1_FUNCTIONS(KRB5_ENCDATA)
234
+ DECLARE_ASN1_FUNCTIONS(KRB5_PRINCNAME)
235
+ DECLARE_ASN1_FUNCTIONS(KRB5_TKTBODY)
236
+ DECLARE_ASN1_FUNCTIONS(KRB5_APREQBODY)
237
+ DECLARE_ASN1_FUNCTIONS(KRB5_TICKET)
238
+ DECLARE_ASN1_FUNCTIONS(KRB5_APREQ)
239
+
240
+ DECLARE_ASN1_FUNCTIONS(KRB5_CHECKSUM)
241
+ DECLARE_ASN1_FUNCTIONS(KRB5_ENCKEY)
242
+ DECLARE_ASN1_FUNCTIONS(KRB5_AUTHDATA)
243
+ DECLARE_ASN1_FUNCTIONS(KRB5_AUTHENTBODY)
244
+ DECLARE_ASN1_FUNCTIONS(KRB5_AUTHENT)
245
+
246
+
247
+ /* BEGIN ERROR CODES */
248
+ /* The following lines are auto generated by the script mkerr.pl. Any changes
249
+ * made after this point may be overwritten when the script is next run.
250
+ */
251
+
252
+ #ifdef __cplusplus
253
+ }
254
+ #endif
255
+ #endif
256
+
@@ -0,0 +1,183 @@
1
+ /* ssl/kssl.h -*- mode: C; c-file-style: "eay" -*- */
2
+ /* Written by Vern Staats <staatsvr@asc.hpc.mil> for the OpenSSL project 2000.
3
+ * project 2000.
4
+ */
5
+ /* ====================================================================
6
+ * Copyright (c) 2000 The OpenSSL Project. All rights reserved.
7
+ *
8
+ * Redistribution and use in source and binary forms, with or without
9
+ * modification, are permitted provided that the following conditions
10
+ * are met:
11
+ *
12
+ * 1. Redistributions of source code must retain the above copyright
13
+ * notice, this list of conditions and the following disclaimer.
14
+ *
15
+ * 2. Redistributions in binary form must reproduce the above copyright
16
+ * notice, this list of conditions and the following disclaimer in
17
+ * the documentation and/or other materials provided with the
18
+ * distribution.
19
+ *
20
+ * 3. All advertising materials mentioning features or use of this
21
+ * software must display the following acknowledgment:
22
+ * "This product includes software developed by the OpenSSL Project
23
+ * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
24
+ *
25
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
26
+ * endorse or promote products derived from this software without
27
+ * prior written permission. For written permission, please contact
28
+ * licensing@OpenSSL.org.
29
+ *
30
+ * 5. Products derived from this software may not be called "OpenSSL"
31
+ * nor may "OpenSSL" appear in their names without prior written
32
+ * permission of the OpenSSL Project.
33
+ *
34
+ * 6. Redistributions of any form whatsoever must retain the following
35
+ * acknowledgment:
36
+ * "This product includes software developed by the OpenSSL Project
37
+ * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
38
+ *
39
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
40
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
41
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
42
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
43
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
44
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
45
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
46
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
47
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
48
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
49
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
50
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
51
+ * ====================================================================
52
+ *
53
+ * This product includes cryptographic software written by Eric Young
54
+ * (eay@cryptsoft.com). This product includes software written by Tim
55
+ * Hudson (tjh@cryptsoft.com).
56
+ *
57
+ */
58
+
59
+ /*
60
+ ** 19990701 VRS Started.
61
+ */
62
+
63
+ #ifndef KSSL_H
64
+ #define KSSL_H
65
+
66
+ #include <openssl/opensslconf.h>
67
+
68
+ #ifndef OPENSSL_NO_KRB5
69
+
70
+ #include <stdio.h>
71
+ #include <ctype.h>
72
+ #include <krb5.h>
73
+
74
+ #ifdef __cplusplus
75
+ extern "C" {
76
+ #endif
77
+
78
+ /*
79
+ ** Depending on which KRB5 implementation used, some types from
80
+ ** the other may be missing. Resolve that here and now
81
+ */
82
+ #ifdef KRB5_HEIMDAL
83
+ typedef unsigned char krb5_octet;
84
+ #define FAR
85
+ #else
86
+
87
+ #ifndef FAR
88
+ #define FAR
89
+ #endif
90
+
91
+ #endif
92
+
93
+ /* Uncomment this to debug kssl problems or
94
+ ** to trace usage of the Kerberos session key
95
+ **
96
+ ** #define KSSL_DEBUG
97
+ */
98
+
99
+ #ifndef KRB5SVC
100
+ #define KRB5SVC "host"
101
+ #endif
102
+
103
+ #ifndef KRB5KEYTAB
104
+ #define KRB5KEYTAB "/etc/krb5.keytab"
105
+ #endif
106
+
107
+ #ifndef KRB5SENDAUTH
108
+ #define KRB5SENDAUTH 1
109
+ #endif
110
+
111
+ #ifndef KRB5CHECKAUTH
112
+ #define KRB5CHECKAUTH 1
113
+ #endif
114
+
115
+ #ifndef KSSL_CLOCKSKEW
116
+ #define KSSL_CLOCKSKEW 300;
117
+ #endif
118
+
119
+ #define KSSL_ERR_MAX 255
120
+ typedef struct kssl_err_st {
121
+ int reason;
122
+ char text[KSSL_ERR_MAX+1];
123
+ } KSSL_ERR;
124
+
125
+
126
+ /* Context for passing
127
+ ** (1) Kerberos session key to SSL, and
128
+ ** (2) Config data between application and SSL lib
129
+ */
130
+ typedef struct kssl_ctx_st
131
+ {
132
+ /* used by: disposition: */
133
+ char *service_name; /* C,S default ok (kssl) */
134
+ char *service_host; /* C input, REQUIRED */
135
+ char *client_princ; /* S output from krb5 ticket */
136
+ char *keytab_file; /* S NULL (/etc/krb5.keytab) */
137
+ char *cred_cache; /* C NULL (default) */
138
+ krb5_enctype enctype;
139
+ int length;
140
+ krb5_octet FAR *key;
141
+ } KSSL_CTX;
142
+
143
+ #define KSSL_CLIENT 1
144
+ #define KSSL_SERVER 2
145
+ #define KSSL_SERVICE 3
146
+ #define KSSL_KEYTAB 4
147
+
148
+ #define KSSL_CTX_OK 0
149
+ #define KSSL_CTX_ERR 1
150
+ #define KSSL_NOMEM 2
151
+
152
+ /* Public (for use by applications that use OpenSSL with Kerberos 5 support */
153
+ krb5_error_code kssl_ctx_setstring(KSSL_CTX *kssl_ctx, int which, char *text);
154
+ KSSL_CTX *kssl_ctx_new(void);
155
+ KSSL_CTX *kssl_ctx_free(KSSL_CTX *kssl_ctx);
156
+ void kssl_ctx_show(KSSL_CTX *kssl_ctx);
157
+ krb5_error_code kssl_ctx_setprinc(KSSL_CTX *kssl_ctx, int which,
158
+ krb5_data *realm, krb5_data *entity, int nentities);
159
+ krb5_error_code kssl_cget_tkt(KSSL_CTX *kssl_ctx, krb5_data **enc_tktp,
160
+ krb5_data *authenp, KSSL_ERR *kssl_err);
161
+ krb5_error_code kssl_sget_tkt(KSSL_CTX *kssl_ctx, krb5_data *indata,
162
+ krb5_ticket_times *ttimes, KSSL_ERR *kssl_err);
163
+ krb5_error_code kssl_ctx_setkey(KSSL_CTX *kssl_ctx, krb5_keyblock *session);
164
+ void kssl_err_set(KSSL_ERR *kssl_err, int reason, char *text);
165
+ void kssl_krb5_free_data_contents(krb5_context context, krb5_data *data);
166
+ krb5_error_code kssl_build_principal_2(krb5_context context,
167
+ krb5_principal *princ, int rlen, const char *realm,
168
+ int slen, const char *svc, int hlen, const char *host);
169
+ krb5_error_code kssl_validate_times(krb5_timestamp atime,
170
+ krb5_ticket_times *ttimes);
171
+ krb5_error_code kssl_check_authent(KSSL_CTX *kssl_ctx, krb5_data *authentp,
172
+ krb5_timestamp *atimep, KSSL_ERR *kssl_err);
173
+ unsigned char *kssl_skip_confound(krb5_enctype enctype, unsigned char *authn);
174
+
175
+ void SSL_set0_kssl_ctx(SSL *s, KSSL_CTX *kctx);
176
+ KSSL_CTX * SSL_get0_kssl_ctx(SSL *s);
177
+ char *kssl_ctx_get0_client_princ(KSSL_CTX *kctx);
178
+
179
+ #ifdef __cplusplus
180
+ }
181
+ #endif
182
+ #endif /* OPENSSL_NO_KRB5 */
183
+ #endif /* KSSL_H */