Crypto ++ Ed448 неизвестный oid - PullRequest
0 голосов
/ 18 мая 2018

Я пытался сгенерировать ключ Ed448 ECDSA, используя crypto ++ 7 из экспериментального Debian.Мой код выглядит следующим образом:

AutoSeededRandomPool rng;
ECIES<ECP>::Decryptor d(rng, ASN1::curve448());

Я могу скомпилировать этот код без ошибок, но когда он запускается, я получаю следующее исключение:

terminate called after throwing an instance of 'CryptoPP::UnknownOID'
  what():  BER decode error: unknown object identifier

Просматривая веб-страницы, Появляетсята кривая448 была реализована последней версией.Как я могу это исправить?

1 Ответ

0 голосов
/ 19 мая 2018

Я пытался сгенерировать ключ ECDSA Ed448 ... Похоже, что curve448 был реализован в последней версии.

Мы добавили OID для кривых 25519 и 448 некоторое время назад,Они были добавлены для облегчения тестирования кривой25519 и ed25519.Вы можете увидеть OID в oids.h.

Они OID были добавлены в Commit 7ca5f7d3b53f 11 апреля 2016 года, а затем исправлены в тот же деньв Фиксация 29e9bd2b27a9 .11 апреля 2016 года они стали доступны для Crypto ++ 5.6.4.


Я могу скомпилировать этот код без ошибок, но когда он запускается, я получаю следующее исключение

Вы получаете исключение, потому что нет параметров домена для curve448 в eccrypto.cpp.Вы попали в исключение ниже, потому что it == end.

template <class EC> void DL_GroupParameters_EC<EC>::Initialize(const OID &oid)
{
    const EcRecommendedParameters<EllipticCurve> *begin, *end;
    GetRecommendedParameters(begin, end);
    const EcRecommendedParameters<EllipticCurve> *it = std::lower_bound(begin, end, oid, OIDLessThan());
    if (it == end || it->oid != oid)
        throw UnknownOID();

    const EcRecommendedParameters<EllipticCurve> &param = *it;
    m_oid = oid;
    ...
}

Вот предыстория ...

Согласно кривой 25519 * Современное состояниеФункция Диффи-Хеллмана , исходный код кривой: SUPERCOP .SUPERCOP - это программа для тестирования криптографических алгоритмов.

У нас есть кривые25519 и ed25519 на тестовой вилке.Мы разорвали реализацию от SUPERCOP.SUPERCOP имеет оптимизированные эталонные реализации кривой25519, кривой448 и многих других вещей.После того как кривая 25519 и ed25519 были добавлены, мы планировали на кривую 448.

Мы добавили кривую 25519 на основе реализации Эндрю Муна.Это обеспечивает x25519 и ed25519.Также см. Выпуск 761 (x25519) и Выпуск 764 (ed25519).

На данный момент реализации Crypto ++ для кривой 104 находятся в тупике.Я думаю, что вы можете выбирать свои варианты на основе SUPERCOP или использовать такие библиотеки, как libsodium, Botan или OpenSSL.

...