Prototype first ikey classes

This commit is contained in:
Paul Schaub 2020-08-16 15:14:19 +02:00
parent c9e2c48060
commit 07ce987d20
Signed by: vanitasvitae
GPG Key ID: 62BEE9264BF17311
6 changed files with 161 additions and 0 deletions

View File

@ -0,0 +1,8 @@
package org.jivesoftware.smackx.ikey;
public class IkeyConstants {
public static final String NAMESPACE = "urn:xmpp:ikey:0";
public static final String IKEY_NODE = NAMESPACE + ":ikey";
public static final String SUB_NODE = NAMESPACE + ":sub";
}

View File

@ -0,0 +1,6 @@
package org.jivesoftware.smackx.ikey;
public enum IkeyType {
OX,
X509
}

View File

@ -0,0 +1,40 @@
package org.jivesoftware.smackx.ikey.element;
import org.jivesoftware.smack.packet.ExtensionElement;
import org.jivesoftware.smack.packet.XmlEnvironment;
import org.jivesoftware.smack.util.XmlStringBuilder;
import org.jivesoftware.smackx.ikey.IkeyConstants;
import org.jivesoftware.smackx.ikey.IkeyType;
import javax.xml.namespace.QName;
public class PlainIKeyElement implements ExtensionElement {
public static final String NAMESPACE = IkeyConstants.NAMESPACE;
public static final String ELEMENT = "ikey";
public static final String ATTR_IKEY_TYPE = "type";
private final IkeyType type;
private final QName QNAME = new QName(IkeyConstants.NAMESPACE, ELEMENT);
public PlainIKeyElement() {
this.type = IkeyType.OX;
}
@Override
public String getNamespace() {
return NAMESPACE;
}
@Override
public String getElementName() {
return ELEMENT;
}
@Override
public XmlStringBuilder toXML(XmlEnvironment xmlEnvironment) {
XmlStringBuilder xml = new XmlStringBuilder(this, xmlEnvironment);
return xml;
}
}

View File

@ -0,0 +1,43 @@
package org.jivesoftware.smackx.ikey.element;
import org.jivesoftware.smack.packet.NamedElement;
import org.jivesoftware.smack.packet.XmlEnvironment;
import org.jivesoftware.smack.util.StringUtils;
import org.jivesoftware.smack.util.XmlStringBuilder;
public class SubordinateElement implements NamedElement {
public static final String ELEMENT = "sub";
public static final String ATTR_SUB_URI = "uri";
public static final String ATTR_SUB_FINGERPRINT = "fingerprint";
private final String subUri;
private final String subFingerprint;
public SubordinateElement(String subKeyItemUri, String subKeyFingerprint) {
this.subUri = StringUtils.requireNotNullNorEmpty(subKeyItemUri, "uri MUST NOT be null nor empty.");
this.subFingerprint = StringUtils.requireNotNullNorEmpty(subKeyFingerprint, "fingerprint MUST NOT be null nor empty.");
}
public String getUri() {
return subUri;
}
public String getFingerprint() {
return subFingerprint;
}
@Override
public String getElementName() {
return ELEMENT;
}
@Override
public XmlStringBuilder toXML(XmlEnvironment xmlEnvironment) {
XmlStringBuilder xml = new XmlStringBuilder(this)
.attribute(ATTR_SUB_URI, getUri())
.attribute(ATTR_SUB_FINGERPRINT, getFingerprint())
.closeEmptyElement();
return xml;
}
}

View File

@ -0,0 +1,40 @@
package org.jivesoftware.smackx.ikey.element;
import org.jivesoftware.smack.packet.ExtensionElement;
import org.jivesoftware.smack.packet.XmlEnvironment;
import org.jivesoftware.smack.util.Objects;
import org.jivesoftware.smack.util.XmlStringBuilder;
import org.jivesoftware.smackx.ikey.IkeyConstants;
import java.util.List;
public class SubordinateListElement implements ExtensionElement {
public static final String NAMESPACE = IkeyConstants.NAMESPACE;
public static final String ELEMENT = "subordinates";
private final List<SubordinateElement> subordinates;
public SubordinateListElement(List<SubordinateElement> subordinates) {
this.subordinates = Objects.requireNonNullNorEmpty(subordinates, "List of subordinates MUST NOT be null nor empty.");
}
@Override
public String getNamespace() {
return NAMESPACE;
}
@Override
public String getElementName() {
return ELEMENT;
}
@Override
public XmlStringBuilder toXML(XmlEnvironment xmlEnvironment) {
XmlStringBuilder xml = new XmlStringBuilder(this, xmlEnvironment)
.rightAngleBracket()
.append(subordinates)
.closeElement(this);
return xml;
}
}

View File

@ -0,0 +1,24 @@
package org.jivesoftware.smackx.ikey.element;
import org.junit.Test;
import java.util.Arrays;
public class SubordinateListElementTest {
@Test
public void test() {
SubordinateListElement listElement = buildElement(
new SubordinateElement("xmpp:hamlet@denmark.lit?;node=urn:xmpp:openpgp:0:public-keys:1357B01865B2503C18453D208CAC2A9678548E35" +
";item=2020-01-21T10:46:21Z", "1357B01865B2503C18453D208CAC2A9678548E35"),
new SubordinateElement("xmpp:hamlet@denmark.lit?;node=urn:xmpp:omemo:1:bundles" +
";item=123456", "e64dc9166dd34db64c9247bd502c5969e365a98f3aa41c87247d120487fdd32f")
);
System.out.println(listElement.toXML());
}
private SubordinateListElement buildElement(SubordinateElement... subordinateElements) {
return new SubordinateListElement(Arrays.asList(subordinateElements));
}
}