## x509 x509 — X509 certificates implementation for Microsoft Crypto API. |

## Stability Level

Stable, unless otherwise indicated

## Functions

xmlSecKeyDataId | xmlSecMSCryptoKeyDataX509GetKlass ()
PCCERT_CONTEXT | xmlSecMSCryptoKeyDataX509GetKeyCert ()
int | xmlSecMSCryptoKeyDataX509AdoptKeyCert ()
int | xmlSecMSCryptoKeyDataX509AdoptCert ()
PCCERT_CONTEXT | xmlSecMSCryptoKeyDataX509GetCert ()
xmlSecSize | xmlSecMSCryptoKeyDataX509GetCertsSize ()
int | xmlSecMSCryptoKeyDataX509AdoptCrl ()
PCCRL_CONTEXT | xmlSecMSCryptoKeyDataX509GetCrl ()
xmlSecSize | xmlSecMSCryptoKeyDataX509GetCrlsSize ()
xmlSecKeyDataId | xmlSecMSCryptoKeyDataRawX509CertGetKlass ()
xmlSecKeyDataStoreId | xmlSecMSCryptoX509StoreGetKlass ()
int | xmlSecMSCryptoX509StoreAdoptCert ()
int | xmlSecMSCryptoX509StoreAdoptKeyStore ()
int | xmlSecMSCryptoX509StoreAdoptTrustedStore ()
int | xmlSecMSCryptoX509StoreAdoptUntrustedStore ()
void | xmlSecMSCryptoX509StoreEnableSystemTrustedCerts ()

## Types and Values

#define | xmlSecMSCryptoKeyDataX509Id
#define | xmlSecMSCryptoKeyDataRawX509CertId
#define | xmlSecMSCryptoX509StoreId

## Description

## Functions

### xmlSecMSCryptoKeyDataX509GetKlass ()

    xmlSecKeyDataId
    xmlSecMSCryptoKeyDataX509GetKlass (void);

