1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package io.github.tonywasher.joceanus.gordianknot.api.sign.spec;
19
20 import io.github.tonywasher.joceanus.gordianknot.api.base.GordianLength;
21 import io.github.tonywasher.joceanus.gordianknot.api.digest.spec.GordianDigestSpec;
22 import io.github.tonywasher.joceanus.gordianknot.api.digest.spec.GordianDigestSpecBuilder;
23 import io.github.tonywasher.joceanus.gordianknot.api.keypair.spec.GordianKeyPairType;
24
25 import java.util.Arrays;
26 import java.util.List;
27
28
29
30
31 public interface GordianSignatureSpecBuilder {
32
33
34
35
36
37
38 GordianSignatureSpecBuilder withKeyPairType(GordianKeyPairType pType);
39
40
41
42
43
44
45
46 GordianSignatureSpecBuilder withSignatureType(GordianSignatureType pSignatureType);
47
48
49
50
51
52
53
54 GordianSignatureSpecBuilder withDigestSpec(GordianDigestSpec pDigestSpec);
55
56
57
58
59
60
61
62 GordianSignatureSpecBuilder withSignatureSpecs(List<GordianSignatureSpec> pSpecs);
63
64
65
66
67
68
69 GordianDigestSpecBuilder usingDigestSpecBuilder();
70
71
72
73
74
75
76 GordianSignatureSpec build();
77
78
79
80
81
82
83
84
85 default GordianSignatureSpec rsa(final GordianSignatureType pSignatureType,
86 final GordianDigestSpec pDigestSpec) {
87 return withKeyPairType(GordianKeyPairType.RSA).withSignatureType(pSignatureType).withDigestSpec(pDigestSpec).build();
88 }
89
90
91
92
93
94
95
96
97 default GordianSignatureSpec dsa(final GordianSignatureType pSignatureType,
98 final GordianDigestSpec pDigestSpec) {
99 return withKeyPairType(GordianKeyPairType.DSA).withSignatureType(pSignatureType).withDigestSpec(pDigestSpec).build();
100 }
101
102
103
104
105
106
107
108
109 default GordianSignatureSpec ec(final GordianSignatureType pSignatureType,
110 final GordianDigestSpec pDigestSpec) {
111 return withKeyPairType(GordianKeyPairType.EC).withSignatureType(pSignatureType).withDigestSpec(pDigestSpec).build();
112 }
113
114
115
116
117
118
119
120 default GordianSignatureSpec sm2(final GordianDigestSpec pDigestSpec) {
121 return withKeyPairType(GordianKeyPairType.SM2).withDigestSpec(pDigestSpec).build();
122 }
123
124
125
126
127
128
129 default GordianSignatureSpec dstu4145() {
130 return withKeyPairType(GordianKeyPairType.DSTU).withDigestSpec(usingDigestSpecBuilder().gost()).build();
131 }
132
133
134
135
136
137
138
139 default GordianSignatureSpec gost2012(final GordianLength pLength) {
140 return withKeyPairType(GordianKeyPairType.GOST).withDigestSpec(usingDigestSpecBuilder().streebog(pLength)).build();
141 }
142
143
144
145
146
147
148 default GordianSignatureSpec edDSA() {
149 return withKeyPairType(GordianKeyPairType.EDDSA).build();
150 }
151
152
153
154
155
156
157 default GordianSignatureSpec slhdsa() {
158 return withKeyPairType(GordianKeyPairType.SLHDSA).build();
159 }
160
161
162
163
164
165
166 default GordianSignatureSpec mldsa() {
167 return withKeyPairType(GordianKeyPairType.MLDSA).build();
168 }
169
170
171
172
173
174
175 default GordianSignatureSpec falcon() {
176 return withKeyPairType(GordianKeyPairType.FALCON).build();
177 }
178
179
180
181
182
183
184 default GordianSignatureSpec mayo() {
185 return withKeyPairType(GordianKeyPairType.MAYO).build();
186 }
187
188
189
190
191
192
193 default GordianSignatureSpec snova() {
194 return withKeyPairType(GordianKeyPairType.SNOVA).build();
195 }
196
197
198
199
200
201
202 default GordianSignatureSpec picnic() {
203 return withKeyPairType(GordianKeyPairType.PICNIC).build();
204 }
205
206
207
208
209
210
211
212 default GordianSignatureSpec picnic(final GordianDigestSpec pDigest) {
213 return withKeyPairType(GordianKeyPairType.PICNIC).withDigestSpec(pDigest).build();
214 }
215
216
217
218
219
220
221 default GordianSignatureSpec xmss() {
222 return withKeyPairType(GordianKeyPairType.XMSS).build();
223 }
224
225
226
227
228
229
230 default GordianSignatureSpec xmssph() {
231 return withKeyPairType(GordianKeyPairType.XMSS).withSignatureType(GordianSignatureType.PREHASH).build();
232 }
233
234
235
236
237
238
239 default GordianSignatureSpec lms() {
240 return withKeyPairType(GordianKeyPairType.LMS).build();
241 }
242
243
244
245
246
247
248
249 default GordianSignatureSpec composite(final GordianSignatureSpec... pSpecs) {
250 return composite(Arrays.asList(pSpecs));
251 }
252
253
254
255
256
257
258
259 default GordianSignatureSpec composite(final List<GordianSignatureSpec> pSpecs) {
260 return withKeyPairType(GordianKeyPairType.COMPOSITE).withSignatureSpecs(pSpecs).build();
261 }
262 }