const char *sig_name, const char *md_name,
const char *file,BIO *bmd);
+static void list_md_fn(const EVP_MD *m,
+ const char *from, const char *to, void *arg)
+ {
+ const char *mname;
+ /* Skip aliases */
+ if (!m)
+ return;
+ mname = OBJ_nid2ln(EVP_MD_type(m));
+ /* Skip shortnames */
+ if (strcmp(from, mname))
+ return;
+ /* Skip clones */
+ if (EVP_MD_flags(m) & EVP_MD_FLAG_PKEY_DIGEST)
+ return;
+ if (strchr(mname, ' '))
+ mname= EVP_MD_name(m);
+ BIO_printf(arg, "-%-14s to use the %s message digest algorithm\n",
+ mname, mname);
+ }
+
int MAIN(int, char **);
int MAIN(int argc, char **argv)
{
ENGINE *e = NULL;
unsigned char *buf=NULL;
- int i,err=0;
+ int i,err=1;
const EVP_MD *md=NULL,*m;
BIO *in=NULL,*inp;
BIO *bmd=NULL;
#endif
char *hmac_key=NULL;
char *mac_name=NULL;
- STACK *sigopts = NULL, *macopts = NULL;
+ STACK_OF(STRING) *sigopts = NULL, *macopts = NULL;
apps_startup();
if (--argc < 1)
break;
if (!sigopts)
- sigopts = sk_new_null();
- if (!sigopts || !sk_push(sigopts, *(++argv)))
+ sigopts = sk_STRING_new_null();
+ if (!sigopts || !sk_STRING_push(sigopts, *(++argv)))
break;
}
else if (strcmp(*argv,"-macopt") == 0)
if (--argc < 1)
break;
if (!macopts)
- macopts = sk_new_null();
- if (!macopts || !sk_push(macopts, *(++argv)))
+ macopts = sk_STRING_new_null();
+ if (!macopts || !sk_STRING_push(macopts, *(++argv)))
break;
}
else if ((m=EVP_get_digestbyname(&((*argv)[1]))) != NULL)
if(do_verify && !sigfile) {
BIO_printf(bio_err, "No signature to verify: use the -signature option\n");
- err = 1;
goto end;
}
BIO_printf(bio_err,"-verify file verify a signature using public key in file\n");
BIO_printf(bio_err,"-prverify file verify a signature using private key in file\n");
BIO_printf(bio_err,"-keyform arg key file format (PEM or ENGINE)\n");
+ BIO_printf(bio_err,"-out filename output to filename rather than stdout\n");
BIO_printf(bio_err,"-signature file signature to verify\n");
BIO_printf(bio_err,"-sigopt nm:v signature parameter\n");
- BIO_printf(bio_err,"-binary output in binary form\n");
+ BIO_printf(bio_err,"-hmac key create hashed MAC with key\n");
+ BIO_printf(bio_err,"-mac algorithm create MAC (not neccessarily HMAC)\n");
+ BIO_printf(bio_err,"-macopt nm:v MAC algorithm parameters or key\n");
#ifndef OPENSSL_NO_ENGINE
BIO_printf(bio_err,"-engine e use engine e, possibly a hardware device.\n");
#endif
- BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm (default)\n",
- LN_md5,LN_md5);
- BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
- LN_md4,LN_md4);
- BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
- LN_md2,LN_md2);
-#ifndef OPENSSL_NO_SHA
- BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
- LN_sha1,LN_sha1);
-#ifndef OPENSSL_NO_SHA256
- BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
- LN_sha224,LN_sha224);
- BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
- LN_sha256,LN_sha256);
-#endif
-#ifndef OPENSSL_NO_SHA512
- BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
- LN_sha384,LN_sha384);
- BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
- LN_sha512,LN_sha512);
-#endif
-#endif
- BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
- LN_mdc2,LN_mdc2);
- BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
- LN_ripemd160,LN_ripemd160);
-#ifndef OPENSSL_NO_WHIRLPOOL
- BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
- SN_whirlpool,SN_whirlpool);
-#endif
- err=1;
+ EVP_MD_do_all_sorted(list_md_fn, bio_err);
goto end;
}
}
if(out_bin == -1) {
- if(keyfile) out_bin = 1;
- else out_bin = 0;
+ if(keyfile)
+ out_bin = 1;
+ else
+ out_bin = 0;
}
if(randfile)
if (macopts)
{
char *macopt;
- for (i = 0; i < sk_num(macopts); i++)
+ for (i = 0; i < sk_STRING_num(macopts); i++)
{
- macopt = sk_value(macopts, i);
+ macopt = sk_STRING_value(macopts, i);
if (pkey_ctrl_string(mac_ctx, macopt) <= 0)
{
BIO_printf(bio_err,
if (sigopts)
{
char *sigopt;
- for (i = 0; i < sk_num(sigopts); i++)
+ for (i = 0; i < sk_STRING_num(sigopts); i++)
{
- sigopt = sk_value(sigopts, i);
+ sigopt = sk_STRING_value(sigopts, i);
if (pkey_ctrl_string(pctx, sigopt) <= 0)
{
BIO_printf(bio_err,
}
else
{
- const char *md_name, *sig_name;
- if(out_bin)
- {
- md_name = NULL;
- sig_name = NULL;
- }
- else
+ const char *md_name = NULL, *sig_name = NULL;
+ if(!out_bin)
{
if (sigkey)
{
}
md_name = EVP_MD_name(md);
}
+ err = 0;
for (i=0; i<argc; i++)
{
int r;
BIO_free_all(out);
EVP_PKEY_free(sigkey);
if (sigopts)
- sk_free(sigopts);
+ sk_STRING_free(sigopts);
if (macopts)
- sk_free(macopts);
+ sk_STRING_free(macopts);
if(sigbuf) OPENSSL_free(sigbuf);
if (bmd != NULL) BIO_free(bmd);
apps_shutdown();
{
EVP_MD_CTX *ctx;
BIO_get_md_ctx(bp, &ctx);
+ len = BUFSIZE;
if(!EVP_DigestSignFinal(ctx, buf, &len))
{
BIO_printf(bio_err, "Error Signing Data\n");
}
}
else
+ {
len=BIO_gets(bp,(char *)buf,BUFSIZE);
+ if ((int)len <0)
+ {
+ ERR_print_errors(bio_err);
+ return 1;
+ }
+ }
if(binout) BIO_write(out, buf, len);
else
{
if (sig_name)
- BIO_printf(out, "%s-%s(%s)=", sig_name, md_name, file);
+ BIO_printf(out, "%s-%s(%s)= ", sig_name, md_name, file);
else if (md_name)
- BIO_printf(out, "%s(%s)=", md_name, file);
+ BIO_printf(out, "%s(%s)= ", md_name, file);
else
- BIO_printf(out, "(%s)=", file);
+ BIO_printf(out, "(%s)= ", file);
for (i=0; i<(int)len; i++)
{
if (sep && (i != 0))