Make structs in bio.h opaque
authortb <tb@openbsd.org>
Fri, 14 Jan 2022 08:18:55 +0000 (08:18 +0000)
committertb <tb@openbsd.org>
Fri, 14 Jan 2022 08:18:55 +0000 (08:18 +0000)
Move BIO, BIO_METHOD and BIO_F_BUFFER_CTX to bio_local.h and provide
BIO typedef in ossl_typ.h.

ok inoguchi jsing

lib/libcrypto/bio/bio.h
lib/libcrypto/bio/bio_local.h
lib/libcrypto/ossl_typ.h

index 47e7baf..8feb98d 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: bio.h,v 1.52 2022/01/14 07:59:32 tb Exp $ */
+/* $OpenBSD: bio.h,v 1.53 2022/01/14 08:18:55 tb Exp $ */
 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
  * All rights reserved.
  *
@@ -205,8 +205,6 @@ extern "C" {
  */
 #define BIO_FLAGS_MEM_RDONLY   0x200
 
-typedef struct bio_st BIO;
-
 void BIO_set_flags(BIO *b, int flags);
 int  BIO_test_flags(const BIO *b, int flags);
 void BIO_clear_flags(BIO *b, int flags);
@@ -272,65 +270,10 @@ 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;
-       const char *name;
-       int (*bwrite)(BIO *, const char *, int);
-       int (*bread)(BIO *, char *, int);
-       int (*bputs)(BIO *, const char *);
-       int (*bgets)(BIO *, char *, int);
-       long (*ctrl)(BIO *, int, long, void *);
-       int (*create)(BIO *);
-       int (*destroy)(BIO *);
-       long (*callback_ctrl)(BIO *, int, bio_info_cb *);
-} BIO_METHOD;
-
-struct bio_st {
-       const BIO_METHOD *method;
-       /* bio, mode, argp, argi, argl, ret */
-       long (*callback)(struct bio_st *, int, const char *, int, long, long);
-       char *cb_arg; /* first argument for the callback */
-
-       int init;
-       int shutdown;
-       int flags;      /* extra storage */
-       int retry_reason;
-       int num;
-       void *ptr;
-       struct bio_st *next_bio;        /* used by filter BIOs */
-       struct bio_st *prev_bio;        /* used by filter BIOs */
-       int references;
-       unsigned long num_read;
-       unsigned long num_write;
-
-       CRYPTO_EX_DATA ex_data;
-};
+typedef struct bio_method_st BIO_METHOD;
 
 DECLARE_STACK_OF(BIO)
 
-typedef struct bio_f_buffer_ctx_struct {
-       /* Buffers are setup like this:
-        *
-        * <---------------------- size ----------------------->
-        * +---------------------------------------------------+
-        * | consumed | remaining          | free space        |
-        * +---------------------------------------------------+
-        * <-- off --><------- len ------->
-        */
-
-       /* BIO *bio; */ /* this is now in the BIO struct */
-       int ibuf_size;  /* how big is the input buffer */
-       int obuf_size;  /* how big is the output buffer */
-
-       char *ibuf;     /* the char array */
-       int ibuf_len;   /* how many bytes are in it */
-       int ibuf_off;   /* write/read offset */
-
-       char *obuf;     /* the char array */
-       int obuf_len;   /* how many bytes are in it */
-       int obuf_off;   /* write/read offset */
-} BIO_F_BUFFER_CTX;
-
 /* Prefix and suffix callback in ASN1 BIO */
 typedef int asn1_ps_func(BIO *b, unsigned char **pbuf, int *plen, void *parg);
 
index 9c2e8f4..62a9793 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: bio_local.h,v 1.1 2022/01/07 09:02:17 tb Exp $ */
+/* $OpenBSD: bio_local.h,v 1.2 2022/01/14 08:18:55 tb Exp $ */
 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
  * All rights reserved.
  *
 
 __BEGIN_HIDDEN_DECLS
 
+struct bio_method_st {
+       int type;
+       const char *name;
+       int (*bwrite)(BIO *, const char *, int);
+       int (*bread)(BIO *, char *, int);
+       int (*bputs)(BIO *, const char *);
+       int (*bgets)(BIO *, char *, int);
+       long (*ctrl)(BIO *, int, long, void *);
+       int (*create)(BIO *);
+       int (*destroy)(BIO *);
+       long (*callback_ctrl)(BIO *, int, bio_info_cb *);
+} /* BIO_METHOD */;
+
+struct bio_st {
+       const BIO_METHOD *method;
+       /* bio, mode, argp, argi, argl, ret */
+       long (*callback)(struct bio_st *, int, const char *, int, long, long);
+       char *cb_arg; /* first argument for the callback */
+
+       int init;
+       int shutdown;
+       int flags;      /* extra storage */
+       int retry_reason;
+       int num;
+       void *ptr;
+       struct bio_st *next_bio;        /* used by filter BIOs */
+       struct bio_st *prev_bio;        /* used by filter BIOs */
+       int references;
+       unsigned long num_read;
+       unsigned long num_write;
+
+       CRYPTO_EX_DATA ex_data;
+} /* BIO */;
+
+typedef struct bio_f_buffer_ctx_struct {
+       /* Buffers are setup like this:
+        *
+        * <---------------------- size ----------------------->
+        * +---------------------------------------------------+
+        * | consumed | remaining          | free space        |
+        * +---------------------------------------------------+
+        * <-- off --><------- len ------->
+        */
+
+       /* BIO *bio; */ /* this is now in the BIO struct */
+       int ibuf_size;  /* how big is the input buffer */
+       int obuf_size;  /* how big is the output buffer */
+
+       char *ibuf;     /* the char array */
+       int ibuf_len;   /* how many bytes are in it */
+       int ibuf_off;   /* write/read offset */
+
+       char *obuf;     /* the char array */
+       int obuf_len;   /* how many bytes are in it */
+       int obuf_off;   /* write/read offset */
+} BIO_F_BUFFER_CTX;
+
 __END_HIDDEN_DECLS
 
 #endif /* !HEADER_BIO_LOCAL_H */
index c4dd11e..21197f8 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: ossl_typ.h,v 1.17 2022/01/14 08:09:18 tb Exp $ */
+/* $OpenBSD: ossl_typ.h,v 1.18 2022/01/14 08:18:55 tb Exp $ */
 /* ====================================================================
  * Copyright (c) 1998-2001 The OpenSSL Project.  All rights reserved.
  *
@@ -92,6 +92,7 @@ typedef struct bn_mont_ctx_st BN_MONT_CTX;
 typedef struct bn_recp_ctx_st BN_RECP_CTX;
 typedef struct bn_gencb_st BN_GENCB;
 
+typedef struct bio_st BIO;
 typedef struct buf_mem_st BUF_MEM;
 
 typedef struct evp_cipher_st EVP_CIPHER;