Nils,
I changed to %d instead of %s it worked =)
But althougth I changed the declaration of the third argument to:
unsigned int *bytes_firma;
I'm still getting the warning at compilation time.
If I let:
unsigned int *bytes_firma; and
err = EVP_SignFinal(&ctx, firma, bytes_firma, clave_EVP);
The warning goes away but the program crashes with "Bus error(coredump)"
Shouldn't I care about the warning? I'm concern that the warning means that
Im not signing well.
Another question: I have to save the signature in a file in a base64
format, any clues how can I do this?
Silvia G. Pavón V.
Procesos de Facturación
Alestra S.A.
Tel. 8748 6100 x4107
Nils Larsch
<[EMAIL PROTECTED]>
Sent by: To
owner-openssl-use openssl-users@openssl.org
[EMAIL PROTECTED] cc
Subject
27/05/2005 04:29 Re: EVP_SignFinal third parameter
p.m. type
Please respond to
[EMAIL PROTECTED]
nssl.org
Silvia Gisela Pavon Velasco wrote:
>
>
>
> I'm trying to sign a file and when I try to compile it I get the
following
> warning in the EVP_SignFinal function:
>
> $ cc -o sign_test -I/opt/openssl/include -lssl -lcrypto sign_test.c
> cc: "sign_test.c", line 43: warning 604: Pointers are not
> assignment-compatible.
> cc: "sign_test.c", line 43: warning 563: Argument #3 is not the correct
> type.
the third argument should be a pointer to a "unsigned int"
>
> Although that warning I run the program but I get the next output:
>
> $ sign_test
> Key Size is 128 bytes
> Sign size is
>
> How should I declare the bytes_firma variable? Or the error is somewhere
> else?
>
> Code extract:
> *******************************************************************
> // Signing
> unsigned char *firma;
> int bytes_leidos;
> int bytes_firma;
> EVP_MD_CTX ctx;
> char buf[TAM_BUF];
> int err;
>
> firma = (unsigned char *) malloc(EVP_PKEY_size(clave_EVP));
>
> EVP_SignInit_ex(&ctx, EVP_md5(), NULL);
> while (!feof(fp_ext)){
> bytes_leidos = fread( (void *) buf, sizeof(char), TAM_BUF, fp_ext);
> EVP_SignUpdate(&ctx, (void *) buf, bytes_leidos);
> }//while
>
> err = EVP_SignFinal(&ctx, firma, &bytes_firma, clave_EVP);m <-- in
this
> line occurs the error
> if (err != 1){
> ERR_print_errors_fp(stderr);
> exit (1);
> }//if
>
> printf("Sign size is %s\n",bytes_firma);
you might try %d instead of %s ;-)
Nils
______________________________________________________________________
OpenSSL Project http://www.openssl.org
User Support Mailing List openssl-users@openssl.org
Automated List Manager [EMAIL PROTECTED]
______________________________________________________________________
OpenSSL Project http://www.openssl.org
User Support Mailing List openssl-users@openssl.org
Automated List Manager [EMAIL PROTECTED]