亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? autoreg.cpp

?? PKCS#11的微軟CSP實現源碼
?? CPP
字號:
/****************************************************************************
* library : pkcs_csp.dll
* Purpose : It is an independent software module that actually performs 
* cryptography algorithms for authentication, encoding, and encryption.
* This DLL is interfaced on any PKCS#11 module.  
*
* Copyright (C) 2003 Ilex Syst鑝es Informatiques
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* Contact :
* Ilex 
* 51 boulevard Voltaire
* 92600 Asni鑢es-sur-Seine
* pkizy@ilex.fr
*
* Author: Delouvrier Antoine
*
*******************************************************************************/
/*
%----------------------------------------------------------------------------
% PROJECT : CSP_PKCS
%
% MODULE : autoreg
%
% VERSION : 1.00
%
% FILE : autoreg.cpp
%
% Allow to register the dll in the registry
%----------------------------------------------------------------------------
% Version 1.00
% 
% CPX-31/03/2003-Cr閍tion
%----------------------------------------------------------------------------
% You can find wincrypt.h in the CSPDK which is downloadable at the adress :
% http://www.microsoft.com/downloads/details.aspx?FamilyId=0F436C75-2304-42BB-B81A-BA0C2C47BAC2&displaylang=en
*/ 

#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0400
#endif
#ifdef _AFXDLL
#include "stdafx.h"
#else

/*
% Biblioth鑡ues ANSI ou syst鑝e
%------------------------------
*/
#include <windows.h>
#endif
#ifndef WINVER
#define WINVER 0x0400
#endif
#include <wincrypt.h>
#include <tchar.h>
#include<stdio.h>

/*
% HEADER Files include
%-----------------------
*/
#include "cspdk.h"


static HMODULE
GetInstanceHandle(
    void);

static const TCHAR l_szProviderName[]= TEXT("pkcs_csp");
static const DWORD
    l_dwCspType= PROV_RSA_FULL;

/*
%--------------------------------------------------------------------------
% DllUnregisterServer
%
%---------------------------------------------------------------------------
*/

STDAPI
DllUnregisterServer(
    void)
{
    LONG nStatus;
    DWORD dwDisp;
    HRESULT hReturnStatus = NO_ERROR;
    HKEY hProviders = NULL;

#ifdef _AFXDLL
    AFX_MANAGE_STATE(AfxGetStaticModuleState());
#endif


    //
    // Delete the Registry key for this CSP.
    //

    nStatus = RegCreateKeyEx(
                    HKEY_LOCAL_MACHINE,
                    TEXT("SOFTWARE\\Microsoft\\Cryptography\\Defaults\\Provider"),
                    0,
                    TEXT(""),
                    REG_OPTION_NON_VOLATILE,
                    KEY_ALL_ACCESS,
                    NULL,
                    &hProviders,
                    &dwDisp);
    if (ERROR_SUCCESS == nStatus)
    {
        RegDeleteKey(hProviders, l_szProviderName);
        RegCloseKey(hProviders);
        hProviders = NULL;
    }



    return hReturnStatus;
}


/*
%--------------------------------------------------------------------------
% DllRegisterServer
%
%---------------------------------------------------------------------------
*/

