Can anybody help me out, not sure whats going wrong. My test case right now is the following

gcc sign.c -o sign -lcrypto
gcc verify.c -o verify -lcrypto
./sign > blah.sig
./verify



[EMAIL PROTECTED] openssl]# cat sign.c
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>

#include <openssl/bio.h>
#include <openssl/rsa.h>
#include <openssl/pem.h>
#include <openssl/err.h>

int main(void)
{

       char* message = "blah";
       unsigned char* signature;
       unsigned int slen;
       unsigned int verified;

static char *privkey = "-----BEGIN RSA PRIVATE KEY-----\nMIIJKAIBAAKCAgEAwm3C2PotN3uzg6pUqpLMkxa9xsgA/V3TrfG9RbrriIVr5xF7\n8rqtPTgzXUhcYAkEd2ROjtrI4WfZ91G3e9d5sR/1275UD0KAxkzxwOcWWMfZ0Yul\nlcwYQayd4Ke2msLaXbm65Gd0BfmGSCMX7fWHEWUCwSklXEFI0I2Zz7fZsCdeynaL\nGnZupsmKGa+t7XsgiVWfDGsQPcFee7285tnWxEgNUlaahySbLsNh11UAyqdKtDif\nSDUSuuPxnE+tvi3r2O17Yj77m9fnDAbRYHta+wTtKlPoD9iuV5bCoOpMejxBVNNK\nG6ganp117ivMC6OPYs+QxSM5FNOikIETZoLBBZV2M1T84i0pTat901OQZkhwTAPu\niwxSdWPFqHUBwp30g8i/NvhCelWh+pVPhbodn14r8DXMU/arw5EpEqmcj3IPFapr\ncrRRrpsPSiMqo5rdC5CH6Y1+Cel1W4IJp7lo6cgpSjAuNTvLIcJDpAFnImWy/Zr9\nUbGOh5mkF5PsVN9chc1gLjTPbgSQUcN0oX+rQjx0bqT7Tt6Y66W5wCrKLrL5blHq\nm08pAzEiFKb5srEK6ouvoGUv9DnoC9GwbXJq9RJDIwi4SW3LduQ2/vmFyj00LyaL\nOKL6mI3sAS9p8Vkl6KabjY8BdnKp7dnuEmJtQicZVAJkvHy8aThkF/NtfOMCAwEA\nAQKCAgAP4Xk90clps7/o7Du4Jv9wsDXWC7YQ+93zYkBsdqUQZJ14pTPzko3d5z5C\ny0tISNRFkDrebj5kMuBZ1CHhiqsU7aBeT4B8MplkGRrR/84SeFhxRi/DOYVtr9TB\nadF/eJTvfOEoEM8oQcZXFA67UAe1QwPjlSHJFEgHSNmcXs74FW8nqGEaSzwkgWe3\nS2Mwd5MjxIuWLxSHhsjZ4JiSXo6tP5le9VXv3eyS+ECAnx/ObbWrXMid
1D/wZffx\nJYzycLvH3zXpw203wH3NvKzTbZ/zyuY4Q9w7lx4+Z0EEdb7DaTKI5C00bxmlhQUB\n7C/hb32hu4R+pa7e5Z5soS5dfCaZ0qFJRDAgM2h19zSkbXV/XtMOdbk6sZdAhYOD\nqlpRfdKXuFeeBrffY/zxmjetgv1bJnvIsCG9x92p6ocfd3k7GE5GMnRkCuh3uVQT\nE6rjQty4pwOt+dHg0AV8SLFDZ6T8Vm4rw6BhZDiZO12DKhrAjCTeeLHewsy5owcW\nt/EMpqv5m9eSk81+PmFhuXlUB4NXBVXeRXW5hEyAf99wZ+7ErxaaN2kDNxiJ56PU\nbhm3Bu6tb0atrPYBPWKxToWARJ9VS/GIrXE5l1X9QbJDn9RrMW7ypKYOYZEBxpNX\nUz/t+hENVqrC0h/7qE3VtypQQ6H1t6RM+vK6DFMKx254h4m+sQKCAQEA7peT+fuv\ni/965IwRn4CAs1J6u8ow4+eknivWoiolOvaoEBTyCdTm3GUtB3db2wDNkQDvd/Pr\n9ZnjxwWfMDRz2h6jPRf2+maFmcw9cxEgd5NZcWX9Uir6UB5eue/WHLejWjmOK4nn\nUh+g2zjU14rnCR4wCoapRHi+6YvkKvUE3AQa17UfzkH1k/jeHsmFPBcvTfPsWWVw\nOarVBAb23TU5YMRzQPhEyM2/qZyl/0LDcGsrMFit4TcH640V8rRviJvF/JA+DO7v\nu44jz8463l2TkeEKbo0VV3eocMyGflk3qRbo4dETURVop4b3Qw3kucsdGQnvBJj2\nvcZhxNU7n6I9OwKCAQEA0J1M4oSlefbTUbMTz82rUWC1jfq5xBX4koYDFpvwNePQ\n9tHZgN5vRxoyvcASyeKciJeN68iIcoi587IDfZTwblCk5NtsEtifSFZmFScY+zZl\n84Bf/SkjHadRCdULMjfmSLSROcRYZ7vKK4m1Nq5We40S7fFBhoEIEOc
ZGwZNA3V7\nLjwiFgOj9yMv+svYdSdkoUWoJ+i/zABFYp82j/PoFLEqB0Z6Sq8xuv3+CKVszm9t\nlKCAneh2TnRGG99/v6XeP+MqqerHCsf8GoF5vF5ZTPZEKH0DOS0sfLeD8PIPPpJZ\n7gKZYWqnSy9NAbZcJVjEOygvasCU9p+bWOiIKELkeQKCAQB1hmCzsJBGK7BDR+Oe\nZ9P9gNFIE06F1KK37uwosQ3pv3oFgeu/gAm/4m6N0POEKx8XIBjVQ2elcQpMDK7f\nNdcjSBgsjdNwgHOq0HosZfFSNVjHjO99PAJU2MDcYhFbz/E9DkDDnYg+YaoAkjv1\neExZp28OoEpcmgWgUPIxXsPoBHWcb3GdTcxD+UCgda+Va+43PcHcPyVKoqWO+Ec9\nq2v6CIqlJCXtq7uPNsRlumM+yutZQzVTTKIwGy0Ggm62IdUilYKbKE8aWee2AuXo\nhrucDffvgLtUfHKSLYzKS/Qo7EoGgdA8Domgi9DcTMmv4ycQIF6GKzrPPBsIs+hM\nt8PlAoIBAFneugWHkWYGcCjtFaba+mfXWr9seOTBdlFhDCmMSiJdH2OFKcc7jAK8\nhYl7Gl0Ak+DAMXKW9DkrL7iNQrWyGRXdBfxVjqxbx9q45cdNDZUDbU5GSpPcSfV3\nZBDxR559uGYv67RQIqmlm8W/0GJbHoShVLtOyKSyJ5Bojkc3IqxPyx4y55hGPzez\nX/MSKBDoRJC5WmS+/wlaQIno/u9q6tsnK2zw7rQH30uoKez9nu8bz8BMmLvuLjFE\nJAPT98vPH/yz12hV7SN23eNpTdFZb+0Y1mn+2QmjrVuZD20YSnrxP26qjfsKoEFi\ngjEvp2irYfX+LNc3WbUZMypNGoMFtjkCggEBAOqIVYAdeRnvlmvzHc9FX2sqyTMS\n8BpwqpNXDh0ThecSnJfxPZvv51gJjToW18i3yu2LrEmVbvzL5MNU27
Mp7aLxCKl1\nDw2ZDCSByRqTvisiLfPRjY+EQ5H8haiP3mnXldIEceH8/U5B2tFWi0K9W1CT7IDw\nlyfBthZEzTSbbwD5we9OPreM5YYbOketa+FVS7MjxHGYkHYdwZICka1H4OTnQlZn\nAA6O6inwpG5pvj/tE1CFGZFd27VWDyWGB6wqA3so9NzFiKe4EZIxh7qvIiERanZy\nSmdo5+hY6/He2ImkH0LzY/GPd8t8CJelvtmtiW6Su3Ko4bQWFWGkOxIaoNw=\n-----END RSA PRIVATE KEY-----";


       RSA *private_key;
       BIO *private_bio;

/////////////////////////////////////////////////////

  private_bio = BIO_new_mem_buf(privkey, -1);
  if(private_bio == NULL) {
     ERR_print_errors_fp(stdout);
     return 1;
  }

  private_key = PEM_read_bio_RSAPrivateKey(private_bio, NULL, NULL, NULL);
  if(private_key == NULL) {
     ERR_print_errors_fp(stdout);
  }

       signature = (unsigned char*) malloc(RSA_size(private_key));
if(RSA_sign(NID_sha1, (unsigned char*) message, strlen(message), signature, &slen, private_key) != 1) {
               ERR_print_errors_fp(stdout);
       }

       printf("%s", signature);

       RSA_free(private_key);

       return 0;
}







