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 d3d595e..faa1f91 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 @@ -169,6 +169,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 497f013..6f1fb98 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 ac2269c..d78ad81 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 @@ -289,7 +289,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 @@ -346,7 +346,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 } ] }