Merge pull request #21849 from restic/internal-crypto-package

repository: move crypto package to internal/repository/crypto
This commit is contained in:
Michael Eischer
2026-06-13 20:33:24 +02:00
committed by GitHub
28 changed files with 33 additions and 35 deletions
+2 -3
View File
@@ -9,7 +9,6 @@ import (
"strings"
"github.com/restic/chunker"
"github.com/restic/restic/internal/crypto"
"github.com/restic/restic/internal/data"
"github.com/restic/restic/internal/global"
"github.com/restic/restic/internal/repository"
@@ -162,10 +161,10 @@ func runStats(ctx context.Context, opts StatsOptions, gopts global.Options, args
}
stats.TotalSize += uint64(pbs[0].CiphertextLength())
if repo.Config().Version >= 2 {
stats.TotalUncompressedSize += uint64(crypto.CiphertextLength(int(pbs[0].PlaintextLength())))
stats.TotalUncompressedSize += uint64(pbs[0].UncompressedCiphertextLength())
if pbs[0].IsCompressed() {
stats.TotalCompressedBlobsSize += uint64(pbs[0].CiphertextLength())
stats.TotalCompressedBlobsUncompressedSize += uint64(crypto.CiphertextLength(int(pbs[0].PlaintextLength())))
stats.TotalCompressedBlobsUncompressedSize += uint64(pbs[0].UncompressedCiphertextLength())
}
}
stats.TotalBlobCount++
+1 -14
View File
@@ -10,7 +10,6 @@ import (
"github.com/pkg/errors"
"github.com/restic/restic/internal/backend"
"github.com/restic/restic/internal/backend/util"
"github.com/restic/restic/internal/crypto"
"github.com/restic/restic/internal/debug"
)
@@ -54,11 +53,6 @@ func (c *Cache) load(h backend.Handle, length int, offset int64) (io.ReadCloser,
}
size := fi.Size()
if size <= int64(crypto.CiphertextLength(0)) {
_ = f.Close()
return nil, true, errors.Errorf("cached file %v is truncated", h)
}
if size < offset+int64(length) {
_ = f.Close()
return nil, true, errors.Errorf("cached file %v is too short", h)
@@ -101,20 +95,13 @@ func (c *Cache) save(h backend.Handle, rd io.Reader) error {
return err
}
n, err := io.Copy(f, rd)
_, err = io.Copy(f, rd)
if err != nil {
_ = f.Close()
_ = os.Remove(f.Name())
return errors.Wrap(err, "Copy")
}
if n <= int64(crypto.CiphertextLength(0)) {
_ = f.Close()
_ = os.Remove(f.Name())
debug.Log("trying to cache truncated file %v, removing", h)
return nil
}
// Close, then rename. Windows doesn't like the reverse order.
if err = f.Close(); err != nil {
_ = os.Remove(f.Name())
@@ -6,7 +6,7 @@ import (
"io"
"testing"
"github.com/restic/restic/internal/crypto"
"github.com/restic/restic/internal/repository/crypto"
rtest "github.com/restic/restic/internal/test"
"github.com/restic/chunker"
+1 -1
View File
@@ -17,7 +17,7 @@ import (
"github.com/klauspost/compress/zstd"
"golang.org/x/sync/errgroup"
"github.com/restic/restic/internal/crypto"
"github.com/restic/restic/internal/repository/crypto"
"github.com/restic/restic/internal/repository/index"
"github.com/restic/restic/internal/repository/pack"
"github.com/restic/restic/internal/restic"
@@ -5,7 +5,7 @@ import (
"slices"
"testing"
"github.com/restic/restic/internal/crypto"
"github.com/restic/restic/internal/repository/crypto"
"github.com/restic/restic/internal/repository/pack"
"github.com/restic/restic/internal/restic"
"github.com/restic/restic/internal/test"
+1 -1
View File
@@ -13,8 +13,8 @@ import (
"sync"
"time"
"github.com/restic/restic/internal/crypto"
"github.com/restic/restic/internal/errors"
"github.com/restic/restic/internal/repository/crypto"
"github.com/restic/restic/internal/repository/pack"
"github.com/restic/restic/internal/restic"
@@ -10,9 +10,9 @@ import (
"github.com/google/go-cmp/cmp"
"github.com/restic/restic/internal/checker"
"github.com/restic/restic/internal/crypto"
"github.com/restic/restic/internal/data"
"github.com/restic/restic/internal/repository"
"github.com/restic/restic/internal/repository/crypto"
"github.com/restic/restic/internal/repository/index"
"github.com/restic/restic/internal/repository/pack"
"github.com/restic/restic/internal/restic"
+1 -1
View File
@@ -12,8 +12,8 @@ import (
"github.com/restic/restic/internal/restic"
"github.com/restic/restic/internal/backend"
"github.com/restic/restic/internal/crypto"
"github.com/restic/restic/internal/debug"
"github.com/restic/restic/internal/repository/crypto"
)
var (
+5 -1
View File
@@ -3,7 +3,7 @@ package pack
import (
"fmt"
"github.com/restic/restic/internal/crypto"
"github.com/restic/restic/internal/repository/crypto"
"github.com/restic/restic/internal/restic"
)
@@ -27,6 +27,10 @@ func (b Blob) DataLength() uint {
return uint(crypto.PlaintextLength(int(b.Length)))
}
func (b Blob) UncompressedCiphertextLength() uint {
return uint(crypto.CiphertextLength(int(b.DataLength())))
}
func (b Blob) IsCompressed() bool {
return b.UncompressedLength != 0
}
+1 -1
View File
@@ -12,7 +12,7 @@ import (
"github.com/restic/restic/internal/errors"
"github.com/restic/restic/internal/restic"
"github.com/restic/restic/internal/crypto"
"github.com/restic/restic/internal/repository/crypto"
)
// ErrBroken is returned by Add and Finalize after a write error. The packer
@@ -7,7 +7,7 @@ import (
"strings"
"testing"
"github.com/restic/restic/internal/crypto"
"github.com/restic/restic/internal/repository/crypto"
"github.com/restic/restic/internal/restic"
rtest "github.com/restic/restic/internal/test"
)
+1 -1
View File
@@ -11,8 +11,8 @@ import (
"github.com/restic/restic/internal/backend"
"github.com/restic/restic/internal/backend/mem"
"github.com/restic/restic/internal/crypto"
"github.com/restic/restic/internal/errors"
"github.com/restic/restic/internal/repository/crypto"
"github.com/restic/restic/internal/repository/pack"
"github.com/restic/restic/internal/restic"
rtest "github.com/restic/restic/internal/test"
+6
View File
@@ -8,12 +8,18 @@ type PackedBlob struct {
Blob Blob
}
var _ restic.PackBlob = (*PackedBlob)(nil)
func (pb *PackedBlob) PackID() restic.ID { return pb.Pack }
func (pb *PackedBlob) Handle() restic.BlobHandle { return pb.Blob.BlobHandle }
func (pb *PackedBlob) CiphertextLength() uint { return pb.Blob.Length }
func (pb *PackedBlob) UncompressedCiphertextLength() uint {
return pb.Blob.UncompressedCiphertextLength()
}
func (pb *PackedBlob) PlaintextLength() uint { return pb.Blob.DataLength() }
func (pb *PackedBlob) IsCompressed() bool { return pb.Blob.IsCompressed() }
+1 -1
View File
@@ -15,9 +15,9 @@ import (
"github.com/restic/restic/internal/repository/hashing"
"github.com/restic/restic/internal/restic"
"github.com/restic/restic/internal/crypto"
"github.com/restic/restic/internal/debug"
"github.com/restic/restic/internal/fs"
"github.com/restic/restic/internal/repository/crypto"
"github.com/restic/restic/internal/repository/pack"
)
+1 -1
View File
@@ -7,7 +7,7 @@ import (
"sync"
"testing"
"github.com/restic/restic/internal/crypto"
"github.com/restic/restic/internal/repository/crypto"
"github.com/restic/restic/internal/restic"
"github.com/restic/restic/internal/test"
)
+1 -1
View File
@@ -14,9 +14,9 @@ import (
"github.com/restic/restic/internal/backend"
"github.com/restic/restic/internal/backend/cache"
"github.com/restic/restic/internal/backend/dryrun"
"github.com/restic/restic/internal/crypto"
"github.com/restic/restic/internal/debug"
"github.com/restic/restic/internal/errors"
"github.com/restic/restic/internal/repository/crypto"
"github.com/restic/restic/internal/repository/index"
"github.com/restic/restic/internal/repository/pack"
"github.com/restic/restic/internal/restic"
@@ -14,8 +14,8 @@ import (
"github.com/google/go-cmp/cmp"
"github.com/klauspost/compress/zstd"
"github.com/restic/restic/internal/backend"
"github.com/restic/restic/internal/crypto"
"github.com/restic/restic/internal/errors"
"github.com/restic/restic/internal/repository/crypto"
"github.com/restic/restic/internal/repository/index"
"github.com/restic/restic/internal/repository/pack"
"github.com/restic/restic/internal/restic"
+1 -1
View File
@@ -18,9 +18,9 @@ import (
"github.com/restic/restic/internal/backend/cache"
"github.com/restic/restic/internal/backend/local"
"github.com/restic/restic/internal/backend/mem"
"github.com/restic/restic/internal/crypto"
"github.com/restic/restic/internal/errors"
"github.com/restic/restic/internal/repository"
"github.com/restic/restic/internal/repository/crypto"
"github.com/restic/restic/internal/repository/index"
"github.com/restic/restic/internal/restic"
rtest "github.com/restic/restic/internal/test"
+1 -1
View File
@@ -11,7 +11,7 @@ import (
"github.com/restic/restic/internal/backend/local"
"github.com/restic/restic/internal/backend/mem"
"github.com/restic/restic/internal/backend/retry"
"github.com/restic/restic/internal/crypto"
"github.com/restic/restic/internal/repository/crypto"
"github.com/restic/restic/internal/restic"
"github.com/restic/restic/internal/test"
+2
View File
@@ -14,6 +14,8 @@ type PackBlob interface {
Handle() BlobHandle
// CiphertextLength is the encrypted size stored in the pack.
CiphertextLength() uint
// UncompressedCiphertextLength is the encrypted size of the uncompressed blob.
UncompressedCiphertextLength() uint
// PlaintextLength is the size after decryption/decompression.
PlaintextLength() uint
IsCompressed() bool
-2
View File
@@ -5,7 +5,6 @@ import (
"iter"
"github.com/restic/restic/internal/backend"
"github.com/restic/restic/internal/crypto"
"github.com/restic/restic/internal/errors"
"github.com/restic/restic/internal/ui/progress"
)
@@ -20,7 +19,6 @@ type Repository interface {
Connections() uint
Config() Config
PackSize() uint
Key() *crypto.Key
LoadIndex(ctx context.Context, p TerminalCounterFactory) error
+2
View File
@@ -47,6 +47,8 @@ func (pb *testPackBlob) Handle() restic.BlobHandle { return pb.handle }
func (pb *testPackBlob) CiphertextLength() uint { return pb.ciphertext }
func (pb *testPackBlob) UncompressedCiphertextLength() uint { return pb.ciphertext }
func (pb *testPackBlob) PlaintextLength() uint { return pb.plaintext }
func (pb *testPackBlob) IsCompressed() bool { return pb.compressed }