6 Appendix A: Full IDL
For ease of implementation, the full IDL is provided, where "ms-dtyp.idl" refers to the IDL found in [MS-DTYP] Appendix A, and "ms-oaut.idl" is the IDL found in [MS-OAUT] Appendix A.
-
import "ms-dtyp.idl"; import "ms-oaut.idl"; typedef byte BYTE; typedef struct _CERTTRANSBLOB { ULONG cb; [size_is(cb), unique] BYTE *pb; } CERTTRANSBLOB; typedef struct _CATRANSPROP { LONG lPropID; BYTE propType; BYTE Reserved; USHORT propFlags; ULONG obwszDisplayName; } CATRANSPROP; typedef struct _CERTTRANSDBATTRIBUTE { ULONG obwszName; ULONG obwszValue; } CERTTRANSDBATTRIBUTE; typedef struct _CERTTRANSDBEXTENSION { ULONG obwszName; LONG ExtFlags; DWORD cbValue; ULONG obValue; } CERTTRANSDBEXTENSION; typedef struct _CERTTRANSDBCOLUMN { DWORD Type; DWORD Index; DWORD cbMax; ULONG obwszName; ULONG obwszDisplayName; } CERTTRANSDBCOLUMN; typedef struct _CERTTRANSDBRESULTCOLUMN { DWORD Type; DWORD Index; ULONG obValue; DWORD cbValue; } CERTTRANSDBRESULTCOLUMN; typedef struct _CERTTRANSDBRESULTROW // Marshaled form { DWORD rowid; DWORD ccol; ULONG cbrow; } CERTTRANSDBRESULTROW; typedef struct _CERTVIEWRESTRICTION { DWORD ColumnIndex; LONG SeekOperator; LONG SortOrder; [size_is(cbValue), unique] BYTE *pbValue; DWORD cbValue; } CERTVIEWRESTRICTION; /* Interface ICertAdminD */ [ object, uuid(d99e6e71-fc88-11d0-b498-00a0c90312f3), helpstring("ICertAdmin DCOM Interface"), pointer_default(unique) ] interface ICertAdminD: IUnknown { HRESULT SetExtension( [in, string, unique] wchar_t const *pwszAuthority, [in] DWORD dwRequestId, [in, string, unique] wchar_t const *pwszExtensionName, [in] DWORD dwType, [in] DWORD dwFlags, [in, ref] CERTTRANSBLOB *pctbValue ); HRESULT SetAttributes( [in, string, unique] wchar_t const *pwszAuthority, [in] DWORD dwRequestId, [in, string, unique] wchar_t const *pwszAttributes ); HRESULT ResubmitRequest( [in, string, unique] wchar_t const *pwszAuthority, [in] DWORD dwRequestId, [out] DWORD *pdwDisposition ); HRESULT DenyRequest( [in, string, unique] wchar_t const *pwszAuthority, [in] DWORD dwRequestId ); HRESULT IsValidCertificate( [in, string, unique] wchar_t const *pwszAuthority, [in, string, unique] wchar_t const *pSerialNumber, [out] LONG *pRevocationReason, [out] LONG *pDisposition ); HRESULT PublishCRL( [in, string, unique] wchar_t const *pwszAuthority, [in] FILETIME FileTime ); HRESULT GetCRL( [in, string, unique] wchar_t const *pwszAuthority, [out, ref] CERTTRANSBLOB *pctbCRL ); HRESULT RevokeCertificate( [in, string, unique] wchar_t const *pwszAuthority, [in, string, unique] wchar_t const *pwszSerialNumber, [in] DWORD Reason, [in] FILETIME FileTime ); HRESULT EnumViewColumn( [in, string, unique] wchar_t const *pwszAuthority, [in] DWORD iColumn, [in] DWORD cColumn, [out] DWORD *pcColumn, [out, ref] CERTTRANSBLOB *pctbColumnInfo ); HRESULT GetViewDefaultColumnSet( [in, string, unique] wchar_t const *pwszAuthority, [in] DWORD iColumnSetDefault, [out] DWORD *pcColumn, [out, ref] CERTTRANSBLOB *pctbColumnInfo ); HRESULT EnumAttributesOrExtensions( [in, string, unique] wchar_t const *pwszAuthority, [in] DWORD RowId, [in] DWORD Flags, [in, string, unique] wchar_t const *pwszLast, [in] DWORD celt, [out] DWORD *pceltFetched, [out, ref] CERTTRANSBLOB *pctbOut ); HRESULT OpenView( [in, string, unique] wchar_t const *pwszAuthority, [in] DWORD ccvr, [in, size_is(ccvr)] CERTVIEWRESTRICTION const *acvr, [in] DWORD ccolOut, [in, size_is(ccolOut)] DWORD const *acolOut, [in] DWORD ielt, [in] DWORD celt, [out] DWORD *pceltFetched, [out, ref] CERTTRANSBLOB *pctbResultRows ); HRESULT EnumView( [in, string, unique] wchar_t const *pwszAuthority, [in] DWORD ielt, [in] DWORD celt, [out] DWORD *pceltFetched, [out, ref] CERTTRANSBLOB *pctbResultRows ); HRESULT CloseView( [in, string, unique] wchar_t const *pwszAuthority ); HRESULT ServerControl( [in, string, unique] wchar_t const *pwszAuthority, [in] DWORD dwControlFlags, [out, ref] CERTTRANSBLOB *pctbOut ); /* this is a test function */ HRESULT Ping( [in, string, unique] wchar_t const *pwszAuthority ); HRESULT GetServerState( [in, string, unique] wchar_t const *pwszAuthority, [out] DWORD *pdwState ); HRESULT BackupPrepare( [in, string, unique] wchar_t const *pwszAuthority, [in] unsigned long grbitJet, [in] unsigned long dwBackupFlags, [in] WCHAR const *pwszBackupAnnotation, [in] DWORD dwClientIdentifier ); HRESULT BackupEnd( ); HRESULT BackupGetAttachmentInformation( [out, size_is( , *pcwcDBFiles)] WCHAR **ppwszzDBFiles, [out] LONG *pcwcDBFiles ); HRESULT BackupGetBackupLogs( [out, size_is( , *pcwcLogFiles)] WCHAR **ppwszzLogFiles, [out] LONG *pcwcLogFiles ); HRESULT BackupOpenFile( [in, string, unique] wchar_t const *pwszPath, [out] unsigned hyper *pliLength ); HRESULT BackupReadFile( [ref, out, size_is(cbBuffer)] BYTE *pbBuffer, [in] LONG cbBuffer, [out] LONG *pcbRead ); HRESULT BackupCloseFile( ); HRESULT BackupTruncateLogs( ); HRESULT ImportCertificate( [in, string, unique] wchar_t const *pwszAuthority, [in, ref] CERTTRANSBLOB *pctbCertificate, [in] LONG dwFlags, [out] LONG *pdwRequestId ); HRESULT BackupGetDynamicFiles( [out, size_is( , *pcwcFiles)] WCHAR **ppwszzFiles, [out] LONG *pcwcFiles ); HRESULT RestoreGetDatabaseLocations( [out, size_is( , *pcwcPaths)] WCHAR **ppwszzDatabaseLocations, [out] LONG *pcwcPaths ); }; /* Interface ICertAdminD2 */ [ object, uuid(7fe0d935-dda6-443f-85d0-1cfb58fe41dd), helpstring("ICertAdmin2 DCOM Interface"), pointer_default(unique) ] interface ICertAdminD2: ICertAdminD { HRESULT PublishCRLs( [in, string, unique] wchar_t const *pwszAuthority, [in] FILETIME FileTime, [in] DWORD Flags ); HRESULT GetCAProperty( [in, string, unique] wchar_t const *pwszAuthority, [in] LONG PropId, [in] LONG PropIndex, [in] LONG PropType, [out, ref] CERTTRANSBLOB *pctbPropertyValue ); HRESULT SetCAProperty( [in, string, unique] wchar_t const *pwszAuthority, [in] LONG PropId, [in] LONG PropIndex, [in] LONG PropType, [in] CERTTRANSBLOB *pctbPropertyValue ); HRESULT GetCAPropertyInfo( [in, string, unique] wchar_t const *pwszAuthority, [out] LONG *pcProperty, [out, ref] CERTTRANSBLOB *pctbPropInfo ); HRESULT EnumViewColumnTable( [in, string, unique] wchar_t const *pwszAuthority, [in] DWORD iTable, [in] DWORD iColumn, [in] DWORD cColumn, [out] DWORD *pcColumn, [out, ref] CERTTRANSBLOB *pctbColumnInfo ); HRESULT GetCASecurity( [in, string, unique] wchar_t const *pwszAuthority, [out, ref] CERTTRANSBLOB *pctbSD ); HRESULT SetCASecurity( [in, string, unique] wchar_t const *pwszAuthority, [in, ref] CERTTRANSBLOB *pctbSD ); /* this is a test function */ HRESULT Ping2( [in, string, unique] wchar_t const *pwszAuthority ); HRESULT GetArchivedKey( [in, string, unique] wchar_t const *pwszAuthority, [in] DWORD dwRequestId, [out, ref] CERTTRANSBLOB *pctbArchivedKey ); HRESULT GetAuditFilter( [in, string, unique] wchar_t const *pwszAuthority, [out] DWORD *pdwFilter ); HRESULT SetAuditFilter( [in, string, unique] wchar_t const *pwszAuthority, [in] DWORD dwFilter ); HRESULT GetOfficerRights( [in, string, unique] wchar_t const *pwszAuthority, [out] BOOL *pfEnabled, [out, ref] CERTTRANSBLOB *pctbSD ); HRESULT SetOfficerRights( [in, string, unique] wchar_t const *pwszAuthority, [in] BOOL fEnable, [in, ref] CERTTRANSBLOB *pctbSD ); HRESULT GetConfigEntry( [in, string, unique] wchar_t const *pwszAuthority, [in, string, unique] wchar_t const *pwszNodePath, [in, string, ref] wchar_t const *pwszEntry, [out, ref] VARIANT *pVariant ); HRESULT SetConfigEntry( [in, string, unique] wchar_t const *pwszAuthority, [in, string, unique] wchar_t const *pwszNodePath, [in, string, ref] wchar_t const *pwszEntry, [in, ref] VARIANT *pVariant ); HRESULT ImportKey( [in, string, unique] wchar_t const *pwszAuthority, [in] DWORD dwRequestId, [in, string, unique] wchar_t const *pwszCertHash, [in] DWORD dwFlags, [in, ref] CERTTRANSBLOB *pctbKey ); HRESULT GetMyRoles( [in, string, unique] wchar_t const *pwszAuthority, [out] LONG *pdwRoles ); HRESULT DeleteRow( [in, string, unique] wchar_t const *pwszAuthority, [in] DWORD dwFlags, [in] FILETIME FileTime, [in] DWORD dwTable, [in] DWORD dwRowId, [out, retval] LONG *pcDeleted ); }