OSSL_DECODER_FROM_BIO(3ossl)
πΈ NAME πΈ
okay bestie, welcome to the 3ossl OpenSSL manual page for OSSL_DECODER_from_data, OSSL_DECODER_from_bio, and OSSL_DECODER_from_fp β literally the routines to perform a decoding. The page name is OSSL_DECODER_FROM_BIO(3ossl), and weβre folding that in right here near the top, cute and accounted for. π
β¨ SYNOPSIS β¨
#include <openssl/decoder.h>
int OSSL_DECODER_from_bio(OSSL_DECODER_CTX *ctx, BIO *in);
int OSSL_DECODER_from_fp(OSSL_DECODER_CTX *ctx, FILE *fp);
int OSSL_DECODER_from_data(OSSL_DECODER_CTX *ctx, const unsigned char **pdata,
size_t *pdata_len);
Feature availability macros:
- π¨
OSSL_DECODER_from_fp()is only available whenOPENSSL_NO_STDIOis undefined.
π DESCRIPTION π
OSSL_DECODER_from_data()β runs the decoding process for the contextctx, with input coming from*pdata, and itβs*pdata_lenbytes long. Both*pdataand*pdata_lenmust be non-NULL. WhenOSSL_DECODER_from_data()returns,*pdatais updated to point at the location after what has been decoded, and*pdata_lenis updated to have the number of remaining bytes. Pointer updates, iykyk. β¨
π¨ bestie, this is not a drill: both*pdataand*pdata_lenmust be non-NULL.
OSSL_DECODER_from_bio()β runs the decoding process for the contextctx, with the input coming from theBIOin. Should it make a difference, itβs recommended to have theBIOset in binary mode rather than text mode. noted, bestie. πOSSL_DECODER_from_fp()β does the same thing asOSSL_DECODER_from_bio(), except that the input is coming from theFILEfp. Same energy, different input source. π«Ά
π RETURN VALUES π
OSSL_DECODER_from_bio(), OSSL_DECODER_from_data() and OSSL_DECODER_from_fp() return 1 on success, or 0 on failure. Thatβs the whole vibe check: 1 = slay, 0 = nope. π
π EXAMPLES π
To decode an RSA key encoded with PEM from a bio:
OSSL_DECODER_CTX *dctx;
EVP_PKEY *pkey = NULL;
const char *format = "PEM"; /* NULL for any format */
const char *structure = NULL; /* any structure */
const char *keytype = "RSA"; /* NULL for any key */
const unsigned char *pass = "my password";
dctx = OSSL_DECODER_CTX_new_for_pkey(&pkey, format, structure,
keytype,
OSSL_KEYMGMT_SELECT_KEYPAIR,
NULL, NULL);
if (dctx == NULL) {
/* error: no suitable potential decoders found */
}
if (pass != NULL)
OSSL_DECODER_CTX_set_passphrase(dctx, pass, strlen(pass));
if (OSSL_DECODER_from_bio(dctx, bio)) {
/* pkey is created with the decoded data from the bio */
} else {
/* decoding failure */
}
OSSL_DECODER_CTX_free(dctx);
To decode an EC key encoded with DER from a buffer:
OSSL_DECODER_CTX *dctx;
EVP_PKEY *pkey = NULL;
const char *format = "DER"; /* NULL for any format */
const char *structure = NULL; /* any structure */
const char *keytype = "EC"; /* NULL for any key */
const unsigned char *pass = NULL
const unsigned char *data = buffer;
size_t datalen = sizeof(buffer);
dctx = OSSL_DECODER_CTX_new_for_pkey(&pkey, format, structure,
keytype,
OSSL_KEYMGMT_SELECT_KEYPAIR
| OSSL_KEYMGMT_SELECT_DOMAIN_PARAMETERS,
NULL, NULL);
if (dctx == NULL) {
/* error: no suitable potential decoders found */
}
if (pass != NULL)
OSSL_DECODER_CTX_set_passphrase(dctx, pass, strlen(pass));
if (OSSL_DECODER_from_data(dctx, &data, &datalen)) {
/* pkey is created with the decoded data from the buffer */
} else {
/* decoding failure */
}
OSSL_DECODER_CTX_free(dctx);
copy these exact code blocks, bestie β character for character, no autocorrect energy. π
π¦ SEE ALSO π¦
β HISTORY β
The functions described here were added in OpenSSL 3.0. Periodt. β¨
π COPYRIGHT π
Copyright 2020-2023 The OpenSSL Project Authors. All Rights Reserved.
Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at <https://www.openssl.org/source/license.html>.
stay decoding, bestie β this is OpenSSL 3.5.6, dated 2026-04-07, manual page OSSL_DECODER_FROM_BIO(3ossl) π«Άπ
π¦ where this page comes from
- freebsd 15.1: base 15.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms