Provide BIO_meth_{g,s}et_callback_ctrl()
authortb <tb@openbsd.org>
Tue, 20 Feb 2018 18:17:17 +0000 (18:17 +0000)
committertb <tb@openbsd.org>
Tue, 20 Feb 2018 18:17:17 +0000 (18:17 +0000)
with & ok jsing

lib/libcrypto/Symbols.list
lib/libcrypto/bio/bio.h
lib/libcrypto/bio/bio_meth.c

index 04eb29f..61a7867 100644 (file)
@@ -290,6 +290,7 @@ BIO_gets
 BIO_indent
 BIO_int_ctrl
 BIO_meth_free
+BIO_meth_get_callback_ctrl
 BIO_meth_get_create
 BIO_meth_get_ctrl
 BIO_meth_get_destroy
@@ -297,6 +298,7 @@ BIO_meth_get_gets
 BIO_meth_get_puts
 BIO_meth_get_read
 BIO_meth_new
+BIO_meth_set_callback_ctrl
 BIO_meth_set_create
 BIO_meth_set_ctrl
 BIO_meth_set_destroy
index 2d46535..0a05d64 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: bio.h,v 1.37 2018/02/20 18:13:31 tb Exp $ */
+/* $OpenBSD: bio.h,v 1.38 2018/02/20 18:17:17 tb Exp $ */
 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
  * All rights reserved.
  *
@@ -270,6 +270,7 @@ const char * BIO_method_name(const BIO *b);
 int BIO_method_type(const BIO *b);
 
 typedef void bio_info_cb(struct bio_st *, int, const char *, int, long, long);
+typedef int BIO_info_cb(BIO *, int, int);
 
 typedef struct bio_method_st {
        int type;
@@ -350,6 +351,9 @@ int (*BIO_meth_get_create(BIO_METHOD *biom))(BIO *);
 int BIO_meth_set_create(BIO_METHOD *biom, int (*create)(BIO *));
 int (*BIO_meth_get_destroy(BIO_METHOD *biom))(BIO *);
 int BIO_meth_set_destroy(BIO_METHOD *biom, int (*destroy)(BIO *));
+long (*BIO_meth_get_callback_ctrl(BIO_METHOD *biom))(BIO *, int, BIO_info_cb *);
+int BIO_meth_set_callback_ctrl(BIO_METHOD *biom,
+    long (*callback_ctrl)(BIO *, int, BIO_info_cb *));
 
 /* connect BIO stuff */
 #define BIO_CONN_S_BEFORE              1
index 1fc0df5..2eb6794 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: bio_meth.c,v 1.3 2018/02/20 18:13:31 tb Exp $ */
+/*     $OpenBSD: bio_meth.c,v 1.4 2018/02/20 18:17:17 tb Exp $ */
 /*
  * Copyright (c) 2018 Theo Buehler <tb@openbsd.org>
  *
@@ -129,3 +129,19 @@ BIO_meth_set_destroy(BIO_METHOD *biom, int (*destroy)(BIO *))
        biom->destroy = destroy;
        return 1;
 }
+
+long
+(*BIO_meth_get_callback_ctrl(BIO_METHOD *biom))(BIO *, int, BIO_info_cb *)
+{
+       return
+           (long (*)(BIO *, int, BIO_info_cb*))biom->callback_ctrl; /* XXX */
+}
+
+int
+BIO_meth_set_callback_ctrl(BIO_METHOD *biom,
+    long (*callback_ctrl)(BIO *, int, BIO_info_cb *))
+{
+       biom->callback_ctrl =
+           (long (*)(BIO *, int, bio_info_cb *))callback_ctrl; /* XXX */
+       return 1;
+}