Ir para conteúdo
Fórum Script Brasil
  • 0

Pkcs#11


rcabreu

Pergunta

eu estou com problemas pra criar uma dll. Queria fazer uma dll win32 q tivesse 4 funções, Initialize, Finalize, login e logout para conectar em um token.

Eu baixei a documentação e os headers da RSA, mas não estou conseguindo sair do lugar. O token q eu quero conectar é um HSM da empresa q eu to. Existe uma API q faz a conexão.

Estava precisando de uma luz, para pelo menos sair do lugar.

os 4 headers são um .h q tem os protótipos, um .h q tem os typedefs e estruturas, um .h com as convenções de chamada e um quarto .h que define os pontos de entrada dos "extern".

Preciso então implementar as funções q eu disse antes, mas não sei como q eu começo. Se eu tento incluir o .h com os protótipos das funções eu tenho erro do compilador em praticamente todas as linhas.

Alguém já trabalhou com isso e tem uma luz, pra me ajudar?

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

/* arquivo definindo o PKCS11 */

/* All the various Cryptoki types and #define'd values are in the

* file pkcs11t.h. */

#include "pkcs11t.h"

#define __PASTE(x,y) x##y

/* ==============================================================

* Define the "extern" form of all the entry points.

* ==============================================================

*/

#define CK_NEED_ARG_LIST 1

#define CK_PKCS11_FUNCTION_INFO(name) \

extern CK_DECLARE_FUNCTION(CK_RV, name)

/* pkcs11f.h has all the information about the Cryptoki

* function prototypes. */

#include "pkcs11f.h"

#undef CK_NEED_ARG_LIST

#undef CK_PKCS11_FUNCTION_INFO

/* ==============================================================

* Define the typedef form of all the entry points. That is, for

* each Cryptoki function C_XXX, define a type CK_C_XXX which is

* a pointer to that kind of function.

* ==============================================================

*/

#define CK_NEED_ARG_LIST 1

#define CK_PKCS11_FUNCTION_INFO(name) \

typedef CK_DECLARE_FUNCTION_POINTER(CK_RV, __PASTE(CK_,name))

/* pkcs11f.h has all the information about the Cryptoki

* function prototypes. */

#include "pkcs11f.h"

#undef CK_NEED_ARG_LIST

#undef CK_PKCS11_FUNCTION_INFO

/* ==============================================================

* Define structed vector of entry points. A CK_FUNCTION_LIST

* contains a CK_VERSION indicating a library's Cryptoki version

* and then a whole slew of function pointers to the routines in

* the library. This type was declared, but not defined, in

* pkcs11t.h.

* ==============================================================

*/

#define CK_PKCS11_FUNCTION_INFO(name) \

__PASTE(CK_,name) name;

struct CK_FUNCTION_LIST {

CK_VERSION version; /* Cryptoki version */

/* Pile all the function pointers into the CK_FUNCTION_LIST. */

/* pkcs11f.h has all the information about the Cryptoki

* function prototypes. */

#include "pkcs11f.h"

};

#undef CK_PKCS11_FUNCTION_INFO

#undef __PASTE

#ifdef __cplusplus

}

#endif

#endif

/*Esse segundo arquivo contém todas as funções a serem exportadas pela dll.

* Coloquei apenas as funções de uso geral, pois o resto se repete e ficaria muito * grande no tópico. É esse o arquivo que está dando problema. Se eu tentar incluí-* lo no meu projeto( estou usando como compilador e editor o VC7.0 ) dá pau.Ele * diz que as funções não estão definidas. Os erros, para cada uma das funções *são esses.

*error C2501: 'CK_PKCS11_FUNCTION_INFO' : missing storage-class or type *specifiers

* error C2440: 'initializing' : cannot convert from 'CK_RV (__cdecl *) * (CK_VOID_PTR)' to 'int'

* error C2146: syntax error : missing ';' before * identifier 'CK_PKCS11_FUNCTION_INFO'

* error C2501: 'CK_PKCS11_FUNCTION_INFO' : missing storage-class or type * specifiers

* error C2374: 'CK_PKCS11_FUNCTION_INFO' : redefinition; multiple initialization

* e então esses erros se repetem para cada uma das outras funções do arquivo de funções a serem exportadas pela dll.

*/

/* General-purpose */

/* C_Initialize initializes the Cryptoki library. */

CK_PKCS11_FUNCTION_INFO(C_Initialize)

#ifdef CK_NEED_ARG_LIST

(

CK_VOID_PTR pInitArgs /* if this is not NULL_PTR, it gets

* cast to CK_C_INITIALIZE_ARGS_PTR

* and dereferenced */

);

#endif

/* C_Finalize indicates that an application is done with the

* Cryptoki library. */

CK_PKCS11_FUNCTION_INFO(C_Finalize)

#ifdef CK_NEED_ARG_LIST

(

CK_VOID_PTR pReserved /* reserved. Should be NULL_PTR */

);

#endif

/* C_GetInfo returns general information about Cryptoki. */

CK_PKCS11_FUNCTION_INFO(C_GetInfo)

#ifdef CK_NEED_ARG_LIST

(

CK_INFO_PTR pInfo /* location that receives information */

);

#endif

/* C_GetFunctionList returns the function list. */

CK_PKCS11_FUNCTION_INFO(C_GetFunctionList)

#ifdef CK_NEED_ARG_LIST

(

CK_FUNCTION_LIST_PTR_PTR ppFunctionList /* receives pointer to

* function list */

);

#endif

No arquivo aonde eu vou implementar as funções eu dou um include nesses dois .h, mas outros 2, um que contém os tipos e as estruturas, e um outro que garante as conveções de chamada e define o entry point para uma dll windows.

Se eu incluo esse aquivo que eu postei por ultimo, dá pau. É basicamente isso que está acontecendo.

Valeu pela ajuda, quem tiver a manha de resolver.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...