PKCS12_ADD_SAFE(3SSL)
π PKCS12_ADD_SAFE β the OpenSSL girlies' guide π
okay bestie, so this one lives in section 3SSL of the OpenSSL manual, and it's literally all about building PKCS#12 structures piece by piece π like, you're not making the whole smoothie at once, you're adding the lil ingredients and then blending.
β¨ NAME β¨
PKCS12_add_safe, PKCS12_add_safe_ex, PKCS12_add_safes, PKCS12_add_safes_ex β Create and add objects to a PKCS#12 structure π«Ά
β¨ SYNOPSIS β¨
#include <openssl/pkcs12.h>
int PKCS12_add_safe(STACK_OF(PKCS7) **psafes, STACK_OF(PKCS12_SAFEBAG) *bags,
int safe_nid, int iter, const char *pass);
int PKCS12_add_safe_ex(STACK_OF(PKCS7) **psafes, STACK_OF(PKCS12_SAFEBAG) *bags,
int safe_nid, int iter, const char *pass,
OSSL_LIB_CTX *ctx, const char *propq);
PKCS12 *PKCS12_add_safes(STACK_OF(PKCS7) *safes, int p7_nid);
PKCS12 *PKCS12_add_safes_ex(STACK_OF(PKCS7) *safes, int p7_nid,
OSSL_LIB_CTX *ctx, const char *propq);
like, yes, four of them π
two of them are the "normal" ones and two of them are the _ex glow-ups.
β¨ DESCRIPTION β¨
πΈ PKCS12_add_safe() β the little one
PKCS12_add_safe() creates a brand new PKCS7 contentInfo containing the supplied PKCS12_SAFEBAGs and adds this to a set of PKCS7 contentInfos. and its type?? that depends entirely on the value of safe_nid, no cap:
- If
safe_nidis-1, a plainPKCS7datacontentInfois created. simple. clean. minimal. her main character era π¦ - If
safe_nidis a valid PBE algorithm NID, aPKCS7encryptedDatacontentInfois created. The algorithm usespassas the passphrase anditeras the iteration count. Ifiteris zero then a default value for iteration count of2048is used. she'll pick for you bestie, she's generous β¨ - If
safe_nidis0, aPKCS7encryptedDatacontentInfois created using a default encryption algorithm, currentlyNID_pbe_WithSHA1And3_Key_TripleDES_CBC. that's the vibe she defaults to π₯
πΈ PKCS12_add_safe_ex() β the same but with options
PKCS12_add_safe_ex() is identical to PKCS12_add_safe() but allows for a library context ctx and property query propq to be used to select algorithm implementations. so like, same energy, but now you get to choose whose algorithm implementation you're pulling from π
πΈ PKCS12_add_safes() β the wrapper
PKCS12_add_safes() creates a PKCS12 structure containing the supplied set of PKCS7 contentInfos. The safes are enclosed first within a PKCS7 contentInfo of type p7_nid. Currently the only supported type is NID_pkcs7_data β that's it, that's the whole guest list π
πΈ PKCS12_add_safes_ex() β the wrapper, but β¨fancyβ¨
PKCS12_add_safes_ex() is identical to PKCS12_add_safes() but allows for a library context ctx and property query propq to be used to select algorithm implementations. yeah you saw this coming π
β¨ NOTES β¨
β οΈ bestie, listen:PKCS12_add_safe()makes assumptions regarding the encoding of the given pass phrase. Seepassphrase-encoding(7)for more information. don't just yolo your passphrase in, go read that one π
β¨ RETURN VALUES β¨
PKCS12_add_safe()returns a value of1indicating success or0for failure. binary queen, no in between πPKCS12_add_safes()returns a validPKCS12structure orNULLif an error occurred. hi,NULLis not a personality π«
β¨ CONFORMING TO β¨
IETF RFC 7292 (https://tools.ietf.org/html/rfc7292) π β she's certified, she's standards-compliant, she read the whole spec (okay she skimmed it but she got the important bits).
β¨ SEE ALSO β¨
PKCS12_create(3)π β like, go read her too, they're literally sisters
β¨ HISTORY β¨
PKCS12_add_safe_ex() and PKCS12_add_safes_ex() were added in OpenSSL 3.0. so the _ex girlies are the newer sisters in the family, born in the 3.0 era π
β¨ COPYRIGHT β¨
Copyright 2020-2021 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. yes bestie, actually read the license, it's giving legal and it's giving necessary β
okay that's the whole page!! π¦ this was OpenSSL docs, version 4.0.3, dated 2026-09-29, and she ate, no crumbs. mwah, go build your PKCS#12 structures responsibly, ily, bye πβ¨
π¦ where this page comes from
- ubuntu stonking: libssl-doc 4.0.3-1ubuntu1 Β· Apache-2.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms