Convert SSL_ECDH_CTX to C++.

SSLECDHContext has the acronyms problem, so I went with SSLKeyShare to
match the TLS 1.3 terminology. It's also a little shorter. Accept and
Finish, for now, take raw output pointers in anticipation of some
bssl::Array and maybe bssl::CleansedArray types.

Bug: 132
Change-Id: I427c7c0eac95704f3ad093676c504c2848f5acb9
Reviewed-on: https://boringssl-review.googlesource.com/18265
Reviewed-by: Steven Valdez <svaldez@google.com>
diff --git a/ssl/tls13_client.cc b/ssl/tls13_client.cc
index 5f8cbe1..4cc7e60 100644
--- a/ssl/tls13_client.cc
+++ b/ssl/tls13_client.cc
@@ -130,13 +130,13 @@
 
     /* Check that the HelloRetryRequest does not request the key share that
      * was provided in the initial ClientHello. */
-    if (SSL_ECDH_CTX_get_id(&hs->ecdh_ctx) == group_id) {
+    if (hs->key_share->GroupID() == group_id) {
       ssl3_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_ILLEGAL_PARAMETER);
       OPENSSL_PUT_ERROR(SSL, SSL_R_WRONG_CURVE);
       return ssl_hs_error;
     }
 
-    SSL_ECDH_CTX_cleanup(&hs->ecdh_ctx);
+    hs->key_share.reset();
     hs->retry_group = group_id;
   }
 
@@ -785,7 +785,7 @@
 }
 
 void ssl_clear_tls13_state(SSL_HANDSHAKE *hs) {
-  SSL_ECDH_CTX_cleanup(&hs->ecdh_ctx);
+  hs->key_share.reset();
 
   OPENSSL_free(hs->key_share_bytes);
   hs->key_share_bytes = NULL;