OSSL_CRMF_MS...CTRL_REGTOKEN(3ossl)
π OSSL_CRMF_MS...CTRL_REGTOKEN β¨
okay so bestie, this page lives in section 3ossl of the OpenSSL manual β say hi π β and it's all about the CRMF Registration Controls. getting and setting them. let's go π
πΈ NAME πΈ
OSSL_CRMF_MSG_get0_regCtrl_regToken, OSSL_CRMF_MSG_set1_regCtrl_regToken, OSSL_CRMF_MSG_get0_regCtrl_authenticator, OSSL_CRMF_MSG_set1_regCtrl_authenticator, OSSL_CRMF_MSG_PKIPublicationInfo_push0_SinglePubInfo, OSSL_CRMF_MSG_set0_SinglePubInfo, OSSL_CRMF_MSG_set_PKIPublicationInfo_action, OSSL_CRMF_MSG_get0_regCtrl_pkiPublicationInfo, OSSL_CRMF_MSG_set1_regCtrl_pkiPublicationInfo, OSSL_CRMF_MSG_get0_regCtrl_protocolEncrKey, OSSL_CRMF_MSG_set1_regCtrl_protocolEncrKey, OSSL_CRMF_MSG_get0_regCtrl_oldCertID, OSSL_CRMF_MSG_set1_regCtrl_oldCertID, OSSL_CRMF_CERTID_gen β literally all the functions for getting or setting CRMF Registration Controls π«Ά
β¨ SYNOPSIS β¨
#include <openssl/crmf.h>
ASN1_UTF8STRING
*OSSL_CRMF_MSG_get0_regCtrl_regToken(const OSSL_CRMF_MSG *msg);
int OSSL_CRMF_MSG_set1_regCtrl_regToken(OSSL_CRMF_MSG *msg,
const ASN1_UTF8STRING *tok);
ASN1_UTF8STRING
*OSSL_CRMF_MSG_get0_regCtrl_authenticator(const OSSL_CRMF_MSG *msg);
int OSSL_CRMF_MSG_set1_regCtrl_authenticator(OSSL_CRMF_MSG *msg,
const ASN1_UTF8STRING *auth);
int OSSL_CRMF_MSG_PKIPublicationInfo_push0_SinglePubInfo(
OSSL_CRMF_PKIPUBLICATIONINFO *pi,
OSSL_CRMF_SINGLEPUBINFO *spi);
int OSSL_CRMF_MSG_set0_SinglePubInfo(OSSL_CRMF_SINGLEPUBINFO *spi,
int method, GENERAL_NAME *nm);
int OSSL_CRMF_MSG_set_PKIPublicationInfo_action(
OSSL_CRMF_PKIPUBLICATIONINFO *pi, int action);
OSSL_CRMF_PKIPUBLICATIONINFO
*OSSL_CRMF_MSG_get0_regCtrl_pkiPublicationInfo(const OSSL_CRMF_MSG *msg);
int OSSL_CRMF_MSG_set1_regCtrl_pkiPublicationInfo(OSSL_CRMF_MSG *msg,
const OSSL_CRMF_PKIPUBLICATIONINFO *pi);
X509_PUBKEY
*OSSL_CRMF_MSG_get0_regCtrl_protocolEncrKey(const OSSL_CRMF_MSG *msg);
int OSSL_CRMF_MSG_set1_regCtrl_protocolEncrKey(OSSL_CRMF_MSG *msg,
const X509_PUBKEY *pubkey);
OSSL_CRMF_CERTID
*OSSL_CRMF_MSG_get0_regCtrl_oldCertID(const OSSL_CRMF_MSG *msg);
int OSSL_CRMF_MSG_set1_regCtrl_oldCertID(OSSL_CRMF_MSG *msg,
const OSSL_CRMF_CERTID *cid);
OSSL_CRMF_CERTID *OSSL_CRMF_CERTID_gen(const X509_NAME *issuer,
const ASN1_INTEGER *serial);
π¦ DESCRIPTION π¦
so here's the tea, one function at a time β
- Each of the
OSSL_CRMF_MSG_get0_regCtrl_X()functions returns the respective control X in the givenmsg, if present. that's the whole vibe π« OSSL_CRMF_MSG_set1_regCtrl_regToken()sets theregTokencontrol in the givenmsg, copying the giventokas value. see RFC 4211, section 6.1 πOSSL_CRMF_MSG_set1_regCtrl_authenticator()sets theauthenticatorcontrol in the givenmsg, copying the givenauthas value. see RFC 4211, section 6.2 πOSSL_CRMF_MSG_PKIPublicationInfo_push0_SinglePubInfo()pushes the givenspitosi. it consumes thespipointer. (yep,siβ that's what the page says, we don't editorialize π)OSSL_CRMF_MSG_set0_SinglePubInfo()sets in the givenSinglePubInfospithemethodand publication location, in the form of aGeneralName,nm. the publication location is optional, and thereforenmmay beNULL. the function consumes thenmpointer if present. available methods are:
# define OSSL_CRMF_PUB_METHOD_DONTCARE 0
# define OSSL_CRMF_PUB_METHOD_X500 1
# define OSSL_CRMF_PUB_METHOD_WEB 2
# define OSSL_CRMF_PUB_METHOD_LDAP 3
OSSL_CRMF_MSG_set_PKIPublicationInfo_action()sets the action in the givenpiusing the givenactionas value. see RFC 4211, section 6.3. available actions are:
# define OSSL_CRMF_PUB_ACTION_DONTPUBLISH 0
# define OSSL_CRMF_PUB_ACTION_PLEASEPUBLISH 1
OSSL_CRMF_MSG_set1_regCtrl_pkiPublicationInfo()sets thepkiPublicationInfocontrol in the givenmsg, copying the giventokas value. see RFC 4211, section 6.3. (and yes bestie, it genuinely saystokhere even though the parameter in the synopsis ispiβ i don't make the rules π)OSSL_CRMF_MSG_set1_regCtrl_protocolEncrKey()sets theprotocolEncrKeycontrol in the givenmsg, copying the givenpubkeyas value. see RFC 4211 section 6.6 πOSSL_CRMF_MSG_set1_regCtrl_oldCertID()sets theoldCertIDregTokencontrol in the givenmsg, copying the givencidas value. see RFC 4211, section 6.5 πͺͺOSSL_CRMF_CERTID_genproduces anOSSL_CRMF_CERTID_genstructure copying the givenissuername andserialnumber β¨
π RETURN VALUES π
- All
OSSL_CRMF_MSG_get0_*()functions return the respective pointer value, orNULLif not present and on error π (yeah, same answer for both, iconic behaviour honestly) - All
OSSL_CRMF_MSG_set1_*()functions return1on success,0on error β OSSL_CRMF_CERTID_gen()returns a pointer to the resulting structure orNULLon error π«
π NOTES π
a function OSSL_CRMF_MSG_set1_regCtrl_pkiArchiveOptions() for setting an Archive Options Control is not yet implemented β because the features needed to create the needed OSSL_CRMF_PKIARCHIVEOPTINS content are missing. so no cap, it's just not there yet, we wait π§
π SEE ALSO π
RFC 4211 π
π HISTORY π
the OpenSSL CRMF support was added in OpenSSL 3.0. glow-up era β¨
π COPYRIGHT π
Copyright 2007-2022 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 bestie, you ate that π
and hey β shoutout to version 3.5.6, dated 2026-04-0, the little footer that could. bye pookie, go set some reg controls π¦πΈπ
π¦ 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