2

これまで、 OpenSSL
を 使用した RSA 署名への 2 つの異なるアプローチを見てきました。

 ctx = EVP_PKEY_CTX_new(signing_key, NULL /* no engine */);
 if (!ctx)
     /* Error occurred */
 if (EVP_PKEY_sign_init(ctx) <= 0)
     /* Error */
 if (EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_PADDING) <= 0)
     /* Error */
 if (EVP_PKEY_CTX_set_signature_md(ctx, EVP_sha256()) <= 0)
     /* Error */

 /* Determine buffer length */
 if (EVP_PKEY_sign(ctx, NULL, &siglen, md, mdlen) <= 0)

EVP_DigestSignInit を使用:

if(1 != EVP_DigestSignInit(mdctx, NULL, EVP_sha256(), NULL, key)) 
          goto err;
if(1 != EVP_DigestSignUpdate(mdctx, msg, strlen(msg))) 
          goto err;
if(1 != EVP_DigestSignFinal(mdctx, NULL, slen)) 
          goto err;
if(!(*sig = OPENSSL_malloc(sizeof(unsigned char) * (*slen)))) 
          goto err;
if(1 != EVP_DigestSignFinal(mdctx, *sig, slen)) 
          goto err;

これらは同じことを行うための2つの異なる方法ですか?

4

1 に答える 1