78 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* 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>
 | 
						|
 | 
						|
#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>
 | 
						|
 | 
						|
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, 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, NULL);
 | 
						|
 | 
						|
	fclose (fp);
 | 
						|
 | 
						|
  	if (pkey == NULL) 
 | 
						|
		ERR_print_errors_fp (stderr);   
 | 
						|
 | 
						|
	return pkey;
 | 
						|
}
 | 
						|
 | 
						|
 |