Если вам абсолютно необходимо объявить один открытый ключ, который можно использовать как для шифрования с аутентификацией с открытым ключом («crypto_box»), так и для подписи («crypto_sign»), это будет причиной сопоставления пар ключей между кривой Twisted Edwards Ed25519. (которая предпочтительнее для операций подписи) и кривая Монтгомери Curve25519 (которая предпочтительнее для операций ECDH). Например. вы рекламируете открытый ключ Curve25519, который люди могут использовать для шифрования и отправки данных вам, но ваше программное обеспечение сопоставит его с эквивалентом Ed25519, прежде чем использовать его для проверки подписей.
Однако похоже, что вы используете симметричное шифрование для хранилища (а не асимметричное шифрование). Поэтому это сопоставление между кривыми не относится к вам.
Поэтому используйте такие строки, как «шифрование» и «подпись», в качестве информационных параметров для HKDF-Expand (вместе с вашим начальным числом в качестве равномерно распределенного псевдослучайного ключа) для создания симметричного ключа шифрования и секретного ключа подписи. Если ваше семя составляет 256 бит, и вам нужно получить 256-битный ключ, это по сути эквивалентно простому выполнению HMAC-SHA256 (исходное число || информация)
(видеть https://datatracker.ietf.org/doc/html/rfc5869).