mirror of
https://github.com/rclone/rclone.git
synced 2024-12-21 11:06:55 +08:00
37d786c82a
This was caused by a change to the upstream library ProtonMail/go-crypto checking the flags on the keys more strictly. However the signing key for rclone is very old and does not have those flags. Adding those flags using `gpg --edit-key` and then the `change-usage` subcommand to remove, save, quite then re-add, save quit the signing capabilities caused the key to work. This also adds tests for the verification and adds the selfupdate tests into the integration test harness as they had been disabled on CI because they rely on external sources and are sometimes unreliable. Fixes #7373
41 lines
1.2 KiB
Go
41 lines
1.2 KiB
Go
package selfupdate
|
|
|
|
import (
|
|
"context"
|
|
"encoding/hex"
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestVerify(t *testing.T) {
|
|
ctx := context.Background()
|
|
sumsBuf, err := os.ReadFile("testdata/verify/SHA256SUMS")
|
|
require.NoError(t, err)
|
|
hash, err := hex.DecodeString("b20b47f579a2c790ca752fb5d8e5651fade7d5867cbac0a4f71e805fc5c468d0")
|
|
require.NoError(t, err)
|
|
|
|
t.Run("NoError", func(t *testing.T) {
|
|
err = verifyHashsumDownloaded(ctx, sumsBuf, "archive.zip", hash)
|
|
require.NoError(t, err)
|
|
})
|
|
t.Run("BadSig", func(t *testing.T) {
|
|
sumsBuf[0x60] ^= 1 // change the signature by one bit
|
|
err = verifyHashsumDownloaded(ctx, sumsBuf, "archive.zip", hash)
|
|
assert.ErrorContains(t, err, "invalid signature")
|
|
sumsBuf[0x60] ^= 1 // undo the change
|
|
})
|
|
t.Run("BadSum", func(t *testing.T) {
|
|
hash[0] ^= 1 // change the SHA256 by one bit
|
|
err = verifyHashsumDownloaded(ctx, sumsBuf, "archive.zip", hash)
|
|
assert.ErrorContains(t, err, "archive hash mismatch")
|
|
hash[0] ^= 1 // undo the change
|
|
})
|
|
t.Run("BadName", func(t *testing.T) {
|
|
err = verifyHashsumDownloaded(ctx, sumsBuf, "archive.zipX", hash)
|
|
assert.ErrorContains(t, err, "unable to find hash")
|
|
})
|
|
}
|