func (h *HackerNewsChecker) CheckStatus(hint SigHint) ProofError { res, err := G.XAPI.GetText(APIArg{ Endpoint: hint.apiURL, NeedSession: false, }) if err != nil { return XapiError(err, hint.apiURL) } var sigID keybase1.SigID _, sigID, err = OpenSig(h.proof.GetArmoredSig()) var ret ProofError if err != nil { return NewProofError(keybase1.ProofStatus_BAD_SIGNATURE, "Bad signature: %s", err) } wanted := sigID.ToMediumID() G.Log.Debug("| HackerNews profile: %s", res.Body) G.Log.Debug("| Wanted signature hash: %s", wanted) if !strings.Contains(res.Body, wanted) { ret = NewProofError(keybase1.ProofStatus_TEXT_NOT_FOUND, "Posted text does not include signature '%s'", wanted) } return ret }
func (t BaseServiceType) BaseCheckProofForURL(text string, id keybase1.SigID) (err error) { urlRxx := regexp.MustCompile(`https://(\S+)`) target := id.ToMediumID() urls := urlRxx.FindAllString(text, -1) G.Log.Debug("Found urls %v", urls) found := false for _, u := range urls { if strings.HasSuffix(u, target) { found = true } } if !found { err = NotFoundError{"Didn't find a URL with suffix '" + target + "'"} } return }
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"} }