• Domingo 15 de Diciembre de 2024, 06:46

Autor Tema:  Liberia Capicom:(  (Leído 1307 veces)

vandame18

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Liberia Capicom:(
« en: Martes 10 de Octubre de 2006, 16:54 »
0
Hola a todos comunidad , primero me presento ante el foro espero poder ayudar con mis pocos conocimientos en lo que pueda.

quisiera preguntarles acerca del uso de la libreria capicom la cual descargue de la pagina de microsoft  .vienen con varios ejemplos pero los de c++ no los entiendo ... :(

bueno el caso es que :
necesito realizar una dll(en atL) q permite veriificar firmas digitales de documentos

quisiera saber si alguien del foro ha usado antes esta libreria y me pueda orientar con algunos ejemplos ?

estare muy agradecido..

un saludo y gracias

vandame18

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Liberia Capicom:(
« Respuesta #1 en: Martes 10 de Octubre de 2006, 18:36 »
0
este es el codigo de ejemplo

Código: Text
  1.  
  2.  
  3. /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  4.  
  5.  
  6.  THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
  7.  EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
  8.  WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
  9.  
  10.  Copyright (C) 1999 - 2000.  Microsoft Corporation.  All rights reserved.
  11.  
  12.  Module:      Store.cpp
  13.  
  14.  Abstract:    Main program of CAPICOM Store sample. See ReadMe.txt for more
  15.               detail information about this sample.
  16.  
  17.  Environment: Win32 console, UNICODE ready.
  18.  
  19. ------------------------------------------------------------------------------*/
  20.  
  21. #include <tchar.h>
  22. #include <stdio.h>
  23. #include <atlbase.h>
  24. #include <windows.h>
  25.  
  26. #pragma warning (disable : 4192)
  27.  
  28. //
  29. // Import TLB from DLL
  30. //
  31. // Note: Make sure either you have the DLL in the current directory, or point
  32. //       it to the correct directory on you drive.
  33. //
  34. #import "capicom.dll"
  35.  
  36. //
  37. // Use CAPICOM namespace.
  38. //
  39. using namespace CAPICOM;
  40.  
  41. /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  42.  
  43.   Module: main()
  44.  
  45.   Remark: Entry point of CAPICOM Store C++ sample.
  46.  
  47. -----------------------------------------------------------------------------*/
  48.  
  49. int __cdecl _tmain (int argc, _TCHAR  * argv[])
  50. {
  51.     HRESULT hr = S_OK;
  52.  
  53.     //
  54.     // Initialize COM library.
  55.     //
  56.     CoInitialize(0);
  57.  
  58.     try
  59.     {
  60.         //
  61.         // Open current user My store.
  62.         //
  63.         _bstr_t   bstrName = _T("My");
  64.         IStorePtr pIStore(__uuidof(Store));
  65.  
  66.         if (FAILED(hr = pIStore->Open(CAPICOM_CURRENT_USER_STORE,
  67.                                       bstrName,
  68.                                       CAPICOM_STORE_OPEN_READ_ONLY)))
  69.         {
  70.             ATLTRACE(_T("Error [%#x]: pIStore->Open() failed at line %d.\n"), hr, __LINE__);
  71.             throw hr;
  72.         }
  73.  
  74.         //
  75.         // Display all certificate in the store.
  76.         //
  77.         IUnknownPtr     pIUnknown;
  78.         IEnumVARIANTPtr pIEnum;
  79.         _variant_t      pDisp;
  80.         ULONG           ulFetched;
  81.  
  82.         //
  83.         // Get _NewEnum of Certificates collection.
  84.         //
  85.         if (FAILED(hr = pIStore->Certificates->get__NewEnum(&pIUnknown)))
  86.         {
  87.             ATLTRACE(_T("Error [%#x]: pIStore->Certificates->get__NewEnum() failed at line %d.\n"), hr, __LINE__);
  88.             throw hr;
  89.         }
  90.  
  91.         //
  92.         // Get IEnumVARIANT interface of _NewEnum.
  93.         //
  94.         if (FAILED(hr = pIUnknown->QueryInterface(IID_IEnumVARIANT, (void **) &pIEnum)))
  95.         {
  96.             ATLTRACE(_T("Error [%#x]: pIUnknown->QueryInterface() failed at line %d.\n"), hr, __LINE__);
  97.             throw hr;
  98.         }
  99.  
  100.         //
  101.         // Now loop through all items in the collection.
  102.         //
  103.         while (pIEnum->Next(1, &pDisp, &ulFetched) == S_OK)
  104.         {
  105.             //
  106.             // Display the certificate.
  107.             //
  108.             if (FAILED(hr = ((ICertificatePtr) pDisp.pdispVal)->Display()))
  109.             {
  110.                 ATLTRACE(_T("Error [%#x]: ((ICertificatePtr) pDisp.pdispVal)->Display() failed at line %d.\n"), hr, __LINE__);
  111.                 throw hr;
  112.             }
  113.  
  114.             pDisp.Clear();
  115.         }
  116.     }
  117.  
  118.     catch (_com_error e)
  119.     {
  120.         hr = e.Error();
  121.         ATLTRACE(_T("Error [%#x]: %s.\n"), hr, e.ErrorMessage());
  122.     }
  123.  
  124.     catch (HRESULT hr)
  125.     {
  126.         ATLTRACE(_T("Error [%#x]: CAPICOM error.\n"), hr);
  127.     }
  128.  
  129.     catch(...)
  130.     {
  131.         hr = CAPICOM_E_UNKNOWN;
  132.         ATLTRACE(_T("Unknown error.\n"));
  133.     }
  134.  
  135.     CoUninitialize();
  136.  
  137.     return (int) hr;
  138. }
  139.  
  140.  

pero en verdad no entiendo que quiere hacer aqui..