mirror of
https://github.com/guanzhi/GmSSL.git
synced 2026-08-08 23:13:38 +08:00
first commit, SM2-DSA only
This commit is contained in:
75
demos/maurice/example2.c
Normal file
75
demos/maurice/example2.c
Normal file
@@ -0,0 +1,75 @@
|
||||
/* 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;
|
||||
}
|
||||
Reference in New Issue
Block a user