1 /* Copyright (C) 2015 The Android Open Source Project
2 *
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License. */
14
15 /* This program generates output that is expected to become
16 * NativeConstants.java. This reifies several OpenSSL constants into Java. */
17
18 #include <stdio.h>
19
20 #include <openssl/ec.h>
21 #include <openssl/rsa.h>
22 #include <openssl/ssl.h>
23 #include <openssl/x509v3.h>
24 #include <openssl/evp.h>
25 #if defined(OPENSSL_IS_BORINGSSL)
26 #include <openssl/aead.h>
27 #endif
28
29 static const char kCopyright[] =
30 "/* Copyright (C) 2015 The Android Open Source Project\n"
31 " *\n"
32 " * Licensed under the Apache License, Version 2.0 (the \"License\");\n"
33 " * you may not use this file except in compliance with the License.\n"
34 " * You may obtain a copy of the License at\n"
35 " *\n"
36 " * http://www.apache.org/licenses/LICENSE-2.0\n"
37 " *\n"
38 " * Unless required by applicable law or agreed to in writing, software\n"
39 " * distributed under the License is distributed on an \"AS IS\" BASIS,\n"
40 " * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or "
41 "implied.\n"
42 " * See the License for the specific language governing permissions and\n"
43 " * limitations under the License. */\n";
44
main(int,char **)45 int main(int /* argc */, char ** /* argv */) {
46 printf("%s\n", kCopyright);
47 printf("/* This file was generated by generate_constants.cc. */\n\n");
48 printf("package org.conscrypt;\n\n");
49 printf("public final class NativeConstants {\n");
50
51 printf(" public static final boolean HAS_EVP_AEAD = %s;\n",
52 #if defined(EVP_AEAD_DEFAULT_TAG_LENGTH)
53 "true"
54 #else
55 "false"
56 #endif
57 );
58
59 #define CONST(x) \
60 printf(" public static final int %s = %ld;\n", #x, (long int)x)
61 #define CONST_MINUS_1(x) printf(" public static final int %s = -1;\n", #x)
62 CONST(OPENSSL_EC_NAMED_CURVE);
63
64 CONST(POINT_CONVERSION_COMPRESSED);
65 CONST(POINT_CONVERSION_UNCOMPRESSED);
66
67 CONST(EXFLAG_CA);
68 CONST(EXFLAG_CRITICAL);
69
70 CONST(EVP_PKEY_RSA);
71 CONST(EVP_PKEY_EC);
72
73 CONST(RSA_PKCS1_PADDING);
74 CONST(RSA_NO_PADDING);
75 CONST(RSA_PKCS1_OAEP_PADDING);
76 CONST(RSA_PKCS1_PSS_PADDING);
77
78 CONST(SSL_MODE_SEND_FALLBACK_SCSV);
79 CONST(SSL_MODE_CBC_RECORD_SPLITTING);
80 CONST(SSL_MODE_HANDSHAKE_CUTTHROUGH);
81
82 CONST(SSL_OP_CIPHER_SERVER_PREFERENCE);
83 CONST(SSL_OP_NO_TICKET);
84 CONST(SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION);
85 CONST(SSL_OP_NO_SSLv3);
86 CONST(SSL_OP_NO_TLSv1);
87 CONST(SSL_OP_NO_TLSv1_1);
88 CONST(SSL_OP_NO_TLSv1_2);
89
90 CONST(SSL_SENT_SHUTDOWN);
91 CONST(SSL_RECEIVED_SHUTDOWN);
92
93 CONST(TLS_CT_RSA_SIGN);
94 CONST(TLS_CT_ECDSA_SIGN);
95
96 #if defined(TLS_CT_RSA_FIXED_DH)
97 CONST(TLS_CT_RSA_FIXED_DH);
98 #else
99 CONST_MINUS_1(TLS_CT_RSA_FIXED_DH);
100 #endif
101 #if defined(TLS_CT_RSA_FIXED_ECDH)
102 CONST(TLS_CT_RSA_FIXED_ECDH);
103 #else
104 CONST_MINUS_1(TLS_CT_RSA_FIXED_ECDH);
105 #endif
106 #if defined(TLS_CT_ECDSA_FIXED_ECDH)
107 CONST(TLS_CT_ECDSA_FIXED_ECDH);
108 #else
109 CONST_MINUS_1(TLS_CT_ECDSA_FIXED_ECDH);
110 #endif
111
112 CONST(SSL_VERIFY_NONE);
113 CONST(SSL_VERIFY_PEER);
114 CONST(SSL_VERIFY_FAIL_IF_NO_PEER_CERT);
115
116 CONST(SSL_ST_CONNECT);
117 CONST(SSL_ST_ACCEPT);
118 CONST(SSL_ST_MASK);
119 CONST(SSL_ST_INIT);
120 CONST(SSL_ST_OK);
121 CONST(SSL_ST_RENEGOTIATE);
122 CONST(SSL_CB_LOOP);
123 CONST(SSL_CB_EXIT);
124 CONST(SSL_CB_READ);
125 CONST(SSL_CB_WRITE);
126 CONST(SSL_CB_ALERT);
127 CONST(SSL_CB_READ_ALERT);
128 CONST(SSL_CB_WRITE_ALERT);
129 CONST(SSL_CB_ACCEPT_LOOP);
130 CONST(SSL_CB_ACCEPT_EXIT);
131 CONST(SSL_CB_CONNECT_LOOP);
132 CONST(SSL_CB_CONNECT_EXIT);
133 CONST(SSL_CB_HANDSHAKE_START);
134 CONST(SSL_CB_HANDSHAKE_DONE);
135
136 CONST(SSL3_RT_MAX_PACKET_SIZE);
137 #undef CONST
138
139 printf("}\n");
140
141 return 0;
142 }
143