#include <nitro/sign.h>
int CRYPTO_VerifySignatureWithHash(
const void* hash_ptr,
const void* sign_ptr,
const void* mod_ptr
);
hash_ptr |
電子署名の検証を行う対象のデータの 20 バイトの SHA-1 ハッシュ値へのポインタを指定します。 |
sign_ptr |
128バイトの電子署名へのポインタを指定します。 |
mod_ptr |
128バイトの公開鍵の modulus へのポインタを指定します。 |
以下のいずれかの処理結果を返します。
TRUE |
電子署名の検証に成功しました。 |
FALSE |
検証に失敗しました。署名とデータの内容が食い違っているか、公開鍵と署名が合致していないか、署名のフォーマットが間違っているかのいずれかです。 |
電子署名を用いて、データが正しいものかを検証します。
hash_ptr に与えるのは、検証対象のデータに対して SHA-1 アルゴリズムを適用して求めた 20 バイトのハッシュ値へのポインタです。
sign_ptr に与えるのは 128 バイトの署名データです。
署名データは、ハッシュとして SHA-1 アルゴリズムを使用した、RSA の鍵長 1024bit の PKCS#1 Version 1.5 のフォーマットを与えます。
mod_ptr に与えるのは 128 バイトの公開鍵の modulus を上位バイトから並べたバイト列です。
なお、公開鍵の公開指数 (public exponent) は 65537 (0x10001) で固定です。この関数では 65537 以外の公開指数の RSA 鍵を扱うことはできません。
呼出し中に計算のため動的にメモリを確保します。CRYPTO_SetMemAllocator 関数で指定したメモリ管理関数が使用されます。
ただし、この関数で指定できるメモリ管理関数のうちメモリサイズ変更関数 (引数 realloc) は使用しません。
使用するメモリ量は検証するデータによって上下しますが、4Kバイトを用意しておけば通常は問題ありません。
もしもメモリの確保に失敗し、メモリ管理関数から NULL が渡された場合は、この関数は FALSE を返します。
通常は内部的に SHA-1 のハッシュ値を計算する CRYPTO_VerifySignature 関数が便利です。 何らかの事情でデータ全体を一度にメモリ上に展開できない場合に、この関数を使用してください。
電子署名の詳細に関しましては、「電子署名の概要」を参照してください。
2008/03/27 初版