0
これまで私が見てきた2つの異なるアプローチは、OpenSSLで署名:
EVP_PKEY_signとEVP_DigestSignInitの違いは? RSAへ
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 でEVP_PKEY_sign で:
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つの異なる方法があります同じこと?
以前のEVP_PKEY_CTX_set_signature_md呼び出しにもかかわらずですか? – olegst
私は現時点ではテストすることができませんが、EVP_PKEY_signをあまりにも多くのデータ(例えば4000バイト)を渡して処理するかどうか試してみてください。もしそうなら、RSAは結果をRAWとして解読し、部品を無視していないことを確認してください。 – lockcmpxchg8b