STDAPI
DllRegisterServer(
    void)
{
    TCHAR szModulePath[MAX_PATH];
    BYTE pbSignature[136];  // Room for a 1024 bit signature, with padding.
    OSVERSIONINFO osVer;
    LPTSTR szFileName, szFileExt;
    HINSTANCE hThisDll;
    HRSRC hSigResource;
    DWORD dwStatus;
    LONG nStatus;
    BOOL fStatus;
    DWORD dwDisp;
    DWORD dwIndex;
    DWORD dwSigLength;
    HRESULT hReturnStatus = NO_ERROR;
    HKEY hProviders = NULL;
    HKEY hMyCsp = NULL;
    HKEY hCalais = NULL;
    HKEY hVendor = NULL;
    BOOL fSignatureFound = FALSE;
    HANDLE hSigFile = INVALID_HANDLE_VALUE;


#ifdef _AFXDLL
    AFX_MANAGE_STATE(AfxGetStaticModuleState());
#endif


    //
    // Figure out the file name and path.
    //

    hThisDll = GetInstanceHandle();
    if (NULL == hThisDll)
    {
        hReturnStatus = HRESULT_FROM_WIN32(ERROR_INVALID_HANDLE);
        goto ErrorExit;
    }

    dwStatus = GetModuleFileName(
                    hThisDll,
                    szModulePath,
                    sizeof(szModulePath) / sizeof(TCHAR));
    if (0 == dwStatus)
    {
        hReturnStatus = HRESULT_FROM_WIN32(GetLastError());
        goto ErrorExit;
    }

    szFileName = _tcsrchr(szModulePath, TEXT('\\'));
    if (NULL == szFileName)
        szFileName = szModulePath;
    else
        szFileName += 1;
    szFileExt = _tcsrchr(szFileName, TEXT('.'));
    if (NULL == szFileExt)
    {
        hReturnStatus = HRESULT_FROM_WIN32(ERROR_INVALID_NAME);
        goto ErrorExit;
    }
    else
        szFileExt += 1;


    //
    // Create the Registry key for this CSP.
    //

    nStatus = RegCreateKeyEx(
                    HKEY_LOCAL_MACHINE,
                    TEXT("SOFTWARE\\Microsoft\\Cryptography\\Defaults\\Provider"),
                    0,
                    TEXT(""),
                    REG_OPTION_NON_VOLATILE,
                    KEY_ALL_ACCESS,
                    NULL,
                    &hProviders,
                    &dwDisp);
    if (ERROR_SUCCESS != nStatus)
    {
        hReturnStatus = HRESULT_FROM_WIN32(nStatus);
        goto ErrorExit;
    }
    nStatus = RegCreateKeyEx(
                    hProviders,
                    l_szProviderName,
                    0,
                    TEXT(""),
                    REG_OPTION_NON_VOLATILE,
                    KEY_ALL_ACCESS,
                    NULL,
                    &hMyCsp,
                    &dwDisp);
    if (ERROR_SUCCESS != nStatus)
    {
        hReturnStatus = HRESULT_FROM_WIN32(nStatus);
        goto ErrorExit;
    }
    nStatus = RegCloseKey(hProviders);
    hProviders = NULL;
    if (ERROR_SUCCESS != nStatus)
    {
        hReturnStatus = HRESULT_FROM_WIN32(nStatus);
        goto ErrorExit;
    }


    //
    // Install the trivial registry values.
    //

    nStatus = RegSetValueEx(
                    hMyCsp,
                    TEXT("Image Path"),
                    0,
                    REG_SZ,
                    (LPBYTE)szModulePath,
                    (_tcslen(szModulePath) + 1) * sizeof(TCHAR));
    if (ERROR_SUCCESS != nStatus)
    {
        hReturnStatus = HRESULT_FROM_WIN32(nStatus);
        goto ErrorExit;
    }

    nStatus = RegSetValueEx(
                    hMyCsp,
                    TEXT("Type"),
                    0,
                    REG_DWORD,
                    (LPBYTE)&l_dwCspType,
                    sizeof(DWORD));
    if (ERROR_SUCCESS != nStatus)
    {
        hReturnStatus = HRESULT_FROM_WIN32(nStatus);
        goto ErrorExit;
    }


    //
    // See if we're self-signed.  On NT5, CSP images can carry their own
    // signatures.
    //

    hSigResource = FindResource(
                        hThisDll,
                        MAKEINTRESOURCE(CRYPT_SIG_RESOURCE_NUMBER),
                        RT_RCDATA);


    //
    // Install the file signature.
    //

    ZeroMemory(&osVer, sizeof(OSVERSIONINFO));
    osVer.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
    fStatus = GetVersionEx(&osVer);
    // ?BUGBUG? -- This works on Windows Millenium, too.
    if (fStatus
        && (VER_PLATFORM_WIN32_NT == osVer.dwPlatformId)
        && (5 <= osVer.dwMajorVersion)
        && (NULL != hSigResource))
    {

        //
        // Signature in file flag is sufficient.
        //
	
        dwStatus = 0;
        nStatus = RegSetValueEx(
                        hMyCsp,
                        TEXT("SigInFile"),
                        0,
                        REG_DWORD,
                        (LPBYTE)&dwStatus,
                        sizeof(DWORD));
        if (ERROR_SUCCESS != nStatus)
        {
            hReturnStatus = HRESULT_FROM_WIN32(nStatus);
            goto ErrorExit;
        }
    }
    else
    {

        //
        // We have to install a signature entry.
        // Try various techniques until one works.
        //

        for (dwIndex = 0; !fSignatureFound; dwIndex += 1)
        {
            switch (dwIndex)
            {

            //
            // Look for an external *.sig file and load that into the registry.
            //

            case 0:
                _tcscpy(szFileExt, TEXT("sig"));
                hSigFile = CreateFile(
                                szModulePath,
                                GENERIC_READ,
                                FILE_SHARE_READ,
                                NULL,
                                OPEN_EXISTING,
                                FILE_ATTRIBUTE_NORMAL,
                                NULL);
                if (INVALID_HANDLE_VALUE == hSigFile)
                    continue;
                dwSigLength = GetFileSize(hSigFile, NULL);
                if ((dwSigLength > sizeof(pbSignature))
                    || (dwSigLength < 72))      // Accept a 512-bit signature
                {
                    hReturnStatus = NTE_BAD_SIGNATURE;
                    goto ErrorExit;
                }

                fStatus = ReadFile(
                                hSigFile,
                                pbSignature,
                                sizeof(pbSignature),
                                &dwSigLength,
                                NULL);
                if (!fStatus)
                {
                    hReturnStatus = HRESULT_FROM_WIN32(GetLastError());
                    goto ErrorExit;
                }
                fStatus = CloseHandle(hSigFile);
                hSigFile = NULL;
                if (!fStatus)
                {
                    hReturnStatus = HRESULT_FROM_WIN32(GetLastError());
                    goto ErrorExit;
                }
                fSignatureFound = TRUE;
                break;


            //
            // Other cases may be added in the future.
            //

            default:
                hReturnStatus = NTE_BAD_SIGNATURE;
                goto ErrorExit;
            }

            if (fSignatureFound)
            {
                for (dwIndex = 0; dwIndex < dwSigLength; dwIndex += 1)
                {
                    if (0 != pbSignature[dwIndex])
                        break;
                }
                if (dwIndex >= dwSigLength)
                    fSignatureFound = FALSE;
            }
        }


        //
        // We've found a signature somewhere!  Install it.
        //

        nStatus = RegSetValueEx(
                        hMyCsp,
                        TEXT("Signature"),
                        0,
                        REG_BINARY,
                        pbSignature,
                        dwSigLength);
        if (ERROR_SUCCESS != nStatus)
        {
            hReturnStatus = HRESULT_FROM_WIN32(nStatus);
            goto ErrorExit;
        }
    }

    nStatus = RegCloseKey(hMyCsp);
    hMyCsp = NULL;
    if (ERROR_SUCCESS != nStatus)
    {
        hReturnStatus = HRESULT_FROM_WIN32(nStatus);
        goto ErrorExit;
    }




    return hReturnStatus;


    //
    // An error was detected.  Clean up any outstanding resources and
    // return the error.
    //

    ErrorExit:
    if (NULL != hVendor)
        RegCloseKey(hVendor);
    if (INVALID_HANDLE_VALUE != hSigFile)
        CloseHandle(hSigFile);
    if (NULL != hMyCsp)
        RegCloseKey(hMyCsp);
    if (NULL != hProviders)
        RegCloseKey(hProviders);
    DllUnregisterServer();
    return hReturnStatus;
}

