Files
buildx/policy/git.go
T
2026-01-14 09:03:42 -08:00

43 lines
915 B
Go

package policy
import (
"fmt"
"github.com/moby/buildkit/util/gitutil/gitobject"
"github.com/moby/buildkit/util/gitutil/gitsign"
"golang.org/x/crypto/ssh"
)
type gitSignature struct {
PGPSignature *PGPSignature
SSHSignature *SSHSignature
}
func parseGitSignature(obj *gitobject.GitObject) *gitSignature {
if obj.Signature == "" {
return &gitSignature{}
}
sig, err := gitsign.ParseSignature([]byte(obj.Signature))
if err != nil {
return &gitSignature{}
}
out := &gitSignature{}
if s := sig.PGPSignature; s != nil {
out.PGPSignature = &PGPSignature{
Version: s.Version,
}
if s.IssuerKeyId != nil {
ki := *s.IssuerKeyId
// convert uint64 to hex string
out.PGPSignature.KeyID = fmt.Sprintf("%016x", ki)
}
}
if s := sig.SSHSignature; s != nil {
out.SSHSignature = &SSHSignature{
Version: int(s.Version),
PubKey: ssh.FingerprintSHA256(s.PublicKey),
}
}
return out
}