Je suis en train de programmer et de bout en bout le calendrier crypté. Pour cela j'utilise cryptlib. J'ai plus ou moins copié le code du manual. Mais toujours, quand j'essaye de générer une racine ca. Il échoue avec le code d'erreur -2 sur cryptSignCert(). (Ce qui signifie, selon le manuel, qu'il y a un problème avec le deuxième paramètre)
Voici un petit code pour reproduire le problème.
cryptlib cryptSignCert échoue
#include <iostream>
#include <cstring>
#include "cryptlib.h"
/*Generating a root ca*/
auto genRootCA(const char* commonName,const char* keyLabel,const char* country) -> int
{
int status;
CRYPT_CONTEXT cryptContext;
cryptCreateContext(&cryptContext, CRYPT_UNUSED, CRYPT_ALGO_RSA);
cryptSetAttributeString(cryptContext, CRYPT_CTXINFO_LABEL, keyLabel, strlen(keyLabel));
cryptGenerateKey(cryptContext);
CRYPT_CERTIFICATE cryptCertificate;
cryptCreateCert(&cryptCertificate,CRYPT_UNUSED,CRYPT_CERTTYPE_CERTIFICATE);
cryptSetAttributeString(cryptCertificate,CRYPT_CERTINFO_COUNTRYNAME,country,strlen(country));
cryptSetAttributeString(cryptCertificate,CRYPT_CERTINFO_COMMONNAME,commonName,strlen(commonName));
//Set to self-signed
cryptSetAttribute(cryptCertificate,CRYPT_CERTINFO_SELFSIGNED,1);
cryptSetAttribute(cryptCertificate,CRYPT_CERTINFO_CA,1);
//Sign certificate
status = cryptSignCert(cryptCertificate,cryptContext); //This is, what is actually not working
if(cryptStatusError(status))
{
cryptDestroyContext(cryptContext);
cryptDestroyCert(cryptCertificate);
return(status);
}
//Save data to disk....(cut out)
}
int main()
{
cryptInit();
cryptAddRandom(NULL,CRYPT_RANDOM_FASTPOLL);
std::cout << "Generating root ca.\n";
int r = genRootCA("[email protected]","Private key","DE");
std::cout << "Returned value " << r << std::endl;
cryptEnd();
}
Merci à l'avance, David.
* "J'ai plus ou moins copié le code du manuel" * Qu'est-ce que cela signifie? Sommes-nous censés passer en revue votre code et le manuel pour repérer les différences? S'il vous plaît [modifier] votre question pour fournir un [mcve]. –
Aussi, essayez de trouver un meilleur titre. * "ne fonctionne pas" * concerne la description de problème la moins utile possible. –
Je suis désolé mais je ne vois pas ce que vous voulez dire. Je n'ai jamais utilisé cryptlib auparavant et donc aucune idée de comment cela fonctionnerait correctement. Et si vous regardez le manuel, vous remarquerez, qu'il n'y a pas de code qui, peut être copié et collé. –