X509_EXTENSION_SET_OBJECT(3ossl)
π X509_EXTENSION_SET_OBJECT β the ossl manual, bestie edition β¨
okay so. this is a page from the OpenSSL manuals, and it's literally called X509_EXTENSION_SET_OBJECT(3ossl). yes the name is long. no we're not shortening it. it's iconic like that. π
β¨ NAME β¨
so like, the whole friend group here is:
X509_EXTENSION_set_objectX509_EXTENSION_set_criticalX509_EXTENSION_set_dataX509_EXTENSION_create_by_NIDX509_EXTENSION_create_by_OBJX509_EXTENSION_get_objectX509_EXTENSION_get_criticalX509_EXTENSION_get_data
and they're all extension utility functions. that's the whole vibe. extensions. utility. slay. π
πΈ SYNOPSIS πΈ
okay here's the receipts, copy-pasted exactly, no notes:
int X509_EXTENSION_set_object(X509_EXTENSION *ex, const ASN1_OBJECT *obj);
int X509_EXTENSION_set_critical(X509_EXTENSION *ex, int crit);
int X509_EXTENSION_set_data(X509_EXTENSION *ex, ASN1_OCTET_STRING *data);
X509_EXTENSION *X509_EXTENSION_create_by_NID(X509_EXTENSION **ex,
int nid, int crit,
ASN1_OCTET_STRING *data);
X509_EXTENSION *X509_EXTENSION_create_by_OBJ(X509_EXTENSION **ex,
const ASN1_OBJECT *obj, int crit,
ASN1_OCTET_STRING *data);
ASN1_OBJECT *X509_EXTENSION_get_object(X509_EXTENSION *ex);
int X509_EXTENSION_get_critical(const X509_EXTENSION *ex);
ASN1_OCTET_STRING *X509_EXTENSION_get_data(X509_EXTENSION *ne);
(and yes, that last one really does say ne instead of ex. not a typo on my end bestie, we keep it EXACTLY as it is. π)
π¦ DESCRIPTION π¦
the setters, aka the glow-up crew π
X509_EXTENSION_set_object()sets the extension type ofextoobj. theobjpointer gets duplicated internally, so likeβ¦ go ahead and freeobjafter you use it. she doesn't need it anymore, she made a copy. π«ΆX509_EXTENSION_set_critical()sets the criticality ofextocrit. ifcritis zero, the extension is non-critical, otherwise it is critical. that's it. that's the whole personality. zero = chill, not-zero = main character energy. πX509_EXTENSION_set_data()sets the data in extensionextodata. thedatapointer is duplicated internally too. same deal, she copies, you move on. β¨
the creators, aka the builders π§
X509_EXTENSION_create_by_NID()creates an extension of typenid, with criticalitycrit, using datadata. the created extension is returned and written to*ex, reusing or allocating a new extension if necessary.
β οΈ so*exshould either beNULLor a validX509_EXTENSIONstructure β it must not be an uninitialised pointer. do not pass her a mystery box, bestie, that's how you get undefined behaviour and tears. π
X509_EXTENSION_create_by_OBJ()is identical toX509_EXTENSION_create_by_NID()except it creates an extension usingobjinstead of a NID. same girl, different outfit. π
the getters, aka the read-only queens π
X509_EXTENSION_get_object()returns the extension type ofexas anASN1_OBJECTpointer. the returned pointer is an internal value which must not be freed up. hands off, she's not yours. πX509_EXTENSION_get_critical()returns the criticality of extensionexβ it returns1for critical and0for non-critical. a simple girl. a binary icon. πX509_EXTENSION_get_data()returns the data of extensionex. the returned pointer is an internal value which must not be freed up. same rule as before. look, don't touch. π
π NOTES π
okay important lore drop. these functions manipulate the contents of an extension directly. most applications will want to parse or encode and add an extension instead β those apps should use the extension encode and decode functions like X509_add1_ext_i2d() and X509_get_ext_d2i(). lowkey that's the move for most of y'all. π
also: the data associated with an extension is the extension encoding in an ASN1_OCTET_STRING structure. that's the tea. π
β RETURN VALUES β
X509_EXTENSION_set_object(),X509_EXTENSION_set_critical()andX509_EXTENSION_set_data()return1for success and0for failure. simple pass/fail, no nuance, no drama. β¨X509_EXTENSION_create_by_NID()andX509_EXTENSION_create_by_OBJ()return anX509_EXTENSIONpointer, orNULLif an error occurs. πX509_EXTENSION_get_object()returns anASN1_OBJECTpointer.X509_EXTENSION_get_critical()returns0for non-critical and1for critical.X509_EXTENSION_get_data()returns anASN1_OCTET_STRINGpointer.
π SEE ALSO π
go read her too, she's part of the squad. π«Ά
π COPYRIGHT π
Copyright 2015-2016 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>.
okay that's the whole page, you ate it, you understood it, we're so back. this was OpenSSL 3.5.9, dated 2026-09-29, and it's the X509_EXTENSION_SET_OBJECT(3ossl) manual through and through. go forth and set those extensions, bestie, no cap. ππβ¨π¦πΈ
π¦ where this page comes from
- fedora 43: openssl-devel 1:3.5.9-1.fc43 Β· Apache-2.0
- fedora 43: openssl-devel 1:3.5.9-1.fc43 Β· Apache-2.0
- fedora 44: openssl-devel 1:3.5.9-1.fc44 Β· Apache-2.0
- fedora 44: openssl-devel 1:3.5.9-1.fc44 Β· Apache-2.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms