Add missing 'extern "C" {' to some _err.h files in crypto/engines/
[openssl.git] / demos / maurice / loadkeys.c
1 /* NOCW */
2 /*
3         Please read the README file for condition of use, before
4         using this software.
5
6         Maurice Gittens  <mgittens@gits.nl>   January 1997
7
8 */
9
10 #include <unistd.h>
11 #include <stdio.h>
12 #include <netinet/in.h>
13 #include <fcntl.h>
14 #include <strings.h>
15 #include <stdlib.h>
16
17 #include <openssl/rsa.h>
18 #include <openssl/evp.h>
19 #include <openssl/objects.h>
20 #include <openssl/x509.h>
21 #include <openssl/err.h>
22 #include <openssl/pem.h>
23 #include <openssl/ssl.h>
24
25 EVP_PKEY * ReadPublicKey(const char *certfile)
26 {
27   FILE *fp = fopen (certfile, "r");   
28   X509 *x509;
29   EVP_PKEY *pkey;
30
31   if (!fp) 
32      return NULL; 
33
34   x509 = PEM_read_X509(fp, NULL, 0, NULL);
35
36   if (x509 == NULL) 
37   {  
38      ERR_print_errors_fp (stderr);
39      return NULL;   
40   }
41
42   fclose (fp);
43   
44   pkey=X509_extract_key(x509);
45
46   X509_free(x509);
47
48   if (pkey == NULL) 
49      ERR_print_errors_fp (stderr);
50
51   return pkey; 
52 }
53
54 EVP_PKEY *ReadPrivateKey(const char *keyfile)
55 {
56         FILE *fp = fopen(keyfile, "r");
57         EVP_PKEY *pkey;
58
59         if (!fp)
60                 return NULL;
61
62         pkey = PEM_read_PrivateKey(fp, NULL, 0, NULL);
63
64         fclose (fp);
65
66         if (pkey == NULL) 
67                 ERR_print_errors_fp (stderr);   
68
69         return pkey;
70 }
71
72