blob: 57bce10b5ed5ec37f8ee1d3a37b0394604732752 [file] [log] [blame]
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +00001/* 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#include <stdlib.h>
10#include <stdio.h>
11#include <strings.h>
12
Bodo Möllerec577821999-04-23 22:13:45 +000013#include <openssl/rsa.h>
14#include <openssl/evp.h>
15#include <openssl/objects.h>
16#include <openssl/x509.h>
17#include <openssl/err.h>
18#include <openssl/pem.h>
19#include <openssl/ssl.h>
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +000020
21#include "loadkeys.h"
22
23#define PUBFILE "cert.pem"
24#define PRIVFILE "privkey.pem"
25#define STDIN 0
26#define STDOUT 1
27
28int main()
29{
30 char *ct = "This the clear text";
31 char *buf;
32 char *buf2;
33 EVP_PKEY *pubKey;
34 EVP_PKEY *privKey;
35 int len;
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +000036
37 ERR_load_crypto_strings();
38
39 privKey = ReadPrivateKey(PRIVFILE);
40 if (!privKey)
41 {
42 ERR_print_errors_fp (stderr);
43 exit (1);
44 }
45
46 pubKey = ReadPublicKey(PUBFILE);
47 if(!pubKey)
48 {
49 EVP_PKEY_free(privKey);
50 fprintf(stderr,"Error: can't load public key");
51 exit(1);
52 }
53
54 /* No error checking */
55 buf = malloc(EVP_PKEY_size(pubKey));
56 buf2 = malloc(EVP_PKEY_size(pubKey));
57
58 len = RSA_public_encrypt(strlen(ct)+1, ct, buf, pubKey->pkey.rsa,RSA_PKCS1_PADDING);
59
60 if (len != EVP_PKEY_size(pubKey))
61 {
62 fprintf(stderr,"Error: ciphertext should match length of key\n");
63 exit(1);
64 }
65
66 RSA_private_decrypt(len, buf, buf2, privKey->pkey.rsa,RSA_PKCS1_PADDING);
67
68 printf("%s\n", buf2);
69
70 EVP_PKEY_free(privKey);
71 EVP_PKEY_free(pubKey);
72 free(buf);
73 free(buf2);
Bodo Möller71f08091999-05-27 23:52:31 +000074 return 0;
Ralf S. Engelschalld02b48c1998-12-21 10:52:47 +000075}