Windows2000/private/genx/security/xenroll/xenroll.idl
2020-09-30 17:12:32 +02:00

1008 lines
20 KiB
Plaintext

// xenroll.idl : IDL source for xenroll.dll
//
// This file will be processed by the MIDL tool to
// produce the type library (xenroll.tlb) and marshalling code.
import "oaidl.idl";
import "ocidl.idl";
import "wincrypt.idl";
[
object,
uuid(43F8F288-7A20-11D0-8F06-00C04FC295E1),
dual,
helpstring("ICEnroll Interface"),
pointer_default(unique)
]
interface ICEnroll : IDispatch
{
// Walk the end user through the process of generating a key
// pair, which either will or will not be required to use some form
// of hardware private key management, per the fRequireHardware
// parameter. Return to the caller a PKCS#10 of the resulting
// generated key, where in the subject name
HRESULT createFilePKCS10
(
[in] BSTR DNName,
[in] BSTR Usage,
[in] BSTR wszPKCS10FileName
);
// Accept delivery of the credentials that correspond to a previous
// call to GenerateKeyPair. This method puts the credentials
// whereever they are supposed to go for easy subsequent access
// by the user.
HRESULT acceptFilePKCS7
(
[in] BSTR wszPKCS7FileName
);
HRESULT createPKCS10
(
// This is the DN name for the certificate in X500 name syntax.
// For example CN=KeithV
[in] BSTR DNName,
// This is the usage string, it will end up in the certificate
// enumerating what the certificate is used for. For example
// ClientAuth, Or CodeSigning. It can be any string.
[in] BSTR Usage,
// The return value is a Base64 encoded
// PKCS10 Cert Request
[out,retval] BSTR* pPKCS10
);
// Accept delivery of the credentials that correspond to a previous
// call to GenerateKeyPair. This method puts the credentials
// whereever they are supposed to go for easy subsequent access
// by the user.
HRESULT acceptPKCS7
(
// The credentials that are to be stored. Credentials
// are a PKCS#7 SignedData that is used simply as a bucket
// to convey a bunch of certificates. There must be precisely
// one certificate with no child in the bucket.
[in] BSTR PKCS7
);
HRESULT getCertFromPKCS7(
[in] BSTR wszPKCS7,
[retval][out] BSTR* pbstrCert
);
HRESULT enumProviders(
[in] DWORD dwIndex,
[in] DWORD dwFlags,
[retval][out] BSTR* pbstrProvName
);
HRESULT enumContainers(
[in] DWORD dwIndex,
[retval][out] BSTR* pbstr
);
// Session Id's must be appropriately clean up
HRESULT freeRequestInfo
(
// The session Id that represents the data
[in] BSTR PKCS7OrPKCS10
);
[propget]
HRESULT MyStoreName(
[out, retval] BSTR * pbstrName
);
[propput]
HRESULT MyStoreName(
[in] BSTR bstrName
);
[propget]
HRESULT MyStoreType(
[out, retval] BSTR * pbstrType
);
[propput]
HRESULT MyStoreType(
[in] BSTR bstrType
);
[propget]
HRESULT MyStoreFlags(
[out, retval] DWORD * pdwFlags
);
[propput]
HRESULT MyStoreFlags(
[in] DWORD dwFlags
);
[propget]
HRESULT CAStoreName(
[out, retval] BSTR * pbstrName
);
[propput]
HRESULT CAStoreName(
[in] BSTR bstrName
);
[propget]
HRESULT CAStoreType(
[out, retval] BSTR * pbstrType
);
[propput]
HRESULT CAStoreType(
[in] BSTR bstrType
);
[propget]
HRESULT CAStoreFlags(
[out, retval] DWORD * pdwFlags
);
[propput]
HRESULT CAStoreFlags(
[in] DWORD dwFlags
);
[propget]
HRESULT RootStoreName(
[out, retval] BSTR * pbstrName
);
[propput]
HRESULT RootStoreName(
[in] BSTR bstrName
);
[propget]
HRESULT RootStoreType(
[out, retval] BSTR * pbstrType
);
[propput]
HRESULT RootStoreType(
[in] BSTR bstrType
);
[propget]
HRESULT RootStoreFlags(
[out, retval] DWORD * pdwFlags
);
[propput]
HRESULT RootStoreFlags(
[in] DWORD dwFlags
);
[propget]
HRESULT RequestStoreName(
[out, retval] BSTR * pbstrName
);
[propput]
HRESULT RequestStoreName(
[in] BSTR bstrName
);
[propget]
HRESULT RequestStoreType(
[out, retval] BSTR * pbstrType
);
[propput]
HRESULT RequestStoreType(
[in] BSTR bstrType
);
[propget]
HRESULT RequestStoreFlags(
[out, retval] DWORD * pdwFlags
);
[propput]
HRESULT RequestStoreFlags(
[in] DWORD dwFlags
);
[propget]
HRESULT ContainerName(
[out, retval] BSTR * pbstrContainer
);
[propput]
HRESULT ContainerName(
[in] BSTR bstrContainer
);
[propget]
HRESULT ProviderName(
[out, retval] BSTR * pbstrProvider
);
[propput]
HRESULT ProviderName(
[in] BSTR bstrProvider
);
[propget]
HRESULT ProviderType(
[out, retval] DWORD * pdwType
);
[propput]
HRESULT ProviderType(
[in] DWORD dwType
);
[propget]
HRESULT KeySpec(
[out, retval] DWORD * pdw
);
[propput]
HRESULT KeySpec(
[in] DWORD dw
);
[propget]
HRESULT ProviderFlags(
[out, retval] DWORD * pdwFlags
);
[propput]
HRESULT ProviderFlags(
[in] DWORD dwFlags
);
[propget]
HRESULT UseExistingKeySet(
[out, retval] BOOL * fUseExistingKeys
);
[propput]
HRESULT UseExistingKeySet(
[in] BOOL fUseExistingKeys
);
[propget]
HRESULT GenKeyFlags(
[out, retval] DWORD * pdwFlags
);
[propput]
HRESULT GenKeyFlags(
[in] DWORD dwFlags
);
[propget]
HRESULT DeleteRequestCert(
[out, retval] BOOL * fDelete
);
[propput]
HRESULT DeleteRequestCert(
[in] BOOL fDelete
);
[propget]
HRESULT WriteCertToCSP(
[out, retval] BOOL * fBool
);
[propput]
HRESULT WriteCertToCSP(
[in] BOOL fBool
);
[propget]
HRESULT SPCFileName(
[out, retval] BSTR * pbstr
);
[propput]
HRESULT SPCFileName(
[in] BSTR bstr
);
[propget]
HRESULT PVKFileName(
[out, retval] BSTR * pbstr
);
[propput]
HRESULT PVKFileName(
[in] BSTR bstr
);
[propget]
HRESULT HashAlgorithm(
[out, retval] BSTR * pbstr
);
[propput]
HRESULT HashAlgorithm(
[in] BSTR bstr
);
};
[
object,
uuid(704ca730-c90b-11d1-9bec-00c04fc295e1),
dual,
helpstring("ICEnroll2 Interface"),
pointer_default(unique)
]
interface ICEnroll2 : ICEnroll
{
HRESULT addCertTypeToRequest(
[in] BSTR CertType
);
HRESULT addNameValuePairToSignature(
[in] BSTR Name,
[in] BSTR Value
);
[propget]
HRESULT WriteCertToUserDS(
[out, retval] BOOL * fBool
);
[propput]
HRESULT WriteCertToUserDS(
[in] BOOL fBool
);
[propget]
HRESULT EnableT61DNEncoding(
[out, retval] BOOL * fBool
);
[propput]
HRESULT EnableT61DNEncoding(
[in] BOOL fBool
);
};
[
object,
uuid(c28c2d95-b7de-11d2-a421-00c04f79fe8e),
dual,
helpstring("ICEnroll3 Interface"),
pointer_default(unique)
]
interface ICEnroll3 : ICEnroll2
{
HRESULT InstallPKCS7
(
[in] BSTR PKCS7
);
HRESULT Reset(
void
);
HRESULT GetSupportedKeySpec(
[out, retval] DWORD * pdwKeySpec
);
HRESULT GetKeyLen(
[in] BOOL fMin,
[in] BOOL fExchange,
[out, retval] DWORD * pdwKeySize
);
HRESULT EnumAlgs(
[in] DWORD dwIndex,
[in] DWORD algClass,
[out, retval] DWORD * pdwAlgID
);
HRESULT GetAlgName(
[in] DWORD algID,
[out, retval] BSTR * pbstr
);
[propput]
HRESULT ReuseHardwareKeyIfUnableToGenNew(
[in] BOOL fReuseHardwareKeyIfUnableToGenNew
);
[propget]
HRESULT ReuseHardwareKeyIfUnableToGenNew(
[out, retval] BOOL * fReuseHardwareKeyIfUnableToGenNew
);
[propput]
HRESULT HashAlgID(
[in] DWORD hashAlgID
);
[propget]
HRESULT HashAlgID(
[out, retval] DWORD * hashAlgID
);
[propput]
HRESULT LimitExchangeKeyToEncipherment(
[in] BOOL fLimitExchangeKeyToEncipherment
);
[propget]
HRESULT LimitExchangeKeyToEncipherment(
[out, retval] BOOL * fLimitExchangeKeyToEncipherment
);
[propput]
HRESULT EnableSMIMECapabilities(
[in] BOOL fEnableSMIMECapabilities
);
[propget]
HRESULT EnableSMIMECapabilities(
[out, retval] BOOL * fEnableSMIMECapabilities
);
};
[
object,
uuid(acaa7838-4585-11d1-ab57-00c04fc295e1),
local,
helpstring("IEnroll Interface"),
pointer_default(unique)
]
interface IEnroll : IUnknown
{
// Walk the end user through the process of generating a key
// pair, which either will or will not be required to use some form
// of hardware private key management, per the fRequireHardware
// parameter. Return to the caller a PKCS#10 of the resulting
// generated key, where in the subject name
HRESULT createFilePKCS10WStr
(
[in] LPCWSTR DNName,
[in] LPCWSTR Usage,
[in] LPCWSTR wszPKCS10FileName
);
// Accept delivery of the credentials that correspond to a previous
// call to GenerateKeyPair. This method puts the credentials
// whereever they are supposed to go for easy subsequent access
// by the user.
HRESULT acceptFilePKCS7WStr
(
[in] LPCWSTR wszPKCS7FileName
);
HRESULT createPKCS10WStr
(
// This is the DN name for the certificate in X500 name syntax.
// For example CN=KeithV
[in] LPCWSTR DNName,
// This is the usage string, it will end up in the certificate
// enumerating what the certificate is used for. For example
// ClientAuth, Or CodeSigning. It can be any string.
[in] LPCWSTR Usage,
// The return value is a Base64 encoded
// PKCS10 Cert Request
[out] PCRYPT_DATA_BLOB pPkcs10Blob
);
// Accept delivery of the credentials that correspond to a previous
// call to GenerateKeyPair. This method puts the credentials
// whereever they are supposed to go for easy subsequent access
// by the user.
HRESULT acceptPKCS7Blob
(
// The credentials that are to be stored. Credentials
// are a PKCS#7 SignedData that is used simply as a bucket
// to convey a bunch of certificates. There must be precisely
// one certificate with no child in the bucket.
[in] PCRYPT_DATA_BLOB pBlobPKCS7
);
PCCERT_CONTEXT getCertContextFromPKCS7(
[in] PCRYPT_DATA_BLOB pBlobPKCS7
);
HCERTSTORE getMyStore
(
void
);
HCERTSTORE getCAStore
(
void
);
HCERTSTORE getROOTHStore
(
void
);
HRESULT enumProvidersWStr(
[in] DWORD dwIndex,
[in] DWORD dwFlags,
[out] LPWSTR * pbstrProvName
);
HRESULT enumContainersWStr(
[in] DWORD dwIndex,
[out] LPWSTR * pbstr
);
// Session Id's must be appropriately clean up
HRESULT freeRequestInfoBlob
(
// The session Id that represents the data
[in] CRYPT_DATA_BLOB pkcs7OrPkcs10
);
[propget]
HRESULT MyStoreNameWStr(
[out] LPWSTR * szwName
);
[propput]
HRESULT MyStoreNameWStr(
[in] LPWSTR szwName
);
[propget]
HRESULT MyStoreTypeWStr(
[out] LPWSTR * szwType
);
[propput]
HRESULT MyStoreTypeWStr(
[in] LPWSTR szwType
);
[propget]
HRESULT MyStoreFlags(
[out] DWORD * pdwFlags
);
[propput]
HRESULT MyStoreFlags(
[in] DWORD dwFlags
);
[propget]
HRESULT CAStoreNameWStr(
[out] LPWSTR * szwName
);
[propput]
HRESULT CAStoreNameWStr(
[in] LPWSTR szwName
);
[propget]
HRESULT CAStoreTypeWStr(
[out] LPWSTR * szwType
);
[propput]
HRESULT CAStoreTypeWStr(
[in] LPWSTR szwType
);
[propget]
HRESULT CAStoreFlags(
[out] DWORD * pdwFlags
);
[propput]
HRESULT CAStoreFlags(
[in] DWORD dwFlags
);
[propget]
HRESULT RootStoreNameWStr(
[out] LPWSTR * szwName
);
[propput]
HRESULT RootStoreNameWStr(
[in] LPWSTR szwName
);
[propget]
HRESULT RootStoreTypeWStr(
[out] LPWSTR * szwType
);
[propput]
HRESULT RootStoreTypeWStr(
[in] LPWSTR szwType
);
[propget]
HRESULT RootStoreFlags(
[out] DWORD * pdwFlags
);
[propput]
HRESULT RootStoreFlags(
[in] DWORD dwFlags
);
[propget]
HRESULT RequestStoreNameWStr(
[out] LPWSTR * szwName
);
[propput]
HRESULT RequestStoreNameWStr(
[in] LPWSTR szwName
);
[propget]
HRESULT RequestStoreTypeWStr(
[out] LPWSTR * szwType
);
[propput]
HRESULT RequestStoreTypeWStr(
[in] LPWSTR szwType
);
[propget]
HRESULT RequestStoreFlags(
[out] DWORD * pdwFlags
);
[propput]
HRESULT RequestStoreFlags(
[in] DWORD dwFlags
);
[propget]
HRESULT ContainerNameWStr(
[out] LPWSTR * szwContainer
);
[propput]
HRESULT ContainerNameWStr(
[in] LPWSTR szwContainer
);
[propget]
HRESULT ProviderNameWStr(
[out] LPWSTR * szwProvider
);
[propput]
HRESULT ProviderNameWStr(
[in] LPWSTR szwProvider
);
[propget]
HRESULT ProviderType(
[out] DWORD * pdwType
);
[propput]
HRESULT ProviderType(
[in] DWORD dwType
);
[propget]
HRESULT KeySpec(
[out] DWORD * pdw
);
[propput]
HRESULT KeySpec(
[in] DWORD dw
);
[propget]
HRESULT ProviderFlags(
[out] DWORD * pdwFlags
);
[propput]
HRESULT ProviderFlags(
[in] DWORD dwFlags
);
[propget]
HRESULT UseExistingKeySet(
[out] BOOL * fUseExistingKeys
);
[propput]
HRESULT UseExistingKeySet(
[in] BOOL fUseExistingKeys
);
[propget]
HRESULT GenKeyFlags(
[out] DWORD * pdwFlags
);
[propput]
HRESULT GenKeyFlags(
[in] DWORD dwFlags
);
[propget]
HRESULT DeleteRequestCert(
[out] BOOL * fDelete
);
[propput]
HRESULT DeleteRequestCert(
[in] BOOL fDelete
);
[propget]
HRESULT WriteCertToUserDS(
[out] BOOL * fBool
);
[propput]
HRESULT WriteCertToUserDS(
[in] BOOL fBool
);
[propget]
HRESULT EnableT61DNEncoding(
[out] BOOL * fBool
);
[propput]
HRESULT EnableT61DNEncoding(
[in] BOOL fBool
);
[propget]
HRESULT WriteCertToCSP(
[out] BOOL * fBool
);
[propput]
HRESULT WriteCertToCSP(
[in] BOOL fBool
);
[propget]
HRESULT SPCFileNameWStr(
[out] LPWSTR * szw
);
[propput]
HRESULT SPCFileNameWStr(
[in] LPWSTR szw
);
[propget]
HRESULT PVKFileNameWStr(
[out] LPWSTR * szw
);
[propput]
HRESULT PVKFileNameWStr(
[in] LPWSTR szw
);
[propget]
HRESULT HashAlgorithmWStr(
[out] LPWSTR * szw
);
[propput]
HRESULT HashAlgorithmWStr(
[in] LPWSTR szw
);
[propget]
HRESULT RenewalCertificate(
[out] PCCERT_CONTEXT * ppCertContext
);
[propput]
HRESULT RenewalCertificate(
[in] PCCERT_CONTEXT pCertContext
);
HRESULT AddCertTypeToRequestWStr(
[in] LPWSTR szw
);
HRESULT AddNameValuePairToSignatureWStr(
[in] LPWSTR Name,
[in] LPWSTR Value
);
HRESULT AddExtensionsToRequest(
[in] PCERT_EXTENSIONS pCertExtensions
);
HRESULT AddAuthenticatedAttributesToPKCS7Request(
[in] PCRYPT_ATTRIBUTES pAttributes
);
HRESULT CreatePKCS7RequestFromRequest(
[in] PCRYPT_DATA_BLOB pRequest,
[in] PCCERT_CONTEXT pSigningCertContext,
[out] PCRYPT_DATA_BLOB pPkcs7Blob
);
};
[
object,
uuid(c080e199-b7df-11d2-a421-00c04f79fe8e),
local,
helpstring("IEnroll2 Interface"),
pointer_default(unique)
]
interface IEnroll2 : IEnroll
{
HRESULT InstallPKCS7Blob
(
[in] PCRYPT_DATA_BLOB pBlobPKCS7
);
HRESULT Reset(
void
);
HRESULT GetSupportedKeySpec(
[out] DWORD * pdwKeySpec
);
HRESULT GetKeyLen(
[in] BOOL fMin,
[in] BOOL fExchange,
[out] DWORD * pdwKeySize
);
HRESULT EnumAlgs(
[in] DWORD dwIndex,
[in] DWORD algClass,
[out] DWORD * pdwAlgID
);
HRESULT GetAlgNameWStr(
[in] DWORD algID,
[out] LPWSTR * ppwsz
);
[propput]
HRESULT ReuseHardwareKeyIfUnableToGenNew(
[in] BOOL fReuseHardwareKeyIfUnableToGenNew
);
[propget]
HRESULT ReuseHardwareKeyIfUnableToGenNew(
[out] BOOL * fReuseHardwareKeyIfUnableToGenNew
);
[propput]
HRESULT HashAlgID(
[in] DWORD hashAlgID
);
[propget]
HRESULT HashAlgID(
[out, retval] DWORD * hashAlgID
);
HRESULT SetHStoreMy(
[in] HCERTSTORE hStore
);
HRESULT SetHStoreCA(
[in] HCERTSTORE hStore
);
HRESULT SetHStoreROOT(
[in] HCERTSTORE hStore
);
HRESULT SetHStoreRequest(
[in] HCERTSTORE hStore
);
[propput]
HRESULT LimitExchangeKeyToEncipherment(
[in] BOOL fLimitExchangeKeyToEncipherment
);
[propget]
HRESULT LimitExchangeKeyToEncipherment(
[out, retval] BOOL * fLimitExchangeKeyToEncipherment
);
[propput]
HRESULT EnableSMIMECapabilities(
[in] BOOL fEnableSMIMECapabilities
);
[propget]
HRESULT EnableSMIMECapabilities(
[out, retval] BOOL * fEnableSMIMECapabilities
);
};
[
uuid(43F8F27B-7A20-11D0-8F06-00C04FC295E1),
version(1.0),
helpstring("xenroll 1.0 Type Library")
]
library XENROLLLib
{
importlib("stdole32.tlb");
importlib("stdole2.tlb");
[
uuid(43F8F289-7A20-11D0-8F06-00C04FC295E1),
helpstring("CEnroll Class")
]
coclass CEnroll
{
[default] interface ICEnroll3;
};
};
cpp_quote("extern \"C\" IEnroll * WINAPI PIEnrollGetNoCOM(void);")
cpp_quote("extern \"C\" IEnroll2 * WINAPI PIEnroll2GetNoCOM(void);")
cpp_quote("#define CRYPT_ENUM_ALL_PROVIDERS 0x1")