Есть ли простой способ преобразовать ключевой объект NodeJS в буфер?

#node.js #cryptography #ed25519

#node.js #криптография #ed25519

Вопрос:

Я использую NodeJS для генерации пар ключей Ed25519. Мне нужно преобразовать открытый ключ в пользовательскую кодировку символов. Однако, похоже, нет способа преобразовать KeyObject s, возвращаемые crypto.generateKeyPair() буферами to .

Предлагает ли стандартная библиотека способ прямой генерации ключей в виде буферов вместо KeyObject s?

Комментарии:

1. Мне просто интересно, как вы анализируете асимметричный ключ в буфер

Ответ №1:

KeyObject предлагает .export() метод, который предоставит вам строку или буфер. Кажется, вы можете использовать этот метод для преобразования ваших ключевых объектов, а затем применить свою пользовательскую кодировку.

https://nodejs.org/api/crypto.html#crypto_keyobject_export_options

Вы можете заставить его напрямую генерироваться как буфер / строка, только если вы укажете publicKeyEncoding and / or privateKeyEncoding . Но, если вы используете не поддерживаемую пользовательскую кодировку, вы не сможете заставить ее это сделать. Вы можете экспортировать его в буфер / строку, а затем применить к нему свою пользовательскую кодировку.

Из документа для API:

Если было указано publicKeyEncoding или privateKeyEncoding, эта функция ведет себя так, как если бы для ее результата был вызван keyObject.export() . В противном случае соответствующая часть ключа возвращается как KeyObject.

Комментарии:

1. К сожалению, кажется, что для асимметричных ключей .export() можно выводить только PEM или DER. Мое текущее решение — проанализировать выведенный ключ, что довольно неэлегантно, но работает