---
product: Chilkat
product_version: 11.7.0
language: wcpp
language_label: Unicode C++
class: XmlCertVault
class_name: CkXmlCertVaultW
license: free
deprecated: false
reference_html: https://www.chilkatsoft.com/refdoc/wcppCkXmlCertVaultWRef.html
---
# Chilkat XmlCertVault — Unicode C++ — v11.7.0

> Chilkat 11.7.0 · language=wcpp · class=XmlCertVault (CkXmlCertVaultW)
> Other versions: replace `11.7.0` in this URL. Other languages: `https://www.chilkatsoft.com/ai-docs/v/11.7.0/<lang>/classes/XmlCertVault.md`.
> Language-wide rules (install, unlock, error model, strings/bytes): `https://www.chilkatsoft.com/ai-docs/v/11.7.0/wcpp/guide.md`.

## Purpose

**Collect certificates, certificate chains, PEM data, and PFX private keys in an XML vault.**

`Chilkat.XmlCertVault` stores certificates and private-key material in a portable XML-based certificate vault. It can add individual certificates, certificate chains, DER or encoded certificates, PEM files, certificate strings, and PFX/PKCS12 data from files, memory, encoded text, or existing Chilkat objects. The vault can then be exported as XML, loaded from XML, or saved to an XML file for later reuse by other Chilkat certificate and TLS workflows.

**Add certificates**

Add certificates from `Cert` objects, files, PEM strings, binary DER bytes, or encoded data such as Base64 or hex.

**Add certificate chains**

Import an entire `CertChain` when related issuer and intermediate certificates should be kept together in the vault.

**Add PEM content**

Load PEM files containing one or more certificates and/or private keys, including encrypted PEM content when a password is supplied.

**Add PFX / PKCS12**

Add PFX data from a `Pfx` object, file, byte array, or encoded string, using the PFX password to import private-key material.

**Master password protection**

Use `MasterPassword` to protect access to private keys stored in the vault.

**Load and save XML**

Export the vault with `GetXml`, load it with `LoadXml` or `LoadXmlFile`, and persist it with `SaveXml`.

**Common pattern:** Create an `XmlCertVault`, set `MasterPassword` when the vault will contain private keys, add certificates or PFX/PEM material, then save the vault with `SaveXml` or keep the XML string from `GetXml`. Later, reload the same vault with `LoadXml` or `LoadXmlFile` and provide the same master password before using private keys.

**Security note:** Certificates are stored unencrypted, but private keys are stored using 256-bit AES encryption. The individual PFX passwords are also stored encrypted with the vault's `MasterPassword`, which is required to access any private keys contained in the XML vault.

## Object creation, unlocking and error handling

**Object Creation**

```cpp
// Local variable on the stack
CkXmlCertVaultW obj;

// Dynamically allocate/delete
CkXmlCertVaultW *pObj = new CkXmlCertVaultW();
// ...
delete pObj;
```

Call `Global.UnlockBundle` once at the start of the program, before using this or any other Chilkat class. Any string unlocks a fully functional 30-day trial; a purchased unlock code is used in production. See `guide.md` for the exact code in Unicode C++.

How failure is reported depends on the method's return type and is stated in the note under each method below. In every case the diagnostic text is in the `LastErrorText` property of the object whose method was called.

## Members common to every Chilkat class

Documented once per language in `common-members.md`; listed here so this page is self-contained.

