Skip to content

Add OpenSSL compat: BIO_get_new_index, i2d_PUBKEY_bio, OpenSSL_version#10294

Open
Roy-Carter wants to merge 6 commits into
wolfSSL: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 6 commits into
wolfSSL: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

@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 Outdated
@Roy-Carter Roy-Carter force-pushed the feature/extra_enhancement_to_compatibility_layer branch from 12e2b22 to c3a8004 Compare April 29, 2026 10:03
@Roy-Carter
Copy link
Copy Markdown
Contributor Author

openvpn test failed due to what seems like diffs from master and not my code , i rebased to master can we re-run workflow @julek-wolfssl

@Roy-Carter Roy-Carter force-pushed the feature/extra_enhancement_to_compatibility_layer branch from 4dfa2fc to 74bd323 Compare May 8, 2026 14:59
@Roy-Carter
Copy link
Copy Markdown
Contributor Author

@julek-wolfssl @dgarske can we re-run workflows ? there was a conflict on two of the test files

@dgarske
Copy link
Copy Markdown
Member

dgarske commented May 8, 2026

Jenkins retest this please

Copy link
Copy Markdown
Member

@julek-wolfssl julek-wolfssl left a comment

Choose a reason for hiding this comment

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

Please rebase before pushing to this branch.

Comment thread wolfcrypt/src/evp_pk.c
Comment thread src/ssl.c Outdated
@julek-wolfssl julek-wolfssl removed their assignment May 26, 2026
@dgarske dgarske removed their request for review May 26, 2026 21:57
@Roy-Carter Roy-Carter force-pushed the feature/extra_enhancement_to_compatibility_layer branch from 75748d0 to c2e9c6c Compare May 29, 2026 12:22
@Roy-Carter
Copy link
Copy Markdown
Contributor Author

@julek-wolfssl @dgarske I updated the branch and rebased to master , all tests passed before so i assume it only relates to the branch being out-dated .

@dgarske
Copy link
Copy Markdown
Member

dgarske commented May 29, 2026

Jenkins okay to test

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Adds several OpenSSL compatibility APIs for BIO type allocation, public-key DER encoding to BIOs, and richer OpenSSL_version() selector handling.

Changes:

  • Adds BIO_get_new_index() constants, mapping, implementation, and BIO API tests.
  • Adds i2d_PUBKEY_bio() mapping, implementation, and RSA/ECC round-trip tests.
  • Expands OpenSSL_version() selector constants and test coverage.

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
wolfssl/ssl.h Declares new BIO index constants/API and wolfSSL_i2d_PUBKEY_bio.
wolfssl/openssl/ssl.h Maps i2d_PUBKEY_bio to wolfSSL implementation.
wolfssl/openssl/opensslv.h Adds OpenSSL version selector constants.
wolfssl/openssl/bio.h Maps BIO_TYPE_START and BIO_get_new_index.
wolfcrypt/src/evp_pk.c Implements DER public key encoding to BIO.
tests/api/test_ossl_bio.h Registers new BIO index API test.
tests/api/test_ossl_bio.c Adds BIO index allocation test.
tests/api.c Adds i2d_PUBKEY_bio tests and expands OpenSSL_version tests.
src/ssl.c Implements selector-specific OpenSSL_version() responses.
src/bio.c Implements custom BIO type index allocation.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/ssl.c
Comment thread src/ssl.c
Comment thread src/bio.c
Copy link
Copy Markdown
Member

@julek-wolfssl julek-wolfssl left a comment

Choose a reason for hiding this comment

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

Just the one copilot comment to address and CI failures. Thanks @Roy-Carter

@dgarske dgarske removed their request for review June 1, 2026 17:09
@Roy-Carter Roy-Carter force-pushed the feature/extra_enhancement_to_compatibility_layer branch from c2e9c6c to 46f6269 Compare June 7, 2026 06:15
@Roy-Carter
Copy link
Copy Markdown
Contributor Author

Roy-Carter commented Jun 7, 2026

Just the one copilot comment to address and CI failures. Thanks @Roy-Carter

Hey , Just pushed the change , I assume the failures happened due to the openssl fix copilot suggested the fix for since I see that those cases now run fine

Comment thread tests/api.c
Comment on lines +27717 to +27719
/* Test unknown type falls back to version string */
ExpectNotNull(ver = OpenSSL_version(99));
ExpectStrEQ(ver, "not available");
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.

NIT: comment is wrong 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.

5 participants