blob: 1cdf2d51bb9089bf93808d974344c6cf9b4ad645 [file] [log] [blame] [edit]
// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package pathperms
import (
"bytes"
"crypto/md5"
"encoding/hex"
"v.io/v23/security/access"
)
// ComputeVersion produces the tag value returned by access.GetPermissions()
// (per v23/services/permissions/service.vdl) that GetPermissions/SetPermissions
// use to determine if the Permissions have been asynchronously modified.
func ComputeVersion(perms access.Permissions) (string, error) {
b := new(bytes.Buffer)
if err := perms.WriteTo(b); err != nil {
return "", err
}
md5hash := md5.Sum(b.Bytes())
version := hex.EncodeToString(md5hash[:])
return version, nil
}