| Property | Signature | Access | Meaning |
|---|---|---|---|
| `DebugLogFilePath` | `void get_DebugLogFilePath(CkString &str); const wchar_t *debugLogFilePath(void); void put_DebugLogFilePath(const wchar_t *str);` | read/write | If set to a file path, this property logs the LastErrorText of each Chilkat method or property call to the specified file. |
| `LastErrorHtml` | `void get_LastErrorHtml(CkString &str); const wchar_t *lastErrorHtml(void);` | read-only | Provides HTML-formatted information about the last called method or property. |
| `LastErrorText` | `void get_LastErrorText(CkString &str); const wchar_t *lastErrorText(void);` | read-only | Provides plain text information about the last called method or property. |
| `LastErrorXml` | `void get_LastErrorXml(CkString &str); const wchar_t *lastErrorXml(void);` | read-only | Provides XML-formatted information about the last called method or property. |
| `LastMethodSuccess` | `bool get_LastMethodSuccess(void); void put_LastMethodSuccess(bool newVal);` | read/write | Indicates the success or failure of the most recent method call: `true` means success, `false` means failure. |
| `VerboseLogging` | `bool get_VerboseLogging(void); void put_VerboseLogging(bool newVal);` | read/write | If set to `true`, then the contents of LastErrorText (or LastErrorXml, or LastErrorHtml) may contain more verbose information. |
| `Version` | `void get_Version(CkString &str); const wchar_t *version(void);` | read-only | Version of the component/library, such as "10.1.0" |

## Member index

| Member | Kind | Signature |
|---|---|---|
| `MasterPassword` | property, read/write | `void get_MasterPassword(CkString &str); const wchar_t *masterPassword(void); void put_MasterPassword(const wchar_t *str);` |
| `AddCert` | method | `bool AddCert(CkCertW &cert);` |
| `AddCertChain` | method | `bool AddCertChain(CkCertChainW &certChain);` |
| `AddCertEncoded` | method | `bool AddCertEncoded(const wchar_t *encodedBytes, const wchar_t *encoding);` |
| `AddCertFile` | method | `bool AddCertFile(const wchar_t *path);` |
| `AddCertString` | method | `bool AddCertString(const wchar_t *certData);` |
| `AddPemFile` | method | `bool AddPemFile(const wchar_t *path, const wchar_t *password);` |
| `AddPfx` | method | `bool AddPfx(CkPfxW &pfx);` |
| `AddPfxEncoded` | method | `bool AddPfxEncoded(const wchar_t *encodedBytes, const wchar_t *encoding, const wchar_t *password);` |
| `AddPfxFile` | method | `bool AddPfxFile(const wchar_t *path, const wchar_t *password);` |
| `GetXml` | method | `bool GetXml(CkString &outStr); const wchar_t *getXml(void);` |
| `LoadXml` | method | `bool LoadXml(const wchar_t *xml);` |
| `LoadXmlFile` | method | `bool LoadXmlFile(const wchar_t *path);` |
| `SaveXml` | method | `bool SaveXml(const wchar_t *path);` |

Deprecated members are listed at the end of this file with their replacements; do not use them in new code.

## Properties

### XmlCertVault.MasterPassword

`Chilkat 11.7.0 · wcpp · XmlCertVault · MasterPassword · property · read/write · since 9.5.0.40`

```cpp
void get_MasterPassword(CkString &str);

const wchar_t *masterPassword(void);

void put_MasterPassword(const wchar_t *str);
```

The master password for the vault. Certificates are stored unencrypted, but private keys are stored 256-bit AES encrypted using the individual PFX passwords. The PFX passwords are stored 256-bit AES encrypted using the master password. The master password is required to acces any of the private keys stored within the XML vault.

## Methods

### XmlCertVault.AddCert

`Chilkat 11.7.0 · wcpp · XmlCertVault · AddCert · method · since 9.5.0.40`

```cpp
bool AddCert(CkCertW &cert);
```

Adds a certificate to the XML vault.

Returns true for success, false for failure.

### XmlCertVault.AddCertChain

`Chilkat 11.7.0 · wcpp · XmlCertVault · AddCertChain · method · since 9.5.0.40`

```cpp
bool AddCertChain(CkCertChainW &certChain);
```

Adds a chain of certificates to the XML vault.

Returns true for success, false for failure.

### XmlCertVault.AddCertEncoded

`Chilkat 11.7.0 · wcpp · XmlCertVault · AddCertEncoded · method · since 9.5.0.40`

```cpp
bool AddCertEncoded(const wchar_t *encodedBytes, const wchar_t *encoding);
```

Adds a certificate to the XML vault where certificate is passed directly from encoded bytes (such as Base64, Hex, etc.). The encoding is indicated by `encoding`.

