プログラミングに関する質問をして申し訳ありませんが、このライブラリを暗号的に適切に使用していることを確認したいと思います。
署名用のデータのハッシュを除いて、ed25519-donnaを実装することができました。
私が知る限り、これはデータをハッシュする関数です:
void ed25519_hash(uint8_t *hash, const uint8_t *in, size_t inlen);
しかし、私は *hash が何であるかを理解できません。*in
およびinlen
がハッシュされるデータとその長さであることはかなり確信しています。
それはSHA512に固有のものですか?
どうすれば ed25519-donna でハッシュできますか?
プログラムがハングする
ed25519-donna-master/ed25519.o
とOpenSSL flags を使用してコンパイルしました-lssl -lcrypto
。キーの生成、署名、および検証機能は期待どおりに機能します。
エラーなしで実行されていますが、アプリケーションはこれらの行でハングし、コアは 100% で実行されていないため、処理がビジー状態ではないと思います:
extern "C"
{
#include "ed25519-donna-master/ed25519.h"
#include "ed25519-donna-master/ed25519-hash.h"
}
#include <openssl/rand.h>
unsigned char* hash;
const unsigned char* in = convertStringToUnsignedCharStar( myString );
std::cout << in << std::endl;
std::cout << "this is the last portion output and 'in' outputs correctly" << std::endl;
ed25519_hash(hash, in, sizeof(in) );
std::cout << hash << std::endl;
std::cout << "this is never output" << std::endl;
このコードを変更してed25519_hash
機能させるにはどうすればよいですか? hash
andin
がs であるunsigned char*
かどうかに関係なく、同じように機能しuint8_t*
ます。
についてuint8_t*
は、次のコードを使用しました。
uint8_t* hash;
const uint8_t* in = reinterpret_cast<const uint8_t*>(myString.c_str());