使用Crypto ++将签名从P1363转换为ASN.1 / DER格式?

问题描述 投票:2回答:1

我以这种方式创建了签名:

size_t siglenth = _signer.MaxSignatureLength();
QByteArray signature(siglenth, 0x00);
signature.reserve(siglenth);
siglenth = _signer.SignMessage(_prng,
        (const CryptoPP::byte*) (message.constData()),
        message.length(), (CryptoPP::byte*) signature.data());

我的签名大小为64,包含:

ECCD530E5F232B7C566CA5322F990B3D55ED91156DF3845C4B9105BFE57606DDD68F332A0A5BF7CAB673E4970D10109B72F114571E7474F93ED7C89CD1B89AD4]

根据我从dsa.h文件中读取的内容,当前该签名为DSA_P1363格式。我需要将其转换为DSA_DER格式。

要执行此操作,我尝试:

QByteArray derSign(70, 0xFF);
size_t converted_size = CryptoPP::DSAConvertSignatureFormat(
        (CryptoPP::byte*) (derSign.data()), sizeof(derSign.data()), CryptoPP::DSA_DER,
        (CryptoPP::byte*) (signature.data()), sizeof(signature.data()), CryptoPP::DSA_P1363);

此转换的输出如下所示。它似乎只是签名的第一部分。它的大小为8,包含:

300D020500ECCD53

怎么了?

谢谢。

我以这种方式创建了一个签名:size_t siglenth = _signer.MaxSignatureLength(); QByteArray签名(siglenth,0x00); signature.reserve(siglenth); siglenth = _signer.SignMessage(_prng,(...

c++ cryptography crypto++ der
1个回答
2
投票

此转换的输出很好奇,似乎只是签名的第一部分。它的大小为8,包含:

© www.soinside.com 2019 - 2024. All rights reserved.