Returns true for success, false for failure.

### XmlCertVault.AddCertFile

`Chilkat 11.7.0 · wcpp · XmlCertVault · AddCertFile · method · since 9.5.0.40`

```cpp
bool AddCertFile(const wchar_t *path);
```

Adds a certificate to the XML vault.

Returns true for success, false for failure.

### XmlCertVault.AddCertString

`Chilkat 11.7.0 · wcpp · XmlCertVault · AddCertString · method · since 9.5.0.40`

```cpp
bool AddCertString(const wchar_t *certData);
```

Adds a certificate from any string representation format such as PEM.

Returns true for success, false for failure.

### XmlCertVault.AddPemFile

`Chilkat 11.7.0 · wcpp · XmlCertVault · AddPemFile · method · since 9.5.0.40`

```cpp
bool AddPemFile(const wchar_t *path, const wchar_t *password);
```

Adds the contents of a PEM file to the XML vault. The PEM file may be encrypted, and it may contain one or more certificates and/or private keys. The password is optional and only required if the PEM file contains encrypted content that requires a password.

Returns true for success, false for failure.

### XmlCertVault.AddPfx

`Chilkat 11.7.0 · wcpp · XmlCertVault · AddPfx · method · since 9.5.0.40`

```cpp
bool AddPfx(CkPfxW &pfx);
```

Adds a PFX (PKCS12) to the XML vault.

Returns true for success, false for failure.

### XmlCertVault.AddPfxEncoded

`Chilkat 11.7.0 · wcpp · XmlCertVault · AddPfxEncoded · method`

```cpp
bool AddPfxEncoded(const wchar_t *encodedBytes, const wchar_t *encoding, const wchar_t *password);
```

Adds a PFX to the XML vault where PFX is passed directly from encoded bytes (such as Base64, Hex, etc.). The encoding is indicated by `encoding`.

Returns true for success, false for failure.

### XmlCertVault.AddPfxFile

`Chilkat 11.7.0 · wcpp · XmlCertVault · AddPfxFile · method · since 9.5.0.40`

```cpp
bool AddPfxFile(const wchar_t *path, const wchar_t *password);
```

Adds a PFX file to the XML vault.

Returns true for success, false for failure.

### XmlCertVault.GetXml

`Chilkat 11.7.0 · wcpp · XmlCertVault · GetXml · method · since 9.5.0.40`

```cpp
bool GetXml(CkString &outStr);

const wchar_t *getXml(void);
```

Returns the contents of the cert vault as an XML string.

Returns true for success, false for failure.

### XmlCertVault.LoadXml

`Chilkat 11.7.0 · wcpp · XmlCertVault · LoadXml · method · since 9.5.0.40`

```cpp
bool LoadXml(const wchar_t *xml);
```

Loads from an XML string.

Returns true for success, false for failure.

### XmlCertVault.LoadXmlFile

`Chilkat 11.7.0 · wcpp · XmlCertVault · LoadXmlFile · method · since 9.5.0.40`

```cpp
bool LoadXmlFile(const wchar_t *path);
```

Loads from an XML file.

Returns true for success, false for failure.

### XmlCertVault.SaveXml

`Chilkat 11.7.0 · wcpp · XmlCertVault · SaveXml · method · since 9.5.0.40`

```cpp
bool SaveXml(const wchar_t *path);
```

Saves the contents to an XML file.

Returns true for success, false for failure.

## Deprecated members — do not use in new code

| Member | Kind | Deprecated in | Use instead |
|---|---|---|---|
| `AddCertBinary` | method | before 11.6.1 | — |
| `AddPfxBinary` | method | before 11.6.1 | — |

## Related classes

[`Cert`](https://www.chilkatsoft.com/ai-docs/v/11.7.0/wcpp/classes/Cert.md), [`CertChain`](https://www.chilkatsoft.com/ai-docs/v/11.7.0/wcpp/classes/CertChain.md), [`Pfx`](https://www.chilkatsoft.com/ai-docs/v/11.7.0/wcpp/classes/Pfx.md)

