签名


数字签名结构

typedef struct _WIN_CERTIFICATE {
    DWORD       dwLength;
    WORD        wRevision;
    WORD        wCertificateType;   // WIN_CERT_TYPE_xxx
    BYTE        bCertificate[ANYSIZE_ARRAY];
} WIN_CERTIFICATE, *LPWIN_CERTIFICATE;
  • dwLength: 此结构体的长度。

  • wRevision : 在 bCertificate 里面保护的证书的版本号,版本号有两种,如下表,一般为 0x0200。

    信息
    Win32 SDK中的宏定义名

    0x0100

    Win_Certificate的老版本

    WIN_CERT_REVISION_1_0

    0x0200

    Win_Certificate的当前版本

    WIN_CERT_REVISION_2_0

  • wCertificateType:证书类型,有如下表格中的类型:

    信息
    Win32 SDK中的宏定义名

    0x0001

    X.509证书

    WIN_CERT_TYPE_X509

    0x0002

    包含PKCS#7的SignedData的结构

    WIN_CERT_TYPE_PKCS_SIGNED_DATA

    0x0003

    保留

    WIN_CERT_TYPE_RESERVED_1

    0x0004

    终端服务器协议堆栈证书签名

    WIN_CERT_TYPE_TS_STACK_SIGNED

  • bCertificate:包含一个或多个证书,一般来说这个证书的内容一直到安全表的末尾。bCertificate的字节大小要求8字节对齐。