16
16
package dev .sigstore .cli ;
17
17
18
18
import dev .sigstore .KeylessSigner ;
19
+ import dev .sigstore .SigningConfigProvider ;
19
20
import dev .sigstore .TrustedRootProvider ;
20
21
import dev .sigstore .oidc .client .OidcClients ;
21
22
import dev .sigstore .oidc .client .TokenStringOidcClient ;
@@ -70,19 +71,52 @@ static class Target {
70
71
String stagingWithTufUrlOverride ;
71
72
}
72
73
74
+ @ Option (
75
+ names = {"--signing-config" },
76
+ description = "a custom signing config" ,
77
+ required = false )
78
+ Path signingConfig ;
79
+
73
80
@ Option (
74
81
names = {"--identity-token" },
75
82
description = "the OIDC identity token to use" ,
76
83
required = false )
77
84
String identityToken ;
78
85
86
+ @ Option (
87
+ names = {"--working-directory" },
88
+ description = "the working directory" ,
89
+ required = false )
90
+ Path workingDirectory ;
91
+
79
92
@ Override
80
93
public Integer call () throws Exception {
94
+ if (workingDirectory != null ) {
95
+ artifact = workingDirectory .resolve (artifact );
96
+ bundleFile = workingDirectory .resolve (bundleFile );
97
+ if (signingConfig != null ) {
98
+ signingConfig = workingDirectory .resolve (signingConfig );
99
+ }
100
+ if (target != null && target .trustedRoot != null ) {
101
+ target .trustedRoot = workingDirectory .resolve (target .trustedRoot );
102
+ }
103
+ }
81
104
KeylessSigner .Builder signerBuilder ;
82
105
if (target == null ) {
83
- signerBuilder = new KeylessSigner .Builder ().sigstorePublicDefaults ();
106
+ signerBuilder = new KeylessSigner .Builder ().sigstorePublicDefaults ().enableRekorV2 (true );
107
+ } else if ((target .trustedRoot != null && signingConfig == null )
108
+ || (target .trustedRoot == null && signingConfig != null )) {
109
+ throw new IllegalArgumentException (
110
+ "Trusted root and signing config are both required if one is provided" );
111
+ } else if (target .trustedRoot != null && signingConfig != null ) {
112
+ signerBuilder =
113
+ new KeylessSigner .Builder ()
114
+ .sigstoreStagingDefaults ()
115
+ .enableRekorV2 (true )
116
+ .trustedRootProvider (TrustedRootProvider .from (target .trustedRoot ))
117
+ .signingConfigProvider (SigningConfigProvider .from (signingConfig ));
84
118
} else if (target .staging ) {
85
- signerBuilder = new KeylessSigner .Builder ().sigstoreStagingDefaults ();
119
+ signerBuilder = new KeylessSigner .Builder ().sigstoreStagingDefaults (). enableRekorV2 ( true ) ;
86
120
} else if (target .publicGoodWithTufUrlOverride != null ) {
87
121
var tufClientBuilder =
88
122
SigstoreTufClient .builder ()
@@ -93,6 +127,7 @@ public Integer call() throws Exception {
93
127
signerBuilder =
94
128
KeylessSigner .builder ()
95
129
.sigstorePublicDefaults ()
130
+ .enableRekorV2 (true )
96
131
.trustedRootProvider (TrustedRootProvider .from (tufClientBuilder ));
97
132
} else if (target .stagingWithTufUrlOverride != null ) {
98
133
var tufClientBuilder =
@@ -104,6 +139,7 @@ public Integer call() throws Exception {
104
139
signerBuilder =
105
140
KeylessSigner .builder ()
106
141
.sigstoreStagingDefaults ()
142
+ .enableRekorV2 (true )
107
143
.trustedRootProvider (TrustedRootProvider .from (tufClientBuilder ));
108
144
} else {
109
145
throw new IllegalStateException ("Unable to initialize signer" );
0 commit comments