instance method OpenSSL::PKCS7#verify

verify(certs, store, indata = nil, flags = 0) -> bool[permalink][rdoc]

署名を検証します。

検証に成功した場合は真を、失敗した場合は偽を返します。

certs には署名者の証明書を含む配列を渡します。通常 S/MIME 署名には証明者の証明書が含まれていますが、 OpenSSL::PKCS7.signOpenSSL::PKCS7::NOCERTS を渡した場合には含まれていないので、明示的に渡す必要があります。このメソッドは配列から適切な証明書を自動的に選択します。

store には検証に用いる証明書ストアを渡します。検証に必要な信頼できる CA 証明書をあらかじめ証明書ストアに含めておく必要があります。

indata は署名の対象となった文字列を渡します。 nil を渡すと OpenSSL::PKCS7#data で得られる文字列を用います。通常は nil を渡すべきです。

flags には以下の値の OR を渡します。

通常、これらのフラグを渡さなかった場合、

という順で検証が行われます。

この検証は署名者証明書の持ち主が署名したという事実のみを検証します。署名者証明書の持ち主が本当に意図した相手であるかどうかは保証されません。証明書の内容から(ユーザに確認を取るなど)適切に判断する必要があります。

検証に失敗した場合は OpenSSL::PKCS7#error_string に失敗した理由を表す文字列がセットされます。

[PARAM] certs:
証明書(OpenSSL::X509::Certificate オブジェクト)の配列
[PARAM] store:
証明書ストア(OpenSSL::X509::Store オブジェクト)
[PARAM] indata:
署名対象の文字列
[PARAM] flags:
フラグ
[EXCEPTION] OpenSSL::PKCS7::PKCS7Error:
検証に失敗した場合に発生します