2010-07-29 4 views
0

Je peux obtenir OpenSSL avec succès pour exécuter HMAC-SHA1, MD5, SHA1 tout sans l'utilisation d'une instruction #include, mais j'ai beaucoup de mal à le faire fonctionner pour un RSA_sign car cela nécessite que la clé soit de type RSA think est enterré profondément dans rsa.h (ou l'un de ses propres comprend) et je n'ai pas été en mesure de cajoler les outils que j'utilise dans le travail avec les fichiers d'entête openssl. J'utilise LoadRunner pour cela - chaque fois que j'essaye de l'amener à effectuer un RSA_sign je viens d'obtenir une violation d'exception de mémoire - ce qui est probablement dû au fait que je ne fournis pas la clé dans le bon format.Comment puis-je effectuer une RSA_sign sans #include rsa.h juste en utilisant libeay32.dll?

Donc, y at-il un moyen que je peux appeler RSA_sign directement sur libeay32.dll sans référence aux fichiers d'entêtes openssl que je peux pour les autres méthodes mentionnées ci-dessus?

Toute aide serait appréciée. John

Répondre

0

Je suppose que vous avez chargé la DLL. Sinon, essayez lr_load_dll(). Je n'ai pas utilisé RSA_sign, mais avec LoadRunner vous pouvez appeler des fonctions de bibliothèque externes sans le .h si vous incluez la déclaration de fonction (avant de l'utiliser). Essayez d'ajouter ce qui suit au sommet de la section:

int RSA_sign(int type, const unsigned char *m, unsigned int m_len, 
    unsigned char *sigret, unsigned int *siglen, RSA *rsa); 

Si cela ne fonctionne pas, essayez de changer la RSA *rsa à long *rsa.

Si vous pouvez faire l'appel et obtenez toujours une erreur, vous pourriez avoir besoin de faire un typedef et/ou struct et déclarer/remplir l'objet RSA avant de l'utiliser.

0

Merci pour votre réponse, ouais j'avais chargé la DLL car cette étape était ce qui avait permis aux autres méthodes de fonctionner. J'ai essayé de mettre la déclaration RSA_sign à la tête de mon vuser_init où je fais le développement de la fonction, mais cela n'a pas fonctionné avec RSA ou Long-RSA parce qu'elle ne sait pas ce qu'est un RSA - j'ai essayé sans succès d'utiliser TypeDef/Struct pour définir RSA - même en utilisant une définition réelle que j'ai trouvé sur Wiki - qui suggère d'utiliser long long, mais LoadRunner ne le permet pas. En utilisant long comme vous avez suggéré a également échoué, je pense que parce que ma clé est 1269 chiffres hexadécimaux et long n'est pas assez grand pour le tenir.

Malheureusement, je ne suis pas un programmeur «de base» - au mieux, je dirais que je suis un scripteur et cela va bien au-delà de ma compréhension. S'il y a d'autres conseils que vous pouvez donner, je serais très reconnaissant.

Merci encore.

Questions connexes