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]