[EMAIL PROTECTED] openssl]# cat verify.c
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>

#include <openssl/bio.h>
#include <openssl/rsa.h>
#include <openssl/pem.h>
#include <openssl/err.h>


int main(void)
{

       unsigned char *message = "blah";
       unsigned char signature[4096];
       unsigned int slen;
       unsigned int verified;

static char *pubkey = "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAwm3C2PotN3uzg6pUqpLM\nkxa9xsgA/V3TrfG9RbrriIVr5xF78rqtPTgzXUhcYAkEd2ROjtrI4WfZ91G3e9d5\nsR/1275UD0KAxkzxwOcWWMfZ0YullcwYQayd4Ke2msLaXbm65Gd0BfmGSCMX7fWH\nEWUCwSklXEFI0I2Zz7fZsCdeynaLGnZupsmKGa+t7XsgiVWfDGsQPcFee7285tnW\nxEgNUlaahySbLsNh11UAyqdKtDifSDUSuuPxnE+tvi3r2O17Yj77m9fnDAbRYHta\n+wTtKlPoD9iuV5bCoOpMejxBVNNKG6ganp117ivMC6OPYs+QxSM5FNOikIETZoLB\nBZV2M1T84i0pTat901OQZkhwTAPuiwxSdWPFqHUBwp30g8i/NvhCelWh+pVPhbod\nn14r8DXMU/arw5EpEqmcj3IPFaprcrRRrpsPSiMqo5rdC5CH6Y1+Cel1W4IJp7lo\n6cgpSjAuNTvLIcJDpAFnImWy/Zr9UbGOh5mkF5PsVN9chc1gLjTPbgSQUcN0oX+r\nQjx0bqT7Tt6Y66W5wCrKLrL5blHqm08pAzEiFKb5srEK6ouvoGUv9DnoC9GwbXJq\n9RJDIwi4SW3LduQ2/vmFyj00LyaLOKL6mI3sAS9p8Vkl6KabjY8BdnKp7dnuEmJt\nQicZVAJkvHy8aThkF/NtfOMCAwEAAQ==\n-----END PUBLIC KEY-----";



       FILE *fp = fopen("blah.sig","r");
       fread(signature, 1, sizeof(signature), fp);
       close(fp);

       slen = strlen(signature);

       RSA *public_key;
       BIO *public_bio;

       public_bio = BIO_new_mem_buf(pubkey, -1);
       if(public_bio == NULL) {
               ERR_print_errors_fp(stdout);
               return 1;
       }

       public_key = PEM_read_bio_RSA_PUBKEY(public_bio, NULL, NULL, NULL);
  if(public_key == NULL) {
     ERR_print_errors_fp(stdout);
  }
verified = RSA_verify(NID_sha1, message, strlen((char*)message), signature, slen, public_key);


       printf("VERIFIED: %d\n",verified);

       RSA_free(public_key);

       return 0;
}


______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to