简体   繁体   中英

How would I verify a 128 length ED25519 signature

I'm facing an issue with Go's crypto/ed25519 package. I'm trying to verify the signature of a message, but the Signature and Public Key that I have to verify are longer than what crypto/ed25519 supports.

In the crypto/ed25519 package there are limits to the length of keys and signatures that are supported:

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
)

But the key that I have to use to verify the message are longer than this:

SignatureSize = 128
PublicKeySize = 64

When I try to use the Verify(...) function it returns false because of the size of my size of my signature and public key. What can I do to verify my signature at it's current length?

Most likely the key and signature you have are hex encoded to keep them human readable and easily transmittable in headers, json, etc.

Try decoding them first:

    const s = "48656c6c6f20476f7068657221"
    decoded, err := hex.DecodeString(s)
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println(len(decoded))

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM