| // 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. |
| |
| var vom = require('../vom'); |
| var vdlSecurity = require('../gen-vdl/v.io/v23/security'); |
| |
| module.exports = { |
| createCaveat: createCaveat, |
| createConstCaveat: createConstCaveat, |
| createExpiryCaveat: createExpiryCaveat, |
| createMethodCaveat: createMethodCaveat, |
| unconstrainedUse: createConstCaveat(true) |
| }; |
| |
| /** |
| * createCaveat returns a [Caveat]{@link module:vanadium.security.Caveat} |
| * that requires validation by the validation function correponding |
| * to cavDesc and uses the provided parameters. |
| * @param {module:vanadium.security.CaveatDescriptor} cavDesc The type of |
| * caveat that is being created. |
| * @param {*} data The data for the caveat. |
| * @return module:vanadium.security.Caveat |
| * @memberof module:vanadium.security |
| */ |
| function createCaveat(cavDesc, data) { |
| return new vdlSecurity.Caveat({ |
| id: cavDesc.id, |
| paramVom: vom.encode(data, cavDesc.paramType) |
| }); |
| } |
| |
| /** |
| * createConstCaveat returns a [Caveat]{@link module:vanadium.security.Caveat} |
| * that validates iff value is true. |
| * @param {boolean} value |
| * @returns module:vanadium.security.Caveat |
| * @memberof module:vanadium.security |
| */ |
| function createConstCaveat(value) { |
| return createCaveat(vdlSecurity.ConstCaveat, value); |
| } |
| |
| /** |
| * createExpiryCaveat returns a [Caveat]{@link module:vanadium.security.Caveat} |
| * that validates iff the current time is before t |
| * @param {Date} expiryTime The time the caveat expires. |
| * @returns module:vanadium.security.Caveat |
| * @memberof module:vanadium.security |
| */ |
| function createExpiryCaveat(expiryTime) { |
| return createCaveat(vdlSecurity.ExpiryCaveat, expiryTime); |
| } |
| |
| /** |
| * createMethodCaveat returns a [Caveat]{@link module:vanadium.security.Caveat} |
| * that validates iff the method being invoked by the peer is listed in |
| * methods array passed in. |
| * @param {string[]} methods The methods that are allowed. |
| * @returns module:vanadium.security.Caveat |
| * @memberof module:vanadium.security |
| */ |
| function createMethodCaveat(methods) { |
| return createCaveat(vdlSecurity.MethodCaveat, methods); |
| } |
| |
| /** |
| * unconstrainedUse returns a [Caveat]{@link module:vanadium.security.Caveat} |
| * that never fails to validate. |
| * @name unconstrainedUse |
| * @returns module:vanadium.security.Caveat |
| * @memberof module:vanadium.security |
| */ |