Получить подпись ECDSA с Crypto ++

Я должен получить подпись ECDSA в переменной, используя Crypto ++.
Я пытался получить его после запуска SignMessage, но подпись пуста.
Как я могу получить это?

0

Решение

Вы видели вики Crypto ++? Там много всего Алгоритм цифровой подписи эллиптической кривой.

Не совсем понятно, что вы делаете или где что-то пошло не так, поэтому вот копия и вставка из вики:

Подписание:

ECDSA<ECP, SHA1>::PrivateKey privateKey;
privateKey.Load(...);

AutoSeededRandomPool prng;
string message = "Yoda said, Do or do not. There is no try.";
string signature;

StringSource ss1( message, true /*pump all*/,
new SignerFilter( prng,
ECDSA<ECP,SHA1>::Signer( privateKey ),
new StringSink( signature )
) // SignerFilter
); // StringSource

Проверка:

ECDSA<ECP, SHA1>::PublicKey publicKey;
publicKey.Load(...);

// Result of the verification process
bool result = false;

// Exactly what was signed in the previous step
string message = ...;
// Output from the signing operation in the previous step
string signature = ...;

StringSource ss2( signature+message, true /*pump all*/,
new SignatureVerificationFilter(
ECDSA<ECP,SHA1>::Verifier(publicKey),
new ArraySink( (byte*)&result, sizeof(result) )
) // SignatureVerificationFilter
);

// Verification failure?
if( !result ) {...}

Если вы хотите, чтобы проверка вызвала сбой, попробуйте:

static const int VERIFICATION_FLAGS = SIGNATURE_AT_BEGIN | THROW_EXCEPTION;
StringSource ss3( signature+message, true /*pump all*/,
new SignatureVerificationFilter(
ECDSA<ECP,SHA1>::Verifier(publicKey),
NULL, /* No need for attached filter */
VERIFICATION_FLAGS
) // SignatureVerificationFilter
);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]