1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package io.github.tonywasher.joceanus.gordianknot.impl.jca.sign;
19
20 import io.github.tonywasher.joceanus.gordianknot.api.base.GordianException;
21 import io.github.tonywasher.joceanus.gordianknot.api.keypair.GordianKeyPair;
22 import io.github.tonywasher.joceanus.gordianknot.api.sign.GordianNewSignParams;
23 import io.github.tonywasher.joceanus.gordianknot.api.sign.spec.GordianSignatureSpec;
24 import io.github.tonywasher.joceanus.gordianknot.impl.core.base.GordianBaseFactory;
25 import io.github.tonywasher.joceanus.gordianknot.impl.core.spec.keypair.GordianCoreKeyPairSpec;
26 import io.github.tonywasher.joceanus.gordianknot.impl.jca.keypair.JcaKeyPair;
27
28
29
30
31 public class JcaSLHDSASignature
32 extends JcaSignature {
33
34
35
36 private static final String BASE_NAME = "SLH-DSA";
37
38
39
40
41
42
43
44 JcaSLHDSASignature(final GordianBaseFactory pFactory,
45 final GordianSignatureSpec pSignatureSpec) {
46
47 super(pFactory, pSignatureSpec);
48 }
49
50 @Override
51 public void initForSigning(final GordianNewSignParams pParams) throws GordianException {
52
53 final GordianKeyPair myPair = pParams.getKeyPair();
54 JcaKeyPair.checkKeyPair(myPair);
55 final String mySignName = getAlgorithmForKeyPair(myPair);
56 setSigner(getJavaSignature(mySignName, false));
57
58
59 super.initForSigning(pParams);
60 }
61
62 @Override
63 public void initForVerify(final GordianNewSignParams pParams) throws GordianException {
64
65 final GordianKeyPair myPair = pParams.getKeyPair();
66 JcaKeyPair.checkKeyPair(myPair);
67 final String mySignName = getAlgorithmForKeyPair(myPair);
68 setSigner(getJavaSignature(mySignName, false));
69
70
71 super.initForVerify(pParams);
72 }
73
74
75
76
77
78
79
80 private static String getAlgorithmForKeyPair(final GordianKeyPair pKeyPair) {
81
82 final GordianCoreKeyPairSpec mySpec = (GordianCoreKeyPairSpec) pKeyPair.getKeyPairSpec();
83 final boolean isHash = mySpec.getSLHDSASpec().isHash();
84 return isHash ? PQC_HASH_PFX + BASE_NAME : BASE_NAME;
85 }
86 }