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 ---
135 lines
3.4 KiB
Go
135 lines
3.4 KiB
Go
//go:build go1.4
|
|
// +build go1.4
|
|
|
|
package jwt
|
|
|
|
import (
|
|
"crypto"
|
|
"crypto/rand"
|
|
"crypto/rsa"
|
|
)
|
|
|
|
// SigningMethodRSAPSS implements the RSAPSS family of signing methods signing methods
|
|
type SigningMethodRSAPSS struct {
|
|
*SigningMethodRSA
|
|
Options *rsa.PSSOptions
|
|
// VerifyOptions is optional. If set overrides Options for rsa.VerifyPPS.
|
|
// Used to accept tokens signed with rsa.PSSSaltLengthAuto, what doesn't follow
|
|
// https://tools.ietf.org/html/rfc7518#section-3.5 but was used previously.
|
|
// See https://github.com/dgrijalva/jwt-go/issues/285#issuecomment-437451244 for details.
|
|
VerifyOptions *rsa.PSSOptions
|
|
}
|
|
|
|
// Specific instances for RS/PS and company.
|
|
var (
|
|
SigningMethodPS256 *SigningMethodRSAPSS
|
|
SigningMethodPS384 *SigningMethodRSAPSS
|
|
SigningMethodPS512 *SigningMethodRSAPSS
|
|
)
|
|
|
|
func init() {
|
|
// PS256
|
|
SigningMethodPS256 = &SigningMethodRSAPSS{
|
|
SigningMethodRSA: &SigningMethodRSA{
|
|
Name: "PS256",
|
|
Hash: crypto.SHA256,
|
|
},
|
|
Options: &rsa.PSSOptions{
|
|
SaltLength: rsa.PSSSaltLengthEqualsHash,
|
|
},
|
|
VerifyOptions: &rsa.PSSOptions{
|
|
SaltLength: rsa.PSSSaltLengthAuto,
|
|
},
|
|
}
|
|
RegisterSigningMethod(SigningMethodPS256.Alg(), func() SigningMethod {
|
|
return SigningMethodPS256
|
|
})
|
|
|
|
// PS384
|
|
SigningMethodPS384 = &SigningMethodRSAPSS{
|
|
SigningMethodRSA: &SigningMethodRSA{
|
|
Name: "PS384",
|
|
Hash: crypto.SHA384,
|
|
},
|
|
Options: &rsa.PSSOptions{
|
|
SaltLength: rsa.PSSSaltLengthEqualsHash,
|
|
},
|
|
VerifyOptions: &rsa.PSSOptions{
|
|
SaltLength: rsa.PSSSaltLengthAuto,
|
|
},
|
|
}
|
|
RegisterSigningMethod(SigningMethodPS384.Alg(), func() SigningMethod {
|
|
return SigningMethodPS384
|
|
})
|
|
|
|
// PS512
|
|
SigningMethodPS512 = &SigningMethodRSAPSS{
|
|
SigningMethodRSA: &SigningMethodRSA{
|
|
Name: "PS512",
|
|
Hash: crypto.SHA512,
|
|
},
|
|
Options: &rsa.PSSOptions{
|
|
SaltLength: rsa.PSSSaltLengthEqualsHash,
|
|
},
|
|
VerifyOptions: &rsa.PSSOptions{
|
|
SaltLength: rsa.PSSSaltLengthAuto,
|
|
},
|
|
}
|
|
RegisterSigningMethod(SigningMethodPS512.Alg(), func() SigningMethod {
|
|
return SigningMethodPS512
|
|
})
|
|
}
|
|
|
|
// Verify implements token verification for the SigningMethod.
|
|
// For this verify method, key must be an rsa.PublicKey struct
|
|
func (m *SigningMethodRSAPSS) Verify(signingString string, sig []byte, key any) error {
|
|
var rsaKey *rsa.PublicKey
|
|
switch k := key.(type) {
|
|
case *rsa.PublicKey:
|
|
rsaKey = k
|
|
default:
|
|
return newError("RSA-PSS verify expects *rsa.PublicKey", ErrInvalidKeyType)
|
|
}
|
|
|
|
// Create hasher
|
|
if !m.Hash.Available() {
|
|
return ErrHashUnavailable
|
|
}
|
|
hasher := m.Hash.New()
|
|
hasher.Write([]byte(signingString))
|
|
|
|
opts := m.Options
|
|
if m.VerifyOptions != nil {
|
|
opts = m.VerifyOptions
|
|
}
|
|
|
|
return rsa.VerifyPSS(rsaKey, m.Hash, hasher.Sum(nil), sig, opts)
|
|
}
|
|
|
|
// Sign implements token signing for the SigningMethod.
|
|
// For this signing method, key must be an rsa.PrivateKey struct
|
|
func (m *SigningMethodRSAPSS) Sign(signingString string, key any) ([]byte, error) {
|
|
var rsaKey *rsa.PrivateKey
|
|
|
|
switch k := key.(type) {
|
|
case *rsa.PrivateKey:
|
|
rsaKey = k
|
|
default:
|
|
return nil, newError("RSA-PSS sign expects *rsa.PrivateKey", ErrInvalidKeyType)
|
|
}
|
|
|
|
// Create the hasher
|
|
if !m.Hash.Available() {
|
|
return nil, ErrHashUnavailable
|
|
}
|
|
|
|
hasher := m.Hash.New()
|
|
hasher.Write([]byte(signingString))
|
|
|
|
// Sign the string and return the encoded bytes
|
|
if sigBytes, err := rsa.SignPSS(rand.Reader, rsaKey, m.Hash, hasher.Sum(nil), m.Options); err == nil {
|
|
return sigBytes, nil
|
|
} else {
|
|
return nil, err
|
|
}
|
|
}
|