## app app — Application support functions for Microsoft Crypto API. |

## Stability Level

Stable, unless otherwise indicated

## Functions

int | xmlSecMSCryptoAppInit ()
int | xmlSecMSCryptoAppShutdown ()
LPCTSTR | xmlSecMSCryptoAppGetCertStoreName ()
int | xmlSecMSCryptoAppDefaultKeysMngrInit ()
int | xmlSecMSCryptoAppDefaultKeysMngrAdoptKey ()
int | xmlSecMSCryptoAppDefaultKeysMngrVerifyKey ()
int | xmlSecMSCryptoAppDefaultKeysMngrLoad ()
int | xmlSecMSCryptoAppDefaultKeysMngrSave ()
int | xmlSecMSCryptoAppDefaultKeysMngrPrivateKeyLoad ()
int | xmlSecMSCryptoAppDefaultKeysMngrPublicKeyLoad ()
int | xmlSecMSCryptoAppDefaultKeysMngrSymKeyLoad ()
int | xmlSecMSCryptoAppDefaultKeysMngrAdoptKeyStore ()
int | xmlSecMSCryptoAppDefaultKeysMngrAdoptTrustedStore ()
int | xmlSecMSCryptoAppDefaultKeysMngrAdoptUntrustedStore ()
int | xmlSecMSCryptoAppKeysMngrCertLoad ()
int | xmlSecMSCryptoAppKeysMngrCertLoadMemory ()
int | xmlSecMSCryptoAppKeysMngrCrlLoad ()
int | xmlSecMSCryptoAppKeysMngrCrlLoadMemory ()
xmlSecKeyPtr | xmlSecMSCryptoAppKeyLoadEx ()
xmlSecKeyPtr | xmlSecMSCryptoAppKeyLoadMemory ()
xmlSecKeyPtr | xmlSecMSCryptoAppPkcs12Load ()
xmlSecKeyPtr | xmlSecMSCryptoAppPkcs12LoadMemory ()
int | xmlSecMSCryptoAppKeyCertLoad ()
int | xmlSecMSCryptoAppKeyCertLoadMemory ()
void * | xmlSecMSCryptoAppGetDefaultPwdCallback ()

## Description

Common functions for xmlsec1 command line utility tool for MSCrypto.

## Functions

### xmlSecMSCryptoAppInit ()

    int
    xmlSecMSCryptoAppInit (const char *config);

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

#### Parameters

config | the name of another then the default ms certificate store. |

#### Returns

0 on success or a negative value otherwise.

### xmlSecMSCryptoAppShutdown ()

    int
    xmlSecMSCryptoAppShutdown (void);

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

#### Returns

0 on success or a negative value otherwise.

### xmlSecMSCryptoAppGetCertStoreName ()

    LPCTSTR
    xmlSecMSCryptoAppGetCertStoreName (void);

Gets the MS Crypto certs store name set by `xmlSecMSCryptoAppInit` function.

#### Returns

the MS Crypto certs name used by xmlsec-mscrypto.

### xmlSecMSCryptoAppDefaultKeysMngrInit ()

    int
    xmlSecMSCryptoAppDefaultKeysMngrInit (xmlSecKeysMngrPtr mngr);

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

#### Parameters

mngr | the pointer to keys manager. |

#### Returns

0 on success or a negative value otherwise.

### xmlSecMSCryptoAppDefaultKeysMngrAdoptKey ()

    int
    xmlSecMSCryptoAppDefaultKeysMngrAdoptKey
                                   (xmlSecKeysMngrPtr mngr,
                                    xmlSecKeyPtr key);

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

#### Parameters

mngr | the pointer to keys manager. |
key | the pointer to key. |

#### Returns

0 on success or a negative value otherwise.

### xmlSecMSCryptoAppDefaultKeysMngrVerifyKey ()

    int
    xmlSecMSCryptoAppDefaultKeysMngrVerifyKey
                                   (xmlSecKeysMngrPtr mngr,
                                    xmlSecKeyPtr key,
                                    xmlSecKeyInfoCtxPtr keyInfoCtx);

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.

### xmlSecMSCryptoAppDefaultKeysMngrLoad ()

    int
    xmlSecMSCryptoAppDefaultKeysMngrLoad (xmlSecKeysMngrPtr mngr,
                                          const char *uri);

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

#### Parameters

mngr | the pointer to keys manager. |
uri | the uri. |

#### Returns

0 on success or a negative value otherwise.

### xmlSecMSCryptoAppDefaultKeysMngrSave ()

    int
    xmlSecMSCryptoAppDefaultKeysMngrSave (xmlSecKeysMngrPtr mngr,
                                          const char *filename,
                                          xmlSecKeyDataType type);

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.

### xmlSecMSCryptoAppDefaultKeysMngrPrivateKeyLoad ()

    int
    xmlSecMSCryptoAppDefaultKeysMngrPrivateKeyLoad
                                   (xmlSecKeysMngrPtr mngr,
                                    HCRYPTKEY hKey);

Adds private key `hKey` to the keys manager `mngr` .

#### Parameters

mngr | the pointer to keys manager. |
hKey | the key handle. |

#### Returns

0 on success or a negative value otherwise.

### xmlSecMSCryptoAppDefaultKeysMngrPublicKeyLoad ()

    int
    xmlSecMSCryptoAppDefaultKeysMngrPublicKeyLoad
                                   (xmlSecKeysMngrPtr mngr,
                                    HCRYPTKEY hKey);

Adds public key `hKey` to the keys manager `mngr` .

#### Parameters

mngr | the pointer to keys manager. |
hKey | the key handle. |

