1998-12-21 18:52:47 +08:00
|
|
|
/* NOCW */
|
|
|
|
/*
|
|
|
|
Please read the README file for condition of use, before
|
|
|
|
using this software.
|
|
|
|
|
|
|
|
Maurice Gittens <mgittens@gits.nl> January 1997
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include <unistd.h>
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <netinet/in.h>
|
|
|
|
#include <fcntl.h>
|
|
|
|
#include <strings.h>
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
1999-04-24 06:13:45 +08:00
|
|
|
#include <openssl/rsa.h>
|
|
|
|
#include <openssl/evp.h>
|
|
|
|
#include <openssl/objects.h>
|
|
|
|
#include <openssl/x509.h>
|
|
|
|
#include <openssl/err.h>
|
|
|
|
#include <openssl/pem.h>
|
|
|
|
#include <openssl/ssl.h>
|
1998-12-21 18:52:47 +08:00
|
|
|
|
|
|
|
EVP_PKEY * ReadPublicKey(const char *certfile)
|
|
|
|
{
|
|
|
|
FILE *fp = fopen (certfile, "r");
|
|
|
|
X509 *x509;
|
|
|
|
EVP_PKEY *pkey;
|
|
|
|
|
|
|
|
if (!fp)
|
|
|
|
return NULL;
|
|
|
|
|
|
|
|
x509 = (X509 *)PEM_ASN1_read ((char *(*)())d2i_X509,
|
|
|
|
PEM_STRING_X509,
|
|
|
|
fp, NULL, NULL);
|
|
|
|
|
|
|
|
if (x509 == NULL)
|
|
|
|
{
|
|
|
|
ERR_print_errors_fp (stderr);
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
fclose (fp);
|
|
|
|
|
|
|
|
pkey=X509_extract_key(x509);
|
|
|
|
|
|
|
|
X509_free(x509);
|
|
|
|
|
|
|
|
if (pkey == NULL)
|
|
|
|
ERR_print_errors_fp (stderr);
|
|
|
|
|
|
|
|
return pkey;
|
|
|
|
}
|
|
|
|
|
|
|
|
EVP_PKEY *ReadPrivateKey(const char *keyfile)
|
|
|
|
{
|
|
|
|
FILE *fp = fopen(keyfile, "r");
|
|
|
|
EVP_PKEY *pkey;
|
|
|
|
|
|
|
|
if (!fp)
|
|
|
|
return NULL;
|
|
|
|
|
|
|
|
pkey = (EVP_PKEY*)PEM_ASN1_read ((char *(*)())d2i_PrivateKey,
|
|
|
|
PEM_STRING_EVP_PKEY,
|
|
|
|
fp,
|
|
|
|
NULL, NULL);
|
|
|
|
|
|
|
|
fclose (fp);
|
|
|
|
|
|
|
|
if (pkey == NULL)
|
|
|
|
ERR_print_errors_fp (stderr);
|
|
|
|
|
|
|
|
return pkey;
|
|
|
|
}
|
|
|
|
|
|
|
|
|