J'ai un certificat au format PEM que je veux convertir au format DER en utilisant les fonctions OpenSLL en C++.Conversion de PEM en DER en C++
Comment puis-je le faire?
Merci.
J'ai un certificat au format PEM que je veux convertir au format DER en utilisant les fonctions OpenSLL en C++.Conversion de PEM en DER en C++
Comment puis-je le faire?
Merci.
Vous pouvez le faire comme -
#include <stdio.h>
#include <openssl/x509.h>
#include <openssl/pem.h>
#include <openssl/err.h>
void convert(char* cert_filestr,char* certificateFile)
{
X509* x509 = NULL;
FILE* fd = NULL,*fl = NULL;
fl = fopen(cert_filestr,"rb");
if(fl)
{
fd = fopen(certificateFile,"w+");
if(fd)
{
x509 = PEM_read_X509(fl,&x509,NULL,NULL);
if(x509)
{
i2d_X509_fp(fd, x509);
}
else
{
printf("failed to parse to X509 from fl");
}
fclose(fd);
}
else
{
printf("can't open fd");
}
fclose(fl);
}
else
{
printf("can't open f");
}
}
int main()
{
convert("abc.pem","axc.der");
return 0;
}
merci, juste une question de plus, si je l'obtiens en tant que chaîne et non en tant que fichier, comment puis-je le faire? merci beaucoup – itayb
Essayez ceci -
void convert(const unsigned char * pem_string_cert,char* certificateFile)
{
X509* x509 = NULL;
FILE* fd = NULL;
BIO *bio;
bio = BIO_new(BIO_s_mem());
BIO_puts(bio, pem_string_cert);
x509 = PEM_read_bio_X509(bio, NULL, NULL, NULL);
fd = fopen(certificateFile,"w+");
if(fd)
{
i2d_X509_fp(fd, x509);
}
else
{
printf("can't open fd");
}
fclose(fd);
}
merci beaucoup – itayb
openssl x509 -outform der -in certificate.pem certificate.der https://www.sslshopper.com -out /ssl-converter.html – user1438832
Comment puis-je le faire en C++ en utilisant les fonctions openssl? – itayb
Voir aussi [Utiliser la clé OpenSSL RSA avec .Net] (http://stackoverflow.com/q/30475758/608639). Il vous montre quelques astuces C++ avec 'unique_ptr' pour gérer les ressources. – jww