11#include <botan/asn1_obj.h>
12#include <botan/pk_keys.h>
13#include <botan/secmem.h>
14#include <botan/x509cert.h>
86 const std::string&
password()
const {
return m_password; }
88 const std::optional<std::string>&
friendly_name()
const {
return m_friendly_name; }
97 const std::string&
mac_digest()
const {
return m_mac_digest; }
102 std::string m_password;
103 std::optional<std::string> m_friendly_name;
104 size_t m_iterations = 100000;
105 std::string m_key_encryption_algo =
"PBES2-SHA256-AES256";
106 std::string m_cert_encryption_algo;
107 std::string m_mac_digest =
"SHA-256";
108 bool m_include_mac =
true;
159 PKCS12(std::span<const uint8_t> data, std::string_view password);
167 const std::vector<std::shared_ptr<Private_Key>>&
private_keys()
const {
return m_private_keys; }
175 const std::vector<X509_Certificate>&
certificates()
const {
return m_certificates; }
182 std::optional<X509_Certificate> end_entity_certificate()
const;
188 std::vector<X509_Certificate> ca_certificates()
const;
194 const std::optional<std::string>&
friendly_name()
const {
return m_friendly_name; }
200 const std::optional<std::vector<uint8_t>>&
local_key_id()
const {
return m_local_key_id; }
210 void add_key(std::shared_ptr<Private_Key> key);
217 void set_friendly_name(std::string name);
220 void clear_friendly_name();
223 void set_local_key_id(std::vector<uint8_t>
id);
226 void clear_local_key_id();
243 std::vector<std::shared_ptr<Private_Key>> m_private_keys;
244 std::vector<X509_Certificate> m_certificates;
245 std::optional<std::string> m_friendly_name;
246 std::optional<std::vector<uint8_t>> m_local_key_id;
247 std::vector<OID> m_unknown_bag_types;
#define BOTAN_PUBLIC_API(maj, min)
const std::optional< std::string > & friendly_name() const
PKCS12_Export_Options & without_mac()
Disable the integrity MAC. Generally not recommended.
PKCS12_Export_Options & with_mac_digest(std::string algo)
Set the digest used for the integrity MAC.
static PKCS12_Export_Options modern(std::string_view password, std::optional< std::string > friendly_name={})
const std::string & key_encryption_algo() const
PKCS12_Export_Options & with_friendly_name(std::string name)
Override the friendly-name attribute (otherwise taken from the bundle).
static PKCS12_Export_Options legacy_compat(std::string_view password, std::optional< std::string > friendly_name={})
size_t iterations() const
const std::string & password() const
const std::string & cert_encryption_algo() const
Empty means: store certificates unencrypted.
PKCS12_Export_Options & with_cert_encryption_algo(std::string algo)
PKCS12_Export_Options & with_iterations(size_t n)
Set number of KDF iterations.
const std::string & mac_digest() const
PKCS12_Export_Options(std::string_view password, std::optional< std::string > friendly_name={})
PKCS12_Export_Options & with_key_encryption_algo(std::string algo)
Set the private key encryption algorithm (PKCS#12 PBE or PBES2 name).
const std::optional< std::vector< uint8_t > > & local_key_id() const
const std::optional< std::string > & friendly_name() const
const std::vector< std::shared_ptr< Private_Key > > & private_keys() const
PKCS12()=default
Construct an empty bundle.
const std::vector< OID > & unknown_bag_types() const
const std::vector< X509_Certificate > & certificates() const