Skip to content

Commit b489760

Browse files
committed
wip
1 parent f234493 commit b489760

12 files changed

+35
-23
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@
187187
<dependency>
188188
<groupId>com.danubetech</groupId>
189189
<artifactId>key-formats-java</artifactId>
190-
<version>1.20.0</version>
190+
<version>1.21-SNAPSHOT</version>
191191
</dependency>
192192
<dependency>
193193
<groupId>io.setl</groupId>

src/main/java/com/danubetech/dataintegrity/signer/BbsBlsSignature2020LdSigner.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public BbsBlsSignature2020LdSigner() {
2727
this((ByteSigner) null);
2828
}
2929

30-
public Canonicalizer getCanonicalizer() {
30+
public Canonicalizer getCanonicalizer(DataIntegrityProof dataIntegrityProof) {
3131
return URDNA2015Canonicalizer.getInstance();
3232
}
3333

src/main/java/com/danubetech/dataintegrity/signer/DataIntegrityProofLdSigner.java

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,24 +33,32 @@ public Canonicalizer getCanonicalizer(DataIntegrityProof dataIntegrityProof) {
3333

3434
public static void sign(DataIntegrityProof.Builder<? extends DataIntegrityProof.Builder<?>> ldProofBuilder, byte[] signingInput, ByteSigner signer) throws GeneralSecurityException {
3535

36-
// sign
36+
// determine algorithm and cryptosuite
3737

38-
String proofValue;
38+
String algorithm;
3939
String cryptosuite;
4040

41+
algorithm = signer.getAlgorithm();
4142
cryptosuite = ldProofBuilder.build().getCryptosuite();
4243
if (cryptosuite != null) {
44+
if (! DataIntegrityProofDataIntegritySuite.findCryptosuitesByJwsAlgorithm(algorithm).contains(cryptosuite)) {
45+
throw new GeneralSecurityException("Algorithm " + algorithm + " is not supported by cryptosuite " + cryptosuite);
46+
}
4347
} else {
44-
cryptosuite = DataIntegrityProofDataIntegritySuite.findDefaultCryptosuiteByJwsAlgorithm(signer.getAlgorithm());
48+
cryptosuite = DataIntegrityProofDataIntegritySuite.findDefaultCryptosuiteByJwsAlgorithm(algorithm);
49+
ldProofBuilder.cryptosuite(cryptosuite);
4550
}
4651

47-
byte[] bytes = signer.sign(signingInput, signer.getAlgorithm());
52+
// sign
53+
54+
String proofValue;
55+
56+
byte[] bytes = signer.sign(signingInput, algorithm);
4857
proofValue = Multibase.encode(Multibase.Base.Base58BTC, bytes);
4958

5059
// done
5160

5261
ldProofBuilder.proofValue(proofValue);
53-
ldProofBuilder.cryptosuite(cryptosuite);
5462
}
5563

5664
@Override

src/main/java/com/danubetech/dataintegrity/signer/EcdsaKoblitzSignature2016LdSigner.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public EcdsaKoblitzSignature2016LdSigner() {
3333
this((ByteSigner) null);
3434
}
3535

36-
public Canonicalizer getCanonicalizer() {
36+
public Canonicalizer getCanonicalizer(DataIntegrityProof dataIntegrityProof) {
3737
return URDNA2015Canonicalizer.getInstance();
3838
}
3939

src/main/java/com/danubetech/dataintegrity/signer/EcdsaSecp256k1Signature2019LdSigner.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public EcdsaSecp256k1Signature2019LdSigner() {
3333
this((ByteSigner) null);
3434
}
3535

36-
public Canonicalizer getCanonicalizer() {
36+
public Canonicalizer getCanonicalizer(DataIntegrityProof dataIntegrityProof) {
3737
return URDNA2015Canonicalizer.getInstance();
3838
}
3939

src/main/java/com/danubetech/dataintegrity/signer/Ed25519Signature2018LdSigner.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public Ed25519Signature2018LdSigner() {
3232
this((ByteSigner) null);
3333
}
3434

35-
public Canonicalizer getCanonicalizer() {
35+
public Canonicalizer getCanonicalizer(DataIntegrityProof dataIntegrityProof) {
3636
return URDNA2015Canonicalizer.getInstance();
3737
}
3838

src/main/java/com/danubetech/dataintegrity/signer/Ed25519Signature2020LdSigner.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public Ed25519Signature2020LdSigner() {
2626
this((ByteSigner) null);
2727
}
2828

29-
public Canonicalizer getCanonicalizer() {
29+
public Canonicalizer getCanonicalizer(DataIntegrityProof dataIntegrityProof) {
3030
return URDNA2015Canonicalizer.getInstance();
3131
}
3232

src/main/java/com/danubetech/dataintegrity/signer/JcsEcdsaSecp256k1Signature2019LdSigner.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public JcsEcdsaSecp256k1Signature2019LdSigner() {
2929
this((ByteSigner) null);
3030
}
3131

32-
public Canonicalizer getCanonicalizer() {
32+
public Canonicalizer getCanonicalizer(DataIntegrityProof dataIntegrityProof) {
3333
return JCSCanonicalizer.getInstance();
3434
}
3535

src/main/java/com/danubetech/dataintegrity/signer/JcsEd25519Signature2020LdSigner.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public JcsEd25519Signature2020LdSigner() {
2727
this((ByteSigner) null);
2828
}
2929

30-
public Canonicalizer getCanonicalizer() {
30+
public Canonicalizer getCanonicalizer(DataIntegrityProof dataIntegrityProof) {
3131
return JCSCanonicalizer.getInstance();
3232
}
3333

src/main/java/com/danubetech/dataintegrity/signer/JsonWebSignature2020LdSigner.java

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,18 @@
11
package com.danubetech.dataintegrity.signer;
22

33
import com.danubetech.dataintegrity.DataIntegrityProof;
4+
import com.danubetech.dataintegrity.adapter.JWSSignerAdapter;
45
import com.danubetech.dataintegrity.canonicalizer.Canonicalizer;
5-
import com.danubetech.dataintegrity.canonicalizer.JCSCanonicalizer;
6+
import com.danubetech.dataintegrity.canonicalizer.URDNA2015Canonicalizer;
7+
import com.danubetech.dataintegrity.suites.DataIntegritySuites;
8+
import com.danubetech.dataintegrity.suites.JsonWebSignature2020DataIntegritySuite;
9+
import com.danubetech.dataintegrity.util.JWSUtil;
610
import com.danubetech.keyformats.crypto.ByteSigner;
711
import com.nimbusds.jose.JOSEException;
812
import com.nimbusds.jose.JWSAlgorithm;
913
import com.nimbusds.jose.JWSHeader;
1014
import com.nimbusds.jose.JWSSigner;
1115
import com.nimbusds.jose.util.Base64URL;
12-
import com.danubetech.dataintegrity.adapter.JWSSignerAdapter;
13-
import com.danubetech.dataintegrity.canonicalizer.URDNA2015Canonicalizer;
14-
import com.danubetech.dataintegrity.suites.JsonWebSignature2020DataIntegritySuite;
15-
import com.danubetech.dataintegrity.suites.DataIntegritySuites;
16-
import com.danubetech.dataintegrity.util.JWSUtil;
1716

1817
import java.security.GeneralSecurityException;
1918
import java.util.Collections;
@@ -28,22 +27,26 @@ public JsonWebSignature2020LdSigner() {
2827
this(null);
2928
}
3029

31-
public Canonicalizer getCanonicalizer() {
30+
public Canonicalizer getCanonicalizer(DataIntegrityProof dataIntegrityProof) {
3231
return URDNA2015Canonicalizer.getInstance();
3332
}
3433

3534
public static void sign(DataIntegrityProof.Builder<? extends DataIntegrityProof.Builder<?>> ldProofBuilder, byte[] signingInput, ByteSigner signer) throws GeneralSecurityException {
3635

36+
// determine algorithm
37+
38+
String algorithm = signer.getAlgorithm();
39+
3740
// build the JWS and sign
3841

3942
String jws;
4043

4144
try {
4245

43-
JWSHeader jwsHeader = new JWSHeader.Builder(JWSAlgorithm.parse(signer.getAlgorithm())).base64URLEncodePayload(false).criticalParams(Collections.singleton("b64")).build();
46+
JWSHeader jwsHeader = new JWSHeader.Builder(JWSAlgorithm.parse(algorithm)).base64URLEncodePayload(false).criticalParams(Collections.singleton("b64")).build();
4447
byte[] jwsSigningInput = JWSUtil.getJwsSigningInput(jwsHeader, signingInput);
4548

46-
JWSSigner jwsSigner = new JWSSignerAdapter(signer, JWSAlgorithm.parse(signer.getAlgorithm()));
49+
JWSSigner jwsSigner = new JWSSignerAdapter(signer, JWSAlgorithm.parse(algorithm));
4750
Base64URL signature = jwsSigner.sign(jwsHeader, jwsSigningInput);
4851
jws = JWSUtil.serializeDetachedJws(jwsHeader, signature);
4952
} catch (JOSEException ex) {

0 commit comments

Comments
 (0)