func (e *UntrackEngine) storeRemoteUntrack(them *libkb.User, ctx *Context) (err error) { e.G().Log.Debug("+ StoreRemoteUntrack") defer e.G().Log.Debug("- StoreRemoteUntrack -> %s", libkb.ErrToOk(err)) arg := libkb.SecretKeyArg{ Me: e.arg.Me, KeyType: libkb.DeviceSigningKeyType, } var signingKeyPriv libkb.GenericKey if signingKeyPriv, err = e.G().Keyrings.GetSecretKeyWithPrompt(ctx.LoginContext, arg, ctx.SecretUI, "untracking signature"); err != nil { return } var sig string var sigid keybase1.SigID if sig, sigid, err = signingKeyPriv.SignToString(e.untrackStatementBytes); err != nil { return } _, err = e.G().API.Post(libkb.APIArg{ Endpoint: "follow", NeedSession: true, Args: libkb.HTTPArgs{ "sig_id_base": libkb.S{Val: sigid.ToString(false)}, "sig_id_short": libkb.S{Val: sigid.ToShortID()}, "sig": libkb.S{Val: sig}, "uid": libkb.UIDArg(them.GetUID()), "type": libkb.S{Val: "untrack"}, "signing_kid": e.signingKeyPub.GetKID(), }, }) return }
func makeKeyArgs(sigID keybase1.SigID, sig []byte, delType libkb.DelegationType, key libkb.GenericKey, eldestKID, signingKID keybase1.KID) (*libkb.HTTPArgs, error) { pub, err := key.Encode() if err != nil { return nil, err } args := libkb.HTTPArgs{ "sig_id_base": libkb.S{Val: sigID.ToString(false)}, "sig_id_short": libkb.S{Val: sigID.ToShortID()}, "sig": libkb.S{Val: string(sig)}, "type": libkb.S{Val: string(delType)}, "is_remote_proof": libkb.B{Val: false}, "public_key": libkb.S{Val: pub}, "eldest_kid": libkb.S{Val: eldestKID.String()}, "signing_kid": libkb.S{Val: signingKID.String()}, } return &args, nil }
func (t BaseServiceType) BaseCheckProofTextShort(text string, id keybase1.SigID, med bool) error { blocks := FindBase64Snippets(text) var target string if med { target = id.ToMediumID() } else { target = id.ToShortID() } for _, b := range blocks { if len(b) < len(target) { continue } if b != target { return WrongSigError{b} } // found match: return nil } return NotFoundError{"Couldn't find signature ID " + target + " in text"} }