#### Returns

0 on success or a negative value otherwise.

### xmlSecMSCryptoAppDefaultKeysMngrSymKeyLoad ()

    int
    xmlSecMSCryptoAppDefaultKeysMngrSymKeyLoad
                                   (xmlSecKeysMngrPtr mngr,
                                    HCRYPTKEY hKey);

Adds symmetric key `hKey` to the keys manager `mngr` .

#### Parameters

mngr | the pointer to keys manager. |
hKey | the key handle. |

#### Returns

0 on success or a negative value otherwise.

### xmlSecMSCryptoAppDefaultKeysMngrAdoptKeyStore ()

    int
    xmlSecMSCryptoAppDefaultKeysMngrAdoptKeyStore
                                   (xmlSecKeysMngrPtr mngr,
                                    HCERTSTORE keyStore);

Adds `keyStore` to the list of key stores in the keys manager `mngr` .

#### Parameters

mngr | the keys manager. |
keyStore | the pointer to keys store. |

#### Returns

0 on success or a negative value if an error occurs.

### xmlSecMSCryptoAppDefaultKeysMngrAdoptTrustedStore ()

    int
    xmlSecMSCryptoAppDefaultKeysMngrAdoptTrustedStore
                                   (xmlSecKeysMngrPtr mngr,
                                    HCERTSTORE trustedStore);

Adds `trustedStore` to the list of trusted cert stores in the keys manager `mngr` .

#### Parameters

mngr | the keys manager. |
trustedStore | the pointer to certs store. |

#### Returns

0 on success or a negative value if an error occurs.

### xmlSecMSCryptoAppDefaultKeysMngrAdoptUntrustedStore ()

    int
    xmlSecMSCryptoAppDefaultKeysMngrAdoptUntrustedStore
                                   (xmlSecKeysMngrPtr mngr,
                                    HCERTSTORE untrustedStore);

Adds `trustedStore` to the list of un-trusted cert stores in the keys manager `mngr` .

#### Parameters

mngr | the keys manager. |
untrustedStore | the pointer to certs store. |

#### Returns

0 on success or a negative value if an error occurs.

### xmlSecMSCryptoAppKeysMngrCertLoad ()

    int
    xmlSecMSCryptoAppKeysMngrCertLoad (xmlSecKeysMngrPtr mngr,
                                       const char *filename,
                                       xmlSecKeyDataFormat format,
                                       xmlSecKeyDataType type);

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.

### xmlSecMSCryptoAppKeysMngrCertLoadMemory ()

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

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

#### Parameters

mngr | the keys manager. |
data | the binary certificate. |
dataSize | size of binary certificate (data) |
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.

### xmlSecMSCryptoAppKeysMngrCrlLoad ()

    int
    xmlSecMSCryptoAppKeysMngrCrlLoad (xmlSecKeysMngrPtr mngr,
                                      const char *filename,
                                      xmlSecKeyDataFormat format);

Reads crl 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.

### xmlSecMSCryptoAppKeysMngrCrlLoadMemory ()

    int
    xmlSecMSCryptoAppKeysMngrCrlLoadMemory
                                   (xmlSecKeysMngrPtr mngr,
                                    const xmlSecByte *data,
                                    xmlSecSize dataSize,
                                    xmlSecKeyDataFormat format);

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

#### Parameters

mngr | the keys manager. |
data | the binary CRL. |
dataSize | size of binary CRL (data) |
format | the CRL format. |

#### Returns

0 on success or a negative value otherwise.

### xmlSecMSCryptoAppKeyLoadEx ()

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

`xmlSecMSCryptoAppKeyLoadEx` is deprecated and should not be used in newly-written code.

Reads key from the 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.

### xmlSecMSCryptoAppKeyLoadMemory ()

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

Reads key from the a file.

#### Parameters

data | the key binary data. |
dataSize | the key data size. |
format | the key format. |
pwd | the key password. |
pwdCallback | the key password callback. |
pwdCallbackCtx | the user context for password callback. |

#### Returns

pointer to the key or NULL if an error occurs.

### xmlSecMSCryptoAppPkcs12Load ()

    xmlSecKeyPtr
    xmlSecMSCryptoAppPkcs12Load (const char *filename,
                                 const char *pwd,
                                 void *pwdCallback,
                                 void *pwdCallbackCtx);

Reads key and all associated certificates from the PKCS12 file

#### 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.

### xmlSecMSCryptoAppPkcs12LoadMemory ()

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

Reads key and all associated certificates from the PKCS12 binary

#### Parameters

data | the binary PKCS12 key in data. |
dataSize | size of binary pkcs12 data |
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.

### xmlSecMSCryptoAppKeyCertLoad ()

    int
    xmlSecMSCryptoAppKeyCertLoad (xmlSecKeyPtr key,
                                  const char *filename,
                                  xmlSecKeyDataFormat format);

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.

### xmlSecMSCryptoAppKeyCertLoadMemory ()

    int
    xmlSecMSCryptoAppKeyCertLoadMemory (xmlSecKeyPtr key,
                                        const xmlSecByte *data,
                                        xmlSecSize dataSize,
                                        xmlSecKeyDataFormat format);

Reads the certificate from $`data` and adds it to key.

#### Parameters

key | the pointer to key. |
data | the binary certificate. |
dataSize | size of certificate binary (data) |
format | the certificate file format. |

#### Returns

0 on success or a negative value otherwise.

### xmlSecMSCryptoAppGetDefaultPwdCallback ()

    void *
    xmlSecMSCryptoAppGetDefaultPwdCallback
                                   (void);

Gets default password callback.

#### Returns

default password callback.