blob: 1f2b17e0f5ced8a22f782a152cacacb4c39fda1c [file] [log] [blame]
// 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.
// This file was auto-generated by the vanadium vdl tool.
// Source: types.vdl
package security
import (
// VDL system imports
"v.io/v23/context"
"v.io/v23/i18n"
"v.io/v23/vdl"
"v.io/v23/verror"
"v.io/v23/vom"
// VDL user imports
"v.io/v23/uniqueid"
)
// BlessingPattern is a pattern that is matched by specific blessings.
//
// A pattern can either be a blessing (slash-separated human-readable string)
// or a blessing ending in "/$". A pattern ending in "/$" is matched exactly
// by the blessing specified by the pattern string with the "/$" suffix stripped
// out. For example, the pattern "a/b/c/$" is matched by exactly by the blessing
// "a/b/c".
//
// A pattern not ending in "/$" is more permissive, and is also matched by blessings
// that are extensions of the pattern (including the pattern itself). For example, the
// pattern "a/b/c" is matched by the blessings "a/b/c", "a/b/c/x", "a/b/c/x/y", etc.
//
// TODO(ataly, ashankar): Define a formal BNF grammar for blessings and blessing patterns.
type BlessingPattern string
func (BlessingPattern) __VDLReflect(struct {
Name string `vdl:"v.io/v23/security.BlessingPattern"`
}) {
}
func (m BlessingPattern) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
if err := t.FromString(string(m), __VDLType_types_v_io_v23_security_BlessingPattern); err != nil {
return err
}
return nil
}
func (m BlessingPattern) MakeVDLTarget() vdl.Target {
return nil
}
func (m BlessingPattern) IsZero() bool {
var1 := (m == BlessingPattern(""))
return var1
}
// Hash identifies a cryptographic hash function approved for use in signature algorithms.
type Hash string
func (Hash) __VDLReflect(struct {
Name string `vdl:"v.io/v23/security.Hash"`
}) {
}
func (m Hash) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
if err := t.FromString(string(m), __VDLType_types_v_io_v23_security_Hash); err != nil {
return err
}
return nil
}
func (m Hash) MakeVDLTarget() vdl.Target {
return nil
}
func (m Hash) IsZero() bool {
var1 := (m == Hash(""))
return var1
}
// Signature represents a digital signature.
type Signature struct {
// Purpose of the signature. Can be used to prevent type attacks.
// (See Section 4.2 of http://www-users.cs.york.ac.uk/~jac/PublishedPapers/reviewV1_1997.pdf for example).
// The actual signature (R, S values for ECDSA keys) is produced by signing: Hash(Hash(message), Hash(Purpose)).
Purpose []byte
// Cryptographic hash function applied to the message before computing the signature.
Hash Hash
// Pair of integers that make up an ECDSA signature.
R []byte
S []byte
}
func (Signature) __VDLReflect(struct {
Name string `vdl:"v.io/v23/security.Signature"`
}) {
}
func (m *Signature) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
if __VDLType_types_v_io_v23_security_Signature == nil || __VDLTypetypes0 == nil {
panic("Initialization order error: types generated for FillVDLTarget not initialized. Consider moving caller to an init() block.")
}
fieldsTarget1, err := t.StartFields(tt)
if err != nil {
return err
}
var var2 bool
if len(m.Purpose) == 0 {
var2 = true
}
if !var2 {
keyTarget3, fieldTarget4, err := fieldsTarget1.StartField("Purpose")
if err != vdl.ErrFieldNoExist && err != nil {
return err
}
if err != vdl.ErrFieldNoExist {
if err := fieldTarget4.FromBytes([]byte(m.Purpose), __VDLTypetypes1); err != nil {
return err
}
if err := fieldsTarget1.FinishField(keyTarget3, fieldTarget4); err != nil {
return err
}
}
}
var5 := m.Hash.IsZero()
if !var5 {
keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("Hash")
if err != vdl.ErrFieldNoExist && err != nil {
return err
}
if err != vdl.ErrFieldNoExist {
if err := m.Hash.FillVDLTarget(fieldTarget7, __VDLType_types_v_io_v23_security_Hash); err != nil {
return err
}
if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
return err
}
}
}
var var8 bool
if len(m.R) == 0 {
var8 = true
}
if !var8 {
keyTarget9, fieldTarget10, err := fieldsTarget1.StartField("R")
if err != vdl.ErrFieldNoExist && err != nil {
return err
}
if err != vdl.ErrFieldNoExist {
if err := fieldTarget10.FromBytes([]byte(m.R), __VDLTypetypes1); err != nil {
return err
}
if err := fieldsTarget1.FinishField(keyTarget9, fieldTarget10); err != nil {
return err
}
}
}
var var11 bool
if len(m.S) == 0 {
var11 = true
}
if !var11 {
keyTarget12, fieldTarget13, err := fieldsTarget1.StartField("S")
if err != vdl.ErrFieldNoExist && err != nil {
return err
}
if err != vdl.ErrFieldNoExist {
if err := fieldTarget13.FromBytes([]byte(m.S), __VDLTypetypes1); err != nil {
return err
}
if err := fieldsTarget1.FinishField(keyTarget12, fieldTarget13); err != nil {
return err
}
}
}
if err := t.FinishFields(fieldsTarget1); err != nil {
return err
}
return nil
}
func (m *Signature) MakeVDLTarget() vdl.Target {
return nil
}
func (m *Signature) IsZero() bool {
var1 := true
var var2 bool
if len(m.Purpose) == 0 {
var2 = true
}
var1 = var1 && var2
var3 := m.Hash.IsZero()
var1 = var1 && var3
var var4 bool
if len(m.R) == 0 {
var4 = true
}
var1 = var1 && var4
var var5 bool
if len(m.S) == 0 {
var5 = true
}
var1 = var1 && var5
return var1
}
// ThirdPartyRequirements specifies the information required by the third-party
// that will issue discharges for third-party caveats.
//
// These requirements are typically used to construct a DischargeImpetus, which
// will be sent to the third-party.
type ThirdPartyRequirements struct {
ReportServer bool // The blessings presented by the server of an IPC call.
ReportMethod bool // The name of the method being invoked.
ReportArguments bool // Arguments to the method being invoked.
}
func (ThirdPartyRequirements) __VDLReflect(struct {
Name string `vdl:"v.io/v23/security.ThirdPartyRequirements"`
}) {
}
func (m *ThirdPartyRequirements) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
if __VDLType_types_v_io_v23_security_ThirdPartyRequirements == nil || __VDLTypetypes2 == nil {
panic("Initialization order error: types generated for FillVDLTarget not initialized. Consider moving caller to an init() block.")
}
fieldsTarget1, err := t.StartFields(tt)
if err != nil {
return err
}
var2 := (m.ReportServer == false)
if !var2 {
keyTarget3, fieldTarget4, err := fieldsTarget1.StartField("ReportServer")
if err != vdl.ErrFieldNoExist && err != nil {
return err
}
if err != vdl.ErrFieldNoExist {
if err := fieldTarget4.FromBool(bool(m.ReportServer), vdl.BoolType); err != nil {
return err
}
if err := fieldsTarget1.FinishField(keyTarget3, fieldTarget4); err != nil {
return err
}
}
}
var5 := (m.ReportMethod == false)
if !var5 {
keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("ReportMethod")
if err != vdl.ErrFieldNoExist && err != nil {
return err
}
if err != vdl.ErrFieldNoExist {
if err := fieldTarget7.FromBool(bool(m.ReportMethod), vdl.BoolType); err != nil {
return err
}
if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
return err
}
}
}
var8 := (m.ReportArguments == false)
if !var8 {
keyTarget9, fieldTarget10, err := fieldsTarget1.StartField("ReportArguments")
if err != vdl.ErrFieldNoExist && err != nil {
return err
}
if err != vdl.ErrFieldNoExist {
if err := fieldTarget10.FromBool(bool(m.ReportArguments), vdl.BoolType); err != nil {
return err
}
if err := fieldsTarget1.FinishField(keyTarget9, fieldTarget10); err != nil {
return err
}
}
}
if err := t.FinishFields(fieldsTarget1); err != nil {
return err
}
return nil
}
func (m *ThirdPartyRequirements) MakeVDLTarget() vdl.Target {
return nil
}
func (m *ThirdPartyRequirements) IsZero() bool {
var1 := (*m == ThirdPartyRequirements{})
return var1
}
// DischargeImpetus encapsulates the motivation for a discharge being sought.
//
// These values are reported by a principal that is requesting a Discharge for
// a third-party caveat on one of its blessings. The third-party issues
// discharges cannot safely assume that all these values are provided, or that
// they are provided honestly.
//
// Implementations of services that issue discharges are encouraged to add
// caveats to the discharge that bind the discharge to the impetus, thereby
// rendering the discharge unsuable for any other purpose.
type DischargeImpetus struct {
Server []BlessingPattern // The client intends to use the discharge to communicate with a server that has a blessing matching one of the patterns in this set.
Method string // Name of the method being invoked by the client.
Arguments []*vom.RawBytes // Arguments to the method invocation.
}
func (DischargeImpetus) __VDLReflect(struct {
Name string `vdl:"v.io/v23/security.DischargeImpetus"`
}) {
}
func (m *DischargeImpetus) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
if __VDLType_types_v_io_v23_security_DischargeImpetus == nil || __VDLTypetypes3 == nil {
panic("Initialization order error: types generated for FillVDLTarget not initialized. Consider moving caller to an init() block.")
}
fieldsTarget1, err := t.StartFields(tt)
if err != nil {
return err
}
var var2 bool
if len(m.Server) == 0 {
var2 = true
}
if !var2 {
keyTarget3, fieldTarget4, err := fieldsTarget1.StartField("Server")
if err != vdl.ErrFieldNoExist && err != nil {
return err
}
if err != vdl.ErrFieldNoExist {
listTarget5, err := fieldTarget4.StartList(__VDLTypetypes4, len(m.Server))
if err != nil {
return err
}
for i, elem7 := range m.Server {
elemTarget6, err := listTarget5.StartElem(i)
if err != nil {
return err
}
if err := elem7.FillVDLTarget(elemTarget6, __VDLType_types_v_io_v23_security_BlessingPattern); err != nil {
return err
}
if err := listTarget5.FinishElem(elemTarget6); err != nil {
return err
}
}
if err := fieldTarget4.FinishList(listTarget5); err != nil {
return err
}
if err := fieldsTarget1.FinishField(keyTarget3, fieldTarget4); err != nil {
return err
}
}
}
var8 := (m.Method == "")
if !var8 {
keyTarget9, fieldTarget10, err := fieldsTarget1.StartField("Method")
if err != vdl.ErrFieldNoExist && err != nil {
return err
}
if err != vdl.ErrFieldNoExist {
if err := fieldTarget10.FromString(string(m.Method), vdl.StringType); err != nil {
return err
}
if err := fieldsTarget1.FinishField(keyTarget9, fieldTarget10); err != nil {
return err
}
}
}
var var11 bool
if len(m.Arguments) == 0 {
var11 = true
}
if !var11 {
keyTarget12, fieldTarget13, err := fieldsTarget1.StartField("Arguments")
if err != vdl.ErrFieldNoExist && err != nil {
return err
}
if err != vdl.ErrFieldNoExist {
listTarget14, err := fieldTarget13.StartList(__VDLTypetypes5, len(m.Arguments))
if err != nil {
return err
}
for i, elem16 := range m.Arguments {
elemTarget15, err := listTarget14.StartElem(i)
if err != nil {
return err
}
if elem16 == nil {
if err := elemTarget15.FromNil(vdl.AnyType); err != nil {
return err
}
} else {
if err := elem16.FillVDLTarget(elemTarget15, vdl.AnyType); err != nil {
return err
}
}
if err := listTarget14.FinishElem(elemTarget15); err != nil {
return err
}
}
if err := fieldTarget13.FinishList(listTarget14); err != nil {
return err
}
if err := fieldsTarget1.FinishField(keyTarget12, fieldTarget13); err != nil {
return err
}
}
}
if err := t.FinishFields(fieldsTarget1); err != nil {
return err
}
return nil
}
func (m *DischargeImpetus) MakeVDLTarget() vdl.Target {
return nil
}
func (m *DischargeImpetus) IsZero() bool {
var1 := true
var var2 bool
if len(m.Server) == 0 {
var2 = true
}
var1 = var1 && var2
var3 := (m.Method == "")
var1 = var1 && var3
var var4 bool
if len(m.Arguments) == 0 {
var4 = true
}
var1 = var1 && var4
return var1
}
// Certificate represents the cryptographic proof of the binding of
// extensions of a blessing held by one principal to another (represented by
// a public key) under specific caveats.
//
// For example, if a principal P1 has a blessing "alice", then it can
// extend it with a Certificate to generate the blessing "alice/friend" for
// another principal P2.
type Certificate struct {
Extension string // Human-readable string extension bound to PublicKey.
PublicKey []byte // DER-encoded PKIX public key.
Caveats []Caveat // Caveats on the binding of Name to PublicKey.
Signature Signature // Signature by the blessing principal that binds the extension to the public key.
}
func (Certificate) __VDLReflect(struct {
Name string `vdl:"v.io/v23/security.Certificate"`
}) {
}
func (m *Certificate) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
if __VDLType_types_v_io_v23_security_Certificate == nil || __VDLTypetypes6 == nil {
panic("Initialization order error: types generated for FillVDLTarget not initialized. Consider moving caller to an init() block.")
}
fieldsTarget1, err := t.StartFields(tt)
if err != nil {
return err
}
var2 := (m.Extension == "")
if !var2 {
keyTarget3, fieldTarget4, err := fieldsTarget1.StartField("Extension")
if err != vdl.ErrFieldNoExist && err != nil {
return err
}
if err != vdl.ErrFieldNoExist {
if err := fieldTarget4.FromString(string(m.Extension), vdl.StringType); err != nil {
return err
}
if err := fieldsTarget1.FinishField(keyTarget3, fieldTarget4); err != nil {
return err
}
}
}
var var5 bool
if len(m.PublicKey) == 0 {
var5 = true
}
if !var5 {
keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("PublicKey")
if err != vdl.ErrFieldNoExist && err != nil {
return err
}
if err != vdl.ErrFieldNoExist {
if err := fieldTarget7.FromBytes([]byte(m.PublicKey), __VDLTypetypes1); err != nil {
return err
}
if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
return err
}
}
}
var var8 bool
if len(m.Caveats) == 0 {
var8 = true
}
if !var8 {
keyTarget9, fieldTarget10, err := fieldsTarget1.StartField("Caveats")
if err != vdl.ErrFieldNoExist && err != nil {
return err
}
if err != vdl.ErrFieldNoExist {
listTarget11, err := fieldTarget10.StartList(__VDLTypetypes7, len(m.Caveats))
if err != nil {
return err
}
for i, elem13 := range m.Caveats {
elemTarget12, err := listTarget11.StartElem(i)
if err != nil {
return err
}
if err := elem13.FillVDLTarget(elemTarget12, __VDLType_types_v_io_v23_security_Caveat); err != nil {
return err
}
if err := listTarget11.FinishElem(elemTarget12); err != nil {
return err
}
}
if err := fieldTarget10.FinishList(listTarget11); err != nil {
return err
}
if err := fieldsTarget1.FinishField(keyTarget9, fieldTarget10); err != nil {
return err
}
}
}
var14 := m.Signature.IsZero()
if !var14 {
keyTarget15, fieldTarget16, err := fieldsTarget1.StartField("Signature")
if err != vdl.ErrFieldNoExist && err != nil {
return err
}
if err != vdl.ErrFieldNoExist {
if err := m.Signature.FillVDLTarget(fieldTarget16, __VDLType_types_v_io_v23_security_Signature); err != nil {
return err
}
if err := fieldsTarget1.FinishField(keyTarget15, fieldTarget16); err != nil {
return err
}
}
}
if err := t.FinishFields(fieldsTarget1); err != nil {
return err
}
return nil
}
func (m *Certificate) MakeVDLTarget() vdl.Target {
return nil
}
func (m *Certificate) IsZero() bool {
var1 := true
var2 := (m.Extension == "")
var1 = var1 && var2
var var3 bool
if len(m.PublicKey) == 0 {
var3 = true
}
var1 = var1 && var3
var var4 bool
if len(m.Caveats) == 0 {
var4 = true
}
var1 = var1 && var4
var5 := m.Signature.IsZero()
var1 = var1 && var5
return var1
}
// CaveatDescriptor defines an association between a caveat validation function
// (addressed by globally unique identifier) and the data needed by the
// validation function.
//
// For a validator to be invoked, a validation function must be registered with
// the validator description in the language that the function is defined in.
type CaveatDescriptor struct {
Id uniqueid.Id // The identifier of the caveat validation function.
ParamType *vdl.Type // The type of the parameter expected by the validation function.
}
func (CaveatDescriptor) __VDLReflect(struct {
Name string `vdl:"v.io/v23/security.CaveatDescriptor"`
}) {
}
func (m *CaveatDescriptor) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
if __VDLType_types_v_io_v23_security_CaveatDescriptor == nil || __VDLTypetypes8 == nil {
panic("Initialization order error: types generated for FillVDLTarget not initialized. Consider moving caller to an init() block.")
}
fieldsTarget1, err := t.StartFields(tt)
if err != nil {
return err
}
var2 := m.Id.IsZero()
if !var2 {
keyTarget3, fieldTarget4, err := fieldsTarget1.StartField("Id")
if err != vdl.ErrFieldNoExist && err != nil {
return err
}
if err != vdl.ErrFieldNoExist {
if err := m.Id.FillVDLTarget(fieldTarget4, __VDLType_types_v_io_v23_uniqueid_Id); err != nil {
return err
}
if err := fieldsTarget1.FinishField(keyTarget3, fieldTarget4); err != nil {
return err
}
}
}
var5 := (m.ParamType == vdl.AnyType)
if !var5 {
keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("ParamType")
if err != vdl.ErrFieldNoExist && err != nil {
return err
}
if err != vdl.ErrFieldNoExist {
typeObjectVal8 := m.ParamType
if typeObjectVal8 == nil {
typeObjectVal8 = vdl.AnyType
}
if err := fieldTarget7.FromTypeObject(typeObjectVal8); err != nil {
return err
}
if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
return err
}
}
}
if err := t.FinishFields(fieldsTarget1); err != nil {
return err
}
return nil
}
func (m *CaveatDescriptor) MakeVDLTarget() vdl.Target {
return nil
}
func (m *CaveatDescriptor) IsZero() bool {
var1 := (*m == CaveatDescriptor{
ParamType: vdl.AnyType,
})
return var1
}
// Caveat is a condition on the validity of a blessing/discharge.
//
// These conditions are provided when asking a principal to create
// a blessing/discharge and are verified when extracting blessings
// (Blessings.ForName in the Go API).
//
// Given a Hash, the message digest of a caveat is:
// Hash(Hash(Id), Hash(ParamVom))
type Caveat struct {
Id uniqueid.Id // The identifier of the caveat validation function.
ParamVom []byte // VOM-encoded bytes of the parameters to be provided to the validation function.
}
func (Caveat) __VDLReflect(struct {
Name string `vdl:"v.io/v23/security.Caveat"`
}) {
}
func (m *Caveat) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
if __VDLType_types_v_io_v23_security_Caveat == nil || __VDLTypetypes9 == nil {
panic("Initialization order error: types generated for FillVDLTarget not initialized. Consider moving caller to an init() block.")
}
fieldsTarget1, err := t.StartFields(tt)
if err != nil {
return err
}
var2 := m.Id.IsZero()
if !var2 {
keyTarget3, fieldTarget4, err := fieldsTarget1.StartField("Id")
if err != vdl.ErrFieldNoExist && err != nil {
return err
}
if err != vdl.ErrFieldNoExist {
if err := m.Id.FillVDLTarget(fieldTarget4, __VDLType_types_v_io_v23_uniqueid_Id); err != nil {
return err
}
if err := fieldsTarget1.FinishField(keyTarget3, fieldTarget4); err != nil {
return err
}
}
}
var var5 bool
if len(m.ParamVom) == 0 {
var5 = true
}
if !var5 {
keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("ParamVom")
if err != vdl.ErrFieldNoExist && err != nil {
return err
}
if err != vdl.ErrFieldNoExist {
if err := fieldTarget7.FromBytes([]byte(m.ParamVom), __VDLTypetypes1); err != nil {
return err
}
if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
return err
}
}
}
if err := t.FinishFields(fieldsTarget1); err != nil {
return err
}
return nil
}
func (m *Caveat) MakeVDLTarget() vdl.Target {
return nil
}
func (m *Caveat) IsZero() bool {
var1 := true
var2 := m.Id.IsZero()
var1 = var1 && var2
var var3 bool
if len(m.ParamVom) == 0 {
var3 = true
}
var1 = var1 && var3
return var1
}
// WireBlessings encapsulates wire format of a set of blessings and the
// corresponding cryptographic proof that binds them to a principal
// (identified by a public key).
//
// This structure is the "wire" format for sending and receiving blessings
// in RPCs or marshaling to persistent storage. Typically, languages will
// provide a factory function that converts this wire representation to
// a more usable object to inspect and manipulate these blessings.
type WireBlessings struct {
// CertificateChains is an array of chains of certificates that bind
// a blessing to the public key in the last certificate of the chain.
CertificateChains [][]Certificate
}
func (WireBlessings) __VDLReflect(struct {
Name string `vdl:"v.io/v23/security.WireBlessings"`
}) {
}
func (m *WireBlessings) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
__VDLEnsureNativeBuilt_types()
fieldsTarget1, err := t.StartFields(tt)
if err != nil {
return err
}
var var2 bool
if len(m.CertificateChains) == 0 {
var2 = true
}
if !var2 {
keyTarget3, fieldTarget4, err := fieldsTarget1.StartField("CertificateChains")
if err != vdl.ErrFieldNoExist && err != nil {
return err
}
if err != vdl.ErrFieldNoExist {
listTarget5, err := fieldTarget4.StartList(__VDLTypetypes11, len(m.CertificateChains))
if err != nil {
return err
}
for i, elem7 := range m.CertificateChains {
elemTarget6, err := listTarget5.StartElem(i)
if err != nil {
return err
}
listTarget8, err := elemTarget6.StartList(__VDLTypetypes12, len(elem7))
if err != nil {
return err
}
for i, elem10 := range elem7 {
elemTarget9, err := listTarget8.StartElem(i)
if err != nil {
return err
}
if err := elem10.FillVDLTarget(elemTarget9, __VDLType_types_v_io_v23_security_Certificate); err != nil {
return err
}
if err := listTarget8.FinishElem(elemTarget9); err != nil {
return err
}
}
if err := elemTarget6.FinishList(listTarget8); err != nil {
return err
}
if err := listTarget5.FinishElem(elemTarget6); err != nil {
return err
}
}
if err := fieldTarget4.FinishList(listTarget5); err != nil {
return err
}
if err := fieldsTarget1.FinishField(keyTarget3, fieldTarget4); err != nil {
return err
}
}
}
if err := t.FinishFields(fieldsTarget1); err != nil {
return err
}
return nil
}
func (m *WireBlessings) MakeVDLTarget() vdl.Target {
return nil
}
func (m *WireBlessings) IsZero() bool {
var1 := vdl.ValueOf(m).IsZero()
return var1
}
type (
// WireDischarge represents any single field of the WireDischarge union type.
//
// WireDischarge encapsulates the wire format of a third-party caveat
// Discharge.
WireDischarge interface {
// Index returns the field index.
Index() int
// Interface returns the field value as an interface.
Interface() interface{}
// Name returns the field name.
Name() string
// __VDLReflect describes the WireDischarge union type.
__VDLReflect(__WireDischargeReflect)
FillVDLTarget(vdl.Target, *vdl.Type) error
IsZero() bool
}
// WireDischargePublicKey represents field PublicKey of the WireDischarge union type.
WireDischargePublicKey struct{ Value publicKeyDischarge } // Discharge for PublicKeyThirdPartyCaveat
// __WireDischargeReflect describes the WireDischarge union type.
__WireDischargeReflect struct {
Name string `vdl:"v.io/v23/security.WireDischarge"`
Type WireDischarge
Union struct {
PublicKey WireDischargePublicKey
}
}
)
func (x WireDischargePublicKey) Index() int { return 0 }
func (x WireDischargePublicKey) Interface() interface{} { return x.Value }
func (x WireDischargePublicKey) Name() string { return "PublicKey" }
func (x WireDischargePublicKey) __VDLReflect(__WireDischargeReflect) {}
func (m WireDischargePublicKey) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
fieldsTarget1, err := t.StartFields(__VDLType_types_v_io_v23_security_WireDischarge)
if err != nil {
return err
}
keyTarget2, fieldTarget3, err := fieldsTarget1.StartField("PublicKey")
if err != nil {
return err
}
if err := m.Value.FillVDLTarget(fieldTarget3, __VDLType_types_v_io_v23_security_publicKeyDischarge); err != nil {
return err
}
if err := fieldsTarget1.FinishField(keyTarget2, fieldTarget3); err != nil {
return err
}
if err := t.FinishFields(fieldsTarget1); err != nil {
return err
}
return nil
}
func (m WireDischargePublicKey) MakeVDLTarget() vdl.Target {
return nil
}
func (m WireDischargePublicKey) IsZero() bool {
var1 := vdl.ValueOf(m).IsZero()
return var1
}
// RejectedBlessing describes why a blessing failed validation.
type RejectedBlessing struct {
Blessing string
Err error
}
func (RejectedBlessing) __VDLReflect(struct {
Name string `vdl:"v.io/v23/security.RejectedBlessing"`
}) {
}
func (m *RejectedBlessing) FillVDLTarget(t vdl.Target, tt *vdl.Type) error {
if __VDLType_types_v_io_v23_security_RejectedBlessing == nil || __VDLTypetypes13 == nil {
panic("Initialization order error: types generated for FillVDLTarget not initialized. Consider moving caller to an init() block.")
}
fieldsTarget1, err := t.StartFields(tt)
if err != nil {
return err
}
var2 := (m.Blessing == "")
if !var2 {
keyTarget3, fieldTarget4, err := fieldsTarget1.StartField("Blessing")
if err != vdl.ErrFieldNoExist && err != nil {
return err
}
if err != vdl.ErrFieldNoExist {
if err := fieldTarget4.FromString(string(m.Blessing), vdl.StringType); err != nil {
return err
}
if err := fieldsTarget1.FinishField(keyTarget3, fieldTarget4); err != nil {
return err
}
}
}
var5 := (m.Err == (error)(nil))
if !var5 {
keyTarget6, fieldTarget7, err := fieldsTarget1.StartField("Err")
if err != vdl.ErrFieldNoExist && err != nil {
return err
}
if err != vdl.ErrFieldNoExist {
if m.Err == nil {
if err := fieldTarget7.FromNil(vdl.ErrorType); err != nil {
return err
}
} else {
var wireError8 vdl.WireError
if err := verror.WireFromNative(&wireError8, m.Err); err != nil {
return err
}
if err := wireError8.FillVDLTarget(fieldTarget7, vdl.ErrorType); err != nil {
return err
}
}
if err := fieldsTarget1.FinishField(keyTarget6, fieldTarget7); err != nil {
return err
}
}
}
if err := t.FinishFields(fieldsTarget1); err != nil {
return err
}
return nil
}
func (m *RejectedBlessing) MakeVDLTarget() vdl.Target {
return nil
}
func (m *RejectedBlessing) IsZero() bool {
var1 := true
var2 := (m.Blessing == "")
var1 = var1 && var2
var3 := (m.Err == (error)(nil))
var1 = var1 && var3
return var1
}
func init() {
vdl.RegisterNative(WireBlessingsToNative, WireBlessingsFromNative)
vdl.RegisterNative(WireDischargeToNative, WireDischargeFromNative)
vdl.Register((*BlessingPattern)(nil))
vdl.Register((*Hash)(nil))
vdl.Register((*Signature)(nil))
vdl.Register((*ThirdPartyRequirements)(nil))
vdl.Register((*DischargeImpetus)(nil))
vdl.Register((*Certificate)(nil))
vdl.Register((*CaveatDescriptor)(nil))
vdl.Register((*Caveat)(nil))
vdl.Register((*WireBlessings)(nil))
vdl.Register((*WireDischarge)(nil))
vdl.Register((*RejectedBlessing)(nil))
}
// Type-check WireBlessings conversion functions.
var _ func(WireBlessings, *Blessings) error = WireBlessingsToNative
var _ func(*WireBlessings, Blessings) error = WireBlessingsFromNative
// Type-check WireDischarge conversion functions.
var _ func(WireDischarge, *Discharge) error = WireDischargeToNative
var _ func(*WireDischarge, Discharge) error = WireDischargeFromNative
var __VDLTypetypes9 *vdl.Type = vdl.TypeOf((*Caveat)(nil))
var __VDLTypetypes8 *vdl.Type = vdl.TypeOf((*CaveatDescriptor)(nil))
var __VDLTypetypes6 *vdl.Type = vdl.TypeOf((*Certificate)(nil))
var __VDLTypetypes3 *vdl.Type = vdl.TypeOf((*DischargeImpetus)(nil))
var __VDLTypetypes13 *vdl.Type = vdl.TypeOf((*RejectedBlessing)(nil))
var __VDLTypetypes0 *vdl.Type = vdl.TypeOf((*Signature)(nil))
var __VDLTypetypes2 *vdl.Type = vdl.TypeOf((*ThirdPartyRequirements)(nil))
var __VDLTypetypes10 *vdl.Type
func __VDLTypetypes10_gen() *vdl.Type {
__VDLTypetypes10Builder := vdl.TypeBuilder{}
__VDLTypetypes101 := __VDLTypetypes10Builder.Optional()
__VDLTypetypes102 := __VDLTypetypes10Builder.Struct()
__VDLTypetypes103 := __VDLTypetypes10Builder.Named("v.io/v23/security.WireBlessings").AssignBase(__VDLTypetypes102)
__VDLTypetypes104 := __VDLTypetypes10Builder.List()
__VDLTypetypes105 := __VDLTypetypes10Builder.List()
__VDLTypetypes106 := __VDLTypetypes10Builder.Struct()
__VDLTypetypes107 := __VDLTypetypes10Builder.Named("v.io/v23/security.Certificate").AssignBase(__VDLTypetypes106)
__VDLTypetypes108 := vdl.StringType
__VDLTypetypes106.AppendField("Extension", __VDLTypetypes108)
__VDLTypetypes109 := __VDLTypetypes10Builder.List()
__VDLTypetypes1010 := vdl.ByteType
__VDLTypetypes109.AssignElem(__VDLTypetypes1010)
__VDLTypetypes106.AppendField("PublicKey", __VDLTypetypes109)
__VDLTypetypes1011 := __VDLTypetypes10Builder.List()
__VDLTypetypes1012 := __VDLTypetypes10Builder.Struct()
__VDLTypetypes1013 := __VDLTypetypes10Builder.Named("v.io/v23/security.Caveat").AssignBase(__VDLTypetypes1012)
__VDLTypetypes1014 := __VDLTypetypes10Builder.Array()
__VDLTypetypes1015 := __VDLTypetypes10Builder.Named("v.io/v23/uniqueid.Id").AssignBase(__VDLTypetypes1014)
__VDLTypetypes1014.AssignElem(__VDLTypetypes1010)
__VDLTypetypes1014.AssignLen(16)
__VDLTypetypes1012.AppendField("Id", __VDLTypetypes1015)
__VDLTypetypes1012.AppendField("ParamVom", __VDLTypetypes109)
__VDLTypetypes1011.AssignElem(__VDLTypetypes1013)
__VDLTypetypes106.AppendField("Caveats", __VDLTypetypes1011)
__VDLTypetypes1016 := __VDLTypetypes10Builder.Struct()
__VDLTypetypes1017 := __VDLTypetypes10Builder.Named("v.io/v23/security.Signature").AssignBase(__VDLTypetypes1016)
__VDLTypetypes1016.AppendField("Purpose", __VDLTypetypes109)
__VDLTypetypes1018 := vdl.StringType
__VDLTypetypes1019 := __VDLTypetypes10Builder.Named("v.io/v23/security.Hash").AssignBase(__VDLTypetypes1018)
__VDLTypetypes1016.AppendField("Hash", __VDLTypetypes1019)
__VDLTypetypes1016.AppendField("R", __VDLTypetypes109)
__VDLTypetypes1016.AppendField("S", __VDLTypetypes109)
__VDLTypetypes106.AppendField("Signature", __VDLTypetypes1017)
__VDLTypetypes105.AssignElem(__VDLTypetypes107)
__VDLTypetypes104.AssignElem(__VDLTypetypes105)
__VDLTypetypes102.AppendField("CertificateChains", __VDLTypetypes104)
__VDLTypetypes101.AssignElem(__VDLTypetypes103)
__VDLTypetypes10Builder.Build()
__VDLTypetypes10v, err := __VDLTypetypes101.Built()
if err != nil {
panic(err)
}
return __VDLTypetypes10v
}
func init() {
__VDLTypetypes10 = __VDLTypetypes10_gen()
}
var __VDLTypetypes11 *vdl.Type = vdl.TypeOf([][]Certificate(nil))
var __VDLTypetypes5 *vdl.Type = vdl.TypeOf([]*vom.RawBytes(nil))
var __VDLTypetypes1 *vdl.Type = vdl.TypeOf([]byte(nil))
var __VDLTypetypes4 *vdl.Type = vdl.TypeOf([]BlessingPattern(nil))
var __VDLTypetypes7 *vdl.Type = vdl.TypeOf([]Caveat(nil))
var __VDLTypetypes12 *vdl.Type = vdl.TypeOf([]Certificate(nil))
var __VDLType_types_v_io_v23_security_BlessingPattern *vdl.Type = vdl.TypeOf(BlessingPattern(""))
var __VDLType_types_v_io_v23_security_Caveat *vdl.Type = vdl.TypeOf(Caveat{})
var __VDLType_types_v_io_v23_security_CaveatDescriptor *vdl.Type = vdl.TypeOf(CaveatDescriptor{
ParamType: vdl.AnyType,
})
var __VDLType_types_v_io_v23_security_Certificate *vdl.Type = vdl.TypeOf(Certificate{})
var __VDLType_types_v_io_v23_security_DischargeImpetus *vdl.Type = vdl.TypeOf(DischargeImpetus{})
var __VDLType_types_v_io_v23_security_Hash *vdl.Type = vdl.TypeOf(Hash(""))
var __VDLType_types_v_io_v23_security_RejectedBlessing *vdl.Type = vdl.TypeOf(RejectedBlessing{})
var __VDLType_types_v_io_v23_security_Signature *vdl.Type = vdl.TypeOf(Signature{})
var __VDLType_types_v_io_v23_security_ThirdPartyRequirements *vdl.Type = vdl.TypeOf(ThirdPartyRequirements{})
var __VDLType_types_v_io_v23_security_WireBlessings *vdl.Type
func __VDLType_types_v_io_v23_security_WireBlessings_gen() *vdl.Type {
__VDLType_types_v_io_v23_security_WireBlessingsBuilder := vdl.TypeBuilder{}
__VDLType_types_v_io_v23_security_WireBlessings1 := __VDLType_types_v_io_v23_security_WireBlessingsBuilder.Struct()
__VDLType_types_v_io_v23_security_WireBlessings2 := __VDLType_types_v_io_v23_security_WireBlessingsBuilder.Named("v.io/v23/security.WireBlessings").AssignBase(__VDLType_types_v_io_v23_security_WireBlessings1)
__VDLType_types_v_io_v23_security_WireBlessings3 := __VDLType_types_v_io_v23_security_WireBlessingsBuilder.List()
__VDLType_types_v_io_v23_security_WireBlessings4 := __VDLType_types_v_io_v23_security_WireBlessingsBuilder.List()
__VDLType_types_v_io_v23_security_WireBlessings5 := __VDLType_types_v_io_v23_security_WireBlessingsBuilder.Struct()
__VDLType_types_v_io_v23_security_WireBlessings6 := __VDLType_types_v_io_v23_security_WireBlessingsBuilder.Named("v.io/v23/security.Certificate").AssignBase(__VDLType_types_v_io_v23_security_WireBlessings5)
__VDLType_types_v_io_v23_security_WireBlessings7 := vdl.StringType
__VDLType_types_v_io_v23_security_WireBlessings5.AppendField("Extension", __VDLType_types_v_io_v23_security_WireBlessings7)
__VDLType_types_v_io_v23_security_WireBlessings8 := __VDLType_types_v_io_v23_security_WireBlessingsBuilder.List()
__VDLType_types_v_io_v23_security_WireBlessings9 := vdl.ByteType
__VDLType_types_v_io_v23_security_WireBlessings8.AssignElem(__VDLType_types_v_io_v23_security_WireBlessings9)
__VDLType_types_v_io_v23_security_WireBlessings5.AppendField("PublicKey", __VDLType_types_v_io_v23_security_WireBlessings8)
__VDLType_types_v_io_v23_security_WireBlessings10 := __VDLType_types_v_io_v23_security_WireBlessingsBuilder.List()
__VDLType_types_v_io_v23_security_WireBlessings11 := __VDLType_types_v_io_v23_security_WireBlessingsBuilder.Struct()
__VDLType_types_v_io_v23_security_WireBlessings12 := __VDLType_types_v_io_v23_security_WireBlessingsBuilder.Named("v.io/v23/security.Caveat").AssignBase(__VDLType_types_v_io_v23_security_WireBlessings11)
__VDLType_types_v_io_v23_security_WireBlessings13 := __VDLType_types_v_io_v23_security_WireBlessingsBuilder.Array()
__VDLType_types_v_io_v23_security_WireBlessings14 := __VDLType_types_v_io_v23_security_WireBlessingsBuilder.Named("v.io/v23/uniqueid.Id").AssignBase(__VDLType_types_v_io_v23_security_WireBlessings13)
__VDLType_types_v_io_v23_security_WireBlessings13.AssignElem(__VDLType_types_v_io_v23_security_WireBlessings9)
__VDLType_types_v_io_v23_security_WireBlessings13.AssignLen(16)
__VDLType_types_v_io_v23_security_WireBlessings11.AppendField("Id", __VDLType_types_v_io_v23_security_WireBlessings14)
__VDLType_types_v_io_v23_security_WireBlessings11.AppendField("ParamVom", __VDLType_types_v_io_v23_security_WireBlessings8)
__VDLType_types_v_io_v23_security_WireBlessings10.AssignElem(__VDLType_types_v_io_v23_security_WireBlessings12)
__VDLType_types_v_io_v23_security_WireBlessings5.AppendField("Caveats", __VDLType_types_v_io_v23_security_WireBlessings10)
__VDLType_types_v_io_v23_security_WireBlessings15 := __VDLType_types_v_io_v23_security_WireBlessingsBuilder.Struct()
__VDLType_types_v_io_v23_security_WireBlessings16 := __VDLType_types_v_io_v23_security_WireBlessingsBuilder.Named("v.io/v23/security.Signature").AssignBase(__VDLType_types_v_io_v23_security_WireBlessings15)
__VDLType_types_v_io_v23_security_WireBlessings15.AppendField("Purpose", __VDLType_types_v_io_v23_security_WireBlessings8)
__VDLType_types_v_io_v23_security_WireBlessings17 := vdl.StringType
__VDLType_types_v_io_v23_security_WireBlessings18 := __VDLType_types_v_io_v23_security_WireBlessingsBuilder.Named("v.io/v23/security.Hash").AssignBase(__VDLType_types_v_io_v23_security_WireBlessings17)
__VDLType_types_v_io_v23_security_WireBlessings15.AppendField("Hash", __VDLType_types_v_io_v23_security_WireBlessings18)
__VDLType_types_v_io_v23_security_WireBlessings15.AppendField("R", __VDLType_types_v_io_v23_security_WireBlessings8)
__VDLType_types_v_io_v23_security_WireBlessings15.AppendField("S", __VDLType_types_v_io_v23_security_WireBlessings8)
__VDLType_types_v_io_v23_security_WireBlessings5.AppendField("Signature", __VDLType_types_v_io_v23_security_WireBlessings16)
__VDLType_types_v_io_v23_security_WireBlessings4.AssignElem(__VDLType_types_v_io_v23_security_WireBlessings6)
__VDLType_types_v_io_v23_security_WireBlessings3.AssignElem(__VDLType_types_v_io_v23_security_WireBlessings4)
__VDLType_types_v_io_v23_security_WireBlessings1.AppendField("CertificateChains", __VDLType_types_v_io_v23_security_WireBlessings3)
__VDLType_types_v_io_v23_security_WireBlessingsBuilder.Build()
__VDLType_types_v_io_v23_security_WireBlessingsv, err := __VDLType_types_v_io_v23_security_WireBlessings2.Built()
if err != nil {
panic(err)
}
return __VDLType_types_v_io_v23_security_WireBlessingsv
}
func init() {
__VDLType_types_v_io_v23_security_WireBlessings = __VDLType_types_v_io_v23_security_WireBlessings_gen()
}
var __VDLType_types_v_io_v23_security_WireDischarge *vdl.Type
func __VDLType_types_v_io_v23_security_WireDischarge_gen() *vdl.Type {
__VDLType_types_v_io_v23_security_WireDischargeBuilder := vdl.TypeBuilder{}
__VDLType_types_v_io_v23_security_WireDischarge1 := __VDLType_types_v_io_v23_security_WireDischargeBuilder.Union()
__VDLType_types_v_io_v23_security_WireDischarge2 := __VDLType_types_v_io_v23_security_WireDischargeBuilder.Named("v.io/v23/security.WireDischarge").AssignBase(__VDLType_types_v_io_v23_security_WireDischarge1)
__VDLType_types_v_io_v23_security_WireDischarge3 := __VDLType_types_v_io_v23_security_WireDischargeBuilder.Struct()
__VDLType_types_v_io_v23_security_WireDischarge4 := __VDLType_types_v_io_v23_security_WireDischargeBuilder.Named("v.io/v23/security.publicKeyDischarge").AssignBase(__VDLType_types_v_io_v23_security_WireDischarge3)
__VDLType_types_v_io_v23_security_WireDischarge5 := vdl.StringType
__VDLType_types_v_io_v23_security_WireDischarge3.AppendField("ThirdPartyCaveatId", __VDLType_types_v_io_v23_security_WireDischarge5)
__VDLType_types_v_io_v23_security_WireDischarge6 := __VDLType_types_v_io_v23_security_WireDischargeBuilder.List()
__VDLType_types_v_io_v23_security_WireDischarge7 := __VDLType_types_v_io_v23_security_WireDischargeBuilder.Struct()
__VDLType_types_v_io_v23_security_WireDischarge8 := __VDLType_types_v_io_v23_security_WireDischargeBuilder.Named("v.io/v23/security.Caveat").AssignBase(__VDLType_types_v_io_v23_security_WireDischarge7)
__VDLType_types_v_io_v23_security_WireDischarge9 := __VDLType_types_v_io_v23_security_WireDischargeBuilder.Array()
__VDLType_types_v_io_v23_security_WireDischarge10 := __VDLType_types_v_io_v23_security_WireDischargeBuilder.Named("v.io/v23/uniqueid.Id").AssignBase(__VDLType_types_v_io_v23_security_WireDischarge9)
__VDLType_types_v_io_v23_security_WireDischarge11 := vdl.ByteType
__VDLType_types_v_io_v23_security_WireDischarge9.AssignElem(__VDLType_types_v_io_v23_security_WireDischarge11)
__VDLType_types_v_io_v23_security_WireDischarge9.AssignLen(16)
__VDLType_types_v_io_v23_security_WireDischarge7.AppendField("Id", __VDLType_types_v_io_v23_security_WireDischarge10)
__VDLType_types_v_io_v23_security_WireDischarge12 := __VDLType_types_v_io_v23_security_WireDischargeBuilder.List()
__VDLType_types_v_io_v23_security_WireDischarge12.AssignElem(__VDLType_types_v_io_v23_security_WireDischarge11)
__VDLType_types_v_io_v23_security_WireDischarge7.AppendField("ParamVom", __VDLType_types_v_io_v23_security_WireDischarge12)
__VDLType_types_v_io_v23_security_WireDischarge6.AssignElem(__VDLType_types_v_io_v23_security_WireDischarge8)
__VDLType_types_v_io_v23_security_WireDischarge3.AppendField("Caveats", __VDLType_types_v_io_v23_security_WireDischarge6)
__VDLType_types_v_io_v23_security_WireDischarge13 := __VDLType_types_v_io_v23_security_WireDischargeBuilder.Struct()
__VDLType_types_v_io_v23_security_WireDischarge14 := __VDLType_types_v_io_v23_security_WireDischargeBuilder.Named("v.io/v23/security.Signature").AssignBase(__VDLType_types_v_io_v23_security_WireDischarge13)
__VDLType_types_v_io_v23_security_WireDischarge13.AppendField("Purpose", __VDLType_types_v_io_v23_security_WireDischarge12)
__VDLType_types_v_io_v23_security_WireDischarge15 := vdl.StringType
__VDLType_types_v_io_v23_security_WireDischarge16 := __VDLType_types_v_io_v23_security_WireDischargeBuilder.Named("v.io/v23/security.Hash").AssignBase(__VDLType_types_v_io_v23_security_WireDischarge15)
__VDLType_types_v_io_v23_security_WireDischarge13.AppendField("Hash", __VDLType_types_v_io_v23_security_WireDischarge16)
__VDLType_types_v_io_v23_security_WireDischarge13.AppendField("R", __VDLType_types_v_io_v23_security_WireDischarge12)
__VDLType_types_v_io_v23_security_WireDischarge13.AppendField("S", __VDLType_types_v_io_v23_security_WireDischarge12)
__VDLType_types_v_io_v23_security_WireDischarge3.AppendField("Signature", __VDLType_types_v_io_v23_security_WireDischarge14)
__VDLType_types_v_io_v23_security_WireDischarge1.AppendField("PublicKey", __VDLType_types_v_io_v23_security_WireDischarge4)
__VDLType_types_v_io_v23_security_WireDischargeBuilder.Build()
__VDLType_types_v_io_v23_security_WireDischargev, err := __VDLType_types_v_io_v23_security_WireDischarge2.Built()
if err != nil {
panic(err)
}
return __VDLType_types_v_io_v23_security_WireDischargev
}
func init() {
__VDLType_types_v_io_v23_security_WireDischarge = __VDLType_types_v_io_v23_security_WireDischarge_gen()
}
var __VDLType_types_v_io_v23_security_publicKeyDischarge *vdl.Type = vdl.TypeOf(publicKeyDischarge{})
var __VDLType_types_v_io_v23_uniqueid_Id *vdl.Type = vdl.TypeOf(uniqueid.Id{})
func __VDLEnsureNativeBuilt_types() {
if __VDLTypetypes10 == nil {
__VDLTypetypes10 = __VDLTypetypes10_gen()
}
if __VDLType_types_v_io_v23_security_WireBlessings == nil {
__VDLType_types_v_io_v23_security_WireBlessings = __VDLType_types_v_io_v23_security_WireBlessings_gen()
}
if __VDLType_types_v_io_v23_security_WireDischarge == nil {
__VDLType_types_v_io_v23_security_WireDischarge = __VDLType_types_v_io_v23_security_WireDischarge_gen()
}
}
// NoExtension is an optional terminator for a blessing pattern indicating that the pattern
// cannot match any extensions of the blessing from that point onwards.
const NoExtension = BlessingPattern("$")
// TODO(ataly, ashankar): The semantics of AllPrincipals breaks monotonicity in
// AccessLists with NotIn clauses. For instance, the AccessList "In: {AllPrincipals}, NotIn: {"foo"}
// matches the principal that presents no recognizable blessings ([]) however does not
// match the principal that presents "foo" as the only recognizable blessings (["foo"])
// We need to sort this out.
const AllPrincipals = BlessingPattern("...") // Glob pattern that matches all blessings.
const ChainSeparator = ":" // ChainSeparator joins blessing names to form a blessing chain name.
const SHA1Hash = Hash("SHA1") // SHA1 cryptographic hash function defined in RFC3174.
const SHA256Hash = Hash("SHA256") // SHA256 cryptographic hash function defined in FIPS 180-4.
const SHA384Hash = Hash("SHA384") // SHA384 cryptographic hash function defined in FIPS 180-2.
const SHA512Hash = Hash("SHA512") // SHA512 cryptographic hash function defined in FIPS 180-2.
const SignatureForMessageSigning = "S1" // Signature.Purpose used by a Principal to sign arbitrary messages.
const SignatureForBlessingCertificates = "B1" // Signature.Purpose used by a Principal when signing Certificates for creating blessings.
const SignatureForDischarge = "D1" // Signature.Purpose used by a Principal when signing discharges for public-key based third-party caveats.
var (
ErrUnrecognizedRoot = verror.Register("v.io/v23/security.UnrecognizedRoot", verror.NoRetry, "{1:}{2:} unrecognized public key {3} in root certificate{:4}")
ErrAuthorizationFailed = verror.Register("v.io/v23/security.AuthorizationFailed", verror.NoRetry, "{1:}{2:} principal with blessings {3} (rejected {4}) is not authorized by principal with blessings {5}")
ErrInvalidSigningBlessingCaveat = verror.Register("v.io/v23/security.InvalidSigningBlessingCaveat", verror.NoRetry, "{1:}{2:} blessing has caveat with UUID {3} which makes it unsuitable for signing -- please use blessings with just Expiry caveats")
ErrPublicKeyNotAllowed = verror.Register("v.io/v23/security.PublicKeyNotAllowed", verror.NoRetry, "{1:}{2:} peer has public key {3}, not the authorized public key {4}")
ErrEndpointAuthorizationFailed = verror.Register("v.io/v23/security.EndpointAuthorizationFailed", verror.NoRetry, "{1:}{2:} blessings in endpoint {3} not matched by blessings presented: {4} (rejected {5})")
)
func init() {
i18n.Cat().SetWithBase(i18n.LangID("en"), i18n.MsgID(ErrUnrecognizedRoot.ID), "{1:}{2:} unrecognized public key {3} in root certificate{:4}")
i18n.Cat().SetWithBase(i18n.LangID("en"), i18n.MsgID(ErrAuthorizationFailed.ID), "{1:}{2:} principal with blessings {3} (rejected {4}) is not authorized by principal with blessings {5}")
i18n.Cat().SetWithBase(i18n.LangID("en"), i18n.MsgID(ErrInvalidSigningBlessingCaveat.ID), "{1:}{2:} blessing has caveat with UUID {3} which makes it unsuitable for signing -- please use blessings with just Expiry caveats")
i18n.Cat().SetWithBase(i18n.LangID("en"), i18n.MsgID(ErrPublicKeyNotAllowed.ID), "{1:}{2:} peer has public key {3}, not the authorized public key {4}")
i18n.Cat().SetWithBase(i18n.LangID("en"), i18n.MsgID(ErrEndpointAuthorizationFailed.ID), "{1:}{2:} blessings in endpoint {3} not matched by blessings presented: {4} (rejected {5})")
}
// NewErrUnrecognizedRoot returns an error with the ErrUnrecognizedRoot ID.
func NewErrUnrecognizedRoot(ctx *context.T, rootKey string, details error) error {
return verror.New(ErrUnrecognizedRoot, ctx, rootKey, details)
}
// NewErrAuthorizationFailed returns an error with the ErrAuthorizationFailed ID.
func NewErrAuthorizationFailed(ctx *context.T, remote []string, remoteErr []RejectedBlessing, local []string) error {
return verror.New(ErrAuthorizationFailed, ctx, remote, remoteErr, local)
}
// NewErrInvalidSigningBlessingCaveat returns an error with the ErrInvalidSigningBlessingCaveat ID.
func NewErrInvalidSigningBlessingCaveat(ctx *context.T, id uniqueid.Id) error {
return verror.New(ErrInvalidSigningBlessingCaveat, ctx, id)
}
// NewErrPublicKeyNotAllowed returns an error with the ErrPublicKeyNotAllowed ID.
func NewErrPublicKeyNotAllowed(ctx *context.T, got string, want string) error {
return verror.New(ErrPublicKeyNotAllowed, ctx, got, want)
}
// NewErrEndpointAuthorizationFailed returns an error with the ErrEndpointAuthorizationFailed ID.
func NewErrEndpointAuthorizationFailed(ctx *context.T, endpoint string, remote []string, rejected []RejectedBlessing) error {
return verror.New(ErrEndpointAuthorizationFailed, ctx, endpoint, remote, rejected)
}