[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openssl-dev
Subject:    RE: RSA-signing a previously-digested message
From:       Frank Balluffi <frankb () valicert ! com>
Date:       2001-11-29 13:53:09
[Download RAW message or body]

Amodhini,

Try calling SSLeay_add_all_algorithms at the top of main.

Frank

> -----Original Message-----
> From: Amodhini U [mailto:amodhini@yahoo.com]
> Sent: Thursday, November 29, 2001 6:06 AM
> To: openssl-dev@openssl.org
> Cc: amodhini@yahoo.com
> Subject: RSA-signing a previously-digested message
> 
> 
> Hi,
> 
> I'm having problems RSA-signing a previously-digested
> message.
> 
> I'm trying to RSA-encrypt (with my RSA private key) a
> very short binary string. (The plaintext binary string
> is actually an MD5 hash, but previously stored, not
> generated on-the-fly, so the hashing-context has not
> been preserved.)
> 
> I read through the OpenSSL-dev list discussions on
> this topic. I tried using RSA_sign() but that resulted
> in a segmentation fault. Then I tried using
> RSA_private_encrypt(), but that too gave the same
> segmentation fault.
> 
> My modulus is 1024-bit, my plaintext is 128-bit. I
> want to use raw RSA, hence pad = RSA_NO_PADDING.
> I don't want to use EVP at all if I can help it. Nor
> BIO.
> I don't want to preserve any Algorithm Identifier
> information, neither for the hashing nor for the
> encryption (because I know they are MD5 and
> RSA-1024-bit, respectively).
> 
> I've appended my code to this email. Could you please
> tell me where I'm making my mistakes? Could you please
> point me to working code for RSA-signing an
> already-stored digest?  And also for verifying that
> signature?
> 
> Thanks very much, in advance.
> 
> Amodhini U
> 
> amodhini@yahoo.com
> 
> 
> /* The code: */
> #include <stdio.h>
> #include <string.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>
> 
> int main(int argc, char **argv)
> {
>    FILE	*fp;
>    EVP_PKEY   *privatekey;
> 
>    unsigned char *rsa_in = "0123456789abcdef";
>    int rsa_inlen = 17;
>    unsigned char pad = RSA_NO_PADDING;
>    unsigned char *rsa_out = NULL;
>    int rsa_outlen = 0;
>    RSA   *rsa;
>    rsa = RSA_new();
> 	
>    /* Read the private key */
>    fp = fopen("/path/to/my/privatekey.pem", "r");
>    if (fp == NULL)
>       printf("Error opening privatekey.pem file!\n");
> 	
>    privatekey = PEM_read_RSAPrivateKey(fp, &rsa, NULL,
> NULL);
>    fclose(fp);
> 
>    if (privatekey == NULL)
>       printf("Error reading private key!\n");
> 
>    rsa_outlen  = RSA_private_encrypt(rsa_inlen,
> rsa_in, rsa_out, privatekey, pad);
>    if (rsa_outlen == -1)
>       ERR_print_errors_fp(stderr);
> 		
>    RSA_free(rsa);
>    return 0;
> }
> 
> 
> __________________________________________________
> Do You Yahoo!?
> Yahoo! GeoCities - quick and easy web site hosting, just $8.95/month.
> http://geocities.yahoo.com/ps/info1
> ______________________________________________________________________
> OpenSSL Project                                 http://www.openssl.org
> Development Mailing List                       openssl-dev@openssl.org
> Automated List Manager                           majordomo@openssl.org
> 
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       openssl-dev@openssl.org
Automated List Manager                           majordomo@openssl.org

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic