Skip to content

Commit 72f140a

Browse files
authored
Merge pull request #65 from tls-attacker/json
Updates for JSON (De)Serialization
2 parents 99da67d + 2f9aeea commit 72f140a

19 files changed

+122
-2
lines changed

pom.xml

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,27 @@
5555
</properties>
5656

5757
<dependencies>
58+
<dependency>
59+
<groupId>com.fasterxml.jackson.core</groupId>
60+
<artifactId>jackson-annotations</artifactId>
61+
</dependency>
62+
<dependency>
63+
<groupId>com.fasterxml.jackson.core</groupId>
64+
<artifactId>jackson-core</artifactId>
65+
</dependency>
66+
<dependency>
67+
<groupId>com.fasterxml.jackson.core</groupId>
68+
<artifactId>jackson-databind</artifactId>
69+
</dependency>
70+
<dependency>
71+
<groupId>com.fasterxml.jackson.dataformat</groupId>
72+
<artifactId>jackson-dataformat-yaml</artifactId>
73+
</dependency>
5874
<!-- scope: compile -->
5975
<dependency>
6076
<groupId>de.rub.nds</groupId>
6177
<artifactId>modifiable-variable</artifactId>
62-
<version>5.1.2</version>
78+
<version>5.2.0</version>
6379
</dependency>
6480
<dependency>
6581
<groupId>jakarta.xml.bind</groupId>

src/main/java/de/rub/nds/protocol/crypto/ec/FieldElement.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
*/
99
package de.rub.nds.protocol.crypto.ec;
1010

11+
import com.fasterxml.jackson.annotation.JsonTypeInfo;
1112
import jakarta.xml.bind.annotation.XmlAccessType;
1213
import jakarta.xml.bind.annotation.XmlAccessorType;
1314
import java.io.Serializable;
@@ -22,6 +23,7 @@
2223
* All arithmetic operations are performed within the laws of the specified field.
2324
*/
2425
@XmlAccessorType(XmlAccessType.FIELD)
26+
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, property = "@class")
2527
public abstract class FieldElement implements Serializable {
2628

2729
/*
@@ -31,7 +33,13 @@ public abstract class FieldElement implements Serializable {
3133
private final BigInteger data;
3234
private final BigInteger modulus;
3335

34-
public FieldElement(BigInteger data, BigInteger modulus) {
36+
/** Default constructor for deserialization. */
37+
protected FieldElement() {
38+
this.data = null;
39+
this.modulus = null;
40+
}
41+
42+
protected FieldElement(BigInteger data, BigInteger modulus) {
3543
this.data = data;
3644
this.modulus = modulus;
3745
}

src/main/java/de/rub/nds/protocol/crypto/ec/FieldElementF2m.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ public FieldElementF2m(BigInteger data, BigInteger modulus) {
3535
super(data, modulus);
3636
}
3737

38+
/** Default constructor for deserialization. */
39+
@SuppressWarnings("unused")
3840
private FieldElementF2m() {
3941
super(null, null);
4042
}

src/main/java/de/rub/nds/protocol/crypto/ec/FieldElementFp.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ public FieldElementFp(BigInteger data, BigInteger modulus) {
1818
super(data.mod(modulus), modulus);
1919
}
2020

21+
/** Default constructor for deserialization. */
22+
@SuppressWarnings("unused")
2123
private FieldElementFp() {
2224
super(null, null);
2325
}

src/main/java/de/rub/nds/protocol/crypto/key/DhPrivateKey.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,13 @@ public class DhPrivateKey implements PrivateKeyContainer {
1717

1818
private FfdhGroupParameters parameters;
1919

20+
/** Default constructor for deserialization. */
21+
@SuppressWarnings("unused")
22+
private DhPrivateKey() {
23+
this.privateKey = null;
24+
this.parameters = null;
25+
}
26+
2027
public DhPrivateKey(BigInteger privateKey, FfdhGroupParameters parameters) {
2128
this.privateKey = privateKey;
2229
this.parameters = parameters;

src/main/java/de/rub/nds/protocol/crypto/key/DhPublicKey.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,13 @@ public class DhPublicKey implements PublicKeyContainer {
1919

2020
private BigInteger publicKey;
2121

22+
/** Default constructor for deserialization. */
23+
@SuppressWarnings("unused")
24+
private DhPublicKey() {
25+
this.parameters = null;
26+
this.publicKey = null;
27+
}
28+
2229
public DhPublicKey(BigInteger publicKey, BigInteger generator, BigInteger modulus) {
2330
this.parameters = new ExplicitFfdhGroupParameters(generator, modulus);
2431
this.publicKey = publicKey;

src/main/java/de/rub/nds/protocol/crypto/key/DsaPrivateKey.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,14 @@ public class DsaPrivateKey implements PrivateKeyContainer {
1717
private BigInteger K;
1818
private DsaParameters dsaParameters;
1919

20+
/** Default constructor for deserialization. */
21+
@SuppressWarnings("unused")
22+
private DsaPrivateKey() {
23+
this.X = null;
24+
this.K = null;
25+
this.dsaParameters = null;
26+
}
27+
2028
/**
2129
* Create a DSA private key with explicit parameters
2230
*

src/main/java/de/rub/nds/protocol/crypto/key/DsaPublicKey.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,13 @@ public class DsaPublicKey implements PublicKeyContainer {
1818
private BigInteger Y;
1919
private DsaParameters dsaParameters;
2020

21+
/** Default constructor for deserialization. */
22+
@SuppressWarnings("unused")
23+
private DsaPublicKey() {
24+
this.Y = null;
25+
this.dsaParameters = null;
26+
}
27+
2128
/**
2229
* Create a DSA public key with explicit parameters
2330
*

src/main/java/de/rub/nds/protocol/crypto/key/EcdhPrivateKey.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,13 @@ public class EcdhPrivateKey implements PrivateKeyContainer {
1717

1818
private NamedEllipticCurveParameters parameters;
1919

20+
/** Default constructor for deserialization. */
21+
@SuppressWarnings("unused")
22+
private EcdhPrivateKey() {
23+
this.privateKey = null;
24+
this.parameters = null;
25+
}
26+
2027
public EcdhPrivateKey(BigInteger privateKey, NamedEllipticCurveParameters parameters) {
2128
this.privateKey = privateKey;
2229
this.parameters = parameters;

src/main/java/de/rub/nds/protocol/crypto/key/EcdhPublicKey.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,13 @@ public class EcdhPublicKey implements PublicKeyContainer {
1919

2020
private NamedEllipticCurveParameters parameters;
2121

22+
/** Default constructor for deserialization. */
23+
@SuppressWarnings("unused")
24+
private EcdhPublicKey() {
25+
this.publicPoint = null;
26+
this.parameters = null;
27+
}
28+
2229
public EcdhPublicKey(Point publicPoint, NamedEllipticCurveParameters parameters) {
2330
this.publicPoint = publicPoint;
2431
this.parameters = parameters;

0 commit comments

Comments
 (0)