У меня возникла проблема с пакетом Go crypto/ed25519. Я пытаюсь проверить подпись сообщения, но подпись и открытый ключ, которые мне нужно проверить, длиннее, чем поддерживает crypto/ed25519.
В пакете crypto/ed25519 есть ограничения на длину ключей и поддерживаемых подписей:
const (
// PublicKeySize is the size, in bytes, of public keys as used in this package.
PublicKeySize = 32
// PrivateKeySize is the size, in bytes, of private keys as used in this package.
PrivateKeySize = 64
// SignatureSize is the size, in bytes, of signatures generated and verified by this package.
SignatureSize = 64
// SeedSize is the size, in bytes, of private key seeds. These are the private key representations used by RFC 8032.
SeedSize = 32
)
Но ключ, который я должен использовать для проверки сообщения, длиннее этого:
SignatureSize = 128
PublicKeySize = 64
Когда я пытаюсь использовать функцию Verify(...), она возвращает false из-за размера моей подписи и открытого ключа. Что я могу сделать, чтобы проверить мою подпись в ее текущей длине?
слишком много неопределенности в этом вопросе. Я хотел бы увидеть, как были сгенерированы эти ключи и подписи, или, по крайней мере, как они выглядят.

Скорее всего, ключ и подпись, которые у вас есть, закодированы в шестнадцатеричном формате, чтобы их можно было прочитать и легко передать в заголовках, json и т. д.
Попробуйте сначала расшифровать их:
const s = "48656c6c6f20476f7068657221"
decoded, err := hex.DecodeString(s)
if err != nil {
log.Fatal(err)
}
fmt.Println(len(decoded))
Либо у вас есть учетные данные в неправильном формате (например, в шестнадцатеричной кодировке или в кодировке base64), либо у вас нет ключа Ed25519. Открытый ключ определен как 32 байта. Подпись определена как 64 байта. См.: ed25519.cr.yp.to