Add a bytestogroup macro
authorMatt Caswell <matt@openssl.org>
Mon, 6 Feb 2017 16:52:38 +0000 (16:52 +0000)
committerMatt Caswell <matt@openssl.org>
Tue, 14 Feb 2017 13:14:25 +0000 (13:14 +0000)
For converting the 2 byte group id into an unsigned int.

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/2341)

ssl/ssl_locl.h
ssl/statem/extensions.c
ssl/statem/extensions_clnt.c

index 099f8ccadc6cb9a8cbdfb7effe6ec21b326271d9..df6be646e195817dc8a991e8da514b85cf9a3932 100644 (file)
@@ -2194,6 +2194,9 @@ SSL_COMP *ssl3_comp_find(STACK_OF(SSL_COMP) *sk, int n);
 # define TLS_CURVE_PRIME         0x0
 # define TLS_CURVE_CHAR2         0x1
 # define TLS_CURVE_CUSTOM        0x2
+
+#define bytestogroup(bytes) ((unsigned int)(bytes[0] << 8 | bytes[1]))
+
 __owur int tls1_ec_curve_id2nid(int curve_id, unsigned int *pflags);
 __owur int tls1_ec_nid2curve_id(int nid);
 __owur int tls1_check_curve(SSL *s, const unsigned char *p, size_t len);
index 8d08b0cf4c2b09f8256ee0eebc7ef753f8fea168..99326b2b55f58710259fbc587fdc7a95e58f9632 100644 (file)
@@ -1039,7 +1039,7 @@ static int final_key_share(SSL *s, unsigned int context, int sent, int *al)
             /* Find the first group we allow that is also in client's list */
             for (i = 0, pcurvestmp = pcurves; i < num_curves;
                  i++, pcurvestmp += 2) {
-                group_id = pcurvestmp[0] << 8 | pcurvestmp[1];
+                group_id = bytestogroup(pcurvestmp);
 
                 if (check_in_list(s, group_id, clntcurves, clnt_num_curves, 1))
                     break;
index 01a80a075553454e1fe4d58ff1a4743868ece325..ea379199e04019a46c938c4a52ea2c4236b7ed83 100644 (file)
@@ -614,7 +614,7 @@ int tls_construct_ctos_key_share(SSL *s, WPACKET *pkt, unsigned int context,
             if (!tls_curve_allowed(s, pcurves, SSL_SECOP_CURVE_SUPPORTED))
                 continue;
 
-            curve_id = (pcurves[0] << 8) | pcurves[1];
+            curve_id = bytestogroup(pcurves);
             break;
         }
     }
@@ -1235,7 +1235,7 @@ int tls_parse_stoc_key_share(SSL *s, PACKET *pkt, unsigned int context, X509 *x,
             return 0;
         }
         for (i = 0; i < num_curves; i++, pcurves += 2) {
-            if (group_id == (unsigned int)((pcurves[0] << 8) | pcurves[1]))
+            if (group_id == bytestogroup(pcurves))
                 break;
         }
         if (i >= num_curves