本文整理汇总了Golang中github.com/jlmucb/cloudproxy/go/tao/auth.Prin.Identical方法的典型用法代码示例。如果您正苦于以下问题:Golang Prin.Identical方法的具体用法?Golang Prin.Identical怎么用?Golang Prin.Identical使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/jlmucb/cloudproxy/go/tao/auth.Prin
的用法示例。
在下文中一共展示了Prin.Identical方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Extend
func (m Manifest) Extend(p *auth.Prin, stmt auth.Form) {
switch stmt := stmt.(type) {
case auth.And:
for _, f := range stmt.Conjunct {
m.Extend(p, f)
}
case auth.Pred:
if stmt.Name != "Manifest" || len(stmt.Arg) < 3 {
return
}
if !p.Identical(stmt.Arg[0]) {
return
}
s, ok := stmt.Arg[1].(auth.Str)
if !ok {
glog.Errorf("Ignoring manifest key of non-string type %T\n", stmt.Arg[1])
return
}
for i := 2; i < len(stmt.Arg)-1; i++ {
if m[string(s)] == nil {
m2 := Manifest{}
m, m[string(s)] = m2, m2
} else {
m2, ok := m[string(s)].(Manifest)
if !ok {
// Name clash with existing key, ignore new data.
return
}
m = m2
}
s, ok = stmt.Arg[i].(auth.Str)
if !ok {
glog.Errorf("Ignoring manifest key of non-string type %T\n", stmt.Arg[i])
return
}
}
m[string(s)] = stmt.Arg[len(stmt.Arg)-1]
}
}