From 59fd31aeddf6f75767e4e0c537fb8ae6880a0424 Mon Sep 17 00:00:00 2001 From: JasonPowr Date: Fri, 8 May 2026 10:09:21 +0100 Subject: [PATCH] fix: add cosignv3 signiture support, Fix LogID encoding Signed-off-by: JasonPowr --- hack/gentestdata/gentestdata.go | 14 ++++++-- pkg/apis/config/sigstore_keys.go | 7 +++- .../trustroot/testdata/ctfeLogID.txt | 2 +- .../trustroot/testdata/ctfePublicKey.pem | 4 +-- .../trustroot/testdata/fulcioCertChain.pem | 26 +++++++-------- .../trustroot/testdata/marshalledEntry.json | 16 +++++----- .../testdata/marshalledEntryFromMirrorFS.json | 12 +++---- .../trustroot/testdata/rekorLogID.txt | 2 +- .../trustroot/testdata/rekorPublicKey.pem | 4 +-- pkg/reconciler/trustroot/testdata/root.json | 30 +++++++++--------- .../rootWithCustomTrustedRootJSON.json | 30 +++++++++--------- .../testdata/rootWithTrustedRootJSON.json | 30 +++++++++--------- .../trustroot/testdata/tsaCertChain.pem | 28 ++++++++-------- pkg/reconciler/trustroot/testdata/tufRepo.tar | Bin 3241 -> 3250 bytes .../tufRepoWithCustomTrustedRootJSON.tar | Bin 3763 -> 3713 bytes .../testdata/tufRepoWithTrustedRootJSON.tar | Bin 3762 -> 3707 bytes pkg/reconciler/trustroot/trustroot.go | 19 +++++++++-- pkg/reconciler/trustroot/trustroot_test.go | 13 ++++++-- pkg/webhook/validation.go | 8 +++++ pkg/webhook/validator.go | 28 +++++++++++++--- pkg/webhook/validator_test.go | 25 ++++++++++----- 21 files changed, 186 insertions(+), 112 deletions(-) diff --git a/hack/gentestdata/gentestdata.go b/hack/gentestdata/gentestdata.go index 1797e3aea..6d2400f6c 100644 --- a/hack/gentestdata/gentestdata.go +++ b/hack/gentestdata/gentestdata.go @@ -22,8 +22,10 @@ import ( "crypto/rand" "crypto/x509" "crypto/x509/pkix" + "encoding/hex" "encoding/pem" "flag" + "fmt" "log" "math/big" "os" @@ -215,14 +217,22 @@ func populateLogIDs(sigstoreKeys *config.SigstoreKeys) error { if err != nil { return err } - sigstoreKeys.Tlogs[i].LogId = &config.LogID{KeyId: []byte(logID)} + logIDBytes, err := hex.DecodeString(logID) + if err != nil { + return fmt.Errorf("failed to decode tlog LogID: %w", err) + } + sigstoreKeys.Tlogs[i].LogId = &config.LogID{KeyId: logIDBytes} } for i := range sigstoreKeys.Ctlogs { logID, err := genLogID(sigstoreKeys.Ctlogs[i].PublicKey.RawBytes) if err != nil { return err } - sigstoreKeys.Ctlogs[i].LogId = &config.LogID{KeyId: []byte(logID)} + logIDBytes, err := hex.DecodeString(logID) + if err != nil { + return fmt.Errorf("failed to decode ctlog LogID: %w", err) + } + sigstoreKeys.Ctlogs[i].LogId = &config.LogID{KeyId: logIDBytes} } return nil } diff --git a/pkg/apis/config/sigstore_keys.go b/pkg/apis/config/sigstore_keys.go index af8cdc351..98db05d6e 100644 --- a/pkg/apis/config/sigstore_keys.go +++ b/pkg/apis/config/sigstore_keys.go @@ -21,6 +21,7 @@ import ( "crypto/ecdsa" "crypto/elliptic" "crypto/rsa" + "encoding/hex" "encoding/pem" "fmt" @@ -166,13 +167,17 @@ func ConvertTransparencyLogInstance(source v1alpha1.TransparencyLogInstance) (*p if err != nil { return nil, err } + logIDBytes, err := hex.DecodeString(logID) + if err != nil { + return nil, fmt.Errorf("failed to decode LogID: %w", err) + } return &pbtrustroot.TransparencyLogInstance{ BaseUrl: source.BaseURL.String(), HashAlgorithm: HashStringToHashAlgorithm(source.HashAlgorithm), PublicKey: pbpk, LogId: &pbcommon.LogId{ - KeyId: []byte(logID), + KeyId: logIDBytes, }, }, nil } diff --git a/pkg/reconciler/trustroot/testdata/ctfeLogID.txt b/pkg/reconciler/trustroot/testdata/ctfeLogID.txt index 79da6ea1a..0790f7678 100644 --- a/pkg/reconciler/trustroot/testdata/ctfeLogID.txt +++ b/pkg/reconciler/trustroot/testdata/ctfeLogID.txt @@ -1 +1 @@ -acf17f453fd18a03c80421956827a165a8e35745a5b9316cd6653e0e74dd8564 \ No newline at end of file +6535e233e5fdda81457be67eea2c3e38e161504c7e431b1eda5c125a2002301d \ No newline at end of file diff --git a/pkg/reconciler/trustroot/testdata/ctfePublicKey.pem b/pkg/reconciler/trustroot/testdata/ctfePublicKey.pem index 74c5d61da..8567641b8 100644 --- a/pkg/reconciler/trustroot/testdata/ctfePublicKey.pem +++ b/pkg/reconciler/trustroot/testdata/ctfePublicKey.pem @@ -1,4 +1,4 @@ -----BEGIN PUBLIC KEY----- -MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAES9xB42oHdFluiw6wANt/niwGlhq0 -laU5Q+KylSiS3I2UZUDp1P/8GdZEeLjryi9WzBdUCGIkeaPwKU5kCAfvCg== +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEYNjT4Xc2ppshhLUESZAjwgTG8KPR +TzrHijEZtWBtUHAB2SFWxYply2rymo6gNkbL9Mt6X/mLMDw44b2jYf8R7g== -----END PUBLIC KEY----- diff --git a/pkg/reconciler/trustroot/testdata/fulcioCertChain.pem b/pkg/reconciler/trustroot/testdata/fulcioCertChain.pem index c967edaf0..63532085b 100644 --- a/pkg/reconciler/trustroot/testdata/fulcioCertChain.pem +++ b/pkg/reconciler/trustroot/testdata/fulcioCertChain.pem @@ -1,18 +1,18 @@ -----BEGIN CERTIFICATE----- MIIBPjCB5KADAgECAgECMAoGCCqGSM49BAMCMA0xCzAJBgNVBAMTAmNhMB4XDTI2 -MDcyMDA5MDA0NloXDTM2MDcyMDA5MDA0NlowDzENMAsGA1UEAxMEbGVhZjBZMBMG -ByqGSM49AgEGCCqGSM49AwEHA0IABOfGXx7fja6RGX/fdxhqS729rrPLoC3SnOYk -XLsulTveNatUD/aWj+Pm6lmMgu7XmAwJey7X1eDOY82krp1Glq6jMzAxMA4GA1Ud -DwEB/wQEAwIGwDAfBgNVHSMEGDAWgBS+/yTu0t5fZADYyn/09SEqotouYTAKBggq -hkjOPQQDAgNJADBGAiEA3Ilo1dUM0DpSf8gudhY4WE0dyT33XpzDhTpc/rcK/jEC -IQC5y6ZZrXHdhF4SmgMFJV8B/ELPBaSv1IVw63ot9KfTlA== +MDcyNzE1MjI0NVoXDTM2MDcyNzE1MjI0NVowDzENMAsGA1UEAxMEbGVhZjBZMBMG +ByqGSM49AgEGCCqGSM49AwEHA0IABN/rCcQAWj40WzyJFJyberUeo0gXkctI/7FO +5U/SxCVwjGPEpGDCcdLAGJ8aFnlRh8P570NkJyLw1aHYXhnOOG6jMzAxMA4GA1Ud +DwEB/wQEAwIGwDAfBgNVHSMEGDAWgBS714qEdqvbbWMxCu5XU8t02VnnPTAKBggq +hkjOPQQDAgNJADBGAiEAjOL+MHpQdYlhim2VTgC2X1F5Sw+H5Y7LpVAAeV+6+nEC +IQDxe4JgvrSU0w6Lw8ZeHj+EsPwZu4sMaWG3itHxf5/GOA== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- -MIIBSjCB8aADAgECAgEBMAoGCCqGSM49BAMCMA0xCzAJBgNVBAMTAmNhMB4XDTI2 -MDcyMDA5MDA0NloXDTM2MDcyMDA5MDA0NlowDTELMAkGA1UEAxMCY2EwWTATBgcq -hkjOPQIBBggqhkjOPQMBBwNCAAQJAmqunDp6ckWG0Ab/Hv78Rx7z6xSMBrPOHv8M -OswZ71IfzouT4HSZm7BXp/YwLx6zmYzDpA3W34WOtT0SzKpho0IwQDAOBgNVHQ8B -Af8EBAMCAgQwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUvv8k7tLeX2QA2Mp/ -9PUhKqLaLmEwCgYIKoZIzj0EAwIDSAAwRQIhALQkjwjY33JokfG+ncPDepGgFJYa -LrWYxFCRuk0375ecAiAqqB9ACUPxR/1BUo3ipnSSaaUUlK5ksytaKKFp2Ae24g== +MIIBSzCB8aADAgECAgEBMAoGCCqGSM49BAMCMA0xCzAJBgNVBAMTAmNhMB4XDTI2 +MDcyNzE1MjI0NVoXDTM2MDcyNzE1MjI0NVowDTELMAkGA1UEAxMCY2EwWTATBgcq +hkjOPQIBBggqhkjOPQMBBwNCAAQioOFQ3s+IOprqRpW+KnoaeMhbG4ltedtGebgr +JKjvShgQn3e8O47GrdVEdFuXVGp81KwCXcwDzNQUge7IcIzvo0IwQDAOBgNVHQ8B +Af8EBAMCAgQwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUu9eKhHar221jMQru +V1PLdNlZ5z0wCgYIKoZIzj0EAwIDSQAwRgIhAOQyIx3t5Ky+bioMbAcRHSL76LVb +r0hLkwxs/o3HwWs3AiEAti3GH0ebqH8PBjy0GNXk0og2ZC4Q4GhLi++otLCqfTU= -----END CERTIFICATE----- diff --git a/pkg/reconciler/trustroot/testdata/marshalledEntry.json b/pkg/reconciler/trustroot/testdata/marshalledEntry.json index b0dd2b5a3..07d3d9d2d 100644 --- a/pkg/reconciler/trustroot/testdata/marshalledEntry.json +++ b/pkg/reconciler/trustroot/testdata/marshalledEntry.json @@ -5,14 +5,14 @@ "baseUrl": "https://rekor.example.com", "hashAlgorithm": "SHA2_256", "publicKey": { - "rawBytes": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEwrI7C8wbl+f4MLhj+zPh41uV6tGeXYHtaX6AkQ1c11pJzEb1Whj1s7zmarVwulTiEMqsX6qstjWzcA8ocY/mbQ==", + "rawBytes": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzmiyjrvz19Hmf+gyQ2RUVjhEzyVICG/TK9Zcf3brcM4VtRMAdmmytIVqjdW31Z9/UejfJq+ZjBU5xv4jwcUBmQ==", "keyDetails": "PKIX_ECDSA_P256_SHA_256", "validFor": { "start": "1970-01-01T00:00:00Z" } }, "logId": { - "keyId": "ZDEyZDVkOWFhNDE5NzRhNTg1OTYxZDE2MTI1MGNkMTVmMTFlNTJhNzdlM2ExY2RmZDFkZTM2MDViZDA0ZGYwNA==" + "keyId": "fADwHyhaM1PO0Hr3PEnTeBapk1tOmZjZeZWcm1Jho3U=" } } ], @@ -26,10 +26,10 @@ "certChain": { "certificates": [ { - "rawBytes": "MIIBPjCB5KADAgECAgECMAoGCCqGSM49BAMCMA0xCzAJBgNVBAMTAmNhMB4XDTI2MDcyMDA5MDA0NloXDTM2MDcyMDA5MDA0NlowDzENMAsGA1UEAxMEbGVhZjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABOfGXx7fja6RGX/fdxhqS729rrPLoC3SnOYkXLsulTveNatUD/aWj+Pm6lmMgu7XmAwJey7X1eDOY82krp1Glq6jMzAxMA4GA1UdDwEB/wQEAwIGwDAfBgNVHSMEGDAWgBS+/yTu0t5fZADYyn/09SEqotouYTAKBggqhkjOPQQDAgNJADBGAiEA3Ilo1dUM0DpSf8gudhY4WE0dyT33XpzDhTpc/rcK/jECIQC5y6ZZrXHdhF4SmgMFJV8B/ELPBaSv1IVw63ot9KfTlA==" + "rawBytes": "MIIBPjCB5KADAgECAgECMAoGCCqGSM49BAMCMA0xCzAJBgNVBAMTAmNhMB4XDTI2MDcyNzE1MjI0NVoXDTM2MDcyNzE1MjI0NVowDzENMAsGA1UEAxMEbGVhZjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABN/rCcQAWj40WzyJFJyberUeo0gXkctI/7FO5U/SxCVwjGPEpGDCcdLAGJ8aFnlRh8P570NkJyLw1aHYXhnOOG6jMzAxMA4GA1UdDwEB/wQEAwIGwDAfBgNVHSMEGDAWgBS714qEdqvbbWMxCu5XU8t02VnnPTAKBggqhkjOPQQDAgNJADBGAiEAjOL+MHpQdYlhim2VTgC2X1F5Sw+H5Y7LpVAAeV+6+nECIQDxe4JgvrSU0w6Lw8ZeHj+EsPwZu4sMaWG3itHxf5/GOA==" }, { - "rawBytes": "MIIBSjCB8aADAgECAgEBMAoGCCqGSM49BAMCMA0xCzAJBgNVBAMTAmNhMB4XDTI2MDcyMDA5MDA0NloXDTM2MDcyMDA5MDA0NlowDTELMAkGA1UEAxMCY2EwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQJAmqunDp6ckWG0Ab/Hv78Rx7z6xSMBrPOHv8MOswZ71IfzouT4HSZm7BXp/YwLx6zmYzDpA3W34WOtT0SzKpho0IwQDAOBgNVHQ8BAf8EBAMCAgQwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUvv8k7tLeX2QA2Mp/9PUhKqLaLmEwCgYIKoZIzj0EAwIDSAAwRQIhALQkjwjY33JokfG+ncPDepGgFJYaLrWYxFCRuk0375ecAiAqqB9ACUPxR/1BUo3ipnSSaaUUlK5ksytaKKFp2Ae24g==" + "rawBytes": "MIIBSzCB8aADAgECAgEBMAoGCCqGSM49BAMCMA0xCzAJBgNVBAMTAmNhMB4XDTI2MDcyNzE1MjI0NVoXDTM2MDcyNzE1MjI0NVowDTELMAkGA1UEAxMCY2EwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQioOFQ3s+IOprqRpW+KnoaeMhbG4ltedtGebgrJKjvShgQn3e8O47GrdVEdFuXVGp81KwCXcwDzNQUge7IcIzvo0IwQDAOBgNVHQ8BAf8EBAMCAgQwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUu9eKhHar221jMQruV1PLdNlZ5z0wCgYIKoZIzj0EAwIDSQAwRgIhAOQyIx3t5Ky+bioMbAcRHSL76LVbr0hLkwxs/o3HwWs3AiEAti3GH0ebqH8PBjy0GNXk0og2ZC4Q4GhLi++otLCqfTU=" } ] }, @@ -43,14 +43,14 @@ "baseUrl": "https://ctfe.example.com", "hashAlgorithm": "SHA2_256", "publicKey": { - "rawBytes": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAES9xB42oHdFluiw6wANt/niwGlhq0laU5Q+KylSiS3I2UZUDp1P/8GdZEeLjryi9WzBdUCGIkeaPwKU5kCAfvCg==", + "rawBytes": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEYNjT4Xc2ppshhLUESZAjwgTG8KPRTzrHijEZtWBtUHAB2SFWxYply2rymo6gNkbL9Mt6X/mLMDw44b2jYf8R7g==", "keyDetails": "PKIX_ECDSA_P256_SHA_256", "validFor": { "start": "1970-01-01T00:00:00Z" } }, "logId": { - "keyId": "YWNmMTdmNDUzZmQxOGEwM2M4MDQyMTk1NjgyN2ExNjVhOGUzNTc0NWE1YjkzMTZjZDY2NTNlMGU3NGRkODU2NA==" + "keyId": "ZTXiM+X92oFFe+Z+6iw+OOFhUEx+Qxse2lwSWiACMB0=" } } ], @@ -64,10 +64,10 @@ "certChain": { "certificates": [ { - "rawBytes": "MIIBPjCB5KADAgECAgECMAoGCCqGSM49BAMCMA0xCzAJBgNVBAMTAmNhMB4XDTI2MDcyMDA5MDA0NloXDTM2MDcyMDA5MDA0NlowDzENMAsGA1UEAxMEbGVhZjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCNxMOw1rxPlbqRR1//XWhbUdr3Ss4TLOWwkDrgH6UKBYU2jAkR/vlNk8lsCWdVLRtrX5uk5kx6268+wzEak/m6jMzAxMA4GA1UdDwEB/wQEAwIEEDAfBgNVHSMEGDAWgBSO60qMR9pTnfzXXM73hWw3um6d7DAKBggqhkjOPQQDAgNJADBGAiEAlx+K0sb82V8xiJDyV3CTQVKLyCGvIz9mLqpYHtm68tcCIQDpBXdPLgsBNnuNaAOTsGjIkbF+yih+0u4vMCQDoQ48vA==" + "rawBytes": "MIIBPTCB5KADAgECAgECMAoGCCqGSM49BAMCMA0xCzAJBgNVBAMTAmNhMB4XDTI2MDcyNzE1MjI0NVoXDTM2MDcyNzE1MjI0NVowDzENMAsGA1UEAxMEbGVhZjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABAOJTgHPothg44K6qtLYX05X6AeHl5SbSu40hs5fgUwxqM/q5dAkyLIFF97/EjFohTMf3TKUkoDKovPIOzOa5O6jMzAxMA4GA1UdDwEB/wQEAwIEEDAfBgNVHSMEGDAWgBTBiZBUV7Q6uzvzkdNs27ayNVqwmTAKBggqhkjOPQQDAgNIADBFAiB57pSBN27X8/xzO4xfELuI1ZNJn+d8qDllAq4aquKqMQIhAN4/ShbJXTbyLrn/PKwBkpnduey7EmXJlaQGEc5iYiWp" }, { - "rawBytes": "MIIBSzCB8aADAgECAgEBMAoGCCqGSM49BAMCMA0xCzAJBgNVBAMTAmNhMB4XDTI2MDcyMDA5MDA0NloXDTM2MDcyMDA5MDA0NlowDTELMAkGA1UEAxMCY2EwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARnmSPSK4FXomdJHvVDqsVuI53ezlBNODUVK3pddglbjLrHzrWYFWddF7wh7IXYC92NfExAQJCYTHt7p2U7Xwi6o0IwQDAOBgNVHQ8BAf8EBAMCAgQwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUjutKjEfaU53811zO94VsN7punewwCgYIKoZIzj0EAwIDSQAwRgIhAIRRfwvlYsonpB3ta2VwKyl9xgzQT2kangYk/otGQ3aHAiEAlT7E7GIhH+pibEXnZ58YzmEJAcsb+ny3hc7mNjHwCz0=" + "rawBytes": "MIIBSjCB8aADAgECAgEBMAoGCCqGSM49BAMCMA0xCzAJBgNVBAMTAmNhMB4XDTI2MDcyNzE1MjI0NVoXDTM2MDcyNzE1MjI0NVowDTELMAkGA1UEAxMCY2EwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAT+OCSU0aJP8LtLqbZdIUmoSyXGjaiQ6zqL10phyF0ARu5wwamIbX97E5VozjldlkCWonfSBJgCBuS5g6N4DxjYo0IwQDAOBgNVHQ8BAf8EBAMCAgQwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUwYmQVFe0Ors785HTbNu2sjVasJkwCgYIKoZIzj0EAwIDSAAwRQIhAJfUleJ643oEBQ9pe8FMZ3EDJ4hNACpr/jjxH8nM7bWiAiAweomZPvBZ9xJsFJZle2JWYAktziLNvvo53ny2bUqjHA==" } ] }, diff --git a/pkg/reconciler/trustroot/testdata/marshalledEntryFromMirrorFS.json b/pkg/reconciler/trustroot/testdata/marshalledEntryFromMirrorFS.json index 2921ce103..17c643968 100644 --- a/pkg/reconciler/trustroot/testdata/marshalledEntryFromMirrorFS.json +++ b/pkg/reconciler/trustroot/testdata/marshalledEntryFromMirrorFS.json @@ -3,14 +3,14 @@ { "hashAlgorithm": "SHA2_256", "publicKey": { - "rawBytes": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEwrI7C8wbl+f4MLhj+zPh41uV6tGeXYHtaX6AkQ1c11pJzEb1Whj1s7zmarVwulTiEMqsX6qstjWzcA8ocY/mbQ==", + "rawBytes": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzmiyjrvz19Hmf+gyQ2RUVjhEzyVICG/TK9Zcf3brcM4VtRMAdmmytIVqjdW31Z9/UejfJq+ZjBU5xv4jwcUBmQ==", "keyDetails": "PKIX_ECDSA_P256_SHA_256", "validFor": { "start": "1970-01-01T00:00:00Z" } }, "logId": { - "keyId": "ZDEyZDVkOWFhNDE5NzRhNTg1OTYxZDE2MTI1MGNkMTVmMTFlNTJhNzdlM2ExY2RmZDFkZTM2MDViZDA0ZGYwNA==" + "keyId": "fADwHyhaM1PO0Hr3PEnTeBapk1tOmZjZeZWcm1Jho3U=" } } ], @@ -19,10 +19,10 @@ "certChain": { "certificates": [ { - "rawBytes": "MIIBPjCB5KADAgECAgECMAoGCCqGSM49BAMCMA0xCzAJBgNVBAMTAmNhMB4XDTI2MDcyMDA5MDA0NloXDTM2MDcyMDA5MDA0NlowDzENMAsGA1UEAxMEbGVhZjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABOfGXx7fja6RGX/fdxhqS729rrPLoC3SnOYkXLsulTveNatUD/aWj+Pm6lmMgu7XmAwJey7X1eDOY82krp1Glq6jMzAxMA4GA1UdDwEB/wQEAwIGwDAfBgNVHSMEGDAWgBS+/yTu0t5fZADYyn/09SEqotouYTAKBggqhkjOPQQDAgNJADBGAiEA3Ilo1dUM0DpSf8gudhY4WE0dyT33XpzDhTpc/rcK/jECIQC5y6ZZrXHdhF4SmgMFJV8B/ELPBaSv1IVw63ot9KfTlA==" + "rawBytes": "MIIBPjCB5KADAgECAgECMAoGCCqGSM49BAMCMA0xCzAJBgNVBAMTAmNhMB4XDTI2MDcyNzE1MjI0NVoXDTM2MDcyNzE1MjI0NVowDzENMAsGA1UEAxMEbGVhZjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABN/rCcQAWj40WzyJFJyberUeo0gXkctI/7FO5U/SxCVwjGPEpGDCcdLAGJ8aFnlRh8P570NkJyLw1aHYXhnOOG6jMzAxMA4GA1UdDwEB/wQEAwIGwDAfBgNVHSMEGDAWgBS714qEdqvbbWMxCu5XU8t02VnnPTAKBggqhkjOPQQDAgNJADBGAiEAjOL+MHpQdYlhim2VTgC2X1F5Sw+H5Y7LpVAAeV+6+nECIQDxe4JgvrSU0w6Lw8ZeHj+EsPwZu4sMaWG3itHxf5/GOA==" }, { - "rawBytes": "MIIBSjCB8aADAgECAgEBMAoGCCqGSM49BAMCMA0xCzAJBgNVBAMTAmNhMB4XDTI2MDcyMDA5MDA0NloXDTM2MDcyMDA5MDA0NlowDTELMAkGA1UEAxMCY2EwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQJAmqunDp6ckWG0Ab/Hv78Rx7z6xSMBrPOHv8MOswZ71IfzouT4HSZm7BXp/YwLx6zmYzDpA3W34WOtT0SzKpho0IwQDAOBgNVHQ8BAf8EBAMCAgQwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUvv8k7tLeX2QA2Mp/9PUhKqLaLmEwCgYIKoZIzj0EAwIDSAAwRQIhALQkjwjY33JokfG+ncPDepGgFJYaLrWYxFCRuk0375ecAiAqqB9ACUPxR/1BUo3ipnSSaaUUlK5ksytaKKFp2Ae24g==" + "rawBytes": "MIIBSzCB8aADAgECAgEBMAoGCCqGSM49BAMCMA0xCzAJBgNVBAMTAmNhMB4XDTI2MDcyNzE1MjI0NVoXDTM2MDcyNzE1MjI0NVowDTELMAkGA1UEAxMCY2EwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQioOFQ3s+IOprqRpW+KnoaeMhbG4ltedtGebgrJKjvShgQn3e8O47GrdVEdFuXVGp81KwCXcwDzNQUge7IcIzvo0IwQDAOBgNVHQ8BAf8EBAMCAgQwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUu9eKhHar221jMQruV1PLdNlZ5z0wCgYIKoZIzj0EAwIDSQAwRgIhAOQyIx3t5Ky+bioMbAcRHSL76LVbr0hLkwxs/o3HwWs3AiEAti3GH0ebqH8PBjy0GNXk0og2ZC4Q4GhLi++otLCqfTU=" } ] }, @@ -35,14 +35,14 @@ { "hashAlgorithm": "SHA2_256", "publicKey": { - "rawBytes": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAES9xB42oHdFluiw6wANt/niwGlhq0laU5Q+KylSiS3I2UZUDp1P/8GdZEeLjryi9WzBdUCGIkeaPwKU5kCAfvCg==", + "rawBytes": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEYNjT4Xc2ppshhLUESZAjwgTG8KPRTzrHijEZtWBtUHAB2SFWxYply2rymo6gNkbL9Mt6X/mLMDw44b2jYf8R7g==", "keyDetails": "PKIX_ECDSA_P256_SHA_256", "validFor": { "start": "1970-01-01T00:00:00Z" } }, "logId": { - "keyId": "YWNmMTdmNDUzZmQxOGEwM2M4MDQyMTk1NjgyN2ExNjVhOGUzNTc0NWE1YjkzMTZjZDY2NTNlMGU3NGRkODU2NA==" + "keyId": "ZTXiM+X92oFFe+Z+6iw+OOFhUEx+Qxse2lwSWiACMB0=" } } ] diff --git a/pkg/reconciler/trustroot/testdata/rekorLogID.txt b/pkg/reconciler/trustroot/testdata/rekorLogID.txt index 78b8c7caa..aa0a2ecb4 100644 --- a/pkg/reconciler/trustroot/testdata/rekorLogID.txt +++ b/pkg/reconciler/trustroot/testdata/rekorLogID.txt @@ -1 +1 @@ -d12d5d9aa41974a585961d161250cd15f11e52a77e3a1cdfd1de3605bd04df04 \ No newline at end of file +7c00f01f285a3353ced07af73c49d37816a9935b4e9998d979959c9b5261a375 \ No newline at end of file diff --git a/pkg/reconciler/trustroot/testdata/rekorPublicKey.pem b/pkg/reconciler/trustroot/testdata/rekorPublicKey.pem index 6ccc71620..44bae7154 100644 --- a/pkg/reconciler/trustroot/testdata/rekorPublicKey.pem +++ b/pkg/reconciler/trustroot/testdata/rekorPublicKey.pem @@ -1,4 +1,4 @@ -----BEGIN PUBLIC KEY----- -MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEwrI7C8wbl+f4MLhj+zPh41uV6tGe -XYHtaX6AkQ1c11pJzEb1Whj1s7zmarVwulTiEMqsX6qstjWzcA8ocY/mbQ== +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzmiyjrvz19Hmf+gyQ2RUVjhEzyVI +CG/TK9Zcf3brcM4VtRMAdmmytIVqjdW31Z9/UejfJq+ZjBU5xv4jwcUBmQ== -----END PUBLIC KEY----- diff --git a/pkg/reconciler/trustroot/testdata/root.json b/pkg/reconciler/trustroot/testdata/root.json index 5cc10dc64..b9e9659fb 100644 --- a/pkg/reconciler/trustroot/testdata/root.json +++ b/pkg/reconciler/trustroot/testdata/root.json @@ -3,9 +3,9 @@ "_type": "root", "spec_version": "1.0", "version": 1, - "expires": "2027-01-20T10:00:47Z", + "expires": "2027-01-27T16:22:46Z", "keys": { - "32ff9c075bc05c7467312d969b8c5115751168e20f8b50d8f7338cf332a235cd": { + "3486ab200c1bba2553214f8fbd354e506eb2cc079260fec8568466d8905b3077": { "keytype": "ed25519", "scheme": "ed25519", "keyid_hash_algorithms": [ @@ -13,10 +13,10 @@ "sha512" ], "keyval": { - "public": "635b751227d765c699d45fb5d4486826f4d6cbb28aa633eb96851d3fb9004cb5" + "public": "1b6ad4d55414e0deb19b88ec5cb358e1e86219a91ad920287291392b1a3980c0" } }, - "47461411ef034f8a16f5f4935e02270e34ff4cf123e681a9c6cdb7e5d2adce9b": { + "bfcba7c6106980cbd9d8831845e98f67eb3d744839ec014d4323be3b4beffc8c": { "keytype": "ed25519", "scheme": "ed25519", "keyid_hash_algorithms": [ @@ -24,10 +24,10 @@ "sha512" ], "keyval": { - "public": "cfd7d31f503e2610ff2978ba4737116ce924dbc462425ba2113b848e50b6345f" + "public": "6335210a26991d0fc4f8f0d5911c62e4154cd3ab149db420136ac2f3ec6be1d5" } }, - "93e3b9e97fbeea85ec6be4643f7ed267b653cbab185d92b3b1fc746b5a797888": { + "ced8d630f608ae8723e9c8c3c6580734f6bbdbdeda24c253c1dce10b578c5636": { "keytype": "ed25519", "scheme": "ed25519", "keyid_hash_algorithms": [ @@ -35,10 +35,10 @@ "sha512" ], "keyval": { - "public": "8c339e1d5c57bd2639e244b579d78af0f138ab02c7f1ff63ee9452e3144b61f3" + "public": "8cde24b7d0e38f32770eb764522906a42d824a953ea7988fb8aad69f14194e0d" } }, - "b2c50ac11772a239ea0be7aaa11a76d459fcd9ff00490fc1447a13651cd45c06": { + "d6b3c07f05ca8d1a97b3cf542c0d6c48c41e87b22042e62d88f3d6b9da3ef978": { "keytype": "ed25519", "scheme": "ed25519", "keyid_hash_algorithms": [ @@ -46,32 +46,32 @@ "sha512" ], "keyval": { - "public": "4a77e624e183b6d7e1e2986014c67b972de6c55eca337d1e67c1ad4dc9ae3a2f" + "public": "6ac9b5f37ef054728dde41385171392acdbfd754b1c4473528c3770dfd6a981a" } } }, "roles": { "root": { "keyids": [ - "b2c50ac11772a239ea0be7aaa11a76d459fcd9ff00490fc1447a13651cd45c06" + "bfcba7c6106980cbd9d8831845e98f67eb3d744839ec014d4323be3b4beffc8c" ], "threshold": 1 }, "snapshot": { "keyids": [ - "93e3b9e97fbeea85ec6be4643f7ed267b653cbab185d92b3b1fc746b5a797888" + "d6b3c07f05ca8d1a97b3cf542c0d6c48c41e87b22042e62d88f3d6b9da3ef978" ], "threshold": 1 }, "targets": { "keyids": [ - "32ff9c075bc05c7467312d969b8c5115751168e20f8b50d8f7338cf332a235cd" + "ced8d630f608ae8723e9c8c3c6580734f6bbdbdeda24c253c1dce10b578c5636" ], "threshold": 1 }, "timestamp": { "keyids": [ - "47461411ef034f8a16f5f4935e02270e34ff4cf123e681a9c6cdb7e5d2adce9b" + "3486ab200c1bba2553214f8fbd354e506eb2cc079260fec8568466d8905b3077" ], "threshold": 1 } @@ -80,8 +80,8 @@ }, "signatures": [ { - "keyid": "b2c50ac11772a239ea0be7aaa11a76d459fcd9ff00490fc1447a13651cd45c06", - "sig": "c0f1067da018028debc0d4ea26c3398e4c9e1c5aa3f2854100a18066a074cbd10c35ab474a23d7c90e3ade481065bf066354615a3ccda1ffb5a3c11db4a2aa06" + "keyid": "bfcba7c6106980cbd9d8831845e98f67eb3d744839ec014d4323be3b4beffc8c", + "sig": "80ed319b70c5dbe81db7713cd824eaa8e5c7f24dd468120236de7dc96e42415280a15772d5176649bbcef5b88a40eb547f4990431cbad894a59de4486aef9207" } ] } \ No newline at end of file diff --git a/pkg/reconciler/trustroot/testdata/rootWithCustomTrustedRootJSON.json b/pkg/reconciler/trustroot/testdata/rootWithCustomTrustedRootJSON.json index 7514fe143..a9e249127 100644 --- a/pkg/reconciler/trustroot/testdata/rootWithCustomTrustedRootJSON.json +++ b/pkg/reconciler/trustroot/testdata/rootWithCustomTrustedRootJSON.json @@ -3,9 +3,9 @@ "_type": "root", "spec_version": "1.0", "version": 1, - "expires": "2027-01-20T10:00:47Z", + "expires": "2027-01-27T16:22:46Z", "keys": { - "04fc6b58cae00284eefebf2f278c7ed3212903cb44cf3e132618e8748420dfd4": { + "6cbb77fd4b44c581aedebc095806663b43d81306dc347c8cc57ecd25f1bc23bc": { "keytype": "ed25519", "scheme": "ed25519", "keyid_hash_algorithms": [ @@ -13,10 +13,10 @@ "sha512" ], "keyval": { - "public": "e70b7414fa2651b94e7eced11cee63d365a98a302171eca0c5257772f671c0b2" + "public": "6d4ca1eb2bc48b295655e49c53661dec6c0f83a23b6149a6998bdc91c15f8d6c" } }, - "1662d452858d1ecf5666e94eb97377123fbb66fcae917889a0268149f0230145": { + "ae7347357543a790726d65d06bccfb683977d01fe607c5da7f5946eee75a51a0": { "keytype": "ed25519", "scheme": "ed25519", "keyid_hash_algorithms": [ @@ -24,10 +24,10 @@ "sha512" ], "keyval": { - "public": "fe50c85e2f8bd8bc41ed5a99a0ccc85646252ccf14038616d0eaa199b0f8a353" + "public": "22ea9ea2ccd6812bf1a2ac4fd4ba474919bc2d6f9fb50eefcda61b77b4eb8536" } }, - "e3e4e4a53b69dd0956b2d7037468b02e8cc6cbb2181db24cebda5c117043ec7a": { + "bc92cabb09028b7b88d79253e8b9c54d7628c2458e31244303438777e07a3a7d": { "keytype": "ed25519", "scheme": "ed25519", "keyid_hash_algorithms": [ @@ -35,10 +35,10 @@ "sha512" ], "keyval": { - "public": "26f3ced707d65011b4e63c35007b4f1be79880a9ea9b3abe2b9e5519354bba37" + "public": "a19089ccaaac1acfc72a21144629c246b3e0216c4786e021d9d8ff2308642ace" } }, - "fd3814d159fd3e91d919bd2e1a494675ceffe0702b04795a8c59794c9148b82d": { + "ff1d75d7b76994c46c376b939723cf2611410a3b04d77848d3a6a22c2dcfefde": { "keytype": "ed25519", "scheme": "ed25519", "keyid_hash_algorithms": [ @@ -46,32 +46,32 @@ "sha512" ], "keyval": { - "public": "4bd9d98fa64a365e98ef57c3ed5cbf2094620bb3024918d2dcfe7258ab6a6aac" + "public": "b9b23d775c251a82c6b4decd871bb89687efc9abf2a2672f993885c13f1c9a46" } } }, "roles": { "root": { "keyids": [ - "1662d452858d1ecf5666e94eb97377123fbb66fcae917889a0268149f0230145" + "bc92cabb09028b7b88d79253e8b9c54d7628c2458e31244303438777e07a3a7d" ], "threshold": 1 }, "snapshot": { "keyids": [ - "fd3814d159fd3e91d919bd2e1a494675ceffe0702b04795a8c59794c9148b82d" + "ff1d75d7b76994c46c376b939723cf2611410a3b04d77848d3a6a22c2dcfefde" ], "threshold": 1 }, "targets": { "keyids": [ - "e3e4e4a53b69dd0956b2d7037468b02e8cc6cbb2181db24cebda5c117043ec7a" + "6cbb77fd4b44c581aedebc095806663b43d81306dc347c8cc57ecd25f1bc23bc" ], "threshold": 1 }, "timestamp": { "keyids": [ - "04fc6b58cae00284eefebf2f278c7ed3212903cb44cf3e132618e8748420dfd4" + "ae7347357543a790726d65d06bccfb683977d01fe607c5da7f5946eee75a51a0" ], "threshold": 1 } @@ -80,8 +80,8 @@ }, "signatures": [ { - "keyid": "1662d452858d1ecf5666e94eb97377123fbb66fcae917889a0268149f0230145", - "sig": "e8411e53ba4044e9af4ab393ae1a28854a61f53ba8bd7f5c882903bcd30885282289c6111bedcf8fdf0a1e88ff61c324cbc6cbabaaa762cfd947dd07fcb80d0d" + "keyid": "bc92cabb09028b7b88d79253e8b9c54d7628c2458e31244303438777e07a3a7d", + "sig": "45758d40dfd77f2d14a54aa90bdff128d59ed43398e4c941150ae83748dc8da7afee7282a88e291fd44883b8639cd7575f5165e48ed9cb4dda825a633ace250b" } ] } \ No newline at end of file diff --git a/pkg/reconciler/trustroot/testdata/rootWithTrustedRootJSON.json b/pkg/reconciler/trustroot/testdata/rootWithTrustedRootJSON.json index 61edb98c0..3998dea3d 100644 --- a/pkg/reconciler/trustroot/testdata/rootWithTrustedRootJSON.json +++ b/pkg/reconciler/trustroot/testdata/rootWithTrustedRootJSON.json @@ -3,9 +3,9 @@ "_type": "root", "spec_version": "1.0", "version": 1, - "expires": "2027-01-20T10:00:47Z", + "expires": "2027-01-27T16:22:46Z", "keys": { - "1ec208327405d2a40ce80120da8a3de5c3f210dbd696f5269eae681198704c3e": { + "0dc320651b0916d1ab079bfd6d282e263a25608e2a72cc13b9285fa858854427": { "keytype": "ed25519", "scheme": "ed25519", "keyid_hash_algorithms": [ @@ -13,10 +13,10 @@ "sha512" ], "keyval": { - "public": "994a1f21d12564ba60dbb9a5942e91c9ce483d0e00d81f96b7d529ad6652fe7b" + "public": "f6b7eeb12ae65b26db850f9c09415380c16179cf98a9acf5f12b038cc823f5db" } }, - "47314e0fea05e38d481b8b7ee1ce9e80282a63b63c5e3df9650096f97af4b0e3": { + "4721176c85019a7e82789a8f64e99073bfb82a44b8566983471763ce2aa3c4d1": { "keytype": "ed25519", "scheme": "ed25519", "keyid_hash_algorithms": [ @@ -24,10 +24,10 @@ "sha512" ], "keyval": { - "public": "6399a568409c3710b7ab3d0cffb180f46dd8dfa05d218732d094b296f71476ba" + "public": "e9e81f447c59b5e559844683ebda2a135442caca880c6787eed55109d3f663bf" } }, - "7c08956a4c63174f60883639c141c17b52c7d20f16cc4410b21dbfa9f9a9174e": { + "edeeac4fa12564f682ee4148a64090bbfea0062f2743a7b6a5cd89d4f93f7d99": { "keytype": "ed25519", "scheme": "ed25519", "keyid_hash_algorithms": [ @@ -35,10 +35,10 @@ "sha512" ], "keyval": { - "public": "180ede2b3d5e113deceb2dae669082c2a4ffc5fae650b067ac96d745468917e8" + "public": "36f6ce4b5fce16999ecac7b31921fdd98f91d248283c00dbd5f9f8cdb672693a" } }, - "9259f408ffcf1ceffe3ca926ee7c0ed576bd4c7889c18eb9544a90d33112353d": { + "f34904bd3749f8829002bc5a8229c5070dc0f9e849a60fc8a6dd508ef3c1ee4a": { "keytype": "ed25519", "scheme": "ed25519", "keyid_hash_algorithms": [ @@ -46,32 +46,32 @@ "sha512" ], "keyval": { - "public": "53fd50a4e6865405b382b3e7684edfb0593f7f401c59a4b8e8d9d22da9c7fcf2" + "public": "4f653b090e3f98e842bbe0b6c9a2a6f0e61ff393a6099d3b4b95456c5496bf79" } } }, "roles": { "root": { "keyids": [ - "1ec208327405d2a40ce80120da8a3de5c3f210dbd696f5269eae681198704c3e" + "edeeac4fa12564f682ee4148a64090bbfea0062f2743a7b6a5cd89d4f93f7d99" ], "threshold": 1 }, "snapshot": { "keyids": [ - "9259f408ffcf1ceffe3ca926ee7c0ed576bd4c7889c18eb9544a90d33112353d" + "4721176c85019a7e82789a8f64e99073bfb82a44b8566983471763ce2aa3c4d1" ], "threshold": 1 }, "targets": { "keyids": [ - "47314e0fea05e38d481b8b7ee1ce9e80282a63b63c5e3df9650096f97af4b0e3" + "0dc320651b0916d1ab079bfd6d282e263a25608e2a72cc13b9285fa858854427" ], "threshold": 1 }, "timestamp": { "keyids": [ - "7c08956a4c63174f60883639c141c17b52c7d20f16cc4410b21dbfa9f9a9174e" + "f34904bd3749f8829002bc5a8229c5070dc0f9e849a60fc8a6dd508ef3c1ee4a" ], "threshold": 1 } @@ -80,8 +80,8 @@ }, "signatures": [ { - "keyid": "1ec208327405d2a40ce80120da8a3de5c3f210dbd696f5269eae681198704c3e", - "sig": "a609d1928bc390df5151b46805f78e48d3e1bc021a7cee791fd6f7bf23644c5ed1cc81229c63bc15827833f99239d755f1e7325a964e082bab1ccf850b7be30a" + "keyid": "edeeac4fa12564f682ee4148a64090bbfea0062f2743a7b6a5cd89d4f93f7d99", + "sig": "84b134fa393a0aa5abad5ef380092731181f25ea3ea70f0493be4e717b5865627b90afa45cc7b9096a00090b8e419687417a30b90989f50cbd53d0eab66f7905" } ] } \ No newline at end of file diff --git a/pkg/reconciler/trustroot/testdata/tsaCertChain.pem b/pkg/reconciler/trustroot/testdata/tsaCertChain.pem index 9430f4fd2..453b12d33 100644 --- a/pkg/reconciler/trustroot/testdata/tsaCertChain.pem +++ b/pkg/reconciler/trustroot/testdata/tsaCertChain.pem @@ -1,18 +1,18 @@ -----BEGIN CERTIFICATE----- -MIIBPjCB5KADAgECAgECMAoGCCqGSM49BAMCMA0xCzAJBgNVBAMTAmNhMB4XDTI2 -MDcyMDA5MDA0NloXDTM2MDcyMDA5MDA0NlowDzENMAsGA1UEAxMEbGVhZjBZMBMG -ByqGSM49AgEGCCqGSM49AwEHA0IABCNxMOw1rxPlbqRR1//XWhbUdr3Ss4TLOWwk -DrgH6UKBYU2jAkR/vlNk8lsCWdVLRtrX5uk5kx6268+wzEak/m6jMzAxMA4GA1Ud -DwEB/wQEAwIEEDAfBgNVHSMEGDAWgBSO60qMR9pTnfzXXM73hWw3um6d7DAKBggq -hkjOPQQDAgNJADBGAiEAlx+K0sb82V8xiJDyV3CTQVKLyCGvIz9mLqpYHtm68tcC -IQDpBXdPLgsBNnuNaAOTsGjIkbF+yih+0u4vMCQDoQ48vA== +MIIBPTCB5KADAgECAgECMAoGCCqGSM49BAMCMA0xCzAJBgNVBAMTAmNhMB4XDTI2 +MDcyNzE1MjI0NVoXDTM2MDcyNzE1MjI0NVowDzENMAsGA1UEAxMEbGVhZjBZMBMG +ByqGSM49AgEGCCqGSM49AwEHA0IABAOJTgHPothg44K6qtLYX05X6AeHl5SbSu40 +hs5fgUwxqM/q5dAkyLIFF97/EjFohTMf3TKUkoDKovPIOzOa5O6jMzAxMA4GA1Ud +DwEB/wQEAwIEEDAfBgNVHSMEGDAWgBTBiZBUV7Q6uzvzkdNs27ayNVqwmTAKBggq +hkjOPQQDAgNIADBFAiB57pSBN27X8/xzO4xfELuI1ZNJn+d8qDllAq4aquKqMQIh +AN4/ShbJXTbyLrn/PKwBkpnduey7EmXJlaQGEc5iYiWp -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- -MIIBSzCB8aADAgECAgEBMAoGCCqGSM49BAMCMA0xCzAJBgNVBAMTAmNhMB4XDTI2 -MDcyMDA5MDA0NloXDTM2MDcyMDA5MDA0NlowDTELMAkGA1UEAxMCY2EwWTATBgcq -hkjOPQIBBggqhkjOPQMBBwNCAARnmSPSK4FXomdJHvVDqsVuI53ezlBNODUVK3pd -dglbjLrHzrWYFWddF7wh7IXYC92NfExAQJCYTHt7p2U7Xwi6o0IwQDAOBgNVHQ8B -Af8EBAMCAgQwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUjutKjEfaU53811zO -94VsN7punewwCgYIKoZIzj0EAwIDSQAwRgIhAIRRfwvlYsonpB3ta2VwKyl9xgzQ -T2kangYk/otGQ3aHAiEAlT7E7GIhH+pibEXnZ58YzmEJAcsb+ny3hc7mNjHwCz0= +MIIBSjCB8aADAgECAgEBMAoGCCqGSM49BAMCMA0xCzAJBgNVBAMTAmNhMB4XDTI2 +MDcyNzE1MjI0NVoXDTM2MDcyNzE1MjI0NVowDTELMAkGA1UEAxMCY2EwWTATBgcq +hkjOPQIBBggqhkjOPQMBBwNCAAT+OCSU0aJP8LtLqbZdIUmoSyXGjaiQ6zqL10ph +yF0ARu5wwamIbX97E5VozjldlkCWonfSBJgCBuS5g6N4DxjYo0IwQDAOBgNVHQ8B +Af8EBAMCAgQwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUwYmQVFe0Ors785HT +bNu2sjVasJkwCgYIKoZIzj0EAwIDSAAwRQIhAJfUleJ643oEBQ9pe8FMZ3EDJ4hN +ACpr/jjxH8nM7bWiAiAweomZPvBZ9xJsFJZle2JWYAktziLNvvo53ny2bUqjHA== -----END CERTIFICATE----- diff --git a/pkg/reconciler/trustroot/testdata/tufRepo.tar b/pkg/reconciler/trustroot/testdata/tufRepo.tar index 927d899bcac06157744b8dd60250408f30720680..0a593bcccad7624aba69e530911eb95172b6d6d8 100644 GIT binary patch literal 3250 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 literal 3241 zcmV;a3|8|WiwFP!00000|Lj~@a~i+0&oiHb@@wu1YVAtZ|6y2+iH&0dj+a}fQd(Mo z4F4$+@0iRT7w)pq`ex``1!SJNA47ZNSm^9Vv`(I2d;)gVDvC zWrAGcsecJ!^6qnb9VnCZP5ykTQapj_cw$Fy2w6p2e<48R+uiUFr$icJav<{4dtd*w zbQyj(ev`>BAT??w#MAaq$QuxpDkecH^@afFguls)-zU-?ZtVZa4hJ(FJ^9>o_aDC8 ze+lmTzpxMr;N562n7lh04^Cd(#?SkI&IQl>|0>*B*?zlTJSs?SJRD^K0Xdr9xgmJ^w0zuFb#w`|c;sZ0}Zz{MvBp zdR?D3CYf+b0HrD@DZDf$a1osdoNKA6j66v19M#rJ#?Tq51q2qIA%uG;t{VE9{{3~{ z+8S3}0tdiI7?0Y5j3RQw1QJRWLB?a`J_2PZHCW@N4^E*7)CP~n{l&`iF{r>G3c`>| zATd&-w6k0>1t2{d%7gPX?I=jz1@?GD>Ux7b{D9#tcFbUMLr+WCkhcPAC(Uwvj|&+B!nLiV&k@ zh=vP_3^;cZB73YXN4+4{11OammO)D#Dr+r(RWfj4q7NoULbxH(1Lw*DlLCC;!V~!y zD~nsDP*RSdnUg^wAT?SN;9e?c6b&f75a=yqDga95!3G|@vB)f47+JY%g{_SSJ-l;b zb5D6+1Kn_6{ue8E;Z-M{5so{9Uh4YbUKfr}>~P%qt{^Wqi60VVVn=P9jK3qti=F$u{UvY@;n$ZSBafk@#Zk&+26L0IN}un?n5KLP~DEw%P)NPo@c|DF5#rwPz2$J6=$ z%`km=Lh$qXzhI1H`Tr`A<^Qi63;F-@Onw2+D;|VKe$7e0UJH6pDYrcE2Z`Q`N%{iOa|{JTMs*ZQ5+)=V12$L^LLk;KMj|M} zICI{EGXhPTC{k+C(v%l6Fh&^Xg5`v2YL(+brL2)V@I(t8jdX@eiAI@7H6_Y1!a_hT zkdv4Zy}uhz^S}F6`LZ^Cf&T%|*8f+6jQ_oEEbzbOnfwBt;eS+6`H=sC%J|<(@E!hl zGmrNh=--1W!ZkmM_-=^(Z?Qk6pC^CPQz>1r&Ju~#01HuC3yy+!LAVf|vJj#XQBZ}R zSYc3T8mMrATOS#+U?pWB3-d)PCO~k&Lt&DMAN{tE(g7unskBW!Lq*In^E@Ln$>y^ZDsbw_GlHjZs zAVZ|VfR0jWkBrJFsCLvtbTn!}=BW`Wp>>jItC{p1Bag@(qX3{F+|23!ni|*VufGgM zj_`OeddXOGO|Swc^oA>KQl!lzV1`a1n_?M-gZY zJW{0`f)qh!-chkNl&fwN=9jb8_g-zJSZt3 zu+$G|49FSR6cuO443A2KV_FcVW8hX0_TQN6JjMT)Sqk#={GT%r8UJ4eGXDR%anJsL zQ}x#`)qgQ2GycB{Wc6QJ{ny{1tgQYktN+UCzq0zTto|#j|H`mBJeB`1vlQf4*8db_ z`Tr`A<^Qi6_w4^SRe$|b{TBtE<^QWdR{xdNe`WPwuNP18ziXRZN*lkh{zDkc_}?m! z@xRxNd-lIflV1S&>GNMC5h6SPWfgeb|BG>886`o_`F}HPDJaq*|C!`|IhxMgu_Sy)9sKbQZjhxtDPpjrLzO7O1~#Y(ldoi9~BwQB3NQqro- zujcBtT5;#7R1}*@IcZl)>7RNssFq5n)n=WWVp1>F6LMah|xotI>RW=e*ONt+3b^lz&BP%~u_X{zccTSs%n$c)yYfxg%laB|-x&5v2wAVVr zZ9Ca57wq2A+nv7b_3Q1a+V3Z`4|t*W0m~l`G(8>-q1ro@NA=6(yq@q>qL3@kD#gOA zQAuXC>a3i^^gTD4^-8sz?6r%{w}p$=luSfCOv(orCk0}fmD9mwFg<7`o5gnfG}k#k z`nc0*l#}-MhooGrCf!QHYP|u3-8v}`n^Cu?p>x3ZDkNOA7~3CSmOHJXFO2+V;iyu| z)fy#nArB8n`x~LN&YS&qef`5{T`W|#c8a!n2DQ&K$p#a%8C$*NpMP@m&Z}&fA9v_; zo!vYt6}7$X?Ben}yH(k$C&xFPT{@tZ*%D1rCTGd^q;S%mRePONlIz)B z(RjOg(Q9^_tVVYacgsWADd=iAtl-ws=%Q=(E{kEeRIMGO-I;CfisMoe&q@n{?4ekH zT4Vpe@Lc>~#$Kl9~%r4Gi+ bY^Q&Q3>h-~rTD)900960O-gv$0Du4h@jY;e diff --git a/pkg/reconciler/trustroot/testdata/tufRepoWithCustomTrustedRootJSON.tar b/pkg/reconciler/trustroot/testdata/tufRepoWithCustomTrustedRootJSON.tar index f4cefb97552072fb41ecffb2c1030752774bb3bc..ae2bd849816281c4a3cdcf7477d06995ab1645ae 100644 GIT binary patch literal 3713 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 literal 3763 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 diff --git a/pkg/reconciler/trustroot/trustroot.go b/pkg/reconciler/trustroot/trustroot.go index 21491a402..26d7341ca 100644 --- a/pkg/reconciler/trustroot/trustroot.go +++ b/pkg/reconciler/trustroot/trustroot.go @@ -18,6 +18,7 @@ import ( "context" "crypto" "crypto/ecdsa" + "encoding/hex" "encoding/json" "errors" "fmt" @@ -95,14 +96,22 @@ func (r *Reconciler) ReconcileKind(ctx context.Context, trustroot *v1alpha1.Trus if !ok { return fmt.Errorf("public key %d is not ecdsa.PublicKey", i) } - sigstoreKeys.Tlogs[i].LogId = &config.LogID{KeyId: []byte(logID)} + logIDBytes, err := hex.DecodeString(logID) + if err != nil { + return fmt.Errorf("invalid rekor log ID encoding %d: %w", i, err) + } + sigstoreKeys.Tlogs[i].LogId = &config.LogID{KeyId: logIDBytes} } for i, ctlog := range sigstoreKeys.Ctlogs { _, logID, err := pemToKeyAndID(config.SerializePublicKey(ctlog.PublicKey)) if err != nil { return fmt.Errorf("invalid ctlog public key %d: %w", i, err) } - sigstoreKeys.Ctlogs[i].LogId = &config.LogID{KeyId: []byte(logID)} + logIDBytes, err := hex.DecodeString(logID) + if err != nil { + return fmt.Errorf("invalid ctlog log ID encoding %d: %w", i, err) + } + sigstoreKeys.Ctlogs[i].LogId = &config.LogID{KeyId: logIDBytes} } // See if the CM holding configs exists @@ -328,10 +337,14 @@ func genTransparencyLogInstance(baseURL string, pkBytes []byte) (*config.Transpa if err != nil { return nil, fmt.Errorf("failed to construct LogID: %w", err) } + logIDBytes, err := hex.DecodeString(logID) + if err != nil { + return nil, fmt.Errorf("failed to decode LogID: %w", err) + } return &config.TransparencyLogInstance{ BaseUrl: baseURL, HashAlgorithm: pbcommon.HashAlgorithm_SHA2_256, PublicKey: pbpk, - LogId: &pbcommon.LogId{KeyId: []byte(logID)}, + LogId: &pbcommon.LogId{KeyId: logIDBytes}, }, nil } diff --git a/pkg/reconciler/trustroot/trustroot_test.go b/pkg/reconciler/trustroot/trustroot_test.go index af6447b98..de8af3552 100644 --- a/pkg/reconciler/trustroot/trustroot_test.go +++ b/pkg/reconciler/trustroot/trustroot_test.go @@ -23,6 +23,7 @@ import ( "crypto/x509" "crypto/x509/pkix" _ "embed" + "encoding/hex" "encoding/pem" "fmt" "math/big" @@ -447,11 +448,19 @@ func makeConfigMapWithSigstoreKeys() *corev1.ConfigMap { if err != nil { panic("failed to convert test SigstoreKeys") } + rekorLogIDBytes, err := hex.DecodeString(rekorLogID) + if err != nil { + panic("failed to decode rekor log ID") + } for i := range c.Tlogs { - c.Tlogs[i].LogId = &config.LogID{KeyId: []byte(rekorLogID)} + c.Tlogs[i].LogId = &config.LogID{KeyId: rekorLogIDBytes} + } + ctfeLogIDBytes, err := hex.DecodeString(ctfeLogID) + if err != nil { + panic("failed to decode ctfe log ID") } for i := range c.Ctlogs { - c.Ctlogs[i].LogId = &config.LogID{KeyId: []byte(ctfeLogID)} + c.Ctlogs[i].LogId = &config.LogID{KeyId: ctfeLogIDBytes} } marshalled, err := resources.Marshal(c) if err != nil { diff --git a/pkg/webhook/validation.go b/pkg/webhook/validation.go index 76333c162..e37d83ba2 100644 --- a/pkg/webhook/validation.go +++ b/pkg/webhook/validation.go @@ -76,6 +76,14 @@ func validSignatures(ctx context.Context, ref name.Reference, checkOpts *cosign. return sigs, err } +// validBundleFormat verifies cosign v3 bundle-format signatures via the attestation +// API, which is the only path that supports bundles in cosign v3.0.x. +func validBundleFormat(ctx context.Context, ref name.Reference, checkOpts *cosign.CheckOpts) ([]oci.Signature, error) { + checkOpts.ClaimVerifier = cosign.IntotoSubjectClaimVerifier + sigs, _, err := cosignVerifyAttestations(ctx, ref, checkOpts) + return sigs, err +} + func validAttestations(ctx context.Context, ref name.Reference, checkOpts *cosign.CheckOpts) ([]oci.Signature, error) { cfg := policycontrollerconfig.FromContextOrDefaults(ctx) if cfg.EnableOCI11 { diff --git a/pkg/webhook/validator.go b/pkg/webhook/validator.go index c01ea59d6..d0f6777b8 100644 --- a/pkg/webhook/validator.go +++ b/pkg/webhook/validator.go @@ -847,9 +847,18 @@ func ValidatePolicySignaturesForAuthority(ctx context.Context, ref name.Referenc case authority.Keyless != nil: if authority.Keyless.URL != nil { - sps, err := validSignatures(ctx, ref, checkOpts) + var sps []oci.Signature + var err error + var methodName string + if checkOpts.NewBundleFormat { + methodName = "validBundleFormat" + sps, err = validBundleFormat(ctx, ref, checkOpts) + } else { + methodName = "validSignatures" + sps, err = validSignatures(ctx, ref, checkOpts) + } if err != nil { - logging.FromContext(ctx).Errorf("failed validSignatures for authority %s with fulcio for %s: %v", name, ref.Name(), err) + logging.FromContext(ctx).Errorf("failed %s for authority %s with fulcio for %s: %v", methodName, name, ref.Name(), err) return nil, fmt.Errorf("signature keyless validation failed for authority %s for %s: %w", name, ref.Name(), err) } logging.FromContext(ctx).Debugf("validated signature for %s, got %d signatures", ref.Name(), len(sps)) @@ -1642,7 +1651,7 @@ func fulcioCertsFromAuthority(ctx context.Context, keylessRef *webhookcip.Keyles if err != nil { return nil, nil, nil, fmt.Errorf("unmarshaling public key %d failed: %w", i, err) } - ctlogKeys.Keys[string(ctlog.LogId.KeyId)] = cosign.TransparencyLogPubKey{ + ctlogKeys.Keys[logIDToHex(ctlog.LogId.KeyId)] = cosign.TransparencyLogPubKey{ PubKey: pk, Status: tuf.Active, } @@ -1734,7 +1743,7 @@ func rekorKeysFromTrustRef(ctx context.Context, trustRootRef string) (*cosign.Tr if !ok { return nil, "", fmt.Errorf("public key %d is not ecdsa.PublicKey", i) } - retKeys.Keys[string(tlog.LogId.KeyId)] = cosign.TransparencyLogPubKey{ + retKeys.Keys[logIDToHex(tlog.LogId.KeyId)] = cosign.TransparencyLogPubKey{ PubKey: pkecdsa, Status: tuf.Active, } @@ -1745,6 +1754,17 @@ func rekorKeysFromTrustRef(ctx context.Context, trustRootRef string) (*cosign.Tr return nil, "", fmt.Errorf("trustRootRef %s not found", trustRootRef) } +// logIDToHex normalizes a LogID KeyId to a hex string regardless of whether it +// was stored as raw binary (32 bytes, new format) or ASCII hex (64 bytes, old format). +func logIDToHex(keyID []byte) string { + if len(keyID) == sha256.Size*2 { + if decoded, err := hex.DecodeString(string(keyID)); err == nil { + return hex.EncodeToString(decoded) + } + } + return hex.EncodeToString(keyID) +} + // splitPEMCertificateChain returns a list of leaf (non-CA) certificates, a certificate pool for // intermediate CA certificates, and a certificate pool for root CA certificates func splitPEMCertificateChain(pem []byte) (leaves, intermediates, roots []*x509.Certificate, err error) { diff --git a/pkg/webhook/validator_test.go b/pkg/webhook/validator_test.go index 25700b589..3ae7ad051 100644 --- a/pkg/webhook/validator_test.go +++ b/pkg/webhook/validator_test.go @@ -22,6 +22,7 @@ import ( "crypto/ecdsa" "crypto/x509" "encoding/base64" + "encoding/hex" "encoding/json" "errors" "fmt" @@ -134,6 +135,14 @@ aEcvjlCkgBCKXbrkumZV0m0dSlK1V1gxEiyQ8y6hk1MxJNe2AZrZUt7a4w== ctfeLogID = "39d1c085f7d5f3fe7a0de9e52a3ead14186891e52a9269d90de7990a30b55083" ) +func mustHexDecode(s string) []byte { + b, err := hex.DecodeString(s) + if err != nil { + panic(err) + } + return b +} + func TestValidatePodSpec(t *testing.T) { tag := name.MustParseReference("gcr.io/distroless/static:nonroot") // Resolved via crane digest on 2021/09/25 @@ -3395,7 +3404,7 @@ func TestFulcioCertsFromAuthority(t *testing.T) { CertChain: certChain, }}, Ctlogs: []*config.TransparencyLogInstance{{ - LogId: &config.LogID{KeyId: []byte(ctfeLogID)}, + LogId: &config.LogID{KeyId: mustHexDecode(ctfeLogID)}, PublicKey: pbpk, }}, } @@ -3503,7 +3512,7 @@ func TestRekorClientAndKeysFromAuthority(t *testing.T) { sk := config.SigstoreKeys{ Tlogs: []*config.TransparencyLogInstance{{ PublicKey: pbpk, - LogId: &config.LogID{KeyId: []byte(rekorLogID)}, + LogId: &config.LogID{KeyId: mustHexDecode(rekorLogID)}, BaseUrl: "rekor.example.com", }}, } @@ -3646,7 +3655,7 @@ func TestCheckOptsFromAuthority(t *testing.T) { skRekor := config.SigstoreKeys{ Tlogs: []*config.TransparencyLogInstance{{ PublicKey: pbpkRekor, - LogId: &config.LogID{KeyId: []byte("rekor-logid")}, + LogId: &config.LogID{KeyId: mustHexDecode(rekorLogID)}, BaseUrl: "rekor.example.com", }}, } @@ -3663,7 +3672,7 @@ func TestCheckOptsFromAuthority(t *testing.T) { CertChain: certChainPB, }}, Ctlogs: []*config.TransparencyLogInstance{{ - LogId: &config.LogID{KeyId: []byte(ctfeLogID)}, + LogId: &config.LogID{KeyId: mustHexDecode(ctfeLogID)}, PublicKey: pbpkCTFE, }}, } @@ -3671,7 +3680,7 @@ func TestCheckOptsFromAuthority(t *testing.T) { MediaType: "application/vnd.dev.sigstore.trustedroot+json;version=0.1", Tlogs: []*config.TransparencyLogInstance{{ PublicKey: pbpkRekor, - LogId: &config.LogID{KeyId: []byte("rekor-logid")}, + LogId: &config.LogID{KeyId: mustHexDecode(rekorLogID)}, BaseUrl: "rekor.example.com", HashAlgorithm: pbcommon.HashAlgorithm_SHA2_256, }}, @@ -3683,7 +3692,7 @@ func TestCheckOptsFromAuthority(t *testing.T) { CertChain: certChainPB, }}, Ctlogs: []*config.TransparencyLogInstance{{ - LogId: &config.LogID{KeyId: []byte(ctfeLogID)}, + LogId: &config.LogID{KeyId: mustHexDecode(ctfeLogID)}, PublicKey: pbpkCTFE, HashAlgorithm: pbcommon.HashAlgorithm_SHA2_256, }}, @@ -3746,7 +3755,7 @@ func TestCheckOptsFromAuthority(t *testing.T) { ctx: testCtx, wantClient: true, wantCheckOpts: &cosign.CheckOpts{ - RekorPubKeys: &cosign.TrustedTransparencyLogPubKeys{Keys: map[string]cosign.TransparencyLogPubKey{"rekor-logid": {PubKey: ecpk, Status: tuf.Active}}}, + RekorPubKeys: &cosign.TrustedTransparencyLogPubKeys{Keys: map[string]cosign.TransparencyLogPubKey{rekorLogID: {PubKey: ecpk, Status: tuf.Active}}}, }, }, { name: "trustroot found, Fulcio", @@ -3779,7 +3788,7 @@ func TestCheckOptsFromAuthority(t *testing.T) { wantCheckOpts: &cosign.CheckOpts{ RootCerts: roots, IntermediateCerts: intermediates, - RekorPubKeys: &cosign.TrustedTransparencyLogPubKeys{Keys: map[string]cosign.TransparencyLogPubKey{"rekor-logid": {PubKey: ecpk, Status: tuf.Active}}}, + RekorPubKeys: &cosign.TrustedTransparencyLogPubKeys{Keys: map[string]cosign.TransparencyLogPubKey{rekorLogID: {PubKey: ecpk, Status: tuf.Active}}}, Identities: []cosign.Identity{{ Issuer: "issuer", Subject: "subject",