/*
%--------------------------------------------------------------------------
% GetInstanceHandle
%
%---------------------------------------------------------------------------
*/


extern "C" HINSTANCE g_hModule;

static HINSTANCE
GetInstanceHandle(
    void)
{
#ifdef _AFXDLL
    return AfxGetInstanceHandle();
#else
    //  ?vendor?
    // Make sure this returns your DLL instance handle.
    return g_hModule;
#endif
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美午夜影院一区| 亚洲自拍偷拍综合| 亚洲免费观看高清完整| 亚洲免费色视频| 国产成人一区在线| 欧美三级日韩三级| 亚洲欧美色综合| 国产.欧美.日韩| 欧美成人性战久久| 亚洲久草在线视频| 成人一道本在线| 欧美精品一区二区三区蜜桃视频| 亚洲一区二区三区四区在线观看| 久久国产尿小便嘘嘘| 欧美性猛交xxxx乱大交退制版| 国产日本亚洲高清| 久久国产麻豆精品| 制服丝袜亚洲色图| 亚洲午夜av在线| 99久久精品一区| 国产精品系列在线| 国产成人综合网| 久久综合狠狠综合久久综合88 | 视频精品一区二区| 91老师片黄在线观看| 国产精品午夜在线观看| 日本va欧美va精品| 91.com在线观看| 日日摸夜夜添夜夜添国产精品 | 亚洲欧美日韩中文播放 | 日韩精品电影在线| 欧美日韩国产综合久久| 亚洲一区二区欧美激情| 99国产一区二区三精品乱码| 中文字幕av在线一区二区三区| 狠狠色狠狠色合久久伊人| 精品国产三级电影在线观看| 美女网站色91| 久久精品亚洲精品国产欧美| 国产精品影视天天线| 国产视频一区二区三区在线观看| 国产一区二区三区免费播放| 国产亚洲精品bt天堂精选| 国产成人免费在线| 国产精品久久久久久久久果冻传媒| 成人性生交大片免费| 国产精品无遮挡| 色综合色狠狠综合色| 亚洲一区二区欧美| 日韩西西人体444www| 国产一区 二区 三区一级| 久久人人爽人人爽| 成人福利电影精品一区二区在线观看| 国产精品家庭影院| 色婷婷综合久久久中文一区二区| 一区二区三区丝袜| 欧美高清hd18日本| 国产精品456| 一区二区三区四区在线播放 | 亚洲在线观看免费视频| 欧美日本一道本在线视频| 久久不见久久见免费视频1| 久久五月婷婷丁香社区| 色婷婷激情综合| 亚洲国产日韩在线一区模特| 日韩三级在线免费观看| 成年人国产精品| 亚洲午夜久久久久久久久电影院| 欧美成人欧美edvon| 99视频精品免费视频| 亚洲国产精品一区二区尤物区| 日韩欧美电影在线| 一本到三区不卡视频| 麻豆国产精品一区二区三区| 国产精品传媒在线| 日韩欧美综合一区| 国产成人午夜精品影院观看视频| 亚洲一区二区三区四区五区黄| 精品国产一区二区三区久久影院| 97aⅴ精品视频一二三区| 日本午夜一区二区| 国产精品久久精品日日| 欧美大度的电影原声| 色8久久人人97超碰香蕉987| 国产乱人伦精品一区二区在线观看| 国产精品国产三级国产普通话三级| 欧美猛男gaygay网站| 懂色av一区二区在线播放| 亚洲va欧美va天堂v国产综合| 国产欧美精品在线观看| 欧美一区二区在线免费观看| 国产成人av电影免费在线观看| 视频一区欧美精品| 一区二区三区四区中文字幕| 亚洲国产精品高清| 久久久久久亚洲综合影院红桃| 欧美日韩三级在线| 在线亚洲精品福利网址导航| www.日韩在线| 国产在线视频精品一区| 蜜桃一区二区三区在线| 午夜精品成人在线视频| 亚洲精品久久久蜜桃| 国产蜜臀av在线一区二区三区| 欧美一区二区三区日韩| 欧美午夜精品理论片a级按摩| 99久久精品情趣| 粉嫩高潮美女一区二区三区| 国产一区二区三区四| 久久精品国产亚洲高清剧情介绍| 亚洲电影你懂得| 亚洲一区二区三区四区的| 亚洲欧美另类图片小说| 中文字幕一区二区三区av| 中文字幕第一页久久| 国产拍揄自揄精品视频麻豆| 久久女同性恋中文字幕| 久久久精品影视| 欧美激情综合在线| 中文字幕一区av| 亚洲综合成人网| 午夜av电影一区| 麻豆精品视频在线| 国产精品88888| av不卡在线观看| 色国产精品一区在线观看| 欧美伊人久久大香线蕉综合69| 欧美日韩国产成人在线91| 91麻豆精品国产自产在线| 日韩女优毛片在线| 国产亚洲欧美日韩日本| 国产精品免费视频一区| 亚洲欧美日本韩国| 七七婷婷婷婷精品国产| 国产精品自产自拍| 99re这里只有精品6| 91久久奴性调教| 日韩一区二区精品在线观看| 26uuuu精品一区二区| 国产精品二三区| 偷拍一区二区三区四区| 国内欧美视频一区二区| 波多野洁衣一区| 欧美日韩日日夜夜| 久久久五月婷婷| 亚洲一区中文日韩| 麻豆精品久久精品色综合| 国产成人a级片| 欧洲精品在线观看| 精品国产乱码久久久久久牛牛 | 午夜影院久久久| 国产一区91精品张津瑜| 色婷婷国产精品久久包臀| 91.麻豆视频| 国产女主播视频一区二区| 亚洲午夜激情网页| 国产99久久精品| 337p亚洲精品色噜噜| 国产精品网站导航| 日韩一区精品视频| 99久久99久久久精品齐齐| 日韩一区二区影院| 亚洲三级免费电影| 狠狠色丁香九九婷婷综合五月| 99热国产精品| 欧美精品一区二区三区在线播放| 夜夜精品浪潮av一区二区三区| 蜜臀国产一区二区三区在线播放| 成人性视频免费网站| 91精品啪在线观看国产60岁| 亚洲视频免费在线观看| 久久精品国产99| 欧美日韩亚洲高清一区二区| 国产精品乱人伦一区二区| 久久国产三级精品| 在线一区二区三区四区五区 | 制服丝袜中文字幕亚洲| 最新中文字幕一区二区三区| 久久91精品久久久久久秒播| 色婷婷精品久久二区二区蜜臀av | 一区二区三区国产精品| 国产福利91精品一区二区三区| 4438x成人网最大色成网站| 一区二区三区小说| 99久久免费精品| 国产精品久久99| 成人亚洲一区二区一| 国产日韩欧美电影| 狠狠v欧美v日韩v亚洲ⅴ| 日韩免费看网站| 日本特黄久久久高潮| 欧美日韩精品免费| 亚洲午夜影视影院在线观看| 91老司机福利 在线| 亚洲人妖av一区二区| 成人avav影音| 亚洲天堂久久久久久久| 成人97人人超碰人人99| 国产精品久久久久婷婷| av在线不卡电影|