-
Notifications
You must be signed in to change notification settings - Fork 27
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by: Cody Soyland <[email protected]>
- Loading branch information
1 parent
5008d5c
commit 72b6461
Showing
9 changed files
with
161 additions
and
103 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -23,7 +23,7 @@ import ( | |
) | ||
|
||
func TestSummarizeCertificateWithActionsBundle(t *testing.T) { | ||
entity := data.SigstoreJS200ProvenanceBundle(t) | ||
entity := data.Bundle(t, "[email protected]") | ||
|
||
vc, err := entity.VerificationContent() | ||
if err != nil { | ||
|
@@ -72,7 +72,7 @@ func TestSummarizeCertificateWithActionsBundle(t *testing.T) { | |
} | ||
|
||
func TestSummarizeCertificateWithOauthBundle(t *testing.T) { | ||
entity := data.SigstoreBundle(t) | ||
entity := data.Bundle(t, "dsse.sigstore.json") | ||
|
||
vc, err := entity.VerificationContent() | ||
if err != nil { | ||
|
@@ -102,7 +102,7 @@ func TestSummarizeCertificateWithOauthBundle(t *testing.T) { | |
} | ||
|
||
func TestSummarizeCertificateWithOtherNameSAN(t *testing.T) { | ||
entity := data.OthernameBundle(t) | ||
entity := data.Bundle(t, "othername.sigstore.json") | ||
vc, err := entity.VerificationContent() | ||
if err != nil { | ||
t.Fatalf("failed to get verification content: %v", err) | ||
|
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -15,94 +15,38 @@ | |
package data | ||
|
||
import ( | ||
"embed" | ||
_ "embed" | ||
"encoding/json" | ||
"os" | ||
"path/filepath" | ||
"testing" | ||
|
||
protobundle "github.com/sigstore/protobuf-specs/gen/pb-go/bundle/v1" | ||
"github.com/sigstore/sigstore-go/pkg/bundle" | ||
"github.com/sigstore/sigstore-go/pkg/root" | ||
"github.com/stretchr/testify/assert" | ||
"google.golang.org/protobuf/encoding/protojson" | ||
) | ||
|
||
// Unmarshal returns the Go value for the given bytes | ||
func Unmarshal[T any](t *testing.T, data []byte) T { | ||
var v T | ||
err := json.Unmarshal(data, &v) | ||
if err != nil { | ||
t.Fatal(err) | ||
} | ||
return v | ||
} | ||
|
||
//go:embed sigstoreBundle.json | ||
var SigstoreBundleRaw []byte | ||
|
||
//go:embed sigstoreBundle2Sig.json | ||
var SigstoreBundle2SigRaw []byte | ||
|
||
//go:embed [email protected] | ||
var SigstoreJS200ProvenanceBundleRaw []byte | ||
|
||
//go:embed othernameBundle.json | ||
var OthernameBundleRaw []byte | ||
|
||
// TestBundle creates *bundle.Bundle from a raw byte stream | ||
// containing a JSON encoded protobuf bundle. | ||
func TestBundle(t *testing.T, raw []byte) *bundle.Bundle { | ||
var b protobundle.Bundle | ||
err := protojson.Unmarshal(raw, &b) | ||
if err != nil { | ||
t.Fatal(err) | ||
} | ||
bun, err := bundle.NewBundle(&b) | ||
if err != nil { | ||
t.Fatal(err) | ||
} | ||
return bun | ||
} | ||
|
||
// SigstoreBundle returns a test *sigstore.Bundle. | ||
func SigstoreBundle(t *testing.T) *bundle.Bundle { | ||
return TestBundle(t, SigstoreBundleRaw) | ||
} | ||
|
||
// SigstoreBundle2Sig returns a test *sigstore.Bundle with two signatures. | ||
func SigstoreBundle2Sig(t *testing.T) *bundle.Bundle { | ||
return TestBundle(t, SigstoreBundle2SigRaw) | ||
} | ||
|
||
// SigstoreJS200ProvenanceBundle returns a test *sigstore.Bundle that | ||
// contains a complete sigstore-js build provenance. | ||
func SigstoreJS200ProvenanceBundle(t *testing.T) *bundle.Bundle { | ||
return TestBundle(t, SigstoreJS200ProvenanceBundleRaw) | ||
} | ||
|
||
// OthernameBundle returns a test *sigstore.Bundle that contains verification | ||
// content for an artifact signed with an Othername identity. | ||
func OthernameBundle(t *testing.T) *bundle.Bundle { | ||
return TestBundle(t, OthernameBundleRaw) | ||
} | ||
//go:embed bundles/*.json trusted-roots/*.json | ||
var embedded embed.FS | ||
|
||
// PublicGoodTrustedMaterialRoot returns a *root.TrustedRoot for PGI. | ||
func PublicGoodTrustedMaterialRoot(t *testing.T) *root.TrustedRoot { | ||
trustedrootJSON, _ := os.ReadFile("../../examples/trusted-root-public-good.json") | ||
trustedRoot, _ := root.NewTrustedRootFromJSON(trustedrootJSON) | ||
// Bundle reads a file from the embedded file system and returns a *bundle.Bundle | ||
func Bundle(t *testing.T, filename string) (b *bundle.Bundle) { | ||
b = &bundle.Bundle{} | ||
data, err := embedded.ReadFile(filepath.Join("bundles", filename)) | ||
assert.NoError(t, err) | ||
|
||
assert.NotNil(t, trustedRoot) | ||
err = b.UnmarshalJSON(data) | ||
assert.NoError(t, err) | ||
|
||
return trustedRoot | ||
return b | ||
} | ||
|
||
// ScaffoldingTrustedMaterialRoot returns a *root.TrustedRoot for a private | ||
// sigstore deployment. | ||
func ScaffoldingTrustedMaterialRoot(t *testing.T) *root.TrustedRoot { | ||
trustedrootJSON, _ := os.ReadFile("../testing/data/trusted-root-scaffolding.json") | ||
trustedRoot, _ := root.NewTrustedRootFromJSON(trustedrootJSON) | ||
// TrustedRoot reads a file from the embedded file system and returns a *root.TrustedRoot | ||
func TrustedRoot(t *testing.T, filename string) *root.TrustedRoot { | ||
data, err := embedded.ReadFile(filepath.Join("trusted-roots", filename)) | ||
assert.NoError(t, err) | ||
|
||
assert.NotNil(t, trustedRoot) | ||
trustedRoot, _ := root.NewTrustedRootFromJSON(data) | ||
assert.NoError(t, err) | ||
|
||
return trustedRoot | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,114 @@ | ||
{ | ||
"mediaType": "application/vnd.dev.sigstore.trustedroot+json;version=0.1", | ||
"tlogs": [ | ||
{ | ||
"baseUrl": "https://rekor.sigstore.dev", | ||
"hashAlgorithm": "SHA2_256", | ||
"publicKey": { | ||
"rawBytes": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE2G2Y+2tabdTV5BcGiBIx0a9fAFwrkBbmLSGtks4L3qX6yYY0zufBnhC8Ur/iy55GhWP/9A/bY2LhC30M9+RYtw==", | ||
"keyDetails": "PKIX_ECDSA_P256_SHA_256", | ||
"validFor": { | ||
"start": "2021-01-12T11:53:27.000Z" | ||
} | ||
}, | ||
"logId": { | ||
"keyId": "wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0=" | ||
} | ||
} | ||
], | ||
"certificateAuthorities": [ | ||
{ | ||
"subject": { | ||
"organization": "sigstore.dev", | ||
"commonName": "sigstore" | ||
}, | ||
"uri": "https://fulcio.sigstore.dev", | ||
"certChain": { | ||
"certificates": [ | ||
{ | ||
"rawBytes": "MIIB+DCCAX6gAwIBAgITNVkDZoCiofPDsy7dfm6geLbuhzAKBggqhkjOPQQDAzAqMRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxETAPBgNVBAMTCHNpZ3N0b3JlMB4XDTIxMDMwNzAzMjAyOVoXDTMxMDIyMzAzMjAyOVowKjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MREwDwYDVQQDEwhzaWdzdG9yZTB2MBAGByqGSM49AgEGBSuBBAAiA2IABLSyA7Ii5k+pNO8ZEWY0ylemWDowOkNa3kL+GZE5Z5GWehL9/A9bRNA3RbrsZ5i0JcastaRL7Sp5fp/jD5dxqc/UdTVnlvS16an+2Yfswe/QuLolRUCrcOE2+2iA5+tzd6NmMGQwDgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQEwHQYDVR0OBBYEFMjFHQBBmiQpMlEk6w2uSu1KBtPsMB8GA1UdIwQYMBaAFMjFHQBBmiQpMlEk6w2uSu1KBtPsMAoGCCqGSM49BAMDA2gAMGUCMH8liWJfMui6vXXBhjDgY4MwslmN/TJxVe/83WrFomwmNf056y1X48F9c4m3a3ozXAIxAKjRay5/aj/jsKKGIkmQatjI8uupHr/+CxFvaJWmpYqNkLDGRU+9orzh5hI2RrcuaQ==" | ||
} | ||
] | ||
}, | ||
"validFor": { | ||
"start": "2021-03-07T03:20:29.000Z", | ||
"end": "2022-12-31T23:59:59.999Z" | ||
} | ||
}, | ||
{ | ||
"subject": { | ||
"organization": "sigstore.dev", | ||
"commonName": "sigstore" | ||
}, | ||
"uri": "https://fulcio.sigstore.dev", | ||
"certChain": { | ||
"certificates": [ | ||
{ | ||
"rawBytes": "MIICGjCCAaGgAwIBAgIUALnViVfnU0brJasmRkHrn/UnfaQwCgYIKoZIzj0EAwMwKjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MREwDwYDVQQDEwhzaWdzdG9yZTAeFw0yMjA0MTMyMDA2MTVaFw0zMTEwMDUxMzU2NThaMDcxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEeMBwGA1UEAxMVc2lnc3RvcmUtaW50ZXJtZWRpYXRlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE8RVS/ysH+NOvuDZyPIZtilgUF9NlarYpAd9HP1vBBH1U5CV77LSS7s0ZiH4nE7Hv7ptS6LvvR/STk798LVgMzLlJ4HeIfF3tHSaexLcYpSASr1kS0N/RgBJz/9jWCiXno3sweTAOBgNVHQ8BAf8EBAMCAQYwEwYDVR0lBAwwCgYIKwYBBQUHAwMwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU39Ppz1YkEZb5qNjpKFWixi4YZD8wHwYDVR0jBBgwFoAUWMAeX5FFpWapesyQoZMi0CrFxfowCgYIKoZIzj0EAwMDZwAwZAIwPCsQK4DYiZYDPIaDi5HFKnfxXx6ASSVmERfsynYBiX2X6SJRnZU84/9DZdnFvvxmAjBOt6QpBlc4J/0DxvkTCqpclvziL6BCCPnjdlIB3Pu3BxsPmygUY7Ii2zbdCdliiow=" | ||
}, | ||
{ | ||
"rawBytes": "MIIB9zCCAXygAwIBAgIUALZNAPFdxHPwjeDloDwyYChAO/4wCgYIKoZIzj0EAwMwKjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MREwDwYDVQQDEwhzaWdzdG9yZTAeFw0yMTEwMDcxMzU2NTlaFw0zMTEwMDUxMzU2NThaMCoxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjERMA8GA1UEAxMIc2lnc3RvcmUwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAT7XeFT4rb3PQGwS4IajtLk3/OlnpgangaBclYpsYBr5i+4ynB07ceb3LP0OIOZdxexX69c5iVuyJRQ+Hz05yi+UF3uBWAlHpiS5sh0+H2GHE7SXrk1EC5m1Tr19L9gg92jYzBhMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRYwB5fkUWlZql6zJChkyLQKsXF+jAfBgNVHSMEGDAWgBRYwB5fkUWlZql6zJChkyLQKsXF+jAKBggqhkjOPQQDAwNpADBmAjEAj1nHeXZp+13NWBNa+EDsDP8G1WWg1tCMWP/WHPqpaVo0jhsweNFZgSs0eE7wYI4qAjEA2WB9ot98sIkoF3vZYdd3/VtWB5b9TNMea7Ix/stJ5TfcLLeABLE4BNJOsQ4vnBHJ" | ||
} | ||
] | ||
}, | ||
"validFor": { | ||
"start": "2022-04-13T20:06:15.000Z" | ||
} | ||
} | ||
], | ||
"ctlogs": [ | ||
{ | ||
"baseUrl": "https://ctfe.sigstore.dev/test", | ||
"hashAlgorithm": "SHA2_256", | ||
"publicKey": { | ||
"rawBytes": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbfwR+RJudXscgRBRpKX1XFDy3PyudDxz/SfnRi1fT8ekpfBd2O1uoz7jr3Z8nKzxA69EUQ+eFCFI3zeubPWU7w==", | ||
"keyDetails": "PKIX_ECDSA_P256_SHA_256", | ||
"validFor": { | ||
"start": "2021-03-14T00:00:00.000Z", | ||
"end": "2022-10-31T23:59:59.999Z" | ||
} | ||
}, | ||
"logId": { | ||
"keyId": "CGCS8ChS/2hF0dFrJ4ScRWcYrBY9wzjSbea8IgY2b3I=" | ||
} | ||
}, | ||
{ | ||
"baseUrl": "https://ctfe.sigstore.dev/2022", | ||
"hashAlgorithm": "SHA2_256", | ||
"publicKey": { | ||
"rawBytes": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEiPSlFi0CmFTfEjCUqF9HuCEcYXNKAaYalIJmBZ8yyezPjTqhxrKBpMnaocVtLJBI1eM3uXnQzQGAJdJ4gs9Fyw==", | ||
"keyDetails": "PKIX_ECDSA_P256_SHA_256", | ||
"validFor": { | ||
"start": "2022-10-20T00:00:00.000Z" | ||
} | ||
}, | ||
"logId": { | ||
"keyId": "3T0wasbHETJjGR4cmWc3AqJKXrjePK3/h4pygC8p7o4=" | ||
} | ||
} | ||
], | ||
"timestampAuthorities": [ | ||
{ | ||
"subject": { | ||
"organization": "GitHub, Inc.", | ||
"commonName": "Internal Services Root" | ||
}, | ||
"certChain": { | ||
"certificates": [ | ||
{ | ||
"rawBytes": "MIIB3DCCAWKgAwIBAgIUchkNsH36Xa04b1LqIc+qr9DVecMwCgYIKoZIzj0EAwMwMjEVMBMGA1UEChMMR2l0SHViLCBJbmMuMRkwFwYDVQQDExBUU0EgaW50ZXJtZWRpYXRlMB4XDTIzMDQxNDAwMDAwMFoXDTI0MDQxMzAwMDAwMFowMjEVMBMGA1UEChMMR2l0SHViLCBJbmMuMRkwFwYDVQQDExBUU0EgVGltZXN0YW1waW5nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUD5ZNbSqYMd6r8qpOOEX9ibGnZT9GsuXOhr/f8U9FJugBGExKYp40OULS0erjZW7xV9xV52NnJf5OeDq4e5ZKqNWMFQwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQMMAoGCCsGAQUFBwMIMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUaW1RudOgVt0leqY0WKYbuPr47wAwCgYIKoZIzj0EAwMDaAAwZQIwbUH9HvD4ejCZJOWQnqAlkqURllvu9M8+VqLbiRK+zSfZCZwsiljRn8MQQRSkXEE5AjEAg+VxqtojfVfu8DhzzhCx9GKETbJHb19iV72mMKUbDAFmzZ6bQ8b54Zb8tidy5aWe" | ||
}, | ||
{ | ||
"rawBytes": "MIICEDCCAZWgAwIBAgIUX8ZO5QXP7vN4dMQ5e9sU3nub8OgwCgYIKoZIzj0EAwMwODEVMBMGA1UEChMMR2l0SHViLCBJbmMuMR8wHQYDVQQDExZJbnRlcm5hbCBTZXJ2aWNlcyBSb290MB4XDTIzMDQxNDAwMDAwMFoXDTI4MDQxMjAwMDAwMFowMjEVMBMGA1UEChMMR2l0SHViLCBJbmMuMRkwFwYDVQQDExBUU0EgaW50ZXJtZWRpYXRlMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEvMLY/dTVbvIJYANAuszEwJnQE1llftynyMKIMhh48HmqbVr5ygybzsLRLVKbBWOdZ21aeJz+gZiytZetqcyF9WlER5NEMf6JV7ZNojQpxHq4RHGoGSceQv/qvTiZxEDKo2YwZDAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUaW1RudOgVt0leqY0WKYbuPr47wAwHwYDVR0jBBgwFoAU9NYYlobnAG4c0/qjxyH/lq/wz+QwCgYIKoZIzj0EAwMDaQAwZgIxAK1B185ygCrIYFlIs3GjswjnwSMG6LY8woLVdakKDZxVa8f8cqMs1DhcxJ0+09w95QIxAO+tBzZk7vjUJ9iJgD4R6ZWTxQWKqNm74jO99o+o9sv4FI/SZTZTFyMn0IJEHdNmyA==" | ||
}, | ||
{ | ||
"rawBytes": "MIIB9DCCAXqgAwIBAgIUa/JAkdUjK4JUwsqtaiRJGWhqLSowCgYIKoZIzj0EAwMwODEVMBMGA1UEChMMR2l0SHViLCBJbmMuMR8wHQYDVQQDExZJbnRlcm5hbCBTZXJ2aWNlcyBSb290MB4XDTIzMDQxNDAwMDAwMFoXDTMzMDQxMTAwMDAwMFowODEVMBMGA1UEChMMR2l0SHViLCBJbmMuMR8wHQYDVQQDExZJbnRlcm5hbCBTZXJ2aWNlcyBSb290MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEf9jFAXxz4kx68AHRMOkFBhflDcMTvzaXz4x/FCcXjJ/1qEKon/qPIGnaURskDtyNbNDOpeJTDDFqt48iMPrnzpx6IZwqemfUJN4xBEZfza+pYt/iyod+9tZr20RRWSv/o0UwQzAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBAjAdBgNVHQ4EFgQU9NYYlobnAG4c0/qjxyH/lq/wz+QwCgYIKoZIzj0EAwMDaAAwZQIxALZLZ8BgRXzKxLMMN9VIlO+e4hrBnNBgF7tz7Hnrowv2NetZErIACKFymBlvWDvtMAIwZO+ki6ssQ1bsZo98O8mEAf2NZ7iiCgDDU0Vwjeco6zyeh0zBTs9/7gV6AHNQ53xD" | ||
} | ||
] | ||
}, | ||
"validFor": { | ||
"start": "2023-04-14T00:00:00.000Z" | ||
} | ||
} | ||
] | ||
} |
File renamed without changes.
Oops, something went wrong.