func (u *User) ToTrackingStatementBasics(errp *error) *jsonw.Wrapper { ret := jsonw.NewDictionary() ret.SetKey("username", jsonw.NewString(u.name)) if lastIDChange, err := u.basics.AtKey("last_id_change").GetInt(); err == nil { ret.SetKey("last_id_change", jsonw.NewInt(lastIDChange)) } if idVersion, err := u.basics.AtKey("id_version").GetInt(); err == nil { ret.SetKey("id_version", jsonw.NewInt(idVersion)) } return ret }
func remoteProofToTrackingStatement(s RemoteProofChainLink, base *jsonw.Wrapper) error { typS := s.TableKey() i, found := RemoteServiceTypes[typS] if !found { return fmt.Errorf("No service type found for %q in proof %d", typS, s.GetSeqno()) } base.AtKey("remote_key_proof").SetKey("proof_type", jsonw.NewInt(int(i))) base.AtKey("remote_key_proof").SetKey("check_data_json", s.CheckDataJSON()) base.SetKey("sig_type", jsonw.NewInt(SigTypeRemoteProof)) return nil }
func (u *User) RevokeKeysProof(key GenericKey, kidsToRevoke []keybase1.KID, deviceToDisable keybase1.DeviceID) (*jsonw.Wrapper, error) { ret, err := ProofMetadata{ Me: u, LinkType: RevokeType, SigningKey: key, }.ToJSON(u.G()) if err != nil { return nil, err } body := ret.AtKey("body") revokeSection := jsonw.NewDictionary() revokeSection.SetKey("kids", jsonw.NewWrapper(kidsToRevoke)) body.SetKey("revoke", revokeSection) if deviceToDisable.Exists() { device, err := u.GetDevice(deviceToDisable) if err != nil { return nil, err } deviceSection := jsonw.NewDictionary() deviceSection.SetKey("id", jsonw.NewString(deviceToDisable.String())) deviceSection.SetKey("type", jsonw.NewString(device.Type)) deviceSection.SetKey("status", jsonw.NewInt(DeviceStatusDefunct)) body.SetKey("device", deviceSection) } return ret, nil }
func (u *User) UpdatePassphraseProof(key GenericKey, pwh string, ppGen PassphraseGeneration) (*jsonw.Wrapper, error) { ret, err := ProofMetadata{ Me: u, LinkType: UpdatePassphraseType, SigningKey: key, }.ToJSON(u.G()) if err != nil { return nil, err } body := ret.AtKey("body") pp := jsonw.NewDictionary() pp.SetKey("hash", jsonw.NewString(pwh)) pp.SetKey("version", jsonw.NewInt(int(triplesec.Version))) pp.SetKey("passphrase_generation", jsonw.NewInt(int(ppGen))) body.SetKey("update_passphrase_hash", pp) return ret, nil }
func (mr *MerkleRoot) ToSigJSON() (ret *jsonw.Wrapper) { ret = jsonw.NewDictionary() ret.SetKey("seqno", jsonw.NewInt(int(mr.seqno))) ret.SetKey("ctime", jsonw.NewInt64(mr.ctime)) ret.SetKey("hash", jsonw.NewString(mr.rootHash.String())) return }
func (cr CheckResult) Pack() *jsonw.Wrapper { p := jsonw.NewDictionary() if cr.Status != nil { s := jsonw.NewDictionary() s.SetKey("code", jsonw.NewInt(int(cr.Status.GetProofStatus()))) s.SetKey("desc", jsonw.NewString(cr.Status.GetDesc())) p.SetKey("status", s) } p.SetKey("time", jsonw.NewInt64(cr.Time.Unix())) return p }
func (sh SigHints) MarshalToJSON() *jsonw.Wrapper { ret := jsonw.NewDictionary() ret.SetKey("version", jsonw.NewInt(sh.version)) ret.SetKey("hints", jsonw.NewArray(len(sh.hints))) i := 0 for _, v := range sh.hints { ret.AtKey("hints").SetIndex(i, v.MarshalToJSON()) i++ } return ret }
func (u *User) ToTrackingStatementSeqTail() *jsonw.Wrapper { mul := u.GetPublicChainTail() if mul == nil { return jsonw.NewNil() } ret := jsonw.NewDictionary() ret.SetKey("sig_id", jsonw.NewString(mul.SigID.ToString(true))) ret.SetKey("seqno", jsonw.NewInt(int(mul.Seqno))) ret.SetKey("payload_hash", jsonw.NewString(mul.LinkID.String())) return ret }
func (g *GenericChainLink) BaseToTrackingStatement(state keybase1.ProofState) *jsonw.Wrapper { ret := jsonw.NewDictionary() ret.SetKey("curr", jsonw.NewString(g.id.String())) ret.SetKey("sig_id", jsonw.NewString(g.GetSigID().ToString(true))) rkp := jsonw.NewDictionary() ret.SetKey("remote_key_proof", rkp) rkp.SetKey("state", jsonw.NewInt(int(state))) prev := g.GetPrev() var prevVal *jsonw.Wrapper if prev == nil { prevVal = jsonw.NewNil() } else { prevVal = jsonw.NewString(prev.String()) } ret.SetKey("prev", prevVal) ret.SetKey("ctime", jsonw.NewInt64(g.unpacked.ctime)) ret.SetKey("etime", jsonw.NewInt64(g.unpacked.etime)) return ret }
func (arg ProofMetadata) ToJSON(g *GlobalContext) (ret *jsonw.Wrapper, err error) { // if only Me exists, then that is the signing user too if arg.SigningUser == nil && arg.Me != nil { arg.SigningUser = arg.Me } var seqno int var prev *jsonw.Wrapper if arg.LastSeqno > 0 { seqno = int(arg.LastSeqno) + 1 prev = jsonw.NewString(arg.PrevLinkID.String()) } else { lastSeqno := arg.Me.sigChain().GetLastKnownSeqno() lastLink := arg.Me.sigChain().GetLastKnownID() if lastLink == nil { seqno = 1 prev = jsonw.NewNil() } else { seqno = int(lastSeqno) + 1 prev = jsonw.NewString(lastLink.String()) } } ctime := arg.CreationTime if ctime == 0 { ctime = time.Now().Unix() } ei := arg.ExpireIn if ei == 0 { ei = SigExpireIn } ret = jsonw.NewDictionary() ret.SetKey("tag", jsonw.NewString("signature")) ret.SetKey("ctime", jsonw.NewInt64(ctime)) ret.SetKey("expire_in", jsonw.NewInt(ei)) ret.SetKey("seqno", jsonw.NewInt(seqno)) ret.SetKey("prev", prev) eldest := arg.Eldest if eldest == "" { eldest = arg.Me.GetEldestKID() } body := jsonw.NewDictionary() body.SetKey("version", jsonw.NewInt(KeybaseSignatureV1)) body.SetKey("type", jsonw.NewString(string(arg.LinkType))) key, err := KeySection{ Key: arg.SigningKey, EldestKID: eldest, SigningUser: arg.SigningUser, IncludePGPHash: arg.IncludePGPHash, }.ToJSON() if err != nil { return nil, err } body.SetKey("key", key) ret.SetKey("body", body) // Capture the most recent Merkle Root and also what kind of client // we're running. ret.SetKey("client", clientInfo(g)) if mr := merkleRootInfo(g); mr != nil { ret.SetKey("merkle_root", mr) } return }