# GCrypt Application Helpers

**API Group:** `xmlsec_gcrypt_app`

High-level application helpers for the GCrypt back-end.

Application support functions for GCrypt.

## Functions

### `xmlSecGCryptAppInit`

```c
int xmlSecGCryptAppInit(const char *config);
```

*Source:* [include/xmlsec/gcrypt/app.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/gcrypt/app.h#L26)

Initializes the GCrypt crypto engine.

General crypto engine initialization. This function is used by the XMLSec command-line utility and is called before the `xmlSecInit` function.

**Parameters:**

- `config` — the path to GCrypt configuration (unused).


**Returns:** 0 on success or a negative value otherwise.

---

### `xmlSecGCryptAppShutdown`

```c
int xmlSecGCryptAppShutdown(void);
```

*Source:* [include/xmlsec/gcrypt/app.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/gcrypt/app.h#L27)

Shuts down the GCrypt crypto engine.

General crypto engine shutdown. This function is used by the XMLSec command-line utility and is called after the `xmlSecShutdown` function.

**Returns:** 0 on success or a negative value otherwise.

---

### `xmlSecGCryptAppDefaultKeysMngrInit`

```c
int xmlSecGCryptAppDefaultKeysMngrInit(xmlSecKeysMngrPtr mngr);
```

*Source:* [include/xmlsec/gcrypt/app.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/gcrypt/app.h#L34)

Initializes the default key manager for GCrypt.

Initializes `mngr` with simple keys store `xmlSecSimpleKeysStoreId` and a default GCrypt crypto key data stores.

**Parameters:**

- `mngr` — the pointer to keys manager.


**Returns:** 0 on success or a negative value otherwise.

---

### `xmlSecGCryptAppDefaultKeysMngrAdoptKey`

```c
int xmlSecGCryptAppDefaultKeysMngrAdoptKey(xmlSecKeysMngrPtr mngr, xmlSecKeyPtr key);
```

*Source:* [include/xmlsec/gcrypt/app.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/gcrypt/app.h#L35)

Adds `key` to the keys manager.

Adds `key` to the keys manager `mngr` created with `xmlSecGCryptAppDefaultKeysMngrInit` function.

**Parameters:**

- `mngr` — the pointer to keys manager.
- `key` — the pointer to key.


**Returns:** 0 on success or a negative value otherwise.

---

### `xmlSecGCryptAppDefaultKeysMngrVerifyKey`

```c
int xmlSecGCryptAppDefaultKeysMngrVerifyKey(xmlSecKeysMngrPtr mngr, xmlSecKeyPtr key, xmlSecKeyInfoCtxPtr keyInfoCtx);
```

*Source:* [include/xmlsec/gcrypt/app.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/gcrypt/app.h#L37)

Verifies `key` using the keys manager.

Verifies `key` with the keys manager `mngr` created with `xmlSecCryptoAppDefaultKeysMngrInit` function:

- Checks that key certificate is present
- Checks that key certificate is valid

Adds `key` to the keys manager `mngr` created with `xmlSecCryptoAppDefaultKeysMngrInit` function.

**Parameters:**

- `mngr` — the pointer to keys manager.
- `key` — the pointer to key.
- `keyInfoCtx` — the key info context for verification.


**Returns:** 1 if key is verified, 0 otherwise, or a negative value if an error occurs.

---

### `xmlSecGCryptAppDefaultKeysMngrLoad`

```c
int xmlSecGCryptAppDefaultKeysMngrLoad(xmlSecKeysMngrPtr mngr, const char *uri);
```

*Source:* [include/xmlsec/gcrypt/app.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/gcrypt/app.h#L40)

Loads the XML keys file into the keys manager.

Loads XML keys file from `uri` to the keys manager `mngr` created with `xmlSecGCryptAppDefaultKeysMngrInit` function.

**Parameters:**

- `mngr` — the pointer to keys manager.
- `uri` — the uri.


**Returns:** 0 on success or a negative value otherwise.

---

### `xmlSecGCryptAppDefaultKeysMngrSave`

```c
int xmlSecGCryptAppDefaultKeysMngrSave(xmlSecKeysMngrPtr mngr, const char *filename, xmlSecKeyDataType type);
```

*Source:* [include/xmlsec/gcrypt/app.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/gcrypt/app.h#L42)

Saves keys from `mngr` to XML keys file.

**Parameters:**

- `mngr` — the pointer to keys manager.
- `filename` — the destination filename.
- `type` — the type of keys to save (public/private/symmetric).


**Returns:** 0 on success or a negative value otherwise.

---

### `xmlSecGCryptAppKeysMngrCertLoad`

```c
int xmlSecGCryptAppKeysMngrCertLoad(xmlSecKeysMngrPtr mngr, const char *filename, xmlSecKeyDataFormat format, xmlSecKeyDataType type);
```

*Source:* [include/xmlsec/gcrypt/app.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/gcrypt/app.h#L46)

GCrypt does not support X509 certificates.

Reads cert from `filename` and adds to the list of trusted or known untrusted certs in `store`.

**Parameters:**

- `mngr` — the keys manager.
- `filename` — the certificate file.
- `format` — the certificate file format.
- `type` — the flag that indicates is the certificate in `filename` trusted or not.


**Returns:** 0 on success or a negative value otherwise.

---

### `xmlSecGCryptAppKeysMngrCrlLoad`

```c
int xmlSecGCryptAppKeysMngrCrlLoad(xmlSecKeysMngrPtr mngr, const char *filename, xmlSecKeyDataFormat format);
```

*Source:* [include/xmlsec/gcrypt/app.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/gcrypt/app.h#L50)

GCrypt does not support X509 certificates.

Reads crls from `filename` and adds to the list of crls in `store`.

**Parameters:**

- `mngr` — the keys manager.
- `filename` — the CRL file.
- `format` — the CRL file format.


**Returns:** 0 on success or a negative value otherwise.

---

### `xmlSecGCryptAppKeysMngrCrlLoadAndVerify`

```c
int xmlSecGCryptAppKeysMngrCrlLoadAndVerify(xmlSecKeysMngrPtr mngr, const char *filename, xmlSecKeyDataFormat format, xmlSecKeyInfoCtxPtr keyInfoCtx);
```

*Source:* [include/xmlsec/gcrypt/app.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/gcrypt/app.h#L53)

GCrypt does not support X509 certificates.

Atomically loads and verifies a CRL from `filename`.

**Parameters:**

- `mngr` — the keys manager.
- `filename` — the CRL filename.
- `format` — the CRL format (PEM or DER).
- `keyInfoCtx` — the key info context for verification parameters.


**Returns:** 0 on success or a negative value otherwise.

---

### `xmlSecGCryptAppKeysMngrCertLoadMemory`

```c
int xmlSecGCryptAppKeysMngrCertLoadMemory(xmlSecKeysMngrPtr mngr, const xmlSecByte *data, xmlSecSize dataSize, xmlSecKeyDataFormat format, xmlSecKeyDataType type);
```

*Source:* [include/xmlsec/gcrypt/app.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/gcrypt/app.h#L57)

GCrypt does not support X509 certificates.

Reads cert from binary buffer `data` and adds to the list of trusted or known untrusted certs in `store`.

**Parameters:**

- `mngr` — the keys manager.
- `data` — the certificate binary data.
- `dataSize` — the certificate binary data size.
- `format` — the certificate file format.
- `type` — the flag that indicates is the certificate trusted or not.


**Returns:** 0 on success or a negative value otherwise.

---

### `xmlSecGCryptAppKeyLoadEx`

```c
xmlSecKeyPtr xmlSecGCryptAppKeyLoadEx(const char *filename, xmlSecKeyDataType type, xmlSecKeyDataFormat format, const char *pwd, void *pwdCallback, void *pwdCallbackCtx);
```

*Source:* [include/xmlsec/gcrypt/app.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/gcrypt/app.h#L70)

Reads a key from a file.

**Parameters:**

- `filename` — the key filename.
- `type` — the expected key type.
- `format` — the key file format.
- `pwd` — the key file password.
- `pwdCallback` — the key password callback.
- `pwdCallbackCtx` — the user context for password callback.


**Returns:** pointer to the key or NULL if an error occurs.

---

### `xmlSecGCryptAppKeyLoadMemory`

```c
xmlSecKeyPtr xmlSecGCryptAppKeyLoadMemory(const xmlSecByte *data, xmlSecSize dataSize, xmlSecKeyDataFormat format, const char *pwd, void *pwdCallback, void *pwdCallbackCtx);
```

*Source:* [include/xmlsec/gcrypt/app.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/gcrypt/app.h#L76)

Reads a key from the memory buffer.

**Parameters:**

- `data` — the binary key data.
- `dataSize` — the size of binary key.
- `format` — the key file format.
- `pwd` — the key file password.
- `pwdCallback` — the key password callback.
- `pwdCallbackCtx` — the user context for password callback.


**Returns:** pointer to the key or NULL if an error occurs.

---

### `xmlSecGCryptAppPkcs12Load`

```c
xmlSecKeyPtr xmlSecGCryptAppPkcs12Load(const char *filename, const char *pwd, void *pwdCallback, void *pwdCallbackCtx);
```

*Source:* [include/xmlsec/gcrypt/app.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/gcrypt/app.h#L83)

GCrypt does not support X509 certificates.

Reads a key and all associated certificates from the PKCS12 file. For uniformity, call `xmlSecGCryptAppKeyLoadEx` instead of this function. Pass in format=xmlSecKeyDataFormatPkcs12.

**Parameters:**

- `filename` — the PKCS12 key filename.
- `pwd` — the PKCS12 file password.
- `pwdCallback` — the password callback.
- `pwdCallbackCtx` — the user context for password callback.


**Returns:** pointer to the key or NULL if an error occurs.

---

### `xmlSecGCryptAppPkcs12LoadMemory`

```c
xmlSecKeyPtr xmlSecGCryptAppPkcs12LoadMemory(const xmlSecByte *data, xmlSecSize dataSize, const char *pwd, void *pwdCallback, void *pwdCallbackCtx);
```

*Source:* [include/xmlsec/gcrypt/app.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/gcrypt/app.h#L87)

GCrypt does not support X509 certificates.

Reads a key and all associated certificates from the PKCS12 data in the memory buffer. For uniformity, call xmlSecGCryptAppKeyLoadMemory instead of this function. Pass in format=xmlSecKeyDataFormatPkcs12.

**Parameters:**

- `data` — the PKCS12 binary data.
- `dataSize` — the PKCS12 binary data size.
- `pwd` — the PKCS12 file password.
- `pwdCallback` — the password callback.
- `pwdCallbackCtx` — the user context for password callback.


**Returns:** pointer to the key or NULL if an error occurs.

---

### `xmlSecGCryptAppKeyCertLoad`

```c
int xmlSecGCryptAppKeyCertLoad(xmlSecKeyPtr key, const char *filename, xmlSecKeyDataFormat format);
```

*Source:* [include/xmlsec/gcrypt/app.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/gcrypt/app.h#L92)

GCrypt does not support X509 certificates.

Reads the certificate from `filename` and adds it to key.

**Parameters:**

- `key` — the pointer to key.
- `filename` — the certificate filename.
- `format` — the certificate file format.


**Returns:** 0 on success or a negative value otherwise.

---

### `xmlSecGCryptAppKeyCertLoadMemory`

```c
int xmlSecGCryptAppKeyCertLoadMemory(xmlSecKeyPtr key, const xmlSecByte *data, xmlSecSize dataSize, xmlSecKeyDataFormat format);
```

*Source:* [include/xmlsec/gcrypt/app.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/gcrypt/app.h#L95)

GCrypt does not support X509 certificates.

Reads the certificate from memory buffer and adds it to key.

**Parameters:**

- `key` — the pointer to key.
- `data` — the certificate binary data.
- `dataSize` — the certificate binary data size.
- `format` — the certificate file format.


**Returns:** 0 on success or a negative value otherwise.

---

### `xmlSecGCryptAppGetDefaultPwdCallback`

```c
void * xmlSecGCryptAppGetDefaultPwdCallback(void);
```

*Source:* [include/xmlsec/gcrypt/app.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/gcrypt/app.h#L100)

Gets default password callback.

**Returns:** default password callback.

---
