Skip to content

Commit 15de34b

Browse files
committed
Added SPHINCS sig params.
1 parent e0973b4 commit 15de34b

File tree

4 files changed

+68
-9
lines changed

4 files changed

+68
-9
lines changed

core/src/main/java/org/bouncycastle/asn1/bc/BCObjectIdentifiers.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public interface BCObjectIdentifiers
7676
* Sphincs-256
7777
*/
7878
public static final ASN1ObjectIdentifier sphincs256 = bc_sig.branch("1");
79-
public static final ASN1ObjectIdentifier sphincs256_Blake512_Blake256 = sphincs256.branch("1");
80-
public static final ASN1ObjectIdentifier sphincs256_Sha512_Sha512_256 = sphincs256.branch("2");
81-
public static final ASN1ObjectIdentifier sphincs256_Sha3_512_Sha3_256 = sphincs256.branch("3");
79+
public static final ASN1ObjectIdentifier sphincs256_with_BLAKE512 = sphincs256.branch("1");
80+
public static final ASN1ObjectIdentifier sphincs256_with_SHA512 = sphincs256.branch("2");
81+
public static final ASN1ObjectIdentifier sphincs256_with_SHA3_512 = sphincs256.branch("3");
8282
}

core/src/main/java/org/bouncycastle/pqc/asn1/PQCObjectIdentifiers.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ public interface PQCObjectIdentifiers
4444
/** 1.3.6.1.4.1.8301.3.1.3.4.2 */
4545
public static final ASN1ObjectIdentifier mcElieceCca2 = new ASN1ObjectIdentifier("1.3.6.1.4.1.8301.3.1.3.4.2");
4646

47-
public static final ASN1ObjectIdentifier sphincs256 = BCObjectIdentifiers.sphincs256;
48-
public static final ASN1ObjectIdentifier sphincs256_Blake512_Blake256 = BCObjectIdentifiers.sphincs256_Blake512_Blake256;
49-
public static final ASN1ObjectIdentifier sphincs256_Sha512_Sha512_256 = BCObjectIdentifiers.sphincs256_Sha512_Sha512_256;
50-
public static final ASN1ObjectIdentifier sphincs256_Sha3_512_Sha3_256 = BCObjectIdentifiers.sphincs256_Sha3_512_Sha3_256;
47+
public static final ASN1ObjectIdentifier sphincs256 = BCObjectIdentifiers.sphincs256;
48+
public static final ASN1ObjectIdentifier sphincs256_with_BLAKE512 = BCObjectIdentifiers.sphincs256_with_BLAKE512;
49+
public static final ASN1ObjectIdentifier sphincs256_with_SHA512 = BCObjectIdentifiers.sphincs256_with_SHA512;
50+
public static final ASN1ObjectIdentifier sphincs256_with_SHA3_512 = BCObjectIdentifiers.sphincs256_with_SHA3_512;
5151
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package org.bouncycastle.pqc.asn1;
2+
3+
import org.bouncycastle.asn1.ASN1EncodableVector;
4+
import org.bouncycastle.asn1.ASN1Integer;
5+
import org.bouncycastle.asn1.ASN1Object;
6+
import org.bouncycastle.asn1.ASN1Primitive;
7+
import org.bouncycastle.asn1.ASN1Sequence;
8+
import org.bouncycastle.asn1.DERSequence;
9+
10+
/**
11+
* Used to mark signatures with the correct key details.
12+
*/
13+
public class SPHINCS256SigParams
14+
extends ASN1Object
15+
{
16+
private final ASN1Integer version;
17+
private final SPHINCS256KeyParams keyParams;
18+
19+
public SPHINCS256SigParams(SPHINCS256KeyParams keyParams)
20+
{
21+
this.version = new ASN1Integer(0);
22+
this.keyParams = keyParams;
23+
}
24+
25+
private SPHINCS256SigParams(ASN1Sequence sequence)
26+
{
27+
this.version = ASN1Integer.getInstance(sequence.getObjectAt(0));
28+
this.keyParams = SPHINCS256KeyParams.getInstance(sequence.getObjectAt(1));
29+
}
30+
31+
public static final SPHINCS256SigParams getInstance(Object o)
32+
{
33+
if (o instanceof SPHINCS256SigParams)
34+
{
35+
return (SPHINCS256SigParams)o;
36+
}
37+
else if (o != null)
38+
{
39+
return new SPHINCS256SigParams(ASN1Sequence.getInstance(o));
40+
}
41+
42+
return null;
43+
}
44+
45+
public SPHINCS256KeyParams getKeyParams()
46+
{
47+
return keyParams;
48+
}
49+
50+
public ASN1Primitive toASN1Primitive()
51+
{
52+
ASN1EncodableVector v = new ASN1EncodableVector();
53+
54+
v.add(version);
55+
v.add(keyParams);
56+
57+
return new DERSequence(v);
58+
}
59+
}

prov/src/main/java/org/bouncycastle/pqc/jcajce/provider/SPHINCS.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ public void configure(ConfigurableProvider provider)
2222
provider.addAlgorithm("KeyFactory.SPHINCS256", PREFIX + "Sphincs256KeyFactorySpi");
2323
provider.addAlgorithm("KeyPairGenerator.SPHINCS256", PREFIX + "Sphincs256KeyPairGeneratorSpi");
2424

25-
addSignatureAlgorithm(provider, "SHA512", "SPHINCS256", PREFIX + "SignatureSpi$withSha512", PQCObjectIdentifiers.sphincs256_Sha512_Sha512_256);
26-
addSignatureAlgorithm(provider, "SHA3-512", "SPHINCS256", PREFIX + "SignatureSpi$withSha3_512", PQCObjectIdentifiers.sphincs256_Sha3_512_Sha3_256);
25+
addSignatureAlgorithm(provider, "SHA512", "SPHINCS256", PREFIX + "SignatureSpi$withSha512", PQCObjectIdentifiers.sphincs256_with_SHA512);
26+
addSignatureAlgorithm(provider, "SHA3-512", "SPHINCS256", PREFIX + "SignatureSpi$withSha3_512", PQCObjectIdentifiers.sphincs256_with_SHA3_512);
2727

2828
AsymmetricKeyInfoConverter keyFact = new Sphincs256KeyFactorySpi();
2929

0 commit comments

Comments
 (0)