package locator import ( "errors" "g.activething.com/go/DateKeys/extension" "g.activething.com/go/DateKeys/profile" "g.activething.com/go/DateKeys/provider" ) // OpenLocator opens the sealed locator of the extension with the release of // the round of its own DateKey, in the profile that DateKey names: a locator // for another round or another chain does not open, and is unusable (spec // v0.11, §44.1). It fails when the extension has no locator. func (i *Info) OpenLocator(reg profile.Registry, release provider.Release) (*Locator, error) { if i.Sealed == nil { return nil, errors.New("locator: the extension has no locator") } p, ok := reg.Lookup(i.DateKey.ProfileID) if !ok { return nil, errors.New("locator: the profile of the DateKey is not pinned") } return Open(p, i.DateKey.Round, release, i.Sealed) } // Standard returns the registry of the extensions of spec v0.11 with the // data of datekeys.capsule validated by ParseInfo, as spec §54 asks of a // reader that knows an extension. func Standard() extension.Standard { return extension.Standard{ValidateCapsule: func(e extension.Extension) error { _, err := ParseInfo(e) return err }} }