// setChallengeToken sets the token value both in the Token field and // in the serialized KeyAuthorization object. func setChallengeToken(ch *core.Challenge, token string) (err error) { ch.Token = token keyAuthorization, err := core.NewKeyAuthorization(token, ch.AccountKey) if err != nil { return } ch.KeyAuthorization = &keyAuthorization return }
// challengeType == "tls-sni-00" or "dns-00", since they're the same func createChallenge(challengeType string) core.Challenge { chall := core.Challenge{ Type: challengeType, Status: core.StatusPending, Token: core.NewToken(), ValidationRecord: []core.ValidationRecord{}, AccountKey: accountKey, } keyAuthorization, _ := core.NewKeyAuthorization(chall.Token, accountKey) chall.KeyAuthorization = &keyAuthorization return chall }
func modelToChallenge(cm *challModel) (core.Challenge, error) { c := core.Challenge{ ID: cm.ID, Type: cm.Type, Status: cm.Status, Validated: cm.Validated, Token: cm.Token, TLS: cm.TLS, } if len(cm.KeyAuthorization) > 0 { ka, err := core.NewKeyAuthorizationFromString(cm.KeyAuthorization) if err != nil { return core.Challenge{}, err } c.KeyAuthorization = &ka } if len(cm.Error) > 0 { var problem core.ProblemDetails err := json.Unmarshal(cm.Error, &problem) if err != nil { return core.Challenge{}, err } c.Error = &problem } if len(cm.ValidationRecord) > 0 { var vr []core.ValidationRecord err := json.Unmarshal(cm.ValidationRecord, &vr) if err != nil { return core.Challenge{}, err } c.ValidationRecord = vr } if len(cm.AccountKey) > 0 { var ak jose.JsonWebKey err := json.Unmarshal(cm.AccountKey, &ak) if err != nil { return core.Challenge{}, err } c.AccountKey = &ak } return c, nil }
// challengeType == "tls-sni-00" or "dns-00", since they're the same func createChallenge(challengeType string) core.Challenge { chall := core.Challenge{ Type: challengeType, Status: core.StatusPending, Token: core.NewToken(), ValidationRecord: []core.ValidationRecord{}, AccountKey: accountKey, } keyAuthorization, _ := core.NewKeyAuthorization(chall.Token, accountKey) chall.KeyAuthorization = &keyAuthorization // TODO(https://github.com/letsencrypt/boulder/issues/894): Remove this block validationPayload, _ := json.Marshal(map[string]interface{}{ "type": chall.Type, "token": chall.Token, }) signer, _ := jose.NewSigner(jose.RS256, &TheKey) chall.Validation, _ = signer.Sign(validationPayload, "") return chall }