The MSCrypto X509 key data klass (http://www.w3.org/TR/xmldsig-core/sec-X509Data).

#### Returns

the X509 data klass.

### xmlSecMSCryptoKeyDataX509GetKeyCert ()

    PCCERT_CONTEXT
    xmlSecMSCryptoKeyDataX509GetKeyCert (xmlSecKeyDataPtr data);

Gets the certificate from which the key was extracted.

#### Parameters

data | the pointer to X509 key data. |

#### Returns

the key's certificate or NULL if key data was not used for key extraction or an error occurs.

### xmlSecMSCryptoKeyDataX509AdoptKeyCert ()

    int
    xmlSecMSCryptoKeyDataX509AdoptKeyCert (xmlSecKeyDataPtr data,
                                           PCCERT_CONTEXT cert);

Sets the key's certificate in `data` .

#### Parameters

data | the pointer to X509 key data. |
cert | the pointer to MSCRYPTO X509 certificate. |

#### Returns

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

### xmlSecMSCryptoKeyDataX509AdoptCert ()

    int
    xmlSecMSCryptoKeyDataX509AdoptCert (xmlSecKeyDataPtr data,
                                        PCCERT_CONTEXT cert);

Adds certificate to the X509 key data.

#### Parameters

data | the pointer to X509 key data. |
cert | the pointer to MSCRYPTO X509 certificate. |

#### Returns

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

### xmlSecMSCryptoKeyDataX509GetCert ()

    PCCERT_CONTEXT
    xmlSecMSCryptoKeyDataX509GetCert (xmlSecKeyDataPtr data,
                                      xmlSecSize pos);

Gets a certificate from X509 key data.

#### Parameters

data | the pointer to X509 key data. |
pos | the desired certificate position. |

#### Returns

the pointer to certificate or NULL if `pos` is larger than the number of certificates in `data` or an error occurs.

### xmlSecMSCryptoKeyDataX509GetCertsSize ()

    xmlSecSize
    xmlSecMSCryptoKeyDataX509GetCertsSize (xmlSecKeyDataPtr data);

Gets the number of certificates in `data` .

#### Parameters

data | the pointer to X509 key data. |

#### Returns

te number of certificates in `data` .

### xmlSecMSCryptoKeyDataX509AdoptCrl ()

    int
    xmlSecMSCryptoKeyDataX509AdoptCrl (xmlSecKeyDataPtr data,
                                       PCCRL_CONTEXT crl);

Adds CRL to the X509 key data.

#### Parameters

data | the pointer to X509 key data. |
crl | the pointer to MSCrypto X509 CRL. |

#### Returns

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

### xmlSecMSCryptoKeyDataX509GetCrl ()

    PCCRL_CONTEXT
    xmlSecMSCryptoKeyDataX509GetCrl (xmlSecKeyDataPtr data,
                                     xmlSecSize pos);

Gets a CRL from X509 key data.

#### Parameters

data | the pointer to X509 key data. |
pos | the desired CRL position. |

#### Returns

the pointer to CRL or NULL if `pos` is larger than the number of CRLs in `data` or an error occurs.

### xmlSecMSCryptoKeyDataX509GetCrlsSize ()

    xmlSecSize
    xmlSecMSCryptoKeyDataX509GetCrlsSize (xmlSecKeyDataPtr data);

Gets the number of CRLs in `data` .

#### Parameters

data | the pointer to X509 key data. |

#### Returns

te number of CRLs in `data` .

### xmlSecMSCryptoKeyDataRawX509CertGetKlass ()

    xmlSecKeyDataId
    xmlSecMSCryptoKeyDataRawX509CertGetKlass
                                   (void);

The raw X509 certificates key data klass.

#### Returns

raw X509 certificates key data klass.

### xmlSecMSCryptoX509StoreGetKlass ()

    xmlSecKeyDataStoreId
    xmlSecMSCryptoX509StoreGetKlass (void);

The MSCrypto X509 certificates key data store klass.

#### Returns

pointer to MSCrypto X509 certificates key data store klass.

### xmlSecMSCryptoX509StoreAdoptCert ()

    int
    xmlSecMSCryptoX509StoreAdoptCert (xmlSecKeyDataStorePtr store,
                                      PCCERT_CONTEXT cert,
                                      xmlSecKeyDataType type);

Adds trusted (root) or untrusted certificate to the store.

#### Parameters

store | the pointer to X509 key data store klass. |
cert | the pointer to PCCERT_CONTEXT X509 certificate. |
type | the certificate type (trusted/untrusted). |

#### Returns

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

### xmlSecMSCryptoX509StoreAdoptKeyStore ()

    int
    xmlSecMSCryptoX509StoreAdoptKeyStore (xmlSecKeyDataStorePtr store,
                                          HCERTSTORE keyStore);

Adds `keyStore` to the list of key stores.

#### Parameters

store | the pointer to X509 key data store klass. |
keyStore | the pointer to keys store. |

#### Returns

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

### xmlSecMSCryptoX509StoreAdoptTrustedStore ()

    int
    xmlSecMSCryptoX509StoreAdoptTrustedStore
                                   (xmlSecKeyDataStorePtr store,
                                    HCERTSTORE trustedStore);

Adds `trustedStore` to the list of trusted certs stores.

#### Parameters

store | the pointer to X509 key data store klass. |
trustedStore | the pointer to certs store. |

#### Returns

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

### xmlSecMSCryptoX509StoreAdoptUntrustedStore ()

    int
    xmlSecMSCryptoX509StoreAdoptUntrustedStore
                                   (xmlSecKeyDataStorePtr store,
                                    HCERTSTORE untrustedStore);

Adds `trustedStore` to the list of un-trusted certs stores.

#### Parameters

store | the pointer to X509 key data store klass. |
untrustedStore | the pointer to certs store. |

#### Returns

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

### xmlSecMSCryptoX509StoreEnableSystemTrustedCerts ()

    void
    xmlSecMSCryptoX509StoreEnableSystemTrustedCerts
                                   (xmlSecKeyDataStorePtr store,
                                    int val);

Enables/disables the system trusted certs.

#### Parameters

store | the pointer to X509 key data store klass. |
val | the enable/disable flag |

## Types and Values

### xmlSecMSCryptoKeyDataX509Id

    #define             xmlSecMSCryptoKeyDataX509Id

The MSCrypto X509 data klass.

### xmlSecMSCryptoKeyDataRawX509CertId

    #define             xmlSecMSCryptoKeyDataRawX509CertId

The MSCrypto raw X509 certificate klass.

### xmlSecMSCryptoX509StoreId

    #define             xmlSecMSCryptoX509StoreId

The MSCrypto X509 store klass.