func (vp *VerificationPath) VerifyUser() (user *MerkleUserLeaf, err error) { curr := vp.root.rootHash var leaf *jsonw.Wrapper leaf, err = vp.path.VerifyPath(curr, vp.uid.String()) if leaf != nil && err == nil { if leaf, err = leaf.ToArray(); err != nil { msg := fmt.Sprintf("Didn't find a leaf for user in tree: %s", err) err = MerkleNotFoundError{vp.uid.String(), msg} } } if err == nil { // noop } else if _, ok := err.(MerkleNotFoundError); ok { vp.G().Log.Debug(fmt.Sprintf("In checking Merkle tree: %s", err)) } else { return } user, err = parseMerkleUserLeaf(leaf, vp.G()) if user != nil { user.uid = vp.uid } return }
func importPathFromJSON(jw *jsonw.Wrapper) (out []*PathStep, err error) { if jw.IsNil() { return } var path *jsonw.Wrapper if path, err = jw.ToArray(); err != nil { return } var l int if l, err = path.Len(); err != nil { return } for i := 0; i < l; i++ { var step *PathStep if step, err = pathStepFromJSON(path.AtIndex(i)); err != nil { return } out = append(out, step) } return }