//---------------------------------------------------------------------------

#pragma hdrstop
#include <windows.h>
#include <wincrypt.h>
#include "cptumar.h"
//---------------------------------------------------------------------------

#pragma argsused
void CreateProfile(void);
void GetParamFromURL(void);
void DeleteProfile(void);

int main(int argc, char* argv[])
{
        CreateProfile();
        GetParamFromURL();
        DeleteProfile();
        return 0;
}

void CreateProfile(void)
{
        HCRYPTPROV hProv=0;
        PROFILE_URL ProfUrl;  // структура определена в cptumar.h
        ProfUrl.Profile = "FSystem";
        ProfUrl.Url = "file://FSystem:hex=D0AFB1644F075403@/C%3A\\keys";
        CryptAcquireContext(&hProv, NULL, NULL,25,CRYPT_VERIFYCONTEXT);
        CryptSetProvParam(hProv, PP_ADD_PROFILE, (BYTE *)&ProfUrl, 0);
        CryptReleaseContext(hProv,0);
}

void GetParamFromURL(void)
{
        HCRYPTPROV hProv=0;
        ContInfoEx ContInfo; // структура определена в cptumar.h
        memset(&ContInfo,0,sizeof(ContInfoEx));
        strcpy(ContInfo.Url,"file://FSystem:hex=D0AFB1644F075403@/C%3A\keys");
        DWORD cbData = sizeof(ContInfoEx);
        CryptAcquireContext(&hProv, NULL, NULL,25,CRYPT_VERIFYCONTEXT);
// в функцию передаётся пустая структура ContInfoEx с заполненным URL
        CryptGetProvParam(hProv, PP_URL_TO_PROF, (BYTE *)&ContInfo, &cbData, 0);
// поля структуры ContInfo заполнены значениями в соответствии с переданным URL
        CryptReleaseContext(hProv,0);
}

void DeleteProfile(void)
{
         HCRYPTPROV hProv=0;
         CryptAcquireContext(&hProv, NULL, NULL,25,CRYPT_VERIFYCONTEXT);
        CryptSetProvParam(hProv, PP_DEL_PROFILE, (BYTE *)"FSystem", 0);
        CryptReleaseContext(hProv,0);
}

//---------------------------------------------------------------------------
 