Make OBJ_NAME_do_all more OpenSSL-compatible.

OBJ_NAME in OpenSSL has an 'alias' field which some code consumes. We never
report anything OpenSSL considers an alias, so just leave it zero. It also has
a 'data' field which, confusingly, is a pointer to the EVP_CIPHER or EVP_MD
despite being a char pointer.

See calls to and implementation of OBJ_NAME_add in OpenSSL for comparison.

Change-Id: Ifc5c70424569db8783deb2fda7736c1954b5dd3a
Reviewed-on: https://boringssl-review.googlesource.com/8515
Reviewed-by: Adam Langley <agl@google.com>
diff --git a/decrepit/obj/obj_decrepit.c b/decrepit/obj/obj_decrepit.c
index 06051f1..8ea2e0a 100644
--- a/decrepit/obj/obj_decrepit.c
+++ b/decrepit/obj/obj_decrepit.c
@@ -33,6 +33,7 @@
   memset(&obj_name, 0, sizeof(obj_name));
   obj_name.type = OBJ_NAME_TYPE_CIPHER_METH;
   obj_name.name = name;
+  obj_name.data = (const char *)cipher;
 
   wrapped->callback(&obj_name, wrapped->arg);
 }
@@ -45,6 +46,7 @@
   memset(&obj_name, 0, sizeof(obj_name));
   obj_name.type = OBJ_NAME_TYPE_MD_METH;
   obj_name.name = name;
+  obj_name.data = (const char *)md;
 
   wrapped->callback(&obj_name, wrapped->arg);
 }
diff --git a/include/openssl/obj.h b/include/openssl/obj.h
index 7e24820..367cfdc 100644
--- a/include/openssl/obj.h
+++ b/include/openssl/obj.h
@@ -193,7 +193,9 @@
 
 typedef struct obj_name_st {
   int type;
+  int alias;
   const char *name;
+  const char *data;
 } OBJ_NAME;
 
 #define OBJ_NAME_TYPE_MD_METH 1