Viewing file: example2.c (1.49 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* NOCW */ /* Please read the README file for condition of use, before using this software.
Maurice Gittens <mgittens@gits.nl> January 1997 */
#include <stdlib.h> #include <stdio.h> #include <strings.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>
#include "loadkeys.h"
#define PUBFILE "cert.pem" #define PRIVFILE "privkey.pem" #define STDIN 0 #define STDOUT 1
int main() { char *ct = "This the clear text"; char *buf; char *buf2; EVP_PKEY *pubKey; EVP_PKEY *privKey; int len;
ERR_load_crypto_strings();
privKey = ReadPrivateKey(PRIVFILE); if (!privKey) { ERR_print_errors_fp (stderr); exit (1); }
pubKey = ReadPublicKey(PUBFILE); if(!pubKey) { EVP_PKEY_free(privKey); fprintf(stderr,"Error: can't load public key"); exit(1); }
/* No error checking */ buf = malloc(EVP_PKEY_size(pubKey)); buf2 = malloc(EVP_PKEY_size(pubKey));
len = RSA_public_encrypt(strlen(ct)+1, ct, buf, pubKey->pkey.rsa,RSA_PKCS1_PADDING);
if (len != EVP_PKEY_size(pubKey)) { fprintf(stderr,"Error: ciphertext should match length of key\n"); exit(1); }
RSA_private_decrypt(len, buf, buf2, privKey->pkey.rsa,RSA_PKCS1_PADDING);
printf("%s\n", buf2);
EVP_PKEY_free(privKey); EVP_PKEY_free(pubKey); free(buf); free(buf2); return 0; }
|