diff --git a/src/main/java/org/jitsi/xmpp/extensions/colibri/json/JSONSerializer.java b/src/main/java/org/jitsi/xmpp/extensions/colibri/json/JSONSerializer.java
index 0bf995ff..315df1f7 100644
--- a/src/main/java/org/jitsi/xmpp/extensions/colibri/json/JSONSerializer.java
+++ b/src/main/java/org/jitsi/xmpp/extensions/colibri/json/JSONSerializer.java
@@ -653,6 +653,13 @@ public static JSONObject serializeFingerprint(
serializeAbstractPacketExtensionAttributes(
fingerprint,
fingerprintJSONObject);
+ Object cryptex = fingerprintJSONObject.get(DtlsFingerprintPacketExtension.CRYPTEX_ATTR_NAME);
+ if (cryptex instanceof String)
+ {
+ /* Represent cryptex as a boolean. */
+ fingerprintJSONObject.put(DtlsFingerprintPacketExtension.CRYPTEX_ATTR_NAME,
+ Boolean.parseBoolean((String)cryptex));
+ }
}
return fingerprintJSONObject;
}
diff --git a/src/main/java/org/jitsi/xmpp/extensions/jingle/DtlsFingerprintPacketExtension.java b/src/main/java/org/jitsi/xmpp/extensions/jingle/DtlsFingerprintPacketExtension.java
index 497f013c..6f1fb98e 100644
--- a/src/main/java/org/jitsi/xmpp/extensions/jingle/DtlsFingerprintPacketExtension.java
+++ b/src/main/java/org/jitsi/xmpp/extensions/jingle/DtlsFingerprintPacketExtension.java
@@ -69,6 +69,12 @@ public class DtlsFingerprintPacketExtension
*/
private static final String SETUP_ATTR_NAME = "setup";
+ /**
+ * The XML name of the fingerprint element's attribute which
+ * signals whether it supports the cryptex extension. Note: This is non-standard.
+ */
+ public static final String CRYPTEX_ATTR_NAME = "cryptex";
+
/** Initializes a new DtlsFingerprintPacketExtension instance. */
public DtlsFingerprintPacketExtension()
{
@@ -117,6 +123,17 @@ public String getSetup()
return getAttributeAsString(SETUP_ATTR_NAME);
}
+ /**
+ * Returns value of 'cryptex' attribute. See {@link #CRYPTEX_ATTR_NAME} for more
+ * info.
+ */
+ public boolean getCryptex()
+ {
+ String attr = getAttributeAsString(CRYPTEX_ATTR_NAME);
+
+ return (attr == null) ? false : Boolean.parseBoolean(attr);
+ }
+
/**
* Sets the fingerprint to be carried/represented by this instance.
*
@@ -157,4 +174,13 @@ public void setSetup(String setup)
{
setAttribute(SETUP_ATTR_NAME, setup);
}
+
+ /**
+ * Sets new value for 'cryptex' attribute.
+ * @param cryptex see {@link #CRYPTEX_ATTR_NAME} for details.
+ */
+ public void setCryptex(Boolean cryptex)
+ {
+ setAttribute(CRYPTEX_ATTR_NAME, cryptex);
+ }
}
diff --git a/src/test/kotlin/org/jitsi/xmpp/extensions/colibri2/json/Colibri2JSONSerializerTest.kt b/src/test/kotlin/org/jitsi/xmpp/extensions/colibri2/json/Colibri2JSONSerializerTest.kt
index 4a01c4bd..d253f778 100644
--- a/src/test/kotlin/org/jitsi/xmpp/extensions/colibri2/json/Colibri2JSONSerializerTest.kt
+++ b/src/test/kotlin/org/jitsi/xmpp/extensions/colibri2/json/Colibri2JSONSerializerTest.kt
@@ -285,7 +285,7 @@ private val expectedMappings = listOf(
- 2E:CC:85:71:32:5B:B5:60:64:C8:F6:7B:6D:45:D4:34:2B:51:A0:06:B5:EA:2F:84:BC:7B:64:1F:A3:0A:69:23
+ 2E:CC:85:71:32:5B:B5:60:64:C8:F6:7B:6D:45:D4:34:2B:51:A0:06:B5:EA:2F:84:BC:7B:64:1F:A3:0A:69:23
@@ -342,7 +342,8 @@ private val expectedMappings = listOf(
{
"fingerprint": "2E:CC:85:71:32:5B:B5:60:64:C8:F6:7B:6D:45:D4:34:2B:51:A0:06:B5:EA:2F:84:BC:7B:64:1F:A3:0A:69:23",
"setup": "actpass",
- "hash": "sha-256"
+ "hash": "sha-256",
+ "cryptex": true
}
]
}