1. 文件包含:
#include <certenroll.h>
2. 接口定义:
interface IX509Extension : public IDispatch
{
public:
virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Oid(
/* [retval][out] */ BSTR *pValue) = 0;
virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Critical(
/* [retval][out] */ VARIANT_BOOL *pValue) = 0;
virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Critical(
/* [in] */ VARIANT_BOOL Value) = 0;
virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Value(
/* [retval][out] */ VARIANT *pValue) = 0;
virtual /* [helpstring][id][propput] */ HRESULT STDMETHODCALLTYPE put_Value(
/* [in] */ VARIANT Value) = 0;
virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE InitializeEncode(
/* [in] */ EncodingType Encoding,
/* [in] */ VARIANT Value) = 0;
virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE InitializeDecode(
/* [in] */ EncodingType Encoding,
/* [in] */ VARIANT Value) = 0;
virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE CopyFrom(
/* [in] */ IX509Extension *pValue) = 0;
virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Encode(
/* [retval][out] */ BSTR *pEncValue) = 0;
virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Decode(
/* [in] */ BSTR strEncValue) = 0;
};
3. 使用示例:
// 创建对象
CComPtr<IX509Extension> pExtension;
HRESULT hr = CoCreateInstance(
__uuidof(CX509Extension),
NULL,
CLSCTX_INPROC_SERVER,
__uuidof(IX509Extension),
(void**)&pExtension);
if (SUCCEEDED(hr))
{
// 设置 OID
BSTR oid = SysAllocString(L"2.5.29.17"); // 例子中是 Subject Alternative Name 的 OID
hr = pExtension->put_Oid(oid);
// 设置 Critical 属性
hr = pExtension->put_Critical(VARIANT_FALSE);
// 设置 Value
VARIANT value;
VariantInit(&value);
value.vt = VT_BSTR;
value.bstrVal = SysAllocString(L"example@example.com"); // 例子中是 Subject Alternative Name 的值
hr = pExtension->put_Value(value);
// 在这里可以使用获取到的对象进行操作
// 释放资源
SysFreeString(oid);
SysFreeString(value.bstrVal);
}
请注意,上述代码中的 CX509Extension 类是 IX509Extension 接口的默认实现之一。具体的扩展类型和值可能因实际情况而有所不同。确保在使用这些接口时参考相关的官方文档和示例代码。
转载请注明出处:http://www.zyzy.cn/article/detail/24225/Win32 API/Certenroll.h/IX509Extension