Skip to content

Commit 9ff9f39

Browse files
authored
Merge pull request #869 from sigstore/conformance_14
Update conformance to 0.0.14
2 parents 4117822 + fd36ca6 commit 9ff9f39

File tree

4 files changed

+13
-93
lines changed

4 files changed

+13
-93
lines changed

.github/workflows/conformance.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ jobs:
3535
- name: Unpack sigstore-java distribution
3636
run: tar -xvf ${{ github.workspace }}/sigstore-cli/build/distributions/sigstore-cli-*.tar --strip-components 1
3737

38-
- uses: sigstore/sigstore-conformance@6bd1c54e236c9517da56f7344ad16cc00439fe19 # v0.0.13
38+
- uses: sigstore/sigstore-conformance@b0635d4101f11dbd18a50936568a1f7f55b17760 # v0.0.14
3939
with:
4040
entrypoint: ${{ github.workspace }}/bin/sigstore-cli
4141
environment: ${{ matrix.sigstore-env }}

sigstore-cli/src/main/java/dev/sigstore/cli/Sign.java

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,13 @@
1717

1818
import dev.sigstore.KeylessSigner;
1919
import dev.sigstore.TrustedRootProvider;
20-
import dev.sigstore.encryption.certificates.Certificates;
2120
import dev.sigstore.oidc.client.OidcClients;
2221
import dev.sigstore.tuf.RootProvider;
2322
import dev.sigstore.tuf.SigstoreTufClient;
2423
import java.net.URL;
2524
import java.nio.charset.StandardCharsets;
2625
import java.nio.file.Files;
2726
import java.nio.file.Path;
28-
import java.util.Base64;
2927
import java.util.concurrent.Callable;
3028
import picocli.CommandLine.ArgGroup;
3129
import picocli.CommandLine.Command;
@@ -41,8 +39,11 @@ public class Sign implements Callable<Integer> {
4139
@Parameters(arity = "1", paramLabel = "<artifact>", description = "artifact to sign")
4240
Path artifact;
4341

44-
@ArgGroup(multiplicity = "1", exclusive = true)
45-
SignatureFiles signatureFiles;
42+
@Option(
43+
names = {"--bundle"},
44+
description = "path to bundle file",
45+
required = true)
46+
Path bundleFile;
4647

4748
@ArgGroup(multiplicity = "0..1", exclusive = true)
4849
Verify.Target target;
@@ -113,15 +114,7 @@ public Integer call() throws Exception {
113114
}
114115
var signer = signerBuilder.build();
115116
var bundle = signer.signFile(artifact);
116-
if (signatureFiles.sigAndCert != null) {
117-
Files.write(
118-
signatureFiles.sigAndCert.signatureFile,
119-
Base64.getEncoder().encode(bundle.getMessageSignature().get().getSignature()));
120-
Files.write(
121-
signatureFiles.sigAndCert.certificateFile, Certificates.toPemBytes(bundle.getCertPath()));
122-
} else {
123-
Files.write(signatureFiles.bundleFile, bundle.toJson().getBytes(StandardCharsets.UTF_8));
124-
}
117+
Files.write(bundleFile, bundle.toJson().getBytes(StandardCharsets.UTF_8));
125118
return 0;
126119
}
127120
}

sigstore-cli/src/main/java/dev/sigstore/cli/SignatureFiles.java

Lines changed: 0 additions & 46 deletions
This file was deleted.

sigstore-cli/src/main/java/dev/sigstore/cli/Verify.java

Lines changed: 6 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -23,20 +23,12 @@
2323
import dev.sigstore.VerificationOptions;
2424
import dev.sigstore.VerificationOptions.CertificateMatcher;
2525
import dev.sigstore.bundle.Bundle;
26-
import dev.sigstore.bundle.Bundle.HashAlgorithm;
27-
import dev.sigstore.bundle.Bundle.MessageSignature;
28-
import dev.sigstore.bundle.ImmutableBundle;
29-
import dev.sigstore.encryption.certificates.Certificates;
30-
import dev.sigstore.rekor.client.RekorEntryFetcher;
3126
import dev.sigstore.strings.StringMatcher;
3227
import dev.sigstore.tuf.RootProvider;
3328
import dev.sigstore.tuf.SigstoreTufClient;
3429
import java.net.URL;
3530
import java.nio.charset.StandardCharsets;
36-
import java.nio.file.Files;
3731
import java.nio.file.Path;
38-
import java.security.cert.CertPath;
39-
import java.util.Base64;
4032
import java.util.concurrent.Callable;
4133
import org.apache.commons.codec.binary.Hex;
4234
import picocli.CommandLine.ArgGroup;
@@ -58,8 +50,11 @@ public class Verify implements Callable<Integer> {
5850
description = "an artifact path or artifact hash (sha256:abc...) to verify")
5951
String artifact;
6052

61-
@ArgGroup(multiplicity = "1", exclusive = true)
62-
SignatureFiles signatureFiles;
53+
@Option(
54+
names = {"--bundle"},
55+
description = "path to bundle file",
56+
required = true)
57+
Path bundleFile;
6358

6459
@ArgGroup(multiplicity = "0..1", exclusive = false)
6560
Policy policy;
@@ -119,29 +114,7 @@ public Integer call() throws Exception {
119114
? Hex.decodeHex(artifact.substring(SHA256_PREFIX.length()))
120115
: asByteSource(Path.of(artifact).toFile()).hash(Hashing.sha256()).asBytes();
121116

122-
Bundle bundle;
123-
if (signatureFiles.sigAndCert != null) {
124-
byte[] signature =
125-
Base64.getMimeDecoder()
126-
.decode(Files.readAllBytes(signatureFiles.sigAndCert.signatureFile));
127-
CertPath certPath =
128-
Certificates.fromPemChain(Files.readAllBytes(signatureFiles.sigAndCert.certificateFile));
129-
RekorEntryFetcher fetcher =
130-
target == null
131-
? RekorEntryFetcher.sigstorePublicGood()
132-
: target.staging
133-
? RekorEntryFetcher.sigstoreStaging()
134-
: RekorEntryFetcher.fromTrustedRoot(target.trustedRoot);
135-
bundle =
136-
ImmutableBundle.builder()
137-
.messageSignature(MessageSignature.of(HashAlgorithm.SHA2_256, digest, signature))
138-
.certPath(certPath)
139-
.addEntries(
140-
fetcher.getEntryFromRekor(digest, Certificates.getLeaf(certPath), signature))
141-
.build();
142-
} else {
143-
bundle = Bundle.from(signatureFiles.bundleFile, StandardCharsets.UTF_8);
144-
}
117+
Bundle bundle = Bundle.from(bundleFile, StandardCharsets.UTF_8);
145118

146119
var verificationOptionsBuilder = VerificationOptions.builder();
147120
if (policy != null) {

0 commit comments

Comments
 (0)