Don't use an enum in the return type for a public API function
authorMatt Caswell <matt@openssl.org>
Thu, 16 Feb 2017 17:04:40 +0000 (17:04 +0000)
committerMatt Caswell <matt@openssl.org>
Fri, 17 Feb 2017 10:28:01 +0000 (10:28 +0000)
We use an int instead. That means SSL_key_update() also should use an int.

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/2609)

doc/man3/SSL_key_update.pod
doc/man7/ssl.pod
include/openssl/ssl.h
ssl/ssl_lib.c
ssl/ssl_locl.h
test/ssl_test_ctx.h

index 3aab0d6dc0ca8dbca06de98a75a1aff0ec40f0cc..5b622343508bbd1dba5197a7a0df3195918d9d48 100644 (file)
@@ -13,17 +13,8 @@ SSL_renegotiate_pending
 
  #include <openssl/ssl.h>
 
- /* TLSv1.3 KeyUpdate message types */
- typedef enum {
-     /* -1 used so that this is an invalid value for the on-the-wire protocol */
-     SSL_KEY_UPDATE_NONE = -1,
-     /* Values as defined for the on-the-wire protocol */
-     SSL_KEY_UPDATE_NOT_REQUESTED = 0,
-     SSL_KEY_UPDATE_REQUESTED = 1
- } SSL_KEY_UPDATE;
-
- int SSL_key_update(SSL *s, SSL_KEY_UPDATE updatetype);
- SSL_KEY_UPDATE SSL_get_key_update_type(SSL *s);
+ int SSL_key_update(SSL *s, int updatetype);
+ int SSL_get_key_update_type(SSL *s);
 
  int SSL_renegotiate(SSL *s);
  int SSL_renegotiate_abbreviated(SSL *s);
index b15ae7c3b6889f8216ffaeae346e1f5440c0b4d3..5812bc8052e3516e6a13acf219d1143bda4afce2 100644 (file)
@@ -552,7 +552,7 @@ fresh handle for each connection.
 
 =item void (*B<SSL_get_info_callback>(const SSL *ssl);)()
 
-=item SSL_KEY_UPDATE B<SSL_get_key_update_type>(SSL *s);
+=item int B<SSL_get_key_update_type>(SSL *s);
 
 =item STACK *B<SSL_get_peer_cert_chain>(const SSL *ssl);
 
@@ -602,7 +602,7 @@ fresh handle for each connection.
 
 =item int B<SSL_is_init_finished>(SSL *ssl);
 
-=item int B<SSL_key_update>(SSL *s, SSL_KEY_UPDATE updatetype);
+=item int B<SSL_key_update>(SSL *s, int updatetype);
 
 =item STACK *B<SSL_load_client_CA_file>(const char *file);
 
index da5d1d09d2d3d1b7a61704ba794429832b2bcaef..5b8a0bbd6825b112d2eb2fc0bfc6010377e21d0f 100644 (file)
@@ -826,13 +826,11 @@ DEFINE_STACK_OF(SSL_COMP)
 DEPRECATEDIN_1_1_0(void SSL_set_debug(SSL *s, int debug))
 
 /* TLSv1.3 KeyUpdate message types */
-typedef enum {
-    /* -1 used so that this is an invalid value for the on-the-wire protocol */
-    SSL_KEY_UPDATE_NONE = -1,
-    /* Values as defined for the on-the-wire protocol */
-    SSL_KEY_UPDATE_NOT_REQUESTED = 0,
-    SSL_KEY_UPDATE_REQUESTED = 1
-} SSL_KEY_UPDATE;
+/* -1 used so that this is an invalid value for the on-the-wire protocol */
+#define SSL_KEY_UPDATE_NONE             -1
+/* Values as defined for the on-the-wire protocol */
+#define SSL_KEY_UPDATE_NOT_REQUESTED     0
+#define SSL_KEY_UPDATE_REQUESTED         1
 
 /*
  * The valid handshake states (one for each type message sent and one for each
@@ -1662,8 +1660,8 @@ __owur STACK_OF(SSL_CIPHER) *SSL_get_client_ciphers(const SSL *s);
 __owur STACK_OF(SSL_CIPHER) *SSL_get1_supported_ciphers(SSL *s);
 
 __owur int SSL_do_handshake(SSL *s);
-int SSL_key_update(SSL *s, SSL_KEY_UPDATE updatetype);
-SSL_KEY_UPDATE SSL_get_key_update_type(SSL *s);
+int SSL_key_update(SSL *s, int updatetype);
+int SSL_get_key_update_type(SSL *s);
 int SSL_renegotiate(SSL *s);
 int SSL_renegotiate_abbreviated(SSL *s);
 __owur int SSL_renegotiate_pending(SSL *s);
index cb5e0cfbc9bce8b67e8013974fff44214b5de339..e8274a1c05480ee512d19b6573bbbd3476eec8fc 100644 (file)
@@ -1718,7 +1718,7 @@ int SSL_shutdown(SSL *s)
     }
 }
 
-int SSL_key_update(SSL *s, SSL_KEY_UPDATE updatetype)
+int SSL_key_update(SSL *s, int updatetype)
 {
     /*
      * TODO(TLS1.3): How will applications know whether TLSv1.3+ has been
@@ -1746,7 +1746,7 @@ int SSL_key_update(SSL *s, SSL_KEY_UPDATE updatetype)
     return 1;
 }
 
-SSL_KEY_UPDATE SSL_get_key_update_type(SSL *s)
+int SSL_get_key_update_type(SSL *s)
 {
     return s->key_update;
 }
index 991766f05b4700fa01dad0575698568cbcd482d7..70a47a8f54193208837cceefff25fdce7aeb805b 100644 (file)
@@ -1177,7 +1177,7 @@ struct ssl_st {
      */
     int renegotiate;
     /* If sending a KeyUpdate is pending */
-    SSL_KEY_UPDATE key_update;
+    int key_update;
 # ifndef OPENSSL_NO_SRP
     /* ctx for SRP authentication */
     SRP_CTX srp_ctx;
index eaeee1fd3cce2da156cc421cd852710a532b92d6..1c66740fb7278a3270af0483a396a3165c4c2122 100644 (file)
@@ -124,7 +124,7 @@ typedef struct {
     /* Maximum send fragment size. */
     int max_fragment_size;
     /* KeyUpdate type */
-    SSL_KEY_UPDATE key_update_type;
+    int key_update_type;
 
     /*
      * Extra server/client configurations. Per-handshake.