Skip to content

Add OpenSSL compat: BIO_get_new_index, i2d_PUBKEY_bio, OpenSSL_version#10294

Open
Roy-Carter wants to merge 3 commits intowolfSSL:masterfrom
Roy-Carter:feature/extra_enhancement_to_compatibility_layer
Open

Add OpenSSL compat: BIO_get_new_index, i2d_PUBKEY_bio, OpenSSL_version#10294
Roy-Carter wants to merge 3 commits intowolfSSL:masterfrom
Roy-Carter:feature/extra_enhancement_to_compatibility_layer

Conversation

@Roy-Carter
Copy link
Copy Markdown
Contributor

Description

As part of the continuous of the integration of openssl to wolfssl i've come across a few missing functions needed for OpenSSL-compat APIs: BIO_get_new_index() (unique custom BIO type IDs, 128–255), i2d_PUBKEY_bio() (write public-key DER to a BIO), and OpenSSL_version(type) handling for the six standard OPENSSL_* selector constants (plus unknown → version string). Headers/macros updated under OPENSSL_EXTRA / !NO_BIO as appropriate.

Testing

Ran ./tests/unit.test with -~BIO_get_new_index, -~OpenSSL_version, and -~i2d_PUBKEY_bio (substring filters). All passed.

Checklist

  • [*] added tests
  • updated/added doxygen
  • updated appropriate READMEs
  • Updated manual and documentation

@Roy-Carter
Copy link
Copy Markdown
Contributor Author

@julek-wolfssl can you please run the workflow on this ?

@wolfSSL-Bot
Copy link
Copy Markdown

Can one of the admins verify this patch?

@dgarske
Copy link
Copy Markdown
Member

dgarske commented Apr 23, 2026

Okay to test. Contributor agreement on file.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 23, 2026

MemBrowse Memory Report

No memory changes detected for:

@Roy-Carter
Copy link
Copy Markdown
Contributor Author

Roy-Carter commented Apr 24, 2026

hey @julek-wolfssl would you mind checking why the packaging test failed ? looks like a false positive , I don't see any errors there on the log regarding the build process of wolfssl which can relate to my code , or maybe I missed something

Copy link
Copy Markdown
Member

@dgarske dgarske left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

�[1;38;5;243m--enable-leantls --enable-session-ticket --enable-sni --enable-opensslextra
  Testing DEFAULT: --enable-leantls --enable-session-ticket --enable-sni --enable-opensslextra --disable-shared
  Configure RESULT = 0
  
  make[2]: warning: -j9 forced in submake: resetting jobserver mode.
  /usr/bin/ld: tests/unit_test-api.o: in function `test_wolfSSL_i2d_PUBKEY_bio':
  api.c:(.text+0xcb74): undefined reference to `wolfSSL_i2d_PUBKEY_bio'
  /usr/bin/ld: api.c:(.text+0xcbc9): undefined reference to `wolfSSL_i2d_PUBKEY_bio'

  collect2: error: ld returned 1 exit status
  make[2]: *** [Makefile:7709: tests/unit.test] Error 1
  make[1]: *** [Makefile:11517: all-recursive] Error 1

@Roy-Carter Roy-Carter force-pushed the feature/extra_enhancement_to_compatibility_layer branch from 4a8f2a7 to 12e2b22 Compare April 26, 2026 06:58
@Roy-Carter
Copy link
Copy Markdown
Contributor Author

@dgarske @julek-wolfssl can we re-test ? fixed build errors

@julek-wolfssl
Copy link
Copy Markdown
Member

Retest this please.

Comment thread tests/api.c
Comment on lines +27899 to +27926
ExpectNotNull(ver = OpenSSL_version(OPENSSL_VERSION));
ExpectIntEQ(XMEMCMP(ver, "wolfSSL " LIBWOLFSSL_VERSION_STRING,
XSTRLEN("wolfSSL " LIBWOLFSSL_VERSION_STRING)), 0);

/* Test OPENSSL_CFLAGS type */
ExpectNotNull(ver = OpenSSL_version(OPENSSL_CFLAGS));
ExpectNotNull(XSTRSTR(ver, "compiler:"));

/* Test OPENSSL_BUILT_ON type */
ExpectNotNull(ver = OpenSSL_version(OPENSSL_BUILT_ON));
ExpectNotNull(XSTRSTR(ver, "built on:"));

/* Test OPENSSL_PLATFORM type */
ExpectNotNull(ver = OpenSSL_version(OPENSSL_PLATFORM));
ExpectNotNull(XSTRSTR(ver, "platform:"));

/* Test OPENSSL_DIR type */
ExpectNotNull(ver = OpenSSL_version(OPENSSL_DIR));
ExpectNotNull(XSTRSTR(ver, "OPENSSLDIR:"));

/* Test OPENSSL_ENGINES_DIR type */
ExpectNotNull(ver = OpenSSL_version(OPENSSL_ENGINES_DIR));
ExpectNotNull(XSTRSTR(ver, "ENGINESDIR:"));

/* Test unknown type falls back to version string */
ExpectNotNull(ver = OpenSSL_version(99));
ExpectIntEQ(XMEMCMP(ver, "wolfSSL " LIBWOLFSSL_VERSION_STRING,
XSTRLEN("wolfSSL " LIBWOLFSSL_VERSION_STRING)), 0);
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be better to use ExpectStrEQ here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants