Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package fscrypt for openSUSE:Factory checked 
in at 2025-11-08 16:36:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/fscrypt (Old)
 and      /work/SRC/openSUSE:Factory/.fscrypt.new.1980 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "fscrypt"

Sat Nov  8 16:36:22 2025 rev:6 rq:1316367 version:0.3.6

Changes:
--------
--- /work/SRC/openSUSE:Factory/fscrypt/fscrypt.changes  2024-05-10 
12:06:34.192610259 +0200
+++ /work/SRC/openSUSE:Factory/.fscrypt.new.1980/fscrypt.changes        
2025-11-08 16:36:30.113161497 +0100
@@ -1,0 +2,8 @@
+Thu Nov  6 18:05:24 UTC 2025 - Marcus Rueckert <[email protected]>
+
+- update to 0.3.6:
+  - Document stdin behaviour for getting raw key
+  - Compare mount by value instead of reference 
+  - update dependencies
+
+-------------------------------------------------------------------

Old:
----
  fscrypt-0.3.5.tar.gz

New:
----
  fscrypt-0.3.6.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ fscrypt.spec ++++++
--- /var/tmp/diff_new_pack.0PMPcE/_old  2025-11-08 16:36:32.901278230 +0100
+++ /var/tmp/diff_new_pack.0PMPcE/_new  2025-11-08 16:36:32.929279402 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package fscrypt
 #
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
 
 
 Name:           fscrypt
-Version:        0.3.5
+Version:        0.3.6
 Release:        0
 Summary:        Go tool for managing Linux filesystem encryption
 License:        Apache-2.0

++++++ fscrypt-0.3.5.tar.gz -> fscrypt-0.3.6.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fscrypt-0.3.5/.github/workflows/ci.yml 
new/fscrypt-0.3.6/.github/workflows/ci.yml
--- old/fscrypt-0.3.5/.github/workflows/ci.yml  2024-03-19 23:09:50.000000000 
+0100
+++ new/fscrypt-0.3.6/.github/workflows/ci.yml  2025-11-04 23:08:18.000000000 
+0100
@@ -27,7 +27,7 @@
   build:
     strategy:
       matrix:
-        go: ['1.18', '1.19', '1.20']
+        go: ['1.23', '1.24', '1.25']
     name: Build (Go ${{ matrix.go }})
     runs-on: ubuntu-latest
     steps:
@@ -49,7 +49,7 @@
     - uses: actions/checkout@v4
     - uses: actions/setup-go@v2
       with:
-        go-version: '1.20'
+        go-version: '1.25'
     - name: Install dependencies
       run: |
         sudo dpkg --add-architecture i386
@@ -65,7 +65,7 @@
     - uses: actions/checkout@v4
     - uses: actions/setup-go@v2
       with:
-        go-version: '1.20'
+        go-version: '1.25'
     - name: Install dependencies
       run: |
         sudo apt-get update
@@ -108,13 +108,12 @@
 
   run-cli-tests:
     name: Run command-line interface tests
-    # The cli tests require kernel 5.4 or later, and thus Ubuntu 20.04 or 
later.
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-latest
     steps:
     - uses: actions/checkout@v4
     - uses: actions/setup-go@v2
       with:
-        go-version: '1.20'
+        go-version: '1.25'
     - name: Install dependencies
       run: |
         sudo apt-get update
@@ -129,7 +128,7 @@
     - uses: actions/checkout@v4
     - uses: actions/setup-go@v2
       with:
-        go-version: '1.20'
+        go-version: '1.25'
     - name: Install dependencies
       run: |
         sudo apt-get update
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fscrypt-0.3.5/Makefile new/fscrypt-0.3.6/Makefile
--- old/fscrypt-0.3.5/Makefile  2024-03-19 23:09:50.000000000 +0100
+++ new/fscrypt-0.3.6/Makefile  2025-11-04 23:08:18.000000000 +0100
@@ -16,7 +16,7 @@
 # the License.
 
 # Update this on each new release, along with the NEWS.md file.
-VERSION := v0.3.5
+VERSION := v0.3.6
 
 NAME := fscrypt
 PAM_NAME := pam_$(NAME)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fscrypt-0.3.5/NEWS.md new/fscrypt-0.3.6/NEWS.md
--- old/fscrypt-0.3.5/NEWS.md   2024-03-19 23:09:50.000000000 +0100
+++ new/fscrypt-0.3.6/NEWS.md   2025-11-04 23:08:18.000000000 +0100
@@ -1,5 +1,17 @@
 # `fscrypt` release notes
 
+## Version 0.3.6
+
+* Upgraded various dependencies, including `golang.org/x/crypto` where the
+  upgrade resolves CVE-2024-45337 and CVE-2025-22869.  (These vulnerabilities
+  didn't actually affect `fscrypt`, as it doesn't use the relevant features.)
+
+* `fscrypt` now requires Go 1.23 or later to build.
+
+* Added fallback logic for when sysfs is not mounted.
+
+* Other minor fixes and documentation improvements.
+
 ## Version 0.3.5
 
 * Upgraded various dependencies, resolving two security alerts from GitHub.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fscrypt-0.3.5/README.md new/fscrypt-0.3.6/README.md
--- old/fscrypt-0.3.5/README.md 2024-03-19 23:09:50.000000000 +0100
+++ new/fscrypt-0.3.6/README.md 2025-11-04 23:08:18.000000000 +0100
@@ -85,9 +85,13 @@
   `fscrypt` uses.  Note that while the `systemd-homed` documentation refers to
   this as fscrypt support, it does not use the `fscrypt` tool; directories set
   up using `systemd-homed` cannot be managed by `fscrypt` and vice versa.
-  `systemd-homed` has better integration with systemd than `fscrypt` does;
-  however, `systemd-homed` (as of systemd v255) uses an obsolete version of the
-  Linux native filesystem encryption API, and users may run into known issues.
+  `systemd-homed` has better integration with systemd than `fscrypt` does.
+  However, `systemd-homed` (as of systemd v255) uses the
+  ["V1" Linux kernel encryption 
API](https://www.kernel.org/doc/html/v6.8/filesystems/fscrypt.html#limitations-of-v1-policies),
+  while `fscrypt` prefers the "V2" API. The older API causes
+  [known issues](#some-processes-cant-access-unlocked-encrypted-files), and
+  migrating `systemd-home` to the "V2" API is tracked
+  [in this `systemd` issue](https://github.com/systemd/systemd/issues/18280).
   Issues with `systemd-homed` should be reported to the systemd developers.
 
 * [**eCryptfs**](https://en.wikipedia.org/wiki/ECryptfs) is an alternative
@@ -220,7 +224,7 @@
 ## Building and installing
 
 `fscrypt` has a minimal set of build dependencies:
-*   [Go](https://golang.org/doc/install) 1.18 or higher. Older versions may 
work
+*   [Go](https://golang.org/doc/install) 1.23 or higher. Older versions may 
work
     but they are not tested or supported.
 *   A C compiler (`gcc` or `clang`)
 *   `make`
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fscrypt-0.3.5/actions/policy.go 
new/fscrypt-0.3.6/actions/policy.go
--- old/fscrypt-0.3.5/actions/policy.go 2024-03-19 23:09:50.000000000 +0100
+++ new/fscrypt-0.3.6/actions/policy.go 2025-11-04 23:08:18.000000000 +0100
@@ -24,6 +24,7 @@
        "log"
        "os"
        "os/user"
+       "reflect"
 
        "github.com/pkg/errors"
        "google.golang.org/protobuf/proto"
@@ -452,7 +453,7 @@
 
        // If the protector is on a different filesystem, we need to add a link
        // to it on the policy's filesystem.
-       if policy.Context.Mount != protector.Context.Mount {
+       if !reflect.DeepEqual(policy.Context.Mount, protector.Context.Mount) {
                log.Printf("policy on %s\n protector on %s\n", 
policy.Context.Mount, protector.Context.Mount)
                ownerIfCreating, err := 
getOwnerOfMetadataForProtector(protector)
                if err != nil {
@@ -525,7 +526,7 @@
 func (policy *Policy) Apply(path string) error {
        if pathMount, err := filesystem.FindMount(path); err != nil {
                return err
-       } else if pathMount != policy.Context.Mount {
+       } else if !reflect.DeepEqual(pathMount, policy.Context.Mount) {
                return &ErrDifferentFilesystem{policy.Context.Mount, pathMount}
        }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fscrypt-0.3.5/cmd/fscrypt/commands.go 
new/fscrypt-0.3.6/cmd/fscrypt/commands.go
--- old/fscrypt-0.3.5/cmd/fscrypt/commands.go   2024-03-19 23:09:50.000000000 
+0100
+++ new/fscrypt-0.3.6/cmd/fscrypt/commands.go   2025-11-04 23:08:18.000000000 
+0100
@@ -414,7 +414,7 @@
        if policy.IsProvisionedByTargetUser() {
                log.Printf("policy %s is already provisioned by %v",
                        policy.Descriptor(), ctx.TargetUser.Username)
-               return newExitError(c, errors.Wrapf(ErrDirAlreadyUnlocked, 
path))
+               return newExitError(c, errors.Wrap(ErrDirAlreadyUnlocked, path))
        }
 
        if err := policy.Unlock(optionFn, existingKeyFn); err != nil {
@@ -521,7 +521,7 @@
                // locking the directory by dropping caches again.
                if !policy.NeedsUserKeyring() || !isDirUnlockedHeuristic(path) {
                        log.Printf("policy %s is already fully deprovisioned", 
policy.Descriptor())
-                       return newExitError(c, 
errors.Wrapf(ErrDirAlreadyLocked, path))
+                       return newExitError(c, errors.Wrap(ErrDirAlreadyLocked, 
path))
                }
        }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fscrypt-0.3.5/cmd/fscrypt/flags.go 
new/fscrypt-0.3.6/cmd/fscrypt/flags.go
--- old/fscrypt-0.3.5/cmd/fscrypt/flags.go      2024-03-19 23:09:50.000000000 
+0100
+++ new/fscrypt-0.3.6/cmd/fscrypt/flags.go      2025-11-04 23:08:18.000000000 
+0100
@@ -222,7 +222,8 @@
                Usage: `Use the contents of FILE as the wrapping key when
                        creating or unlocking raw_key protectors. FILE should be
                        formatted as raw binary and should be exactly 32 bytes
-                       long.`,
+                       long. When running non-interactively and no key is 
provided,
+                       will try to read the key from stdin.`,
        }
        userFlag = &stringFlag{
                Name:    "user",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fscrypt-0.3.5/filesystem/mountpoint.go 
new/fscrypt-0.3.6/filesystem/mountpoint.go
--- old/fscrypt-0.3.5/filesystem/mountpoint.go  2024-03-19 23:09:50.000000000 
+0100
+++ new/fscrypt-0.3.6/filesystem/mountpoint.go  2025-11-04 23:08:18.000000000 
+0100
@@ -91,14 +91,23 @@
        return sb.String()
 }
 
-// We get the device name via the device number rather than use the mount 
source
-// field directly.  This is necessary to handle a rootfs that was mounted via
-// the kernel command line, since mountinfo always shows /dev/root for that.
-// This assumes that the device nodes are in the standard location.
-func getDeviceName(num DeviceNumber) string {
+func getDeviceName(num DeviceNumber, mountSource string) string {
+       // When possible, get the device name via the device number rather than
+       // use the mount source field directly.  This is necessary to handle a
+       // rootfs that was mounted via the kernel command line, since mountinfo
+       // always shows /dev/root for that.
        linkPath := fmt.Sprintf("/sys/dev/block/%v", num)
        if target, err := os.Readlink(linkPath); err == nil {
-               return fmt.Sprintf("/dev/%s", filepath.Base(target))
+               derivedDeviceName := fmt.Sprintf("/dev/%s", 
filepath.Base(target))
+               if _, err := os.Stat(derivedDeviceName); err == nil {
+                       return derivedDeviceName
+               }
+       }
+       // Sysfs is not mounted or is incomplete, or the device nodes are not in
+       // the standard location.  Fall back to using the mount source field if
+       // it looks like a path.
+       if strings.HasPrefix(mountSource, "/") {
+               return mountSource
        }
        return ""
 }
@@ -153,7 +162,7 @@
                }
        }
        mnt.FilesystemType = unescapeString(fields[n+1])
-       mnt.Device = getDeviceName(mnt.DeviceNumber)
+       mnt.Device = getDeviceName(mnt.DeviceNumber, 
unescapeString(fields[n+2]))
        return mnt
 }
 
@@ -339,7 +348,7 @@
 
 func filesystemLacksMainMountError(deviceNumber DeviceNumber) error {
        return errors.Errorf("Device %q (%v) lacks a \"main\" mountpoint in the 
current mount namespace, so it's ambiguous where to store the fscrypt 
metadata.",
-               getDeviceName(deviceNumber), deviceNumber)
+               getDeviceName(deviceNumber, ""), deviceNumber)
 }
 
 // AllFilesystems lists all mounted filesystems ordered by path to their "main"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fscrypt-0.3.5/filesystem/mountpoint_test.go 
new/fscrypt-0.3.6/filesystem/mountpoint_test.go
--- old/fscrypt-0.3.5/filesystem/mountpoint_test.go     2024-03-19 
23:09:50.000000000 +0100
+++ new/fscrypt-0.3.6/filesystem/mountpoint_test.go     2025-11-04 
23:08:18.000000000 +0100
@@ -27,6 +27,7 @@
        "fmt"
        "os"
        "path/filepath"
+       "reflect"
        "strings"
        "testing"
 )
@@ -544,3 +545,21 @@
                }
        }
 }
+
+// Test mount comparison by values instead of by reference,
+// as the map mountsByDevice gets recreated on each load.
+// This ensures that concurrent mounts work properly.
+func TestMountComparison(t *testing.T) {
+       var mountinfo = `
+15 0 259:3 / /home rw,relatime shared:1 - ext4 /dev/root rw,data=ordered
+`
+       beginLoadMountInfoTest()
+       defer endLoadMountInfoTest()
+       loadMountInfoFromString(mountinfo)
+       firstMnt := mountForDevice("259:3")
+       loadMountInfoFromString(mountinfo)
+       secondMnt := mountForDevice("259:3")
+       if !reflect.DeepEqual(firstMnt, secondMnt) {
+               t.Errorf("Mount comparison does not work")
+       }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fscrypt-0.3.5/go.mod new/fscrypt-0.3.6/go.mod
--- old/fscrypt-0.3.5/go.mod    2024-03-19 23:09:50.000000000 +0100
+++ new/fscrypt-0.3.6/go.mod    2025-11-04 23:08:18.000000000 +0100
@@ -1,24 +1,28 @@
 module github.com/google/fscrypt
 
-go 1.18
+go 1.23.0
+
+toolchain go1.23.12
 
 require (
        github.com/client9/misspell v0.3.4
        github.com/pkg/errors v0.9.1
-       github.com/urfave/cli v1.22.14
+       github.com/urfave/cli v1.22.17
        github.com/wadey/gocovmerge v0.0.0-20160331181800-b5bfa59ec0ad
-       golang.org/x/crypto v0.17.0
-       golang.org/x/sys v0.15.0
-       golang.org/x/term v0.15.0
-       golang.org/x/tools v0.13.0
-       google.golang.org/protobuf v1.33.0
-       honnef.co/go/tools v0.4.5
+       golang.org/x/crypto v0.41.0
+       golang.org/x/sys v0.35.0
+       golang.org/x/term v0.34.0
+       golang.org/x/tools v0.36.0
+       google.golang.org/protobuf v1.36.10
+       honnef.co/go/tools v0.6.1
 )
 
 require (
-       github.com/BurntSushi/toml v1.3.2 // indirect
-       github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect
+       github.com/BurntSushi/toml v1.5.0 // indirect
+       github.com/cpuguy83/go-md2man/v2 v2.0.7 // indirect
        github.com/russross/blackfriday/v2 v2.1.0 // indirect
-       golang.org/x/exp/typeparams v0.0.0-20221208152030-732eee02a75a // 
indirect
-       golang.org/x/mod v0.12.0 // indirect
+       golang.org/x/exp/typeparams v0.0.0-20231108232855-2478ac86f678 // 
indirect
+       golang.org/x/mod v0.27.0 // indirect
+       golang.org/x/sync v0.16.0 // indirect
+       golang.org/x/tools/go/expect v0.1.1-deprecated // indirect
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fscrypt-0.3.5/go.sum new/fscrypt-0.3.6/go.sum
--- old/fscrypt-0.3.5/go.sum    2024-03-19 23:09:50.000000000 +0100
+++ new/fscrypt-0.3.6/go.sum    2025-11-04 23:08:18.000000000 +0100
@@ -1,13 +1,14 @@
-github.com/BurntSushi/toml v1.3.2 
h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8=
-github.com/BurntSushi/toml v1.3.2/go.mod 
h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
+github.com/BurntSushi/toml v1.5.0 
h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg=
+github.com/BurntSushi/toml v1.5.0/go.mod 
h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
 github.com/client9/misspell v0.3.4 
h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI=
 github.com/client9/misspell v0.3.4/go.mod 
h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
-github.com/cpuguy83/go-md2man/v2 v2.0.2 
h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w=
-github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod 
h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
+github.com/cpuguy83/go-md2man/v2 v2.0.7 
h1:zbFlGlXEAKlwXpmvle3d8Oe3YnkKIK4xSRTd3sHPnBo=
+github.com/cpuguy83/go-md2man/v2 v2.0.7/go.mod 
h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
 github.com/davecgh/go-spew v1.1.0/go.mod 
h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/davecgh/go-spew v1.1.1 
h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
 github.com/davecgh/go-spew v1.1.1/go.mod 
h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
+github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
+github.com/google/go-cmp v0.7.0/go.mod 
h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
 github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
 github.com/pkg/errors v0.9.1/go.mod 
h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 github.com/pmezard/go-difflib v1.0.0 
h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
@@ -17,34 +18,38 @@
 github.com/stretchr/objx v0.1.0/go.mod 
h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
 github.com/stretchr/objx v0.4.0/go.mod 
h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
 github.com/stretchr/objx v0.5.0/go.mod 
h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
+github.com/stretchr/objx v0.5.2/go.mod 
h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
 github.com/stretchr/testify v1.7.1/go.mod 
h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 github.com/stretchr/testify v1.8.0/go.mod 
h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
-github.com/stretchr/testify v1.8.4 
h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
 github.com/stretchr/testify v1.8.4/go.mod 
h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
-github.com/urfave/cli v1.22.14 h1:ebbhrRiGK2i4naQJr+1Xj92HXZCrK7MsyTS/ob3HnAk=
-github.com/urfave/cli v1.22.14/go.mod 
h1:X0eDS6pD6Exaclxm99NJ3FiCDRED7vIHpx2mDOHLvkA=
+github.com/stretchr/testify v1.10.0 
h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
+github.com/stretchr/testify v1.10.0/go.mod 
h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
+github.com/urfave/cli v1.22.17 h1:SYzXoiPfQjHBbkYxbew5prZHS1TOLT3ierW8SYLqtVQ=
+github.com/urfave/cli v1.22.17/go.mod 
h1:b0ht0aqgH/6pBYzzxURyrM4xXNgsoT/n2ZzwQiEhNVo=
 github.com/wadey/gocovmerge v0.0.0-20160331181800-b5bfa59ec0ad 
h1:W0LEBv82YCGEtcmPA3uNZBI33/qF//HAAs3MawDjRa0=
 github.com/wadey/gocovmerge v0.0.0-20160331181800-b5bfa59ec0ad/go.mod 
h1:Hy8o65+MXnS6EwGElrSRjUzQDLXreJlzYLlWiHtt8hM=
-golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k=
-golang.org/x/crypto v0.17.0/go.mod 
h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
-golang.org/x/exp/typeparams v0.0.0-20221208152030-732eee02a75a 
h1:Jw5wfR+h9mnIYH+OtGT2im5wV1YGGDora5vTv/aa5bE=
-golang.org/x/exp/typeparams v0.0.0-20221208152030-732eee02a75a/go.mod 
h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk=
-golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc=
-golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
-golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E=
-golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc=
-golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4=
-golang.org/x/term v0.15.0/go.mod 
h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0=
-golang.org/x/tools v0.13.0 h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ=
-golang.org/x/tools v0.13.0/go.mod 
h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
-golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 
h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
-google.golang.org/protobuf v1.33.0 
h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI=
-google.golang.org/protobuf v1.33.0/go.mod 
h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
+golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4=
+golang.org/x/crypto v0.41.0/go.mod 
h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc=
+golang.org/x/exp/typeparams v0.0.0-20231108232855-2478ac86f678 
h1:1P7xPZEwZMoBoz0Yze5Nx2/4pxj6nw9ZqHWXqP0iRgQ=
+golang.org/x/exp/typeparams v0.0.0-20231108232855-2478ac86f678/go.mod 
h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk=
+golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ=
+golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc=
+golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw=
+golang.org/x/sync v0.16.0/go.mod 
h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
+golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI=
+golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
+golang.org/x/term v0.34.0 h1:O/2T7POpk0ZZ7MAzMeWFSg6S5IpWd/RXDlM9hgM3DR4=
+golang.org/x/term v0.34.0/go.mod 
h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw=
+golang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg=
+golang.org/x/tools v0.36.0/go.mod 
h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s=
+golang.org/x/tools/go/expect v0.1.1-deprecated 
h1:jpBZDwmgPhXsKZC6WhL20P4b/wmnpsEAGHaNy0n/rJM=
+golang.org/x/tools/go/expect v0.1.1-deprecated/go.mod 
h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY=
+google.golang.org/protobuf v1.36.10 
h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE=
+google.golang.org/protobuf v1.36.10/go.mod 
h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod 
h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod 
h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-honnef.co/go/tools v0.4.5 h1:YGD4H+SuIOOqsyoLOpZDWcieM28W47/zRO7f+9V3nvo=
-honnef.co/go/tools v0.4.5/go.mod 
h1:GUV+uIBCLpdf0/v6UhHHG/yzI/z6qPskBeQCjcNB96k=
+honnef.co/go/tools v0.6.1 h1:R094WgE8K4JirYjBaOpz/AvTyUu/3wbmAoskKN/pxTI=
+honnef.co/go/tools v0.6.1/go.mod 
h1:3puzxxljPCe8RGJX7BIy1plGbxEOZni5mR2aXe3/uk4=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fscrypt-0.3.5/metadata/metadata.pb.go 
new/fscrypt-0.3.6/metadata/metadata.pb.go
--- old/fscrypt-0.3.5/metadata/metadata.pb.go   2024-03-19 23:09:50.000000000 
+0100
+++ new/fscrypt-0.3.6/metadata/metadata.pb.go   2025-11-04 23:08:18.000000000 
+0100
@@ -23,7 +23,7 @@
 
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-//     protoc-gen-go v1.33.0
+//     protoc-gen-go v1.36.10
 //     protoc        v3.6.1
 // source: metadata/metadata.proto
 
@@ -34,6 +34,7 @@
        protoimpl "google.golang.org/protobuf/runtime/protoimpl"
        reflect "reflect"
        sync "sync"
+       unsafe "unsafe"
 )
 
 const (
@@ -166,24 +167,21 @@
 
 // Cost parameters to be used in our hashing functions.
 type HashingCosts struct {
-       state         protoimpl.MessageState
-       sizeCache     protoimpl.SizeCache
-       unknownFields protoimpl.UnknownFields
-
-       Time        int64 `protobuf:"varint,2,opt,name=time,proto3" 
json:"time,omitempty"`
-       Memory      int64 `protobuf:"varint,3,opt,name=memory,proto3" 
json:"memory,omitempty"`
-       Parallelism int64 `protobuf:"varint,4,opt,name=parallelism,proto3" 
json:"parallelism,omitempty"`
+       state       protoimpl.MessageState `protogen:"open.v1"`
+       Time        int64                  
`protobuf:"varint,2,opt,name=time,proto3" json:"time,omitempty"`
+       Memory      int64                  
`protobuf:"varint,3,opt,name=memory,proto3" json:"memory,omitempty"`
+       Parallelism int64                  
`protobuf:"varint,4,opt,name=parallelism,proto3" json:"parallelism,omitempty"`
        // If true, parallelism should no longer be truncated to 8 bits.
        TruncationFixed bool 
`protobuf:"varint,5,opt,name=truncation_fixed,json=truncationFixed,proto3" 
json:"truncation_fixed,omitempty"`
+       unknownFields   protoimpl.UnknownFields
+       sizeCache       protoimpl.SizeCache
 }
 
 func (x *HashingCosts) Reset() {
        *x = HashingCosts{}
-       if protoimpl.UnsafeEnabled {
-               mi := &file_metadata_metadata_proto_msgTypes[0]
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               ms.StoreMessageInfo(mi)
-       }
+       mi := &file_metadata_metadata_proto_msgTypes[0]
+       ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+       ms.StoreMessageInfo(mi)
 }
 
 func (x *HashingCosts) String() string {
@@ -194,7 +192,7 @@
 
 func (x *HashingCosts) ProtoReflect() protoreflect.Message {
        mi := &file_metadata_metadata_proto_msgTypes[0]
-       if protoimpl.UnsafeEnabled && x != nil {
+       if x != nil {
                ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
                if ms.LoadMessageInfo() == nil {
                        ms.StoreMessageInfo(mi)
@@ -239,22 +237,19 @@
 
 // This structure is used for our authenticated wrapping/unwrapping of keys.
 type WrappedKeyData struct {
-       state         protoimpl.MessageState
-       sizeCache     protoimpl.SizeCache
+       state         protoimpl.MessageState `protogen:"open.v1"`
+       IV            []byte                 
`protobuf:"bytes,1,opt,name=IV,proto3" json:"IV,omitempty"`
+       EncryptedKey  []byte                 
`protobuf:"bytes,2,opt,name=encrypted_key,json=encryptedKey,proto3" 
json:"encrypted_key,omitempty"`
+       Hmac          []byte                 
`protobuf:"bytes,3,opt,name=hmac,proto3" json:"hmac,omitempty"`
        unknownFields protoimpl.UnknownFields
-
-       IV           []byte `protobuf:"bytes,1,opt,name=IV,proto3" 
json:"IV,omitempty"`
-       EncryptedKey []byte 
`protobuf:"bytes,2,opt,name=encrypted_key,json=encryptedKey,proto3" 
json:"encrypted_key,omitempty"`
-       Hmac         []byte `protobuf:"bytes,3,opt,name=hmac,proto3" 
json:"hmac,omitempty"`
+       sizeCache     protoimpl.SizeCache
 }
 
 func (x *WrappedKeyData) Reset() {
        *x = WrappedKeyData{}
-       if protoimpl.UnsafeEnabled {
-               mi := &file_metadata_metadata_proto_msgTypes[1]
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               ms.StoreMessageInfo(mi)
-       }
+       mi := &file_metadata_metadata_proto_msgTypes[1]
+       ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+       ms.StoreMessageInfo(mi)
 }
 
 func (x *WrappedKeyData) String() string {
@@ -265,7 +260,7 @@
 
 func (x *WrappedKeyData) ProtoReflect() protoreflect.Message {
        mi := &file_metadata_metadata_proto_msgTypes[1]
-       if protoimpl.UnsafeEnabled && x != nil {
+       if x != nil {
                ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
                if ms.LoadMessageInfo() == nil {
                        ms.StoreMessageInfo(mi)
@@ -303,27 +298,24 @@
 
 // The associated data for each protector
 type ProtectorData struct {
-       state         protoimpl.MessageState
-       sizeCache     protoimpl.SizeCache
-       unknownFields protoimpl.UnknownFields
-
-       ProtectorDescriptor string     
`protobuf:"bytes,1,opt,name=protector_descriptor,json=protectorDescriptor,proto3"
 json:"protector_descriptor,omitempty"`
-       Source              SourceType 
`protobuf:"varint,2,opt,name=source,proto3,enum=metadata.SourceType" 
json:"source,omitempty"`
+       state               protoimpl.MessageState `protogen:"open.v1"`
+       ProtectorDescriptor string                 
`protobuf:"bytes,1,opt,name=protector_descriptor,json=protectorDescriptor,proto3"
 json:"protector_descriptor,omitempty"`
+       Source              SourceType             
`protobuf:"varint,2,opt,name=source,proto3,enum=metadata.SourceType" 
json:"source,omitempty"`
        // These are only used by some of the protector types
-       Name       string          `protobuf:"bytes,3,opt,name=name,proto3" 
json:"name,omitempty"`
-       Costs      *HashingCosts   `protobuf:"bytes,4,opt,name=costs,proto3" 
json:"costs,omitempty"`
-       Salt       []byte          `protobuf:"bytes,5,opt,name=salt,proto3" 
json:"salt,omitempty"`
-       Uid        int64           `protobuf:"varint,6,opt,name=uid,proto3" 
json:"uid,omitempty"`
-       WrappedKey *WrappedKeyData 
`protobuf:"bytes,7,opt,name=wrapped_key,json=wrappedKey,proto3" 
json:"wrapped_key,omitempty"`
+       Name          string          `protobuf:"bytes,3,opt,name=name,proto3" 
json:"name,omitempty"`
+       Costs         *HashingCosts   `protobuf:"bytes,4,opt,name=costs,proto3" 
json:"costs,omitempty"`
+       Salt          []byte          `protobuf:"bytes,5,opt,name=salt,proto3" 
json:"salt,omitempty"`
+       Uid           int64           `protobuf:"varint,6,opt,name=uid,proto3" 
json:"uid,omitempty"`
+       WrappedKey    *WrappedKeyData 
`protobuf:"bytes,7,opt,name=wrapped_key,json=wrappedKey,proto3" 
json:"wrapped_key,omitempty"`
+       unknownFields protoimpl.UnknownFields
+       sizeCache     protoimpl.SizeCache
 }
 
 func (x *ProtectorData) Reset() {
        *x = ProtectorData{}
-       if protoimpl.UnsafeEnabled {
-               mi := &file_metadata_metadata_proto_msgTypes[2]
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               ms.StoreMessageInfo(mi)
-       }
+       mi := &file_metadata_metadata_proto_msgTypes[2]
+       ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+       ms.StoreMessageInfo(mi)
 }
 
 func (x *ProtectorData) String() string {
@@ -334,7 +326,7 @@
 
 func (x *ProtectorData) ProtoReflect() protoreflect.Message {
        mi := &file_metadata_metadata_proto_msgTypes[2]
-       if protoimpl.UnsafeEnabled && x != nil {
+       if x != nil {
                ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
                if ms.LoadMessageInfo() == nil {
                        ms.StoreMessageInfo(mi)
@@ -400,23 +392,20 @@
 
 // Encryption policy specifics, corresponds to the fscrypt_policy struct
 type EncryptionOptions struct {
-       state         protoimpl.MessageState
-       sizeCache     protoimpl.SizeCache
-       unknownFields protoimpl.UnknownFields
-
+       state         protoimpl.MessageState `protogen:"open.v1"`
        Padding       int64                  
`protobuf:"varint,1,opt,name=padding,proto3" json:"padding,omitempty"`
        Contents      EncryptionOptions_Mode 
`protobuf:"varint,2,opt,name=contents,proto3,enum=metadata.EncryptionOptions_Mode"
 json:"contents,omitempty"`
        Filenames     EncryptionOptions_Mode 
`protobuf:"varint,3,opt,name=filenames,proto3,enum=metadata.EncryptionOptions_Mode"
 json:"filenames,omitempty"`
        PolicyVersion int64                  
`protobuf:"varint,4,opt,name=policy_version,json=policyVersion,proto3" 
json:"policy_version,omitempty"`
+       unknownFields protoimpl.UnknownFields
+       sizeCache     protoimpl.SizeCache
 }
 
 func (x *EncryptionOptions) Reset() {
        *x = EncryptionOptions{}
-       if protoimpl.UnsafeEnabled {
-               mi := &file_metadata_metadata_proto_msgTypes[3]
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               ms.StoreMessageInfo(mi)
-       }
+       mi := &file_metadata_metadata_proto_msgTypes[3]
+       ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+       ms.StoreMessageInfo(mi)
 }
 
 func (x *EncryptionOptions) String() string {
@@ -427,7 +416,7 @@
 
 func (x *EncryptionOptions) ProtoReflect() protoreflect.Message {
        mi := &file_metadata_metadata_proto_msgTypes[3]
-       if protoimpl.UnsafeEnabled && x != nil {
+       if x != nil {
                ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
                if ms.LoadMessageInfo() == nil {
                        ms.StoreMessageInfo(mi)
@@ -471,21 +460,18 @@
 }
 
 type WrappedPolicyKey struct {
-       state         protoimpl.MessageState
-       sizeCache     protoimpl.SizeCache
-       unknownFields protoimpl.UnknownFields
-
-       ProtectorDescriptor string          
`protobuf:"bytes,1,opt,name=protector_descriptor,json=protectorDescriptor,proto3"
 json:"protector_descriptor,omitempty"`
-       WrappedKey          *WrappedKeyData 
`protobuf:"bytes,2,opt,name=wrapped_key,json=wrappedKey,proto3" 
json:"wrapped_key,omitempty"`
+       state               protoimpl.MessageState `protogen:"open.v1"`
+       ProtectorDescriptor string                 
`protobuf:"bytes,1,opt,name=protector_descriptor,json=protectorDescriptor,proto3"
 json:"protector_descriptor,omitempty"`
+       WrappedKey          *WrappedKeyData        
`protobuf:"bytes,2,opt,name=wrapped_key,json=wrappedKey,proto3" 
json:"wrapped_key,omitempty"`
+       unknownFields       protoimpl.UnknownFields
+       sizeCache           protoimpl.SizeCache
 }
 
 func (x *WrappedPolicyKey) Reset() {
        *x = WrappedPolicyKey{}
-       if protoimpl.UnsafeEnabled {
-               mi := &file_metadata_metadata_proto_msgTypes[4]
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               ms.StoreMessageInfo(mi)
-       }
+       mi := &file_metadata_metadata_proto_msgTypes[4]
+       ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+       ms.StoreMessageInfo(mi)
 }
 
 func (x *WrappedPolicyKey) String() string {
@@ -496,7 +482,7 @@
 
 func (x *WrappedPolicyKey) ProtoReflect() protoreflect.Message {
        mi := &file_metadata_metadata_proto_msgTypes[4]
-       if protoimpl.UnsafeEnabled && x != nil {
+       if x != nil {
                ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
                if ms.LoadMessageInfo() == nil {
                        ms.StoreMessageInfo(mi)
@@ -527,22 +513,19 @@
 
 // The associated data for each policy
 type PolicyData struct {
-       state         protoimpl.MessageState
-       sizeCache     protoimpl.SizeCache
-       unknownFields protoimpl.UnknownFields
-
-       KeyDescriptor     string              
`protobuf:"bytes,1,opt,name=key_descriptor,json=keyDescriptor,proto3" 
json:"key_descriptor,omitempty"`
-       Options           *EncryptionOptions  
`protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"`
-       WrappedPolicyKeys []*WrappedPolicyKey 
`protobuf:"bytes,3,rep,name=wrapped_policy_keys,json=wrappedPolicyKeys,proto3" 
json:"wrapped_policy_keys,omitempty"`
+       state             protoimpl.MessageState `protogen:"open.v1"`
+       KeyDescriptor     string                 
`protobuf:"bytes,1,opt,name=key_descriptor,json=keyDescriptor,proto3" 
json:"key_descriptor,omitempty"`
+       Options           *EncryptionOptions     
`protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"`
+       WrappedPolicyKeys []*WrappedPolicyKey    
`protobuf:"bytes,3,rep,name=wrapped_policy_keys,json=wrappedPolicyKeys,proto3" 
json:"wrapped_policy_keys,omitempty"`
+       unknownFields     protoimpl.UnknownFields
+       sizeCache         protoimpl.SizeCache
 }
 
 func (x *PolicyData) Reset() {
        *x = PolicyData{}
-       if protoimpl.UnsafeEnabled {
-               mi := &file_metadata_metadata_proto_msgTypes[5]
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               ms.StoreMessageInfo(mi)
-       }
+       mi := &file_metadata_metadata_proto_msgTypes[5]
+       ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+       ms.StoreMessageInfo(mi)
 }
 
 func (x *PolicyData) String() string {
@@ -553,7 +536,7 @@
 
 func (x *PolicyData) ProtoReflect() protoreflect.Message {
        mi := &file_metadata_metadata_proto_msgTypes[5]
-       if protoimpl.UnsafeEnabled && x != nil {
+       if x != nil {
                ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
                if ms.LoadMessageInfo() == nil {
                        ms.StoreMessageInfo(mi)
@@ -591,24 +574,21 @@
 
 // Data stored in the config file
 type Config struct {
-       state         protoimpl.MessageState
-       sizeCache     protoimpl.SizeCache
-       unknownFields protoimpl.UnknownFields
-
-       Source                    SourceType         
`protobuf:"varint,1,opt,name=source,proto3,enum=metadata.SourceType" 
json:"source,omitempty"`
-       HashCosts                 *HashingCosts      
`protobuf:"bytes,2,opt,name=hash_costs,json=hashCosts,proto3" 
json:"hash_costs,omitempty"`
-       Options                   *EncryptionOptions 
`protobuf:"bytes,4,opt,name=options,proto3" json:"options,omitempty"`
-       UseFsKeyringForV1Policies bool               
`protobuf:"varint,5,opt,name=use_fs_keyring_for_v1_policies,json=useFsKeyringForV1Policies,proto3"
 json:"use_fs_keyring_for_v1_policies,omitempty"`
-       AllowCrossUserMetadata    bool               
`protobuf:"varint,6,opt,name=allow_cross_user_metadata,json=allowCrossUserMetadata,proto3"
 json:"allow_cross_user_metadata,omitempty"`
+       state                     protoimpl.MessageState `protogen:"open.v1"`
+       Source                    SourceType             
`protobuf:"varint,1,opt,name=source,proto3,enum=metadata.SourceType" 
json:"source,omitempty"`
+       HashCosts                 *HashingCosts          
`protobuf:"bytes,2,opt,name=hash_costs,json=hashCosts,proto3" 
json:"hash_costs,omitempty"`
+       Options                   *EncryptionOptions     
`protobuf:"bytes,4,opt,name=options,proto3" json:"options,omitempty"`
+       UseFsKeyringForV1Policies bool                   
`protobuf:"varint,5,opt,name=use_fs_keyring_for_v1_policies,json=useFsKeyringForV1Policies,proto3"
 json:"use_fs_keyring_for_v1_policies,omitempty"`
+       AllowCrossUserMetadata    bool                   
`protobuf:"varint,6,opt,name=allow_cross_user_metadata,json=allowCrossUserMetadata,proto3"
 json:"allow_cross_user_metadata,omitempty"`
+       unknownFields             protoimpl.UnknownFields
+       sizeCache                 protoimpl.SizeCache
 }
 
 func (x *Config) Reset() {
        *x = Config{}
-       if protoimpl.UnsafeEnabled {
-               mi := &file_metadata_metadata_proto_msgTypes[6]
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               ms.StoreMessageInfo(mi)
-       }
+       mi := &file_metadata_metadata_proto_msgTypes[6]
+       ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+       ms.StoreMessageInfo(mi)
 }
 
 func (x *Config) String() string {
@@ -619,7 +599,7 @@
 
 func (x *Config) ProtoReflect() protoreflect.Message {
        mi := &file_metadata_metadata_proto_msgTypes[6]
-       if protoimpl.UnsafeEnabled && x != nil {
+       if x != nil {
                ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
                if ms.LoadMessageInfo() == nil {
                        ms.StoreMessageInfo(mi)
@@ -671,129 +651,81 @@
 
 var File_metadata_metadata_proto protoreflect.FileDescriptor
 
-var file_metadata_metadata_proto_rawDesc = []byte{
-       0x0a, 0x17, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x6d, 
0x65, 0x74, 0x61, 0x64,
-       0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x6d, 
0x65, 0x74, 0x61, 0x64,
-       0x61, 0x74, 0x61, 0x22, 0x87, 0x01, 0x0a, 0x0c, 0x48, 0x61, 0x73, 0x68, 
0x69, 0x6e, 0x67, 0x43,
-       0x6f, 0x73, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 
0x18, 0x02, 0x20, 0x01,
-       0x28, 0x03, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 
0x6d, 0x65, 0x6d, 0x6f,
-       0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6d, 0x65, 
0x6d, 0x6f, 0x72, 0x79,
-       0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 
0x69, 0x73, 0x6d, 0x18,
-       0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x61, 0x6c, 
0x6c, 0x65, 0x6c, 0x69,
-       0x73, 0x6d, 0x12, 0x29, 0x0a, 0x10, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 
0x74, 0x69, 0x6f, 0x6e,
-       0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 
0x52, 0x0f, 0x74, 0x72,
-       0x75, 0x6e, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x78, 0x65, 
0x64, 0x22, 0x59, 0x0a,
-       0x0e, 0x57, 0x72, 0x61, 0x70, 0x70, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x44, 
0x61, 0x74, 0x61, 0x12,
-       0x0e, 0x0a, 0x02, 0x49, 0x56, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 
0x02, 0x49, 0x56, 0x12,
-       0x23, 0x0a, 0x0d, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 
0x5f, 0x6b, 0x65, 0x79,
-       0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x65, 0x6e, 0x63, 0x72, 
0x79, 0x70, 0x74, 0x65,
-       0x64, 0x4b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6d, 0x61, 0x63, 
0x18, 0x03, 0x20, 0x01,
-       0x28, 0x0c, 0x52, 0x04, 0x68, 0x6d, 0x61, 0x63, 0x22, 0x93, 0x02, 0x0a, 
0x0d, 0x50, 0x72, 0x6f,
-       0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x31, 
0x0a, 0x14, 0x70, 0x72,
-       0x6f, 0x74, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x64, 0x65, 0x73, 0x63, 
0x72, 0x69, 0x70, 0x74,
-       0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x70, 0x72, 
0x6f, 0x74, 0x65, 0x63,
-       0x74, 0x6f, 0x72, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 
0x72, 0x12, 0x2c, 0x0a,
-       0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 
0x0e, 0x32, 0x14, 0x2e,
-       0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x6f, 0x75, 
0x72, 0x63, 0x65, 0x54,
-       0x79, 0x70, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 
0x12, 0x0a, 0x04, 0x6e,
-       0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 
0x61, 0x6d, 0x65, 0x12,
-       0x2c, 0x0a, 0x05, 0x63, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 
0x28, 0x0b, 0x32, 0x16,
-       0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x48, 0x61, 
0x73, 0x68, 0x69, 0x6e,
-       0x67, 0x43, 0x6f, 0x73, 0x74, 0x73, 0x52, 0x05, 0x63, 0x6f, 0x73, 0x74, 
0x73, 0x12, 0x12, 0x0a,
-       0x04, 0x73, 0x61, 0x6c, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 
0x04, 0x73, 0x61, 0x6c,
-       0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 
0x28, 0x03, 0x52, 0x03,
-       0x75, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0b, 0x77, 0x72, 0x61, 0x70, 0x70, 
0x65, 0x64, 0x5f, 0x6b,
-       0x65, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6d, 
0x65, 0x74, 0x61, 0x64,
-       0x61, 0x74, 0x61, 0x2e, 0x57, 0x72, 0x61, 0x70, 0x70, 0x65, 0x64, 0x4b, 
0x65, 0x79, 0x44, 0x61,
-       0x74, 0x61, 0x52, 0x0a, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x64, 0x4b, 
0x65, 0x79, 0x22, 0xef,
-       0x02, 0x0a, 0x11, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 
0x6e, 0x4f, 0x70, 0x74,
-       0x69, 0x6f, 0x6e, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x64, 0x64, 
0x69, 0x6e, 0x67, 0x18,
-       0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x70, 0x61, 0x64, 0x64, 0x69, 
0x6e, 0x67, 0x12, 0x3c,
-       0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 
0x20, 0x01, 0x28, 0x0e,
-       0x32, 0x20, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 
0x45, 0x6e, 0x63, 0x72,
-       0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 
0x73, 0x2e, 0x4d, 0x6f,
-       0x64, 0x65, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 
0x12, 0x3e, 0x0a, 0x09,
-       0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 
0x01, 0x28, 0x0e, 0x32,
-       0x20, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x45, 
0x6e, 0x63, 0x72, 0x79,
-       0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 
0x2e, 0x4d, 0x6f, 0x64,
-       0x65, 0x52, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x73, 
0x12, 0x25, 0x0a, 0x0e,
-       0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 
0x6f, 0x6e, 0x18, 0x04,
-       0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 
0x56, 0x65, 0x72, 0x73,
-       0x69, 0x6f, 0x6e, 0x22, 0x9a, 0x01, 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 
0x12, 0x0b, 0x0a, 0x07,
-       0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x10, 0x00, 0x12, 0x0f, 0x0a, 
0x0b, 0x41, 0x45, 0x53,
-       0x5f, 0x32, 0x35, 0x36, 0x5f, 0x58, 0x54, 0x53, 0x10, 0x01, 0x12, 0x0f, 
0x0a, 0x0b, 0x41, 0x45,
-       0x53, 0x5f, 0x32, 0x35, 0x36, 0x5f, 0x47, 0x43, 0x4d, 0x10, 0x02, 0x12, 
0x0f, 0x0a, 0x0b, 0x41,
-       0x45, 0x53, 0x5f, 0x32, 0x35, 0x36, 0x5f, 0x43, 0x42, 0x43, 0x10, 0x03, 
0x12, 0x0f, 0x0a, 0x0b,
-       0x41, 0x45, 0x53, 0x5f, 0x32, 0x35, 0x36, 0x5f, 0x43, 0x54, 0x53, 0x10, 
0x04, 0x12, 0x0f, 0x0a,
-       0x0b, 0x41, 0x45, 0x53, 0x5f, 0x31, 0x32, 0x38, 0x5f, 0x43, 0x42, 0x43, 
0x10, 0x05, 0x12, 0x0f,
-       0x0a, 0x0b, 0x41, 0x45, 0x53, 0x5f, 0x31, 0x32, 0x38, 0x5f, 0x43, 0x54, 
0x53, 0x10, 0x06, 0x12,
-       0x0c, 0x0a, 0x08, 0x41, 0x64, 0x69, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x10, 
0x09, 0x12, 0x11, 0x0a,
-       0x0d, 0x41, 0x45, 0x53, 0x5f, 0x32, 0x35, 0x36, 0x5f, 0x48, 0x43, 0x54, 
0x52, 0x32, 0x10, 0x0a,
-       0x22, 0x80, 0x01, 0x0a, 0x10, 0x57, 0x72, 0x61, 0x70, 0x70, 0x65, 0x64, 
0x50, 0x6f, 0x6c, 0x69,
-       0x63, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x31, 0x0a, 0x14, 0x70, 0x72, 0x6f, 
0x74, 0x65, 0x63, 0x74,
-       0x6f, 0x72, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 
0x72, 0x18, 0x01, 0x20,
-       0x01, 0x28, 0x09, 0x52, 0x13, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 
0x6f, 0x72, 0x44, 0x65,
-       0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x39, 0x0a, 0x0b, 
0x77, 0x72, 0x61, 0x70,
-       0x70, 0x65, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 
0x0b, 0x32, 0x18, 0x2e,
-       0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x57, 0x72, 0x61, 
0x70, 0x70, 0x65, 0x64,
-       0x4b, 0x65, 0x79, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0a, 0x77, 0x72, 0x61, 
0x70, 0x70, 0x65, 0x64,
-       0x4b, 0x65, 0x79, 0x22, 0xb6, 0x01, 0x0a, 0x0a, 0x50, 0x6f, 0x6c, 0x69, 
0x63, 0x79, 0x44, 0x61,
-       0x74, 0x61, 0x12, 0x25, 0x0a, 0x0e, 0x6b, 0x65, 0x79, 0x5f, 0x64, 0x65, 
0x73, 0x63, 0x72, 0x69,
-       0x70, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 
0x6b, 0x65, 0x79, 0x44,
-       0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x35, 0x0a, 
0x07, 0x6f, 0x70, 0x74,
-       0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 
0x2e, 0x6d, 0x65, 0x74,
-       0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 
0x74, 0x69, 0x6f, 0x6e,
-       0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 
0x69, 0x6f, 0x6e, 0x73,
-       0x12, 0x4a, 0x0a, 0x13, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x64, 0x5f, 
0x70, 0x6f, 0x6c, 0x69,
-       0x63, 0x79, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 
0x0b, 0x32, 0x1a, 0x2e,
-       0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x57, 0x72, 0x61, 
0x70, 0x70, 0x65, 0x64,
-       0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4b, 0x65, 0x79, 0x52, 0x11, 0x77, 
0x72, 0x61, 0x70, 0x70,
-       0x65, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4b, 0x65, 0x79, 0x73, 
0x22, 0xb7, 0x02, 0x0a,
-       0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2c, 0x0a, 0x06, 0x73, 
0x6f, 0x75, 0x72, 0x63,
-       0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x6d, 0x65, 
0x74, 0x61, 0x64, 0x61,
-       0x74, 0x61, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 
0x65, 0x52, 0x06, 0x73,
-       0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x35, 0x0a, 0x0a, 0x68, 0x61, 0x73, 
0x68, 0x5f, 0x63, 0x6f,
-       0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 
0x6d, 0x65, 0x74, 0x61,
-       0x64, 0x61, 0x74, 0x61, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 
0x43, 0x6f, 0x73, 0x74,
-       0x73, 0x52, 0x09, 0x68, 0x61, 0x73, 0x68, 0x43, 0x6f, 0x73, 0x74, 0x73, 
0x12, 0x35, 0x0a, 0x07,
-       0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 
0x0b, 0x32, 0x1b, 0x2e,
-       0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x45, 0x6e, 0x63, 
0x72, 0x79, 0x70, 0x74,
-       0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 
0x6f, 0x70, 0x74, 0x69,
-       0x6f, 0x6e, 0x73, 0x12, 0x41, 0x0a, 0x1e, 0x75, 0x73, 0x65, 0x5f, 0x66, 
0x73, 0x5f, 0x6b, 0x65,
-       0x79, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x76, 0x31, 
0x5f, 0x70, 0x6f, 0x6c,
-       0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 
0x19, 0x75, 0x73, 0x65,
-       0x46, 0x73, 0x4b, 0x65, 0x79, 0x72, 0x69, 0x6e, 0x67, 0x46, 0x6f, 0x72, 
0x56, 0x31, 0x50, 0x6f,
-       0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x19, 0x61, 0x6c, 
0x6c, 0x6f, 0x77, 0x5f,
-       0x63, 0x72, 0x6f, 0x73, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 
0x65, 0x74, 0x61, 0x64,
-       0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x61, 
0x6c, 0x6c, 0x6f, 0x77,
-       0x43, 0x72, 0x6f, 0x73, 0x73, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x74, 
0x61, 0x64, 0x61, 0x74,
-       0x61, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 
0x70, 0x61, 0x74, 0x69,
-       0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2a, 0x51, 0x0a, 0x0a, 0x53, 0x6f, 
0x75, 0x72, 0x63, 0x65,
-       0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 
0x75, 0x6c, 0x74, 0x10,
-       0x00, 0x12, 0x12, 0x0a, 0x0e, 0x70, 0x61, 0x6d, 0x5f, 0x70, 0x61, 0x73, 
0x73, 0x70, 0x68, 0x72,
-       0x61, 0x73, 0x65, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x63, 0x75, 0x73, 
0x74, 0x6f, 0x6d, 0x5f,
-       0x70, 0x61, 0x73, 0x73, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x10, 0x02, 
0x12, 0x0b, 0x0a, 0x07,
-       0x72, 0x61, 0x77, 0x5f, 0x6b, 0x65, 0x79, 0x10, 0x03, 0x42, 0x24, 0x5a, 
0x22, 0x67, 0x69, 0x74,
-       0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 
0x6c, 0x65, 0x2f, 0x66,
-       0x73, 0x63, 0x72, 0x79, 0x70, 0x74, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 
0x61, 0x74, 0x61, 0x62,
-       0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
+const file_metadata_metadata_proto_rawDesc = "" +
+       "\n" +
+       "\x17metadata/metadata.proto\x12\bmetadata\"\x87\x01\n" +
+       "\fHashingCosts\x12\x12\n" +
+       "\x04time\x18\x02 \x01(\x03R\x04time\x12\x16\n" +
+       "\x06memory\x18\x03 \x01(\x03R\x06memory\x12 \n" +
+       "\vparallelism\x18\x04 \x01(\x03R\vparallelism\x12)\n" +
+       "\x10truncation_fixed\x18\x05 \x01(\bR\x0ftruncationFixed\"Y\n" +
+       "\x0eWrappedKeyData\x12\x0e\n" +
+       "\x02IV\x18\x01 \x01(\fR\x02IV\x12#\n" +
+       "\rencrypted_key\x18\x02 \x01(\fR\fencryptedKey\x12\x12\n" +
+       "\x04hmac\x18\x03 \x01(\fR\x04hmac\"\x93\x02\n" +
+       "\rProtectorData\x121\n" +
+       "\x14protector_descriptor\x18\x01 
\x01(\tR\x13protectorDescriptor\x12,\n" +
+       "\x06source\x18\x02 
\x01(\x0e2\x14.metadata.SourceTypeR\x06source\x12\x12\n" +
+       "\x04name\x18\x03 \x01(\tR\x04name\x12,\n" +
+       "\x05costs\x18\x04 
\x01(\v2\x16.metadata.HashingCostsR\x05costs\x12\x12\n" +
+       "\x04salt\x18\x05 \x01(\fR\x04salt\x12\x10\n" +
+       "\x03uid\x18\x06 \x01(\x03R\x03uid\x129\n" +
+       "\vwrapped_key\x18\a \x01(\v2\x18.metadata.WrappedKeyDataR\n" +
+       "wrappedKey\"\xef\x02\n" +
+       "\x11EncryptionOptions\x12\x18\n" +
+       "\apadding\x18\x01 \x01(\x03R\apadding\x12<\n" +
+       "\bcontents\x18\x02 \x01(\x0e2 
.metadata.EncryptionOptions.ModeR\bcontents\x12>\n" +
+       "\tfilenames\x18\x03 \x01(\x0e2 
.metadata.EncryptionOptions.ModeR\tfilenames\x12%\n" +
+       "\x0epolicy_version\x18\x04 \x01(\x03R\rpolicyVersion\"\x9a\x01\n" +
+       "\x04Mode\x12\v\n" +
+       "\adefault\x10\x00\x12\x0f\n" +
+       "\vAES_256_XTS\x10\x01\x12\x0f\n" +
+       "\vAES_256_GCM\x10\x02\x12\x0f\n" +
+       "\vAES_256_CBC\x10\x03\x12\x0f\n" +
+       "\vAES_256_CTS\x10\x04\x12\x0f\n" +
+       "\vAES_128_CBC\x10\x05\x12\x0f\n" +
+       "\vAES_128_CTS\x10\x06\x12\f\n" +
+       "\bAdiantum\x10\t\x12\x11\n" +
+       "\rAES_256_HCTR2\x10\n" +
+       "\"\x80\x01\n" +
+       "\x10WrappedPolicyKey\x121\n" +
+       "\x14protector_descriptor\x18\x01 
\x01(\tR\x13protectorDescriptor\x129\n" +
+       "\vwrapped_key\x18\x02 \x01(\v2\x18.metadata.WrappedKeyDataR\n" +
+       "wrappedKey\"\xb6\x01\n" +
+       "\n" +
+       "PolicyData\x12%\n" +
+       "\x0ekey_descriptor\x18\x01 \x01(\tR\rkeyDescriptor\x125\n" +
+       "\aoptions\x18\x02 
\x01(\v2\x1b.metadata.EncryptionOptionsR\aoptions\x12J\n" +
+       "\x13wrapped_policy_keys\x18\x03 
\x03(\v2\x1a.metadata.WrappedPolicyKeyR\x11wrappedPolicyKeys\"\xb7\x02\n" +
+       "\x06Config\x12,\n" +
+       "\x06source\x18\x01 
\x01(\x0e2\x14.metadata.SourceTypeR\x06source\x125\n" +
+       "\n" +
+       "hash_costs\x18\x02 
\x01(\v2\x16.metadata.HashingCostsR\thashCosts\x125\n" +
+       "\aoptions\x18\x04 
\x01(\v2\x1b.metadata.EncryptionOptionsR\aoptions\x12A\n" +
+       "\x1euse_fs_keyring_for_v1_policies\x18\x05 
\x01(\bR\x19useFsKeyringForV1Policies\x129\n" +
+       "\x19allow_cross_user_metadata\x18\x06 
\x01(\bR\x16allowCrossUserMetadataJ\x04\b\x03\x10\x04R\rcompatibility*Q\n" +
+       "\n" +
+       "SourceType\x12\v\n" +
+       "\adefault\x10\x00\x12\x12\n" +
+       "\x0epam_passphrase\x10\x01\x12\x15\n" +
+       "\x11custom_passphrase\x10\x02\x12\v\n" +
+       "\araw_key\x10\x03B$Z\"github.com/google/fscrypt/metadatab\x06proto3"
 
 var (
        file_metadata_metadata_proto_rawDescOnce sync.Once
-       file_metadata_metadata_proto_rawDescData = 
file_metadata_metadata_proto_rawDesc
+       file_metadata_metadata_proto_rawDescData []byte
 )
 
 func file_metadata_metadata_proto_rawDescGZIP() []byte {
        file_metadata_metadata_proto_rawDescOnce.Do(func() {
-               file_metadata_metadata_proto_rawDescData = 
protoimpl.X.CompressGZIP(file_metadata_metadata_proto_rawDescData)
+               file_metadata_metadata_proto_rawDescData = 
protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_metadata_metadata_proto_rawDesc),
 len(file_metadata_metadata_proto_rawDesc)))
        })
        return file_metadata_metadata_proto_rawDescData
 }
 
 var file_metadata_metadata_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
 var file_metadata_metadata_proto_msgTypes = make([]protoimpl.MessageInfo, 7)
-var file_metadata_metadata_proto_goTypes = []interface{}{
+var file_metadata_metadata_proto_goTypes = []any{
        (SourceType)(0),             // 0: metadata.SourceType
        (EncryptionOptions_Mode)(0), // 1: metadata.EncryptionOptions.Mode
        (*HashingCosts)(nil),        // 2: metadata.HashingCosts
@@ -828,97 +760,11 @@
        if File_metadata_metadata_proto != nil {
                return
        }
-       if !protoimpl.UnsafeEnabled {
-               file_metadata_metadata_proto_msgTypes[0].Exporter = func(v 
interface{}, i int) interface{} {
-                       switch v := v.(*HashingCosts); i {
-                       case 0:
-                               return &v.state
-                       case 1:
-                               return &v.sizeCache
-                       case 2:
-                               return &v.unknownFields
-                       default:
-                               return nil
-                       }
-               }
-               file_metadata_metadata_proto_msgTypes[1].Exporter = func(v 
interface{}, i int) interface{} {
-                       switch v := v.(*WrappedKeyData); i {
-                       case 0:
-                               return &v.state
-                       case 1:
-                               return &v.sizeCache
-                       case 2:
-                               return &v.unknownFields
-                       default:
-                               return nil
-                       }
-               }
-               file_metadata_metadata_proto_msgTypes[2].Exporter = func(v 
interface{}, i int) interface{} {
-                       switch v := v.(*ProtectorData); i {
-                       case 0:
-                               return &v.state
-                       case 1:
-                               return &v.sizeCache
-                       case 2:
-                               return &v.unknownFields
-                       default:
-                               return nil
-                       }
-               }
-               file_metadata_metadata_proto_msgTypes[3].Exporter = func(v 
interface{}, i int) interface{} {
-                       switch v := v.(*EncryptionOptions); i {
-                       case 0:
-                               return &v.state
-                       case 1:
-                               return &v.sizeCache
-                       case 2:
-                               return &v.unknownFields
-                       default:
-                               return nil
-                       }
-               }
-               file_metadata_metadata_proto_msgTypes[4].Exporter = func(v 
interface{}, i int) interface{} {
-                       switch v := v.(*WrappedPolicyKey); i {
-                       case 0:
-                               return &v.state
-                       case 1:
-                               return &v.sizeCache
-                       case 2:
-                               return &v.unknownFields
-                       default:
-                               return nil
-                       }
-               }
-               file_metadata_metadata_proto_msgTypes[5].Exporter = func(v 
interface{}, i int) interface{} {
-                       switch v := v.(*PolicyData); i {
-                       case 0:
-                               return &v.state
-                       case 1:
-                               return &v.sizeCache
-                       case 2:
-                               return &v.unknownFields
-                       default:
-                               return nil
-                       }
-               }
-               file_metadata_metadata_proto_msgTypes[6].Exporter = func(v 
interface{}, i int) interface{} {
-                       switch v := v.(*Config); i {
-                       case 0:
-                               return &v.state
-                       case 1:
-                               return &v.sizeCache
-                       case 2:
-                               return &v.unknownFields
-                       default:
-                               return nil
-                       }
-               }
-       }
        type x struct{}
        out := protoimpl.TypeBuilder{
                File: protoimpl.DescBuilder{
                        GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-                       RawDescriptor: file_metadata_metadata_proto_rawDesc,
+                       RawDescriptor: 
unsafe.Slice(unsafe.StringData(file_metadata_metadata_proto_rawDesc), 
len(file_metadata_metadata_proto_rawDesc)),
                        NumEnums:      2,
                        NumMessages:   7,
                        NumExtensions: 0,
@@ -930,7 +776,6 @@
                MessageInfos:      file_metadata_metadata_proto_msgTypes,
        }.Build()
        File_metadata_metadata_proto = out.File
-       file_metadata_metadata_proto_rawDesc = nil
        file_metadata_metadata_proto_goTypes = nil
        file_metadata_metadata_proto_depIdxs = nil
 }

++++++ vendor.tar.xz ++++++
++++ 247677 lines of diff (skipped)

Reply via email to