IC node verify signature and message wrong

Help! I am developing an ICP wallet, imitating the function of rosseta to construct the transaction, and finally submit the transaction through /construction/submit ,but I got some Internet Computer error.

I’m very confused, why my signature can’t be verified, I verifyed this signature in golang

  • error:
    { "code": 770, "message": "Operation failed", "retriable": false, "details": { "operations": [ { "amount": { "e8s": 100000 }, "fee": { "e8s": 10000 }, "from": "89a472bb2badae8d062e28901c8b6af57ec1352649e4a0f6e755ec4ea56c2d4e", "response": { "code": 740, "details": { "error_message": "Failed to authenticate request 0xe1504898ca77b896bd262859d12a5ddba917a51c6fba6e74a367e9b8fc7b359d due to: Invalid signature: Invalid basic signature: Ed25519 signature could not be verified: public key 214646b3fdff4371282fb9c7dc90ba39d54e953dcc7353f34a9bf7e4ab8e91a9, signature 194e2302013444b4873c0f94c7c4b40d0f46a3709aaf8b51100e83c844953cb485f132e78d5790c2a3ba1b3579beb150974ebe7b371816d7f9d8ba4114738407, error: signature error", "ic_http_status": 403 }, "message": "Internet Computer error", "retriable": false }, "status": "FAILED", "to": "6499d6b24ce488c263cb7aba350249f73d81d6e1caa4fb6fae09d8b3e3f91846", "transaction_identifier": { "hash": "d5e2577ce5c7766375fc9894f0e1622ce0a6478003c10c61fc6f2054466f840a" }, "type": "TRANSACTION" } ] } }

  • golang test code:

func Test_VerifySig(t *testing.T) {
    sigHex := "194e2302013444b4873c0f94c7c4b40d0f46a3709aaf8b51100e83c844953cb485f132e78d5790c2a3ba1b3579beb150974ebe7b371816d7f9d8ba4114738407"
    hashHex := "e1504898ca77b896bd262859d12a5ddba917a51c6fba6e74a367e9b8fc7b359d"
    pubKeyHex := "214646b3fdff4371282fb9c7dc90ba39d54e953dcc7353f34a9bf7e4ab8e91a9"

    pubKey := ed25519.PublicKey(common.Hex2Bytes(pubKeyHex))
    sig := common.Hex2Bytes(sigHex)
    hash := common.Hex2Bytes(hashHex)

    assert.Equal(t, ed25519.Verify(pubKey, hash, sig), true, "The signature is wrong!!!" )
}

Thanks for reading and replying