Skip to content

Commit b9c5bf5

Browse files
authored
Merge pull request #1032 from sigstore/remove-legacy-sc
Replace LegacySigningConfig with TUF signing config
2 parents 6efb1c2 + 775eccf commit b9c5bf5

File tree

6 files changed

+42
-105
lines changed

6 files changed

+42
-105
lines changed

sigstore-java/src/main/java/dev/sigstore/trustroot/LegacySigningConfig.java

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

sigstore-java/src/test/java/dev/sigstore/fulcio/client/FulcioClientGrpcTest.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,11 @@
2424
import dev.sigstore.testing.FulcioWrapper;
2525
import dev.sigstore.testing.MockOAuth2ServerExtension;
2626
import dev.sigstore.testing.grpc.GrpcTypes;
27-
import dev.sigstore.trustroot.LegacySigningConfig;
27+
import dev.sigstore.trustroot.Service;
28+
import dev.sigstore.tuf.SigstoreTufClient;
2829
import java.nio.charset.StandardCharsets;
2930
import java.security.cert.CertificateException;
31+
import java.util.List;
3032
import org.junit.jupiter.api.Assertions;
3133
import org.junit.jupiter.api.Test;
3234
import org.junit.jupiter.api.extension.ExtendWith;
@@ -96,11 +98,14 @@ public void testDecode_embeddedGrpc() throws Exception {
9698
Resources.toString(
9799
Resources.getResource("dev/sigstore/samples/fulcio-response/valid/certWithSct.pem"),
98100
StandardCharsets.UTF_8));
101+
102+
var tufClient = SigstoreTufClient.builder().usePublicGoodInstance().build();
103+
tufClient.update();
104+
var signingConfig = tufClient.getSigstoreSigningConfig();
105+
var fulcioService = Service.select(signingConfig.getCas(), List.of(1)).get();
106+
99107
var signingCert =
100-
FulcioClientGrpc.builder()
101-
.setService(LegacySigningConfig.PUBLIC_GOOD.getCas().get(0))
102-
.build()
103-
.decodeCerts(certs);
108+
FulcioClientGrpc.builder().setService(fulcioService).build().decodeCerts(certs);
104109
Assertions.assertTrue(
105110
Certificates.getEmbeddedSCTs(Certificates.getLeaf(signingCert)).isPresent());
106111
Assertions.assertEquals(3, signingCert.getCertificates().size());

sigstore-java/src/test/java/dev/sigstore/oidc/client/WebOidcClientTest.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717

1818
import com.gargoylesoftware.htmlunit.WebClient;
1919
import dev.sigstore.testing.MockOAuth2ServerExtension;
20-
import dev.sigstore.trustroot.LegacySigningConfig;
2120
import dev.sigstore.trustroot.Service;
2221
import io.github.netmikey.logunit.api.LogCapturer;
2322
import java.net.URI;
@@ -54,7 +53,7 @@ public void testAuthFlow() throws OidcException {
5453
public void isEnabled_CI() {
5554
var client =
5655
WebOidcClient.builder()
57-
.setIssuer(LegacySigningConfig.PUBLIC_GOOD.getOidcProviders().get(0))
56+
.setIssuer(Service.of(URI.create("https://nonsense.com"), 1))
5857
.build();
5958
Assertions.assertFalse(client.isEnabled(Map.of("CI", "true")));
6059
logs.assertContains("Skipping browser based oidc provider because CI detected");
@@ -64,7 +63,7 @@ public void isEnabled_CI() {
6463
public void isEnabled_notCI() {
6564
var client =
6665
WebOidcClient.builder()
67-
.setIssuer(LegacySigningConfig.PUBLIC_GOOD.getOidcProviders().get(0))
66+
.setIssuer(Service.of(URI.create("https://nonsense.com"), 1))
6867
.build();
6968
Assertions.assertTrue(client.isEnabled(Map.of("CI", "false")));
7069
}

sigstore-java/src/test/java/dev/sigstore/rekor/client/RekorClientHttpTest.java

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,16 @@
2424
import dev.sigstore.encryption.certificates.Certificates;
2525
import dev.sigstore.encryption.signers.Signers;
2626
import dev.sigstore.testing.CertGenerator;
27-
import dev.sigstore.trustroot.LegacySigningConfig;
27+
import dev.sigstore.trustroot.Service;
28+
import dev.sigstore.tuf.SigstoreTufClient;
2829
import java.io.IOException;
2930
import java.nio.charset.StandardCharsets;
3031
import java.security.InvalidKeyException;
3132
import java.security.MessageDigest;
3233
import java.security.NoSuchAlgorithmException;
3334
import java.security.SignatureException;
3435
import java.security.cert.CertificateException;
36+
import java.util.List;
3537
import java.util.Optional;
3638
import java.util.UUID;
3739
import org.bouncycastle.operator.OperatorCreationException;
@@ -51,10 +53,12 @@ public class RekorClientHttpTest {
5153
@BeforeAll
5254
public static void setupClient() throws Exception {
5355
// this tests directly against rekor in prod, it's a bit hard to bring up a rekor instance
54-
client =
55-
RekorClientHttp.builder()
56-
.setService(LegacySigningConfig.PUBLIC_GOOD.getTLogs().get(0))
57-
.build();
56+
var tufClient = SigstoreTufClient.builder().usePublicGoodInstance().build();
57+
tufClient.update();
58+
var signingConfig = tufClient.getSigstoreSigningConfig();
59+
var rekorService = Service.select(signingConfig.getTLogs(), List.of(1)).get();
60+
61+
client = RekorClientHttp.builder().setService(rekorService).build();
5862
req = createdRekorRequest();
5963
resp = client.putEntry(req);
6064
}
@@ -64,11 +68,13 @@ public void putEntry() throws Exception {
6468
HashedRekordRequest req = createdRekorRequest();
6569
var resp = client.putEntry(req);
6670
// pretty basic testing
71+
var tufClient = SigstoreTufClient.builder().usePublicGoodInstance().build();
72+
tufClient.update();
73+
var signingConfig = tufClient.getSigstoreSigningConfig();
6774
MatcherAssert.assertThat(
6875
resp.getEntryLocation().toString(),
6976
CoreMatchers.startsWith(
70-
LegacySigningConfig.PUBLIC_GOOD.getTLogs().get(0).getUrl().toString()
71-
+ "/api/v1/log/entries/"));
77+
signingConfig.getTLogs().get(0).getUrl().toString() + "/api/v1/log/entries/"));
7278

7379
assertNotNull(resp.getUuid());
7480
assertNotNull(resp.getRaw());

sigstore-java/src/test/java/dev/sigstore/rekor/v2/client/RekorV2ClientHttpTest.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,9 @@
2828
import dev.sigstore.proto.rekor.v2.Verifier;
2929
import dev.sigstore.rekor.client.RekorEntry;
3030
import dev.sigstore.testing.CertGenerator;
31-
import dev.sigstore.trustroot.LegacySigningConfig;
31+
import dev.sigstore.trustroot.Service;
3232
import java.io.IOException;
33+
import java.net.URI;
3334
import java.nio.charset.StandardCharsets;
3435
import java.security.InvalidKeyException;
3536
import java.security.MessageDigest;
@@ -49,10 +50,9 @@ public class RekorV2ClientHttpTest {
4950

5051
@BeforeAll
5152
public static void setupClient() throws Exception {
52-
client =
53-
RekorV2ClientHttp.builder()
54-
.setService(LegacySigningConfig.STAGING_REKOR_V2.getTLogs().get(0))
55-
.build();
53+
// TODO(#1033): Get Rekor v2 service from TUF signing config when in prod
54+
var rekorService = Service.of(URI.create("https://log2025-alpha1.rekor.sigstage.dev"), 2);
55+
client = RekorV2ClientHttp.builder().setService(rekorService).build();
5656
req = createdRekorRequest();
5757
entry = client.putEntry(req);
5858
}

sigstore-java/src/test/java/dev/sigstore/timestamp/client/TimestampClientHttpTest.java

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,11 @@
2121
import static org.junit.jupiter.api.Assertions.assertThrows;
2222
import static org.junit.jupiter.api.Assertions.assertTrue;
2323

24-
import dev.sigstore.trustroot.LegacySigningConfig;
2524
import dev.sigstore.trustroot.Service;
25+
import dev.sigstore.tuf.SigstoreTufClient;
2626
import java.nio.charset.StandardCharsets;
2727
import java.security.MessageDigest;
28+
import java.util.List;
2829
import okhttp3.mockwebserver.MockResponse;
2930
import okhttp3.mockwebserver.MockWebServer;
3031
import okhttp3.mockwebserver.SocketPolicy;
@@ -50,10 +51,11 @@ public static void setup() throws Exception {
5051

5152
@Test
5253
public void timestamp_success() throws Exception {
53-
var client =
54-
TimestampClientHttp.builder()
55-
.setService(LegacySigningConfig.STAGING.getTsas().get(0))
56-
.build();
54+
var tufClient = SigstoreTufClient.builder().useStagingInstance().build();
55+
tufClient.update();
56+
var signingConfig = tufClient.getSigstoreSigningConfig();
57+
var tsService = Service.select(signingConfig.getTsas(), List.of(1)).get();
58+
var client = TimestampClientHttp.builder().setService(tsService).build();
5759

5860
var tsResp = client.timestamp(tsReq);
5961

@@ -85,10 +87,11 @@ public void timestamp_failure_badResponse_incorrectDigestLength() throws Excepti
8587
.nonce(tsReq.getNonce())
8688
.build();
8789

88-
var client =
89-
TimestampClientHttp.builder()
90-
.setService(LegacySigningConfig.STAGING.getTsas().get(0))
91-
.build();
90+
var tufClient = SigstoreTufClient.builder().useStagingInstance().build();
91+
tufClient.update();
92+
var signingConfig = tufClient.getSigstoreSigningConfig();
93+
var tsService = Service.select(signingConfig.getTsas(), List.of(1)).get();
94+
var client = TimestampClientHttp.builder().setService(tsService).build();
9295

9396
var tse =
9497
assertThrows(

0 commit comments

Comments
 (0)