• 如何将USBKey中的证书注册到Windows系统中


    本篇文章就介绍一下如何使用微软CAPI接口完成将USBKey中的证书注册到Windows系统中。

    (1)        获取CSP句柄。

    CryptAcquireContext(
    &hTokenProv,NULL,
    “EnterSafe ET199Auto CSP V1.0”,
    PROV_RSA_FULL,
    NULL)

    (2)        获取USBKey内密钥句柄,这时要注意锁内密钥的类型是签名密钥(AT_SIGNATURE)或者交换密钥(AT_KEYEXCHANGE)。

    CryptGetUserKey(hTokenProv,AT_KEYEXCHANGE,&hKeyCAPI)

    (3)        获取证书数据(只是证书信息数据,不包括私钥),这时可以通过两次调用,先获取证书数据的长度,分配空间,然后再调用一次。

    CryptGetKeyParam(hKeyCAPI, KP_CERTIFICATE, pbCert, &dwCertLen, 0)

    (4)        创建CERT_CONTEXT结构

    pCertContext = CertCreateCertificateContext(
                    PKCS_7_ASN_ENCODING | X509_ASN_ENCODING,
                    pbCert,
                    dwCertLen)

    (5)        打开MY存储区,这个就是Windows系统中“个人”证书存放的区域。

    hSysStore = CertOpenStore(
    CERT_STORE_PROV_SYSTEM_REGISTRY,
            0,
            0,
            CERT_SYSTEM_STORE_CURRENT_USER,
            L"MY");

    (6)        设置证书上下文属性。这时要先声明CRYPT_KEY_PROV_INFO结构

    CRYPT_KEY_PROV_INFO ckpi = {0};

            ckpi.pwszProvName = L" EnterSafe ET199Auto CSP V1.0";
            ckpi.pwszContainerName = pbWideContainer;
            ckpi.dwProvType = PROV_RSA_FULL;
            ckpi.dwKeySpec = AT_KEYEXCHANGE;
            ckpi.dwFlags = CERT_KEY_CONTEXT_PROP_ID;
            ckpi.cProvParam = 0;
            ckpi.rgProvParam = NULL;

    CertSetCertificateContextProperty(
    pCertContext,
    CERT_KEY_PROV_INFO_PROP_ID, CERT_STORE_NO_CRYPT_RELEASE_FLAG,
    &ckpi)

    (7)        将证书注册到Windows系统中。

    CertAddCertificateContextToStore(
    hSysStore,
            pCertContext,
            CERT_STORE_ADD_REPLACE_EXISTING,
            NULL);

    (8)        释放CSP句柄。

    CryptReleaseContext(hTokenProv,0)

    通过上述步骤就可以将ET199Auto中的证书注册到Windows系统中了。我们可以在IEInternet选项内容证书个人下面查看到ET199Auto中的证书。

  • 相关阅读:
    Liunx基础优化配置
    Linux配置国内的Yum源
    Liunx配置静态IP
    百度前端学院|任务七
    java的远程访问接口的实例
    java套接字实现接口访问
    Mysql的链接超时异常CommunicationsException
    mysql查看和设置timeout 和批量杀死链接进程
    springmvc接受表单多条数据的值
    jquery获取点击标签内的子标签内容和值实例
  • 原文地址:https://www.cnblogs.com/whbCNW/p/4321478.html
Copyright © 2020-2023  润新知