tag v0.165.0 Tagger: imagebuilder-bot <imagebuilder-bots+imagebuilder-bot@redhat.com> Changes with 0.165.0 ---------------- * distro: move rhel9 into a generic distro (osbuild/images#1645) * Author: Michael Vogt, Reviewers: Achilleas Koutsou, Simon de Vlieger * Revert "distro: drop `ImageType.BasePartitionTable()`" (osbuild/images#1691) * Author: Michael Vogt, Reviewers: Simon de Vlieger, Tomáš Hozza * Update dependencies 2025-07-20 (osbuild/images#1675) * Author: SchutzBot, Reviewers: Achilleas Koutsou, Simon de Vlieger * defs: add missing `bootstrap_containers` (osbuild/images#1679) * Author: Michael Vogt, Reviewers: Simon de Vlieger, Tomáš Hozza * disk: handle adding `PReP` partition on PPC64/s390x (HMS-8884) (osbuild/images#1681) * Author: Michael Vogt, Reviewers: Achilleas Koutsou, Simon de Vlieger * distro: bring per-distro checkOptions back (osbuild/images#1678) * Author: Michael Vogt, Reviewers: Simon de Vlieger, Tomáš Hozza * distro: cleanups in the pkg/distro/generic area (osbuild/images#1686) * Author: Michael Vogt, Reviewers: Achilleas Koutsou, Simon de Vlieger * distro: move rhel8 into a generic distro (osbuild/images#1643) * Author: Michael Vogt, Reviewers: Nobody * distro: small followups for PR#1682 (osbuild/images#1689) * Author: Michael Vogt, Reviewers: Achilleas Koutsou, Simon de Vlieger, Tomáš Hozza * distro: unify transform/match into a single concept (osbuild/images#1682) * Author: Michael Vogt, Reviewers: Achilleas Koutsou, Tomáš Hozza * distros: de-duplicate runner build packages for centos10 (osbuild/images#1680) * Author: Michael Vogt, Reviewers: Simon de Vlieger, Tomáš Hozza * github: disable Go dep updates through dependabot (osbuild/images#1683) * Author: Achilleas Koutsou, Reviewers: Simon de Vlieger, Tomáš Hozza * repos: include almalinux 9.6 (osbuild/images#1677) * Author: Simon de Vlieger, Reviewers: Lukáš Zapletal, Tomáš Hozza * rhel9: wsl distribution config (osbuild/images#1694) * Author: Simon de Vlieger, Reviewers: Michael Vogt, Sanne Raymaekers * test/manifests/all-customizations: don't embed local file via URI (osbuild/images#1684) * Author: Tomáš Hozza, Reviewers: Achilleas Koutsou, Brian C. Lane — Somewhere on the Internet, 2025-07-28 --- tag v0.166.0 Tagger: imagebuilder-bot <imagebuilder-bots+imagebuilder-bot@redhat.com> Changes with 0.166.0 ---------------- * customizations/subscription: conditionally enable semanage call (HMS-8866) (osbuild/images#1673) * Author: Sanne Raymaekers, Reviewers: Achilleas Koutsou, Michael Vogt * distro/rhel-10: versionlock shim-x64 in the azure-cvm image (osbuild/images#1697) * Author: Achilleas Koutsou, Reviewers: Michael Vogt, Simon de Vlieger * manifestmock: move container/pkg/commit mocks into helper (osbuild/images#1700) * Author: Michael Vogt, Reviewers: Achilleas Koutsou, Simon de Vlieger * rhel9: `vagrant-libvirt`, `vagrant-virtualbox` (osbuild/images#1693) * Author: Simon de Vlieger, Reviewers: Michael Vogt, Sanne Raymaekers * rhel{9,10}: centos WSL refinement (HMS-8922) (osbuild/images#1690) * Author: Simon de Vlieger, Reviewers: Ondřej Budai, Sanne Raymaekers, Tomáš Hozza — Somewhere on the Internet, 2025-07-29 --- tag v0.167.0 Tagger: imagebuilder-bot <imagebuilder-bots+imagebuilder-bot@redhat.com> Changes with 0.167.0 ---------------- * RHEL/Azure: drop obsolete WAAgentConfig keys [RHEL-93894] and remove loglevel kernel option [RHEL-102372] (osbuild/images#1611) * Author: Achilleas Koutsou, Reviewers: Michael Vogt, Ondřej Budai, Sanne Raymaekers * Update dependencies 2025-07-27 (osbuild/images#1699) * Author: SchutzBot, Reviewers: Achilleas Koutsou, Simon de Vlieger * distro/rhel9: set default_kernel to kernel-uki-virt (osbuild/images#1704) * Author: Achilleas Koutsou, Reviewers: Ondřej Budai, Simon de Vlieger * distro: drop legacy loaders and update tests (osbuild/images#1687) * Author: Michael Vogt, Reviewers: Achilleas Koutsou, Tomáš Hozza * distro: fix issues with yaml distro definitions and enable yaml checks (osbuild/images#1702) * Author: Achilleas Koutsou, Reviewers: Michael Vogt, Ondřej Budai, Simon de Vlieger — Somewhere on the Internet, 2025-07-30 --- tag v0.168.0 Tagger: imagebuilder-bot <imagebuilder-bots+imagebuilder-bot@redhat.com> Changes with 0.168.0 ---------------- * distro: fix bug in variable substitution for static distros (osbuild/images#1710) * Author: Michael Vogt, Reviewers: Achilleas Koutsou, Simon de Vlieger * rhel{9,10}: azure for non-RHEL (HMS-8949) (osbuild/images#1707) * Author: Simon de Vlieger, Reviewers: Achilleas Koutsou, Michael Vogt — Somewhere on the Internet, 2025-07-30 ---
109 lines
2.6 KiB
Go
109 lines
2.6 KiB
Go
package jwt
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
)
|
|
|
|
// MapClaims is a claims type that uses the map[string]any for JSON
|
|
// decoding. This is the default claims type if you don't supply one
|
|
type MapClaims map[string]any
|
|
|
|
// GetExpirationTime implements the Claims interface.
|
|
func (m MapClaims) GetExpirationTime() (*NumericDate, error) {
|
|
return m.parseNumericDate("exp")
|
|
}
|
|
|
|
// GetNotBefore implements the Claims interface.
|
|
func (m MapClaims) GetNotBefore() (*NumericDate, error) {
|
|
return m.parseNumericDate("nbf")
|
|
}
|
|
|
|
// GetIssuedAt implements the Claims interface.
|
|
func (m MapClaims) GetIssuedAt() (*NumericDate, error) {
|
|
return m.parseNumericDate("iat")
|
|
}
|
|
|
|
// GetAudience implements the Claims interface.
|
|
func (m MapClaims) GetAudience() (ClaimStrings, error) {
|
|
return m.parseClaimsString("aud")
|
|
}
|
|
|
|
// GetIssuer implements the Claims interface.
|
|
func (m MapClaims) GetIssuer() (string, error) {
|
|
return m.parseString("iss")
|
|
}
|
|
|
|
// GetSubject implements the Claims interface.
|
|
func (m MapClaims) GetSubject() (string, error) {
|
|
return m.parseString("sub")
|
|
}
|
|
|
|
// parseNumericDate tries to parse a key in the map claims type as a number
|
|
// date. This will succeed, if the underlying type is either a [float64] or a
|
|
// [json.Number]. Otherwise, nil will be returned.
|
|
func (m MapClaims) parseNumericDate(key string) (*NumericDate, error) {
|
|
v, ok := m[key]
|
|
if !ok {
|
|
return nil, nil
|
|
}
|
|
|
|
switch exp := v.(type) {
|
|
case float64:
|
|
if exp == 0 {
|
|
return nil, nil
|
|
}
|
|
|
|
return newNumericDateFromSeconds(exp), nil
|
|
case json.Number:
|
|
v, _ := exp.Float64()
|
|
|
|
return newNumericDateFromSeconds(v), nil
|
|
}
|
|
|
|
return nil, newError(fmt.Sprintf("%s is invalid", key), ErrInvalidType)
|
|
}
|
|
|
|
// parseClaimsString tries to parse a key in the map claims type as a
|
|
// [ClaimsStrings] type, which can either be a string or an array of string.
|
|
func (m MapClaims) parseClaimsString(key string) (ClaimStrings, error) {
|
|
var cs []string
|
|
switch v := m[key].(type) {
|
|
case string:
|
|
cs = append(cs, v)
|
|
case []string:
|
|
cs = v
|
|
case []any:
|
|
for _, a := range v {
|
|
vs, ok := a.(string)
|
|
if !ok {
|
|
return nil, newError(fmt.Sprintf("%s is invalid", key), ErrInvalidType)
|
|
}
|
|
cs = append(cs, vs)
|
|
}
|
|
}
|
|
|
|
return cs, nil
|
|
}
|
|
|
|
// parseString tries to parse a key in the map claims type as a [string] type.
|
|
// If the key does not exist, an empty string is returned. If the key has the
|
|
// wrong type, an error is returned.
|
|
func (m MapClaims) parseString(key string) (string, error) {
|
|
var (
|
|
ok bool
|
|
raw any
|
|
iss string
|
|
)
|
|
raw, ok = m[key]
|
|
if !ok {
|
|
return "", nil
|
|
}
|
|
|
|
iss, ok = raw.(string)
|
|
if !ok {
|
|
return "", newError(fmt.Sprintf("%s is invalid", key), ErrInvalidType)
|
|
}
|
|
|
|
return iss, nil
|
|
}
|