[java-idp-oidc] 02/44: JOIDC-5 Initial version of the schema impl for RPs via SAML metadata.

Henri Mikkonen henri.mikkonen at iki.fi
Thu Oct 22 13:08:14 UTC 2020


This is an automated email from the git hooks/post-receive script.

hjmikkon pushed a commit to branch main
in repository java-idp-oidc.

View the commit online:
http://git.shibboleth.net/view/?p=java-idp-oidc.git;a=commit;h=015902b4a4390599be6be9d78e0a43b1950619d0

commit 015902b4a4390599be6be9d78e0a43b1950619d0
Author: Henri Mikkonen <henri.mikkonen at iki.fi>
AuthorDate: Wed Apr 15 16:11:38 2020 +0300

    JOIDC-5 Initial version of the schema impl for RPs via SAML metadata.
    
    https://issues.shibboleth.net/jira/browse/JOIDC-5
    
    A good location candidate for these files would be 'idp-saml-impl'.
---
 .../impl/AbstractMetadataValueMarshaller.java      |  42 ++
 .../impl/AbstractMetadataValueSAMLObject.java      |  68 +++
 .../impl/AbstractMetadataValueUnmarshaller.java    |  35 ++
 .../xmlobject/impl/ApplicationTypeBuilder.java     |  46 ++
 .../oidc/xmlobject/impl/ApplicationTypeImpl.java   |  36 ++
 .../xmlobject/impl/ApplicationTypeMarshaller.java  |  26 ++
 .../impl/ApplicationTypeUnmarshaller.java          |  26 ++
 .../saml/oidc/xmlobject/impl/ClientUriBuilder.java |  46 ++
 .../saml/oidc/xmlobject/impl/ClientUriImpl.java    |  36 ++
 .../oidc/xmlobject/impl/ClientUriMarshaller.java   |  26 ++
 .../oidc/xmlobject/impl/ClientUriUnmarshaller.java |  26 ++
 .../xmlobject/impl/DefaultAcrValueBuilder.java     |  46 ++
 .../oidc/xmlobject/impl/DefaultAcrValueImpl.java   |  36 ++
 .../xmlobject/impl/DefaultAcrValueMarshaller.java  |  26 ++
 .../impl/DefaultAcrValueUnmarshaller.java          |  26 ++
 .../saml/oidc/xmlobject/impl/GrantTypeBuilder.java |  46 ++
 .../saml/oidc/xmlobject/impl/GrantTypeImpl.java    |  37 ++
 .../oidc/xmlobject/impl/GrantTypeMarshaller.java   |  26 ++
 .../oidc/xmlobject/impl/GrantTypeUnmarshaller.java |  26 ++
 .../impl/IdTokenEncryptionResponseAlgBuilder.java  |  46 ++
 .../impl/IdTokenEncryptionResponseAlgImpl.java     |  33 ++
 .../IdTokenEncryptionResponseAlgMarshaller.java    |  26 ++
 .../IdTokenEncryptionResponseAlgUnmarshaller.java  |  26 ++
 .../impl/IdTokenEncryptionResponseEncBuilder.java  |  46 ++
 .../impl/IdTokenEncryptionResponseEncImpl.java     |  36 ++
 .../IdTokenEncryptionResponseEncMarshaller.java    |  26 ++
 .../IdTokenEncryptionResponseEncUnmarshaller.java  |  26 ++
 .../impl/IdTokenSignedResponseAlgBuilder.java      |  46 ++
 .../impl/IdTokenSignedResponseAlgImpl.java         |  36 ++
 .../impl/IdTokenSignedResponseAlgMarshaller.java   |  26 ++
 .../impl/IdTokenSignedResponseAlgUnmarshaller.java |  26 ++
 .../xmlobject/impl/InitiateLoginUriBuilder.java    |  46 ++
 .../oidc/xmlobject/impl/InitiateLoginUriImpl.java  |  36 ++
 .../xmlobject/impl/InitiateLoginUriMarshaller.java |  26 ++
 .../impl/InitiateLoginUriUnmarshaller.java         |  26 ++
 .../saml/oidc/xmlobject/impl/JwksUriBuilder.java   |  46 ++
 .../idp/saml/oidc/xmlobject/impl/JwksUriImpl.java  |  36 ++
 .../oidc/xmlobject/impl/JwksUriMarshaller.java     |  26 ++
 .../oidc/xmlobject/impl/JwksUriUnmarshaller.java   |  26 ++
 .../impl/OAuthRPRoleDescriptorTypeBuilder.java     |  48 +++
 .../impl/OAuthRPRoleDescriptorTypeImpl.java        | 467 +++++++++++++++++++++
 .../impl/OAuthRPRoleDescriptorTypeMarshaller.java  |  29 ++
 .../OAuthRPRoleDescriptorTypeUnmarshaller.java     | 139 ++++++
 .../impl/PostLogoutRedirectUriBuilder.java         |  46 ++
 .../xmlobject/impl/PostLogoutRedirectUriImpl.java  |  36 ++
 .../impl/PostLogoutRedirectUriMarshaller.java      |  26 ++
 .../impl/PostLogoutRedirectUriUnmarshaller.java    |  26 ++
 .../oidc/xmlobject/impl/RedirectUriBuilder.java    |  46 ++
 .../saml/oidc/xmlobject/impl/RedirectUriImpl.java  |  37 ++
 .../oidc/xmlobject/impl/RedirectUriMarshaller.java |  26 ++
 .../xmlobject/impl/RedirectUriUnmarshaller.java    |  26 ++
 .../RequestObjectEncryptionResponseAlgBuilder.java |  46 ++
 .../RequestObjectEncryptionResponseAlgImpl.java    |  36 ++
 ...questObjectEncryptionResponseAlgMarshaller.java |  26 ++
 ...estObjectEncryptionResponseAlgUnmarshaller.java |  26 ++
 .../RequestObjectEncryptionResponseEncBuilder.java |  46 ++
 .../RequestObjectEncryptionResponseEncImpl.java    |  36 ++
 ...questObjectEncryptionResponseEncMarshaller.java |  26 ++
 ...estObjectEncryptionResponseEncUnmarshaller.java |  26 ++
 .../RequestObjectSignedResponseAlgBuilder.java     |  46 ++
 .../impl/RequestObjectSignedResponseAlgImpl.java   |  36 ++
 .../RequestObjectSignedResponseAlgMarshaller.java  |  26 ++
 ...RequestObjectSignedResponseAlgUnmarshaller.java |  26 ++
 .../oidc/xmlobject/impl/RequestUriBuilder.java     |  46 ++
 .../saml/oidc/xmlobject/impl/RequestUriImpl.java   |  36 ++
 .../oidc/xmlobject/impl/RequestUriMarshaller.java  |  26 ++
 .../xmlobject/impl/RequestUriUnmarshaller.java     |  26 ++
 .../oidc/xmlobject/impl/ResponseTypeBuilder.java   |  46 ++
 .../saml/oidc/xmlobject/impl/ResponseTypeImpl.java |  36 ++
 .../xmlobject/impl/ResponseTypeMarshaller.java     |  26 ++
 .../xmlobject/impl/ResponseTypeUnmarshaller.java   |  26 ++
 .../idp/saml/oidc/xmlobject/impl/ScopeBuilder.java |  46 ++
 .../idp/saml/oidc/xmlobject/impl/ScopeImpl.java    |  36 ++
 .../saml/oidc/xmlobject/impl/ScopeMarshaller.java  |  26 ++
 .../oidc/xmlobject/impl/ScopeUnmarshaller.java     |  26 ++
 .../xmlobject/impl/SectorIdentifierUriBuilder.java |  46 ++
 .../xmlobject/impl/SectorIdentifierUriImpl.java    |  36 ++
 .../impl/SectorIdentifierUriMarshaller.java        |  26 ++
 .../impl/SectorIdentifierUriUnmarshaller.java      |  26 ++
 .../oidc/xmlobject/impl/SoftwareIdBuilder.java     |  46 ++
 .../saml/oidc/xmlobject/impl/SoftwareIdImpl.java   |  36 ++
 .../oidc/xmlobject/impl/SoftwareIdMarshaller.java  |  26 ++
 .../xmlobject/impl/SoftwareIdUnmarshaller.java     |  26 ++
 .../xmlobject/impl/SoftwareVersionBuilder.java     |  46 ++
 .../oidc/xmlobject/impl/SoftwareVersionImpl.java   |  36 ++
 .../xmlobject/impl/SoftwareVersionMarshaller.java  |  26 ++
 .../impl/SoftwareVersionUnmarshaller.java          |  26 ++
 .../oidc/xmlobject/impl/SubjectTypeBuilder.java    |  46 ++
 .../saml/oidc/xmlobject/impl/SubjectTypeImpl.java  |  36 ++
 .../oidc/xmlobject/impl/SubjectTypeMarshaller.java |  26 ++
 .../xmlobject/impl/SubjectTypeUnmarshaller.java    |  26 ++
 .../impl/TokenEndpointAuthMethodBuilder.java       |  46 ++
 .../impl/TokenEndpointAuthMethodImpl.java          |  36 ++
 .../impl/TokenEndpointAuthMethodMarshaller.java    |  26 ++
 .../impl/TokenEndpointAuthMethodUnmarshaller.java  |  26 ++
 .../impl/TokenEndpointAuthSigningAlgBuilder.java   |  46 ++
 .../impl/TokenEndpointAuthSigningAlgImpl.java      |  36 ++
 .../TokenEndpointAuthSigningAlgMarshaller.java     |  26 ++
 .../TokenEndpointAuthSigningAlgUnmarshaller.java   |  26 ++
 .../impl/UserInfoEncryptionResponseAlgBuilder.java |  46 ++
 .../impl/UserInfoEncryptionResponseAlgImpl.java    |  36 ++
 .../UserInfoEncryptionResponseAlgMarshaller.java   |  26 ++
 .../UserInfoEncryptionResponseAlgUnmarshaller.java |  26 ++
 .../impl/UserInfoEncryptionResponseEncBuilder.java |  46 ++
 .../impl/UserInfoEncryptionResponseEncImpl.java    |  36 ++
 .../UserInfoEncryptionResponseEncMarshaller.java   |  26 ++
 .../UserInfoEncryptionResponseEncUnmarshaller.java |  26 ++
 .../impl/UserInfoSignedResponseAlgBuilder.java     |  46 ++
 .../impl/UserInfoSignedResponseAlgImpl.java        |  36 ++
 .../impl/UserInfoSignedResponseAlgMarshaller.java  |  26 ++
 .../UserInfoSignedResponseAlgUnmarshaller.java     |  26 ++
 .../impl/XMLObjectProviderInitializer.java         |  37 ++
 .../services/org.opensaml.core.config.Initializer  |   1 +
 .../resources/saml2-metadata-oidcmd-config.xml     | 170 ++++++++
 114 files changed, 4519 insertions(+)

diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/AbstractMetadataValueMarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/AbstractMetadataValueMarshaller.java
new file mode 100644
index 00000000..d176145f
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/AbstractMetadataValueMarshaller.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.MetadataValueSAMLObject;
+import org.opensaml.core.xml.XMLObject;
+import org.opensaml.core.xml.io.MarshallingException;
+import org.opensaml.saml.common.AbstractSAMLObjectMarshaller;
+import org.w3c.dom.Element;
+
+import net.shibboleth.utilities.java.support.xml.ElementSupport;
+
+/**
+ * Abstract thread safe Marshaller for {@link MetadataValueSAMLObject} objects.
+ * @param <T> The metadata value.
+ */
+public abstract class AbstractMetadataValueMarshaller<T extends MetadataValueSAMLObject> extends AbstractSAMLObjectMarshaller {
+
+    /** {@inheritDoc} */
+    protected void marshallElementContent(final XMLObject samlObject, final Element domElement)
+            throws MarshallingException {
+        final T metadataObject = (T) samlObject;
+
+        if (metadataObject.getValue() != null) {
+            ElementSupport.appendTextContent(domElement, metadataObject.getValue());
+        }
+    }
+}
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/AbstractMetadataValueSAMLObject.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/AbstractMetadataValueSAMLObject.java
new file mode 100644
index 00000000..b5710095
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/AbstractMetadataValueSAMLObject.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import java.util.Collections;
+import java.util.List;
+
+import org.opensaml.core.xml.AbstractXMLObject;
+import org.opensaml.core.xml.XMLObject;
+
+/**
+ * Base implementation for all simple metadata objects containing {@link String} value inside the element.
+ */
+public abstract class AbstractMetadataValueSAMLObject extends AbstractXMLObject {
+    
+    /** The value for this metadata object. */
+    private String value;
+    
+    /**
+     * Constructor.
+     * 
+     * @param namespaceURI the namespace the element is in
+     * @param elementLocalName the local name of the XML element this Object represents
+     * @param namespacePrefix the prefix for the given namespace
+     */
+    protected AbstractMetadataValueSAMLObject(final String namespaceURI, final String elementLocalName,
+            final String namespacePrefix) {
+        super(namespaceURI, elementLocalName, namespacePrefix);
+    }
+    
+    /**
+     * Get the value for this metadata object.
+     * 
+     * @return The value for this metadata object.
+     */
+    public String getValue() {
+        return value;
+    }
+    
+    /**
+     * Set the value for this metadata object.
+     * 
+     * @param newValue What to set.
+     */
+    public void setValue(final String newValue) {
+        value = newValue;
+    }
+
+    /** {@inheritDoc} */
+    public List<XMLObject> getOrderedChildren() {
+        return Collections.emptyList();
+    }
+
+}
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/AbstractMetadataValueUnmarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/AbstractMetadataValueUnmarshaller.java
new file mode 100644
index 00000000..ba03cfd5
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/AbstractMetadataValueUnmarshaller.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.MetadataValueSAMLObject;
+import org.opensaml.core.xml.XMLObject;
+import org.opensaml.saml.common.AbstractSAMLObjectUnmarshaller;
+
+/**
+ * Abstract thread-safe Unmarshaller for {@link MetadataValueSAMLObject} objects.
+ * @param <T> The metadata value.
+ */
+public abstract class AbstractMetadataValueUnmarshaller<T extends MetadataValueSAMLObject>
+    extends AbstractSAMLObjectUnmarshaller {
+
+    /** {@inheritDoc} */
+    protected void processElementContent(final XMLObject samlObject, final String elementContent) {
+        final T metadataObject = (T) samlObject;
+        metadataObject.setValue(elementContent);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ApplicationTypeBuilder.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ApplicationTypeBuilder.java
new file mode 100644
index 00000000..e156ea75
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ApplicationTypeBuilder.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.ApplicationType;
+import net.shibboleth.idp.saml.oidc.xmlobject.Constants;
+
+/**
+ * Builder of {@link ApplicationTypeImpl}.
+ */
+public class ApplicationTypeBuilder extends AbstractSAMLObjectBuilder<ApplicationType> {
+
+    /**
+     * Constructor.
+     */
+    public ApplicationTypeBuilder() {
+
+    }
+
+    /** {@inheritDoc} */
+    public ApplicationType buildObject() {
+        return buildObject(Constants.SAML20MDOIDCMD_NS, ApplicationType.DEFAULT_ELEMENT_LOCAL_NAME,
+                Constants.SAML20MDOIDCMD_PREFIX);
+    }
+
+    /** {@inheritDoc} */
+    public ApplicationType buildObject(final String namespaceURI, final String localName, final String namespacePrefix) {
+        return new ApplicationTypeImpl(namespaceURI, localName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ApplicationTypeImpl.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ApplicationTypeImpl.java
new file mode 100644
index 00000000..9a6cc65e
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ApplicationTypeImpl.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.ApplicationType;
+
+/**
+ * Concrete implementation of {@link ApplicationType}.
+ */
+public class ApplicationTypeImpl extends AbstractMetadataValueSAMLObject implements ApplicationType {
+
+    /**
+     * Constructor.
+     * 
+     * @param namespaceURI the namespace the element is in
+     * @param elementLocalName the local name of the XML element this Object represents
+     * @param namespacePrefix the prefix for the given namespace
+     */
+    protected ApplicationTypeImpl(final String namespaceURI, final String elementLocalName, final String namespacePrefix) {
+        super(namespaceURI, elementLocalName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ApplicationTypeMarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ApplicationTypeMarshaller.java
new file mode 100644
index 00000000..261bc43e
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ApplicationTypeMarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.ApplicationType;
+
+/**
+ * A thread safe Marshaller for {@link ApplicationType} objects.
+ */
+public class ApplicationTypeMarshaller extends AbstractMetadataValueMarshaller<ApplicationType> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ApplicationTypeUnmarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ApplicationTypeUnmarshaller.java
new file mode 100644
index 00000000..20dc172f
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ApplicationTypeUnmarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.ApplicationType;
+
+/**
+ * A thread-safe Unmarshaller for {@link ApplicationType} objects.
+ */
+public class ApplicationTypeUnmarshaller extends AbstractMetadataValueUnmarshaller<ApplicationType> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ClientUriBuilder.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ClientUriBuilder.java
new file mode 100644
index 00000000..35a188de
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ClientUriBuilder.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.ClientUri;
+import net.shibboleth.idp.saml.oidc.xmlobject.Constants;
+
+/**
+ * Builder of {@link ClientUriImpl}.
+ */
+public class ClientUriBuilder extends AbstractSAMLObjectBuilder<ClientUri> {
+
+    /**
+     * Constructor.
+     */
+    public ClientUriBuilder() {
+
+    }
+
+    /** {@inheritDoc} */
+    public ClientUri buildObject() {
+        return buildObject(Constants.SAML20MDOIDCMD_NS, ClientUri.DEFAULT_ELEMENT_LOCAL_NAME,
+                Constants.SAML20MDOIDCMD_PREFIX);
+    }
+
+    /** {@inheritDoc} */
+    public ClientUri buildObject(final String namespaceURI, final String localName, final String namespacePrefix) {
+        return new ClientUriImpl(namespaceURI, localName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ClientUriImpl.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ClientUriImpl.java
new file mode 100644
index 00000000..23ef565d
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ClientUriImpl.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.ClientUri;
+
+/**
+ * Concrete implementation of {@link ClientUri}.
+ */
+public class ClientUriImpl extends AbstractMetadataValueSAMLObject implements ClientUri {
+
+    /**
+     * Constructor.
+     * 
+     * @param namespaceURI the namespace the element is in
+     * @param elementLocalName the local name of the XML element this Object represents
+     * @param namespacePrefix the prefix for the given namespace
+     */
+    protected ClientUriImpl(final String namespaceURI, final String elementLocalName, final String namespacePrefix) {
+        super(namespaceURI, elementLocalName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ClientUriMarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ClientUriMarshaller.java
new file mode 100644
index 00000000..a702e065
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ClientUriMarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.ClientUri;
+
+/**
+ * A thread safe Marshaller for {@link ClientUri} objects.
+ */
+public class ClientUriMarshaller extends AbstractMetadataValueMarshaller<ClientUri> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ClientUriUnmarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ClientUriUnmarshaller.java
new file mode 100644
index 00000000..d4ec0a6c
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ClientUriUnmarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.ClientUri;
+
+/**
+ * A thread-safe Unmarshaller for {@link ClientUri} objects.
+ */
+public class ClientUriUnmarshaller extends AbstractMetadataValueUnmarshaller<ClientUri> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/DefaultAcrValueBuilder.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/DefaultAcrValueBuilder.java
new file mode 100644
index 00000000..364d121c
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/DefaultAcrValueBuilder.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.DefaultAcrValue;
+import net.shibboleth.idp.saml.oidc.xmlobject.Constants;
+
+/**
+ * Builder of {@link DefaultAcrValueImpl}.
+ */
+public class DefaultAcrValueBuilder extends AbstractSAMLObjectBuilder<DefaultAcrValue> {
+
+    /**
+     * Constructor.
+     */
+    public DefaultAcrValueBuilder() {
+
+    }
+
+    /** {@inheritDoc} */
+    public DefaultAcrValue buildObject() {
+        return buildObject(Constants.SAML20MDOIDCMD_NS, DefaultAcrValue.DEFAULT_ELEMENT_LOCAL_NAME,
+                Constants.SAML20MDOIDCMD_PREFIX);
+    }
+
+    /** {@inheritDoc} */
+    public DefaultAcrValue buildObject(final String namespaceURI, final String localName, final String namespacePrefix) {
+        return new DefaultAcrValueImpl(namespaceURI, localName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/DefaultAcrValueImpl.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/DefaultAcrValueImpl.java
new file mode 100644
index 00000000..536d1fc6
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/DefaultAcrValueImpl.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.DefaultAcrValue;
+
+/**
+ * Concrete implementation of {@link DefaultAcrValue}.
+ */
+public class DefaultAcrValueImpl extends AbstractMetadataValueSAMLObject implements DefaultAcrValue {
+
+    /**
+     * Constructor.
+     * 
+     * @param namespaceURI the namespace the element is in
+     * @param elementLocalName the local name of the XML element this Object represents
+     * @param namespacePrefix the prefix for the given namespace
+     */
+    protected DefaultAcrValueImpl(final String namespaceURI, final String elementLocalName, final String namespacePrefix) {
+        super(namespaceURI, elementLocalName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/DefaultAcrValueMarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/DefaultAcrValueMarshaller.java
new file mode 100644
index 00000000..5819befa
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/DefaultAcrValueMarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.DefaultAcrValue;
+
+/**
+ * A thread safe Marshaller for {@link DefaultAcrValue} objects.
+ */
+public class DefaultAcrValueMarshaller extends AbstractMetadataValueMarshaller<DefaultAcrValue> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/DefaultAcrValueUnmarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/DefaultAcrValueUnmarshaller.java
new file mode 100644
index 00000000..8a4a71a2
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/DefaultAcrValueUnmarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.DefaultAcrValue;
+
+/**
+ * A thread-safe Unmarshaller for {@link DefaultAcrValue} objects.
+ */
+public class DefaultAcrValueUnmarshaller extends AbstractMetadataValueUnmarshaller<DefaultAcrValue> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/GrantTypeBuilder.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/GrantTypeBuilder.java
new file mode 100644
index 00000000..d503c067
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/GrantTypeBuilder.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.Constants;
+import net.shibboleth.idp.saml.oidc.xmlobject.GrantType;
+
+/**
+ * Builder of {@link GrantTypeImpl}.
+ */
+public class GrantTypeBuilder extends AbstractSAMLObjectBuilder<GrantType> {
+
+    /**
+     * Constructor.
+     */
+    public GrantTypeBuilder() {
+
+    }
+
+    /** {@inheritDoc} */
+    public GrantType buildObject() {
+        return buildObject(Constants.SAML20MDOIDCMD_NS, GrantType.DEFAULT_ELEMENT_LOCAL_NAME,
+                Constants.SAML20MDOIDCMD_PREFIX);
+    }
+
+    /** {@inheritDoc} */
+    public GrantType buildObject(final String namespaceURI, final String localName, final String namespacePrefix) {
+        return new GrantTypeImpl(namespaceURI, localName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/GrantTypeImpl.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/GrantTypeImpl.java
new file mode 100644
index 00000000..8a31792d
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/GrantTypeImpl.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.GrantType;
+
+/**
+ * Concrete implementation of {@link GrantType}.
+ */
+public class GrantTypeImpl extends AbstractMetadataValueSAMLObject implements GrantType {
+
+    /**
+     * Constructor.
+     * 
+     * @param namespaceURI the namespace the element is in
+     * @param elementLocalName the local name of the XML element this Object represents
+     * @param namespacePrefix the prefix for the given namespace
+     */
+    protected GrantTypeImpl(final String namespaceURI, final String elementLocalName, final String namespacePrefix) {
+        super(namespaceURI, elementLocalName, namespacePrefix);
+    }
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/GrantTypeMarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/GrantTypeMarshaller.java
new file mode 100644
index 00000000..5d3a4f97
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/GrantTypeMarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.GrantType;
+
+/**
+ * A thread safe Marshaller for {@link GrantType} objects.
+ */
+public class GrantTypeMarshaller extends AbstractMetadataValueMarshaller<GrantType> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/GrantTypeUnmarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/GrantTypeUnmarshaller.java
new file mode 100644
index 00000000..044c0812
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/GrantTypeUnmarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.GrantType;
+
+/**
+ * A thread-safe Unmarshaller for {@link GrantType} objects.
+ */
+public class GrantTypeUnmarshaller extends AbstractMetadataValueUnmarshaller<GrantType> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/IdTokenEncryptionResponseAlgBuilder.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/IdTokenEncryptionResponseAlgBuilder.java
new file mode 100644
index 00000000..52e2bb8d
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/IdTokenEncryptionResponseAlgBuilder.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.IdTokenEncryptionResponseAlg;
+import net.shibboleth.idp.saml.oidc.xmlobject.Constants;
+
+/**
+ * Builder of {@link IdTokenEncryptionResponseAlgImpl}.
+ */
+public class IdTokenEncryptionResponseAlgBuilder extends AbstractSAMLObjectBuilder<IdTokenEncryptionResponseAlg> {
+
+    /**
+     * Constructor.
+     */
+    public IdTokenEncryptionResponseAlgBuilder() {
+
+    }
+
+    /** {@inheritDoc} */
+    public IdTokenEncryptionResponseAlg buildObject() {
+        return buildObject(Constants.SAML20MDOIDCMD_NS, IdTokenEncryptionResponseAlg.DEFAULT_ELEMENT_LOCAL_NAME,
+                Constants.SAML20MDOIDCMD_PREFIX);
+    }
+
+    /** {@inheritDoc} */
+    public IdTokenEncryptionResponseAlg buildObject(final String namespaceURI, final String localName, final String namespacePrefix) {
+        return new IdTokenEncryptionResponseAlgImpl(namespaceURI, localName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/IdTokenEncryptionResponseAlgImpl.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/IdTokenEncryptionResponseAlgImpl.java
new file mode 100644
index 00000000..2977b057
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/IdTokenEncryptionResponseAlgImpl.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.IdTokenEncryptionResponseAlg;
+
+public class IdTokenEncryptionResponseAlgImpl extends AbstractMetadataValueSAMLObject implements IdTokenEncryptionResponseAlg {
+
+    /**
+     * Constructor.
+     * 
+     * @param namespaceURI the namespace the element is in
+     * @param elementLocalName the local name of the XML element this Object represents
+     * @param namespacePrefix the prefix for the given namespace
+     */
+    protected IdTokenEncryptionResponseAlgImpl(final String namespaceURI, final String elementLocalName, final String namespacePrefix) {
+        super(namespaceURI, elementLocalName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/IdTokenEncryptionResponseAlgMarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/IdTokenEncryptionResponseAlgMarshaller.java
new file mode 100644
index 00000000..b899fc4c
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/IdTokenEncryptionResponseAlgMarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.IdTokenEncryptionResponseAlg;
+
+/**
+ * A thread safe Marshaller for {@link IdTokenEncryptionResponseAlg} objects.
+ */
+public class IdTokenEncryptionResponseAlgMarshaller extends AbstractMetadataValueMarshaller<IdTokenEncryptionResponseAlg> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/IdTokenEncryptionResponseAlgUnmarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/IdTokenEncryptionResponseAlgUnmarshaller.java
new file mode 100644
index 00000000..dc02b79e
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/IdTokenEncryptionResponseAlgUnmarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.IdTokenEncryptionResponseAlg;
+
+/**
+ * A thread-safe Unmarshaller for {@link IdTokenEncryptionResponseAlg} objects.
+ */
+public class IdTokenEncryptionResponseAlgUnmarshaller extends AbstractMetadataValueUnmarshaller<IdTokenEncryptionResponseAlg> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/IdTokenEncryptionResponseEncBuilder.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/IdTokenEncryptionResponseEncBuilder.java
new file mode 100644
index 00000000..a680d5a8
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/IdTokenEncryptionResponseEncBuilder.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.IdTokenEncryptionResponseEnc;
+import net.shibboleth.idp.saml.oidc.xmlobject.Constants;
+
+/**
+ * Builder of {@link IdTokenEncryptionResponseEncImpl}.
+ */
+public class IdTokenEncryptionResponseEncBuilder extends AbstractSAMLObjectBuilder<IdTokenEncryptionResponseEnc> {
+
+    /**
+     * Constructor.
+     */
+    public IdTokenEncryptionResponseEncBuilder() {
+
+    }
+
+    /** {@inheritDoc} */
+    public IdTokenEncryptionResponseEnc buildObject() {
+        return buildObject(Constants.SAML20MDOIDCMD_NS, IdTokenEncryptionResponseEnc.DEFAULT_ELEMENT_LOCAL_NAME,
+                Constants.SAML20MDOIDCMD_PREFIX);
+    }
+
+    /** {@inheritDoc} */
+    public IdTokenEncryptionResponseEnc buildObject(final String namespaceURI, final String localName, final String namespacePrefix) {
+        return new IdTokenEncryptionResponseEncImpl(namespaceURI, localName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/IdTokenEncryptionResponseEncImpl.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/IdTokenEncryptionResponseEncImpl.java
new file mode 100644
index 00000000..c85dff6f
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/IdTokenEncryptionResponseEncImpl.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.IdTokenEncryptionResponseEnc;
+
+/**
+ * Concrete implementation of {@link IdTokenEncryptionResponseEnc}.
+ */
+public class IdTokenEncryptionResponseEncImpl extends AbstractMetadataValueSAMLObject implements IdTokenEncryptionResponseEnc {
+
+    /**
+     * Constructor.
+     * 
+     * @param namespaceURI the namespace the element is in
+     * @param elementLocalName the local name of the XML element this Object represents
+     * @param namespacePrefix the prefix for the given namespace
+     */
+    protected IdTokenEncryptionResponseEncImpl(final String namespaceURI, final String elementLocalName, final String namespacePrefix) {
+        super(namespaceURI, elementLocalName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/IdTokenEncryptionResponseEncMarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/IdTokenEncryptionResponseEncMarshaller.java
new file mode 100644
index 00000000..1fd4c452
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/IdTokenEncryptionResponseEncMarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.IdTokenEncryptionResponseEnc;
+
+/**
+ * A thread safe Marshaller for {@link IdTokenEncryptionResponseEnc} objects.
+ */
+public class IdTokenEncryptionResponseEncMarshaller extends AbstractMetadataValueMarshaller<IdTokenEncryptionResponseEnc> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/IdTokenEncryptionResponseEncUnmarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/IdTokenEncryptionResponseEncUnmarshaller.java
new file mode 100644
index 00000000..812fc44d
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/IdTokenEncryptionResponseEncUnmarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.IdTokenEncryptionResponseEnc;
+
+/**
+ * A thread-safe Unmarshaller for {@link IdTokenEncryptionResponseEnc} objects.
+ */
+public class IdTokenEncryptionResponseEncUnmarshaller extends AbstractMetadataValueUnmarshaller<IdTokenEncryptionResponseEnc> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/IdTokenSignedResponseAlgBuilder.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/IdTokenSignedResponseAlgBuilder.java
new file mode 100644
index 00000000..0a3a4a19
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/IdTokenSignedResponseAlgBuilder.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.IdTokenSignedResponseAlg;
+import net.shibboleth.idp.saml.oidc.xmlobject.Constants;
+
+/**
+ * Builder of {@link IdTokenSignedResponseAlgImpl}.
+ */
+public class IdTokenSignedResponseAlgBuilder extends AbstractSAMLObjectBuilder<IdTokenSignedResponseAlg> {
+
+    /**
+     * Constructor.
+     */
+    public IdTokenSignedResponseAlgBuilder() {
+
+    }
+
+    /** {@inheritDoc} */
+    public IdTokenSignedResponseAlg buildObject() {
+        return buildObject(Constants.SAML20MDOIDCMD_NS, IdTokenSignedResponseAlg.DEFAULT_ELEMENT_LOCAL_NAME,
+                Constants.SAML20MDOIDCMD_PREFIX);
+    }
+
+    /** {@inheritDoc} */
+    public IdTokenSignedResponseAlg buildObject(final String namespaceURI, final String localName, final String namespacePrefix) {
+        return new IdTokenSignedResponseAlgImpl(namespaceURI, localName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/IdTokenSignedResponseAlgImpl.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/IdTokenSignedResponseAlgImpl.java
new file mode 100644
index 00000000..9a23b8d8
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/IdTokenSignedResponseAlgImpl.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.IdTokenSignedResponseAlg;
+
+/**
+ * Concrete implementation of {@link IdTokenSignedResponseAlg}.
+ */
+public class IdTokenSignedResponseAlgImpl extends AbstractMetadataValueSAMLObject implements IdTokenSignedResponseAlg {
+
+    /**
+     * Constructor.
+     * 
+     * @param namespaceURI the namespace the element is in
+     * @param elementLocalName the local name of the XML element this Object represents
+     * @param namespacePrefix the prefix for the given namespace
+     */
+    protected IdTokenSignedResponseAlgImpl(final String namespaceURI, final String elementLocalName, final String namespacePrefix) {
+        super(namespaceURI, elementLocalName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/IdTokenSignedResponseAlgMarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/IdTokenSignedResponseAlgMarshaller.java
new file mode 100644
index 00000000..d9ad0ecb
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/IdTokenSignedResponseAlgMarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.IdTokenSignedResponseAlg;
+
+/**
+ * A thread safe Marshaller for {@link IdTokenSignedResponseAlg} objects.
+ */
+public class IdTokenSignedResponseAlgMarshaller extends AbstractMetadataValueMarshaller<IdTokenSignedResponseAlg> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/IdTokenSignedResponseAlgUnmarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/IdTokenSignedResponseAlgUnmarshaller.java
new file mode 100644
index 00000000..da4affaa
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/IdTokenSignedResponseAlgUnmarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.IdTokenSignedResponseAlg;
+
+/**
+ * A thread-safe Unmarshaller for {@link IdTokenSignedResponseAlg} objects.
+ */
+public class IdTokenSignedResponseAlgUnmarshaller extends AbstractMetadataValueUnmarshaller<IdTokenSignedResponseAlg> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/InitiateLoginUriBuilder.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/InitiateLoginUriBuilder.java
new file mode 100644
index 00000000..f5b1ee95
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/InitiateLoginUriBuilder.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.InitiateLoginUri;
+import net.shibboleth.idp.saml.oidc.xmlobject.Constants;
+
+/**
+ * Builder of {@link InitiateLoginUriImpl}.
+ */
+public class InitiateLoginUriBuilder extends AbstractSAMLObjectBuilder<InitiateLoginUri> {
+
+    /**
+     * Constructor.
+     */
+    public InitiateLoginUriBuilder() {
+
+    }
+
+    /** {@inheritDoc} */
+    public InitiateLoginUri buildObject() {
+        return buildObject(Constants.SAML20MDOIDCMD_NS, InitiateLoginUri.DEFAULT_ELEMENT_LOCAL_NAME,
+                Constants.SAML20MDOIDCMD_PREFIX);
+    }
+
+    /** {@inheritDoc} */
+    public InitiateLoginUri buildObject(final String namespaceURI, final String localName, final String namespacePrefix) {
+        return new InitiateLoginUriImpl(namespaceURI, localName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/InitiateLoginUriImpl.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/InitiateLoginUriImpl.java
new file mode 100644
index 00000000..719ee4d6
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/InitiateLoginUriImpl.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.InitiateLoginUri;
+
+/**
+ * Concrete implementation of {@link InitiateLoginUri}.
+ */
+public class InitiateLoginUriImpl extends AbstractMetadataValueSAMLObject implements InitiateLoginUri {
+
+    /**
+     * Constructor.
+     * 
+     * @param namespaceURI the namespace the element is in
+     * @param elementLocalName the local name of the XML element this Object represents
+     * @param namespacePrefix the prefix for the given namespace
+     */
+    protected InitiateLoginUriImpl(final String namespaceURI, final String elementLocalName, final String namespacePrefix) {
+        super(namespaceURI, elementLocalName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/InitiateLoginUriMarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/InitiateLoginUriMarshaller.java
new file mode 100644
index 00000000..991c835e
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/InitiateLoginUriMarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.InitiateLoginUri;
+
+/**
+ * A thread safe Marshaller for {@link InitiateLoginUri} objects.
+ */
+public class InitiateLoginUriMarshaller extends AbstractMetadataValueMarshaller<InitiateLoginUri> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/InitiateLoginUriUnmarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/InitiateLoginUriUnmarshaller.java
new file mode 100644
index 00000000..3d704510
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/InitiateLoginUriUnmarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.InitiateLoginUri;
+
+/**
+ * A thread-safe Unmarshaller for {@link InitiateLoginUri} objects.
+ */
+public class InitiateLoginUriUnmarshaller extends AbstractMetadataValueUnmarshaller<InitiateLoginUri> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/JwksUriBuilder.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/JwksUriBuilder.java
new file mode 100644
index 00000000..c1dad8bb
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/JwksUriBuilder.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.JwksUri;
+import net.shibboleth.idp.saml.oidc.xmlobject.Constants;
+
+/**
+ * Builder of {@link JwksUriImpl}.
+ */
+public class JwksUriBuilder extends AbstractSAMLObjectBuilder<JwksUri> {
+
+    /**
+     * Constructor.
+     */
+    public JwksUriBuilder() {
+
+    }
+
+    /** {@inheritDoc} */
+    public JwksUri buildObject() {
+        return buildObject(Constants.SAML20MDOIDCMD_NS, JwksUri.DEFAULT_ELEMENT_LOCAL_NAME,
+                Constants.SAML20MDOIDCMD_PREFIX);
+    }
+
+    /** {@inheritDoc} */
+    public JwksUri buildObject(final String namespaceURI, final String localName, final String namespacePrefix) {
+        return new JwksUriImpl(namespaceURI, localName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/JwksUriImpl.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/JwksUriImpl.java
new file mode 100644
index 00000000..db005b19
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/JwksUriImpl.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.JwksUri;
+
+/**
+ * Concrete implementation of {@link JwksUri}.
+ */
+public class JwksUriImpl extends AbstractMetadataValueSAMLObject implements JwksUri {
+
+    /**
+     * Constructor.
+     * 
+     * @param namespaceURI the namespace the element is in
+     * @param elementLocalName the local name of the XML element this Object represents
+     * @param namespacePrefix the prefix for the given namespace
+     */
+    protected JwksUriImpl(final String namespaceURI, final String elementLocalName, final String namespacePrefix) {
+        super(namespaceURI, elementLocalName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/JwksUriMarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/JwksUriMarshaller.java
new file mode 100644
index 00000000..8cdb868b
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/JwksUriMarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.JwksUri;
+
+/**
+ * A thread safe Marshaller for {@link JwksUri} objects.
+ */
+public class JwksUriMarshaller extends AbstractMetadataValueMarshaller<JwksUri> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/JwksUriUnmarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/JwksUriUnmarshaller.java
new file mode 100644
index 00000000..0b421246
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/JwksUriUnmarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.JwksUri;
+
+/**
+ * A thread-safe Unmarshaller for {@link JwksUri} objects.
+ */
+public class JwksUriUnmarshaller extends AbstractMetadataValueUnmarshaller<JwksUri> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPRoleDescriptorTypeBuilder.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPRoleDescriptorTypeBuilder.java
new file mode 100644
index 00000000..5892989a
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPRoleDescriptorTypeBuilder.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.MetadataValueSAMLObject;
+import net.shibboleth.idp.saml.oidc.xmlobject.OAuthRPRoleDescriptorType;
+
+/**
+ * Builder of {@link OAuthRPRoleDescriptorTypeImpl} objects.
+ */
+public class OAuthRPRoleDescriptorTypeBuilder extends AbstractSAMLObjectBuilder<OAuthRPRoleDescriptorType> {
+
+    /** Constructor. */
+    public OAuthRPRoleDescriptorTypeBuilder() {
+
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public OAuthRPRoleDescriptorType buildObject() {
+        return buildObject(MetadataValueSAMLObject.SAML20MDOIDCMD_NS,
+                OAuthRPRoleDescriptorType.DEFAULT_ELEMENT_LOCAL_NAME,
+                MetadataValueSAMLObject.SAML20MDOIDCMD_PREFIX);
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public OAuthRPRoleDescriptorType buildObject(final String namespaceURI, final String localName,
+            final String namespacePrefix) {
+        return new OAuthRPRoleDescriptorTypeImpl(namespaceURI, localName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPRoleDescriptorTypeImpl.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPRoleDescriptorTypeImpl.java
new file mode 100644
index 00000000..23bb6093
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPRoleDescriptorTypeImpl.java
@@ -0,0 +1,467 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.ApplicationType;
+import net.shibboleth.idp.saml.oidc.xmlobject.ClientUri;
+import net.shibboleth.idp.saml.oidc.xmlobject.DefaultAcrValue;
+import net.shibboleth.idp.saml.oidc.xmlobject.GrantType;
+import net.shibboleth.idp.saml.oidc.xmlobject.IdTokenEncryptionResponseAlg;
+import net.shibboleth.idp.saml.oidc.xmlobject.IdTokenEncryptionResponseEnc;
+import net.shibboleth.idp.saml.oidc.xmlobject.IdTokenSignedResponseAlg;
+import net.shibboleth.idp.saml.oidc.xmlobject.InitiateLoginUri;
+import net.shibboleth.idp.saml.oidc.xmlobject.JwksUri;
+import net.shibboleth.idp.saml.oidc.xmlobject.OAuthRPRoleDescriptorType;
+import net.shibboleth.idp.saml.oidc.xmlobject.PostLogoutRedirectUri;
+import net.shibboleth.idp.saml.oidc.xmlobject.RedirectUri;
+import net.shibboleth.idp.saml.oidc.xmlobject.RequestObjectEncryptionResponseAlg;
+import net.shibboleth.idp.saml.oidc.xmlobject.RequestObjectEncryptionResponseEnc;
+import net.shibboleth.idp.saml.oidc.xmlobject.RequestObjectSignedResponseAlg;
+import net.shibboleth.idp.saml.oidc.xmlobject.RequestUri;
+import net.shibboleth.idp.saml.oidc.xmlobject.ResponseType;
+import net.shibboleth.idp.saml.oidc.xmlobject.Scope;
+import net.shibboleth.idp.saml.oidc.xmlobject.SectorIdentifierUri;
+import net.shibboleth.idp.saml.oidc.xmlobject.SoftwareId;
+import net.shibboleth.idp.saml.oidc.xmlobject.SoftwareVersion;
+import net.shibboleth.idp.saml.oidc.xmlobject.SubjectType;
+import net.shibboleth.idp.saml.oidc.xmlobject.TokenEndpointAuthMethod;
+import net.shibboleth.idp.saml.oidc.xmlobject.TokenEndpointAuthSigningAlg;
+import net.shibboleth.idp.saml.oidc.xmlobject.UserInfoEncryptionResponseAlg;
+import net.shibboleth.idp.saml.oidc.xmlobject.UserInfoEncryptionResponseEnc;
+import net.shibboleth.idp.saml.oidc.xmlobject.UserInfoSignedResponseAlg;
+
+import org.opensaml.core.xml.util.XMLObjectChildrenList;
+import org.opensaml.saml.saml2.metadata.Endpoint;
+import org.opensaml.saml.saml2.metadata.impl.RoleDescriptorImpl;
+
+/**
+ * Implementation for {@link OAuthRPRoleDescriptorType}.
+ */
+public class OAuthRPRoleDescriptorTypeImpl extends RoleDescriptorImpl implements OAuthRPRoleDescriptorType {
+
+    /** Redirect URIs configured for this entity. */
+    private final XMLObjectChildrenList<RedirectUri> redirectUris;
+    
+    /** Token endpoint authentication method for this entity. */
+    private TokenEndpointAuthMethod tokenEndpointAuthMethod;
+    
+    /** Response types for this entity. */
+    private final XMLObjectChildrenList<ResponseType> responseTypes;
+    
+    /** Grant types for this entity. */
+    private final XMLObjectChildrenList<GrantType> grantTypes;
+    
+    /** Application type for this entity. */
+    private ApplicationType applicationType;
+    
+    /** Client URI for this entity. */
+    private ClientUri clientUri;
+    
+    private final XMLObjectChildrenList<Scope> scopes;
+    
+    /** JWKS URI for this entity. */
+    private JwksUri jwksUri;
+    
+    /** Software identifier for this entity. */
+    private SoftwareId softwareId;
+    
+    /** Software version for this entity. */
+    private SoftwareVersion softwareVersion;
+    
+    /** Sector identifier URI for this entity. */
+    private SectorIdentifierUri sectorIdentifierUri;
+    
+    /** Subject type for this entity. */
+    private SubjectType subjectType;
+    
+    /** ID token signed response algorithm for this entity. */
+    private IdTokenSignedResponseAlg idTokenSignedResponseAlg;
+    
+    /** ID token encryption response algorithm for this entity. */
+    private IdTokenEncryptionResponseAlg idTokenEncryptionResponseAlg;
+
+    /** ID token encryption response encoder for this entity. */
+    private IdTokenEncryptionResponseEnc idTokenEncryptionResponseEnc;
+
+    /** User info signed response algorithm for this entity. */
+    private UserInfoSignedResponseAlg userInfoSignedResponseAlg;
+    
+    /** User info encryption response algorithm for this entity. */
+    private UserInfoEncryptionResponseAlg userInfoEncryptionResponseAlg;
+
+    /** User info encryption response encoder for this entity. */
+    private UserInfoEncryptionResponseEnc userInfoEncryptionResponseEnc;
+
+    /** Request object signed response algorithm for this entity. */
+    private RequestObjectSignedResponseAlg requestObjectSignedResponseAlg;
+    
+    /** Request object encryption response algorithm for this entity. */
+    private RequestObjectEncryptionResponseAlg requestObjectEncryptionResponseAlg;
+
+    /** Request object encryption response encoder for this entity. */
+    private RequestObjectEncryptionResponseEnc requestObjectEncryptionResponseEnc;
+    
+    /** Token endpoint authentication signing algorithm for this entity. */
+    private TokenEndpointAuthSigningAlg tokenEndpointAuthSigningAlg;
+    
+    /** Default ACR values for this entity. */
+    private final XMLObjectChildrenList<DefaultAcrValue> defaultAcrValues;
+    
+    /** Initiate login URI for this entity. */
+    private InitiateLoginUri initiateLoginUri;
+    
+    /** Request URIs for this entity. */
+    private final XMLObjectChildrenList<RequestUri> requestUris;
+    
+    /** Post logout redirect URIs for this entity. */
+    private final XMLObjectChildrenList<PostLogoutRedirectUri> postLogoutRedirectUris;
+    
+    /** Default max age for this entity. */
+    private int defaultMaxAge;
+    
+    /** Require auth time flag for this entity. */
+    private boolean requireAuthTime;
+
+    /**
+     * Constructor.
+     * 
+     * @param namespaceURI the namespace the element is in
+     * @param elementLocalName the local name of the XML element this Object represents
+     * @param namespacePrefix the prefix for the given namespace
+     */
+    protected OAuthRPRoleDescriptorTypeImpl(final String namespaceURI, final String elementLocalName,
+            final String namespacePrefix) {
+        super(namespaceURI, elementLocalName, namespacePrefix);
+        redirectUris = new XMLObjectChildrenList<>(this);
+        responseTypes = new XMLObjectChildrenList<>(this);
+        grantTypes = new XMLObjectChildrenList<>(this);
+        scopes = new XMLObjectChildrenList<>(this);
+        defaultAcrValues = new XMLObjectChildrenList<>(this);
+        requestUris = new XMLObjectChildrenList<>(this);
+        postLogoutRedirectUris = new XMLObjectChildrenList<>(this);
+    }
+    
+    /** {@inheritDoc} */
+    public List<Endpoint> getEndpoints() {
+        return new ArrayList<>();
+    }
+    
+    /** {@inheritDoc} */
+    public List<Endpoint> getEndpoints(final QName type) {
+        return null;
+    }
+    
+    /** {@inheritDoc} */
+	@Override
+	public List<RedirectUri> getRedirectUris() {
+		return redirectUris;
+	}
+
+    /** {@inheritDoc} */
+    @Override
+    public List<ResponseType> getResponseTypes() {
+        return responseTypes;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public List<GrantType> getGrantTypes() {
+        return grantTypes;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public ApplicationType getApplicationType() {
+        return applicationType;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setApplicationType(final ApplicationType type) {
+        applicationType = type;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public TokenEndpointAuthMethod getTokenEndpointAuthMethod() {
+        return tokenEndpointAuthMethod;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setTokenEndpointAuthMethod(TokenEndpointAuthMethod method) {
+        tokenEndpointAuthMethod = method;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public ClientUri getClientUri() {
+        return clientUri;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setClientUri(ClientUri uri) {
+        clientUri = uri;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public List<Scope> getScopes() {
+        return scopes;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public JwksUri getJwksUri() {
+        return jwksUri;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setJwksUri(JwksUri uri) {
+        jwksUri = uri;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public SoftwareId getSoftwareId() {
+        return softwareId;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setSoftwareId(SoftwareId id) {
+        softwareId = id;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public SoftwareVersion getSoftwareVersion() {
+        return softwareVersion;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setSoftwareVersion(SoftwareVersion version) {
+        softwareVersion = version;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public SectorIdentifierUri getSectorIdentifierUri() {
+        return sectorIdentifierUri;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setSectorIdentifierUri(SectorIdentifierUri uri) {
+        sectorIdentifierUri = uri;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public SubjectType getSubjectType() {
+        return subjectType;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setSubjectType(SubjectType type) {
+        subjectType = type;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public IdTokenSignedResponseAlg getIdTokenSignedResponseAlg() {
+        return idTokenSignedResponseAlg;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setIdTokenSignedResponseAlg(IdTokenSignedResponseAlg algorithm) {
+        idTokenSignedResponseAlg = algorithm;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public IdTokenEncryptionResponseAlg getIdTokenEncryptionResponseAlg() {
+        return  idTokenEncryptionResponseAlg;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setIdTokenEncryptionResponseAlg(IdTokenEncryptionResponseAlg algorithm) {
+        idTokenEncryptionResponseAlg = algorithm;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public IdTokenEncryptionResponseEnc getIdTokenEncryptionResponseEnc() {
+        return idTokenEncryptionResponseEnc;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setIdTokenEncryptionResponseEnc(IdTokenEncryptionResponseEnc algorithm) {
+        idTokenEncryptionResponseEnc = algorithm;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public UserInfoSignedResponseAlg getUserInfoSignedResponseAlg() {
+        return userInfoSignedResponseAlg;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setUserInfoSignedResponseAlg(UserInfoSignedResponseAlg algorithm) {
+        userInfoSignedResponseAlg = algorithm;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public UserInfoEncryptionResponseAlg getUserInfoEncryptionResponseAlg() {
+        return userInfoEncryptionResponseAlg;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setUserInfoEncryptionResponseAlg(UserInfoEncryptionResponseAlg algorithm) {
+        userInfoEncryptionResponseAlg = algorithm;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public UserInfoEncryptionResponseEnc getUserInfoEncryptionResponseEnc() {
+        return userInfoEncryptionResponseEnc;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setUserInfoEncryptionResponseEnc(UserInfoEncryptionResponseEnc algorithm) {
+        userInfoEncryptionResponseEnc = algorithm;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public RequestObjectSignedResponseAlg getRequestObjectSignedResponseAlg() {
+        return requestObjectSignedResponseAlg;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setRequestObjectSignedResponseAlg(RequestObjectSignedResponseAlg algorithm) {
+        requestObjectSignedResponseAlg = algorithm;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public RequestObjectEncryptionResponseAlg getRequestObjectEncryptionResponseAlg() {
+        return requestObjectEncryptionResponseAlg;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setRequestObjectEncryptionResponseAlg(RequestObjectEncryptionResponseAlg algorithm) {
+        requestObjectEncryptionResponseAlg = algorithm;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public RequestObjectEncryptionResponseEnc getRequestObjectEncryptionResponseEnc() {
+        return requestObjectEncryptionResponseEnc;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setRequestObjectEncryptionResponseEnc(RequestObjectEncryptionResponseEnc algorithm) {
+        requestObjectEncryptionResponseEnc = algorithm;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public TokenEndpointAuthSigningAlg getTokenEndpointAuthSigningAlg() {
+        return tokenEndpointAuthSigningAlg;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setTokenEndpointAuthSigningAlg(TokenEndpointAuthSigningAlg algorithm) {
+        tokenEndpointAuthSigningAlg = algorithm;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public List<DefaultAcrValue> getDefaultAcrValues() {
+        return defaultAcrValues;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public InitiateLoginUri getInitiateLoginUri() {
+        return initiateLoginUri;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setInitiateLoginUri(InitiateLoginUri uri) {
+        initiateLoginUri = uri;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public List<RequestUri> getRequestUris() {
+        return requestUris;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public List<PostLogoutRedirectUri> getPostLogoutRedirectUris() {
+        return postLogoutRedirectUris;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public int getDefaultMaxAge() {
+        return defaultMaxAge;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setDefaultMaxAge(int age) {
+        defaultMaxAge = age;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public boolean isRequireAuthTime() {
+        return requireAuthTime;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setRequireAuthTime(boolean flag) {
+        requireAuthTime = flag;
+    }
+
+}
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPRoleDescriptorTypeMarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPRoleDescriptorTypeMarshaller.java
new file mode 100644
index 00000000..20b22543
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPRoleDescriptorTypeMarshaller.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import org.opensaml.saml.saml2.metadata.impl.RoleDescriptorMarshaller;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.OAuthRPRoleDescriptorType;
+
+/**
+ * Marshaller for {@link OAuthRPRoleDescriptorType} objects.
+ */
+public class OAuthRPRoleDescriptorTypeMarshaller extends RoleDescriptorMarshaller {
+
+    //TODO
+}
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPRoleDescriptorTypeUnmarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPRoleDescriptorTypeUnmarshaller.java
new file mode 100644
index 00000000..744dcd74
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/OAuthRPRoleDescriptorTypeUnmarshaller.java
@@ -0,0 +1,139 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import org.opensaml.core.xml.XMLObject;
+import org.opensaml.core.xml.io.UnmarshallingException;
+import org.opensaml.saml.saml2.metadata.impl.RoleDescriptorUnmarshaller;
+import org.w3c.dom.Attr;
+
+import com.google.common.base.Strings;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.ApplicationType;
+import net.shibboleth.idp.saml.oidc.xmlobject.ClientUri;
+import net.shibboleth.idp.saml.oidc.xmlobject.DefaultAcrValue;
+import net.shibboleth.idp.saml.oidc.xmlobject.GrantType;
+import net.shibboleth.idp.saml.oidc.xmlobject.IdTokenEncryptionResponseAlg;
+import net.shibboleth.idp.saml.oidc.xmlobject.IdTokenEncryptionResponseEnc;
+import net.shibboleth.idp.saml.oidc.xmlobject.IdTokenSignedResponseAlg;
+import net.shibboleth.idp.saml.oidc.xmlobject.InitiateLoginUri;
+import net.shibboleth.idp.saml.oidc.xmlobject.JwksUri;
+import net.shibboleth.idp.saml.oidc.xmlobject.OAuthRPRoleDescriptorType;
+import net.shibboleth.idp.saml.oidc.xmlobject.PostLogoutRedirectUri;
+import net.shibboleth.idp.saml.oidc.xmlobject.RedirectUri;
+import net.shibboleth.idp.saml.oidc.xmlobject.RequestObjectEncryptionResponseAlg;
+import net.shibboleth.idp.saml.oidc.xmlobject.RequestObjectEncryptionResponseEnc;
+import net.shibboleth.idp.saml.oidc.xmlobject.RequestObjectSignedResponseAlg;
+import net.shibboleth.idp.saml.oidc.xmlobject.RequestUri;
+import net.shibboleth.idp.saml.oidc.xmlobject.ResponseType;
+import net.shibboleth.idp.saml.oidc.xmlobject.Scope;
+import net.shibboleth.idp.saml.oidc.xmlobject.SectorIdentifierUri;
+import net.shibboleth.idp.saml.oidc.xmlobject.SoftwareId;
+import net.shibboleth.idp.saml.oidc.xmlobject.SoftwareVersion;
+import net.shibboleth.idp.saml.oidc.xmlobject.SubjectType;
+import net.shibboleth.idp.saml.oidc.xmlobject.TokenEndpointAuthMethod;
+import net.shibboleth.idp.saml.oidc.xmlobject.TokenEndpointAuthSigningAlg;
+import net.shibboleth.idp.saml.oidc.xmlobject.UserInfoEncryptionResponseAlg;
+import net.shibboleth.idp.saml.oidc.xmlobject.UserInfoEncryptionResponseEnc;
+import net.shibboleth.idp.saml.oidc.xmlobject.UserInfoSignedResponseAlg;
+
+/**
+ * Unmarshaller for {@link OAuthRPRoleDescriptorType} objects.
+ */
+public class OAuthRPRoleDescriptorTypeUnmarshaller extends RoleDescriptorUnmarshaller {
+
+    /** {@inheritDoc} */
+    protected void processChildElement(final XMLObject parentSAMLObject, final XMLObject childSAMLObject)
+            throws UnmarshallingException {
+        final OAuthRPRoleDescriptorType descriptor = (OAuthRPRoleDescriptorType) parentSAMLObject;
+
+        if (childSAMLObject instanceof RedirectUri) {
+        	descriptor.getRedirectUris().add((RedirectUri) childSAMLObject);
+        } else if (childSAMLObject instanceof ResponseType) {
+            descriptor.getResponseTypes().add((ResponseType) childSAMLObject);
+        } else if (childSAMLObject instanceof GrantType) {
+            descriptor.getGrantTypes().add((GrantType) childSAMLObject);
+        } else if (childSAMLObject instanceof ApplicationType) {
+            descriptor.setApplicationType((ApplicationType) childSAMLObject);
+        } else if (childSAMLObject instanceof TokenEndpointAuthMethod) {
+            descriptor.setTokenEndpointAuthMethod((TokenEndpointAuthMethod) childSAMLObject);
+        } else if (childSAMLObject instanceof ClientUri) {
+            descriptor.setClientUri((ClientUri) childSAMLObject);
+        } else if (childSAMLObject instanceof Scope) {
+            descriptor.getScopes().add((Scope) childSAMLObject);
+        } else if (childSAMLObject instanceof JwksUri) {
+            descriptor.setJwksUri((JwksUri) childSAMLObject);
+        } else if (childSAMLObject instanceof SoftwareId) {
+            descriptor.setSoftwareId((SoftwareId) childSAMLObject);
+        } else if (childSAMLObject instanceof SoftwareVersion) {
+            descriptor.setSoftwareVersion((SoftwareVersion) childSAMLObject);
+        } else if (childSAMLObject instanceof SectorIdentifierUri) {
+            descriptor.setSectorIdentifierUri((SectorIdentifierUri) childSAMLObject);
+        } else if (childSAMLObject instanceof SubjectType) {
+            descriptor.setSubjectType((SubjectType) childSAMLObject);
+        } else if (childSAMLObject instanceof IdTokenSignedResponseAlg) {
+            descriptor.setIdTokenSignedResponseAlg((IdTokenSignedResponseAlg) childSAMLObject);
+        } else if (childSAMLObject instanceof IdTokenEncryptionResponseAlg) {
+            descriptor.setIdTokenEncryptionResponseAlg((IdTokenEncryptionResponseAlg) childSAMLObject);
+        } else if (childSAMLObject instanceof IdTokenEncryptionResponseEnc) {
+            descriptor.setIdTokenEncryptionResponseEnc((IdTokenEncryptionResponseEnc) childSAMLObject);
+        } else if (childSAMLObject instanceof UserInfoSignedResponseAlg) {
+            descriptor.setUserInfoSignedResponseAlg((UserInfoSignedResponseAlg) childSAMLObject);
+        } else if (childSAMLObject instanceof UserInfoEncryptionResponseAlg) {
+            descriptor.setUserInfoEncryptionResponseAlg((UserInfoEncryptionResponseAlg) childSAMLObject);
+        } else if (childSAMLObject instanceof UserInfoEncryptionResponseEnc) {
+            descriptor.setUserInfoEncryptionResponseEnc((UserInfoEncryptionResponseEnc) childSAMLObject);
+        } else if (childSAMLObject instanceof RequestObjectSignedResponseAlg) {
+            descriptor.setRequestObjectSignedResponseAlg((RequestObjectSignedResponseAlg) childSAMLObject);
+        } else if (childSAMLObject instanceof RequestObjectEncryptionResponseAlg) {
+            descriptor.setRequestObjectEncryptionResponseAlg((RequestObjectEncryptionResponseAlg) childSAMLObject);
+        } else if (childSAMLObject instanceof RequestObjectEncryptionResponseEnc) {
+            descriptor.setRequestObjectEncryptionResponseEnc((RequestObjectEncryptionResponseEnc) childSAMLObject);
+        } else if (childSAMLObject instanceof TokenEndpointAuthSigningAlg) {
+            descriptor.setTokenEndpointAuthSigningAlg((TokenEndpointAuthSigningAlg) childSAMLObject);
+        } else if (childSAMLObject instanceof DefaultAcrValue) {
+            descriptor.getDefaultAcrValues().add((DefaultAcrValue) childSAMLObject);
+        } else if (childSAMLObject instanceof InitiateLoginUri) {
+            descriptor.setInitiateLoginUri((InitiateLoginUri) childSAMLObject);
+        } else if (childSAMLObject instanceof RequestUri) {
+            descriptor.getRequestUris().add((RequestUri) childSAMLObject);
+        } else if (childSAMLObject instanceof PostLogoutRedirectUri) {
+            descriptor.getPostLogoutRedirectUris().add((PostLogoutRedirectUri) childSAMLObject);
+        } else {
+            super.processChildElement(parentSAMLObject, childSAMLObject);
+        }
+    }
+    
+    /** {@inheritDoc} */
+    protected void processAttribute(final XMLObject samlObject, final Attr attribute) throws UnmarshallingException {
+        final OAuthRPRoleDescriptorType descriptor = (OAuthRPRoleDescriptorType) samlObject;
+
+        if (attribute.getNamespaceURI() == null) {
+            if (attribute.getLocalName().equals(OAuthRPRoleDescriptorType.DEFAULT_MAX_AGE_ATTRIB_NAME)
+                    && !Strings.isNullOrEmpty(attribute.getValue())) {
+                descriptor.setDefaultMaxAge(Integer.parseInt(attribute.getValue()));
+            } else if (attribute.getLocalName().equals(OAuthRPRoleDescriptorType.REQUIRE_AUTH_TIME_ATTRIB_NAME)
+                    && !Strings.isNullOrEmpty(attribute.getValue())) {
+                descriptor.setRequireAuthTime(Boolean.parseBoolean(attribute.getValue()));
+            } else {
+                super.processAttribute(samlObject, attribute);
+            }
+        } else {
+            processUnknownAttribute(descriptor, attribute);
+        }
+    }
+}
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/PostLogoutRedirectUriBuilder.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/PostLogoutRedirectUriBuilder.java
new file mode 100644
index 00000000..100a8b6f
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/PostLogoutRedirectUriBuilder.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.PostLogoutRedirectUri;
+import net.shibboleth.idp.saml.oidc.xmlobject.Constants;
+
+/**
+ * Builder of {@link PostLogoutRedirectUriImpl}.
+ */
+public class PostLogoutRedirectUriBuilder extends AbstractSAMLObjectBuilder<PostLogoutRedirectUri> {
+
+    /**
+     * Constructor.
+     */
+    public PostLogoutRedirectUriBuilder() {
+
+    }
+
+    /** {@inheritDoc} */
+    public PostLogoutRedirectUri buildObject() {
+        return buildObject(Constants.SAML20MDOIDCMD_NS, PostLogoutRedirectUri.DEFAULT_ELEMENT_LOCAL_NAME,
+                Constants.SAML20MDOIDCMD_PREFIX);
+    }
+
+    /** {@inheritDoc} */
+    public PostLogoutRedirectUri buildObject(final String namespaceURI, final String localName, final String namespacePrefix) {
+        return new PostLogoutRedirectUriImpl(namespaceURI, localName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/PostLogoutRedirectUriImpl.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/PostLogoutRedirectUriImpl.java
new file mode 100644
index 00000000..b1ee4294
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/PostLogoutRedirectUriImpl.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.PostLogoutRedirectUri;
+
+/**
+ * Concrete implementation of {@link PostLogoutRedirectUri}.
+ */
+public class PostLogoutRedirectUriImpl extends AbstractMetadataValueSAMLObject implements PostLogoutRedirectUri {
+
+    /**
+     * Constructor.
+     * 
+     * @param namespaceURI the namespace the element is in
+     * @param elementLocalName the local name of the XML element this Object represents
+     * @param namespacePrefix the prefix for the given namespace
+     */
+    protected PostLogoutRedirectUriImpl(final String namespaceURI, final String elementLocalName, final String namespacePrefix) {
+        super(namespaceURI, elementLocalName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/PostLogoutRedirectUriMarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/PostLogoutRedirectUriMarshaller.java
new file mode 100644
index 00000000..fe2b3677
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/PostLogoutRedirectUriMarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.PostLogoutRedirectUri;
+
+/**
+ * A thread safe Marshaller for {@link PostLogoutRedirectUri} objects.
+ */
+public class PostLogoutRedirectUriMarshaller extends AbstractMetadataValueMarshaller<PostLogoutRedirectUri> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/PostLogoutRedirectUriUnmarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/PostLogoutRedirectUriUnmarshaller.java
new file mode 100644
index 00000000..81f955e4
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/PostLogoutRedirectUriUnmarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.PostLogoutRedirectUri;
+
+/**
+ * A thread-safe Unmarshaller for {@link PostLogoutRedirectUri} objects.
+ */
+public class PostLogoutRedirectUriUnmarshaller extends AbstractMetadataValueUnmarshaller<PostLogoutRedirectUri> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RedirectUriBuilder.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RedirectUriBuilder.java
new file mode 100644
index 00000000..46508a40
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RedirectUriBuilder.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.Constants;
+import net.shibboleth.idp.saml.oidc.xmlobject.RedirectUri;
+
+/**
+ * Builder of {@link RedirectUriImpl}.
+ */
+public class RedirectUriBuilder extends AbstractSAMLObjectBuilder<RedirectUri> {
+
+    /**
+     * Constructor.
+     */
+    public RedirectUriBuilder() {
+
+    }
+
+    /** {@inheritDoc} */
+    public RedirectUri buildObject() {
+        return buildObject(Constants.SAML20MDOIDCMD_NS, RedirectUri.DEFAULT_ELEMENT_LOCAL_NAME,
+                Constants.SAML20MDOIDCMD_PREFIX);
+    }
+
+    /** {@inheritDoc} */
+    public RedirectUri buildObject(final String namespaceURI, final String localName, final String namespacePrefix) {
+        return new RedirectUriImpl(namespaceURI, localName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RedirectUriImpl.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RedirectUriImpl.java
new file mode 100644
index 00000000..c9492e38
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RedirectUriImpl.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.RedirectUri;
+
+/**
+ * Concrete implementation of {@link RedirectUri}.
+ */
+public class RedirectUriImpl extends AbstractMetadataValueSAMLObject implements RedirectUri {
+
+    /**
+     * Constructor.
+     * 
+     * @param namespaceURI the namespace the element is in
+     * @param elementLocalName the local name of the XML element this Object represents
+     * @param namespacePrefix the prefix for the given namespace
+
+     */
+    protected RedirectUriImpl(final String namespaceURI, final String elementLocalName, final String namespacePrefix) {
+        super(namespaceURI, elementLocalName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RedirectUriMarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RedirectUriMarshaller.java
new file mode 100644
index 00000000..1e4b7b89
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RedirectUriMarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.RedirectUri;
+
+/**
+ * A thread safe Marshaller for {@link RedirectUri} objects.
+ */
+public class RedirectUriMarshaller extends AbstractMetadataValueMarshaller<RedirectUri> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RedirectUriUnmarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RedirectUriUnmarshaller.java
new file mode 100644
index 00000000..373e5866
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RedirectUriUnmarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.RedirectUri;
+
+/**
+ * A thread-safe Unmarshaller for {@link RedirectUri} objects.
+ */
+public class RedirectUriUnmarshaller extends AbstractMetadataValueUnmarshaller<RedirectUri> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestObjectEncryptionResponseAlgBuilder.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestObjectEncryptionResponseAlgBuilder.java
new file mode 100644
index 00000000..021071ac
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestObjectEncryptionResponseAlgBuilder.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.RequestObjectEncryptionResponseAlg;
+import net.shibboleth.idp.saml.oidc.xmlobject.Constants;
+
+/**
+ * Builder of {@link RequestObjectEncryptionResponseAlgImpl}.
+ */
+public class RequestObjectEncryptionResponseAlgBuilder extends AbstractSAMLObjectBuilder<RequestObjectEncryptionResponseAlg> {
+
+    /**
+     * Constructor.
+     */
+    public RequestObjectEncryptionResponseAlgBuilder() {
+
+    }
+
+    /** {@inheritDoc} */
+    public RequestObjectEncryptionResponseAlg buildObject() {
+        return buildObject(Constants.SAML20MDOIDCMD_NS, RequestObjectEncryptionResponseAlg.DEFAULT_ELEMENT_LOCAL_NAME,
+                Constants.SAML20MDOIDCMD_PREFIX);
+    }
+
+    /** {@inheritDoc} */
+    public RequestObjectEncryptionResponseAlg buildObject(final String namespaceURI, final String localName, final String namespacePrefix) {
+        return new RequestObjectEncryptionResponseAlgImpl(namespaceURI, localName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestObjectEncryptionResponseAlgImpl.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestObjectEncryptionResponseAlgImpl.java
new file mode 100644
index 00000000..723403e8
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestObjectEncryptionResponseAlgImpl.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.RequestObjectEncryptionResponseAlg;
+
+/**
+ * Concrete implementation of {@link RequestObjectEncryptionResponseAlg}.
+ */
+public class RequestObjectEncryptionResponseAlgImpl extends AbstractMetadataValueSAMLObject implements RequestObjectEncryptionResponseAlg {
+
+    /**
+     * Constructor.
+     * 
+     * @param namespaceURI the namespace the element is in
+     * @param elementLocalName the local name of the XML element this Object represents
+     * @param namespacePrefix the prefix for the given namespace
+     */
+    protected RequestObjectEncryptionResponseAlgImpl(final String namespaceURI, final String elementLocalName, final String namespacePrefix) {
+        super(namespaceURI, elementLocalName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestObjectEncryptionResponseAlgMarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestObjectEncryptionResponseAlgMarshaller.java
new file mode 100644
index 00000000..eebabfc0
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestObjectEncryptionResponseAlgMarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.RequestObjectEncryptionResponseAlg;
+
+/**
+ * A thread safe Marshaller for {@link RequestObjectEncryptionResponseAlg} objects.
+ */
+public class RequestObjectEncryptionResponseAlgMarshaller extends AbstractMetadataValueMarshaller<RequestObjectEncryptionResponseAlg> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestObjectEncryptionResponseAlgUnmarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestObjectEncryptionResponseAlgUnmarshaller.java
new file mode 100644
index 00000000..73818263
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestObjectEncryptionResponseAlgUnmarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.RequestObjectEncryptionResponseAlg;
+
+/**
+ * A thread-safe Unmarshaller for {@link RequestObjectEncryptionResponseAlg} objects.
+ */
+public class RequestObjectEncryptionResponseAlgUnmarshaller extends AbstractMetadataValueUnmarshaller<RequestObjectEncryptionResponseAlg> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestObjectEncryptionResponseEncBuilder.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestObjectEncryptionResponseEncBuilder.java
new file mode 100644
index 00000000..505eb382
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestObjectEncryptionResponseEncBuilder.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.RequestObjectEncryptionResponseEnc;
+import net.shibboleth.idp.saml.oidc.xmlobject.Constants;
+
+/**
+ * Builder of {@link RequestObjectEncryptionResponseEncImpl}.
+ */
+public class RequestObjectEncryptionResponseEncBuilder extends AbstractSAMLObjectBuilder<RequestObjectEncryptionResponseEnc> {
+
+    /**
+     * Constructor.
+     */
+    public RequestObjectEncryptionResponseEncBuilder() {
+
+    }
+
+    /** {@inheritDoc} */
+    public RequestObjectEncryptionResponseEnc buildObject() {
+        return buildObject(Constants.SAML20MDOIDCMD_NS, RequestObjectEncryptionResponseEnc.DEFAULT_ELEMENT_LOCAL_NAME,
+                Constants.SAML20MDOIDCMD_PREFIX);
+    }
+
+    /** {@inheritDoc} */
+    public RequestObjectEncryptionResponseEnc buildObject(final String namespaceURI, final String localName, final String namespacePrefix) {
+        return new RequestObjectEncryptionResponseEncImpl(namespaceURI, localName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestObjectEncryptionResponseEncImpl.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestObjectEncryptionResponseEncImpl.java
new file mode 100644
index 00000000..907a1c63
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestObjectEncryptionResponseEncImpl.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.RequestObjectEncryptionResponseEnc;
+
+/**
+ * Concrete implementation of {@link RequestObjectEncryptionResponseEnc}.
+ */
+public class RequestObjectEncryptionResponseEncImpl extends AbstractMetadataValueSAMLObject implements RequestObjectEncryptionResponseEnc {
+
+    /**
+     * Constructor.
+     * 
+     * @param namespaceURI the namespace the element is in
+     * @param elementLocalName the local name of the XML element this Object represents
+     * @param namespacePrefix the prefix for the given namespace
+     */
+    protected RequestObjectEncryptionResponseEncImpl(final String namespaceURI, final String elementLocalName, final String namespacePrefix) {
+        super(namespaceURI, elementLocalName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestObjectEncryptionResponseEncMarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestObjectEncryptionResponseEncMarshaller.java
new file mode 100644
index 00000000..b33d087a
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestObjectEncryptionResponseEncMarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.RequestObjectEncryptionResponseEnc;
+
+/**
+ * A thread safe Marshaller for {@link RequestObjectEncryptionResponseEnc} objects.
+ */
+public class RequestObjectEncryptionResponseEncMarshaller extends AbstractMetadataValueMarshaller<RequestObjectEncryptionResponseEnc> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestObjectEncryptionResponseEncUnmarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestObjectEncryptionResponseEncUnmarshaller.java
new file mode 100644
index 00000000..08dbbfc5
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestObjectEncryptionResponseEncUnmarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.RequestObjectEncryptionResponseEnc;
+
+/**
+ * A thread-safe Unmarshaller for {@link RequestObjectEncryptionResponseEnc} objects.
+ */
+public class RequestObjectEncryptionResponseEncUnmarshaller extends AbstractMetadataValueUnmarshaller<RequestObjectEncryptionResponseEnc> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestObjectSignedResponseAlgBuilder.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestObjectSignedResponseAlgBuilder.java
new file mode 100644
index 00000000..cb17f8b5
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestObjectSignedResponseAlgBuilder.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.RequestObjectSignedResponseAlg;
+import net.shibboleth.idp.saml.oidc.xmlobject.Constants;
+
+/**
+ * Builder of {@link RequestObjectSignedResponseAlgImpl}.
+ */
+public class RequestObjectSignedResponseAlgBuilder extends AbstractSAMLObjectBuilder<RequestObjectSignedResponseAlg> {
+
+    /**
+     * Constructor.
+     */
+    public RequestObjectSignedResponseAlgBuilder() {
+
+    }
+
+    /** {@inheritDoc} */
+    public RequestObjectSignedResponseAlg buildObject() {
+        return buildObject(Constants.SAML20MDOIDCMD_NS, RequestObjectSignedResponseAlg.DEFAULT_ELEMENT_LOCAL_NAME,
+                Constants.SAML20MDOIDCMD_PREFIX);
+    }
+
+    /** {@inheritDoc} */
+    public RequestObjectSignedResponseAlg buildObject(final String namespaceURI, final String localName, final String namespacePrefix) {
+        return new RequestObjectSignedResponseAlgImpl(namespaceURI, localName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestObjectSignedResponseAlgImpl.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestObjectSignedResponseAlgImpl.java
new file mode 100644
index 00000000..8e511bf3
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestObjectSignedResponseAlgImpl.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.RequestObjectSignedResponseAlg;
+
+/**
+ * Concrete implementation of {@link RequestObjectSignedResponseAlg}.
+ */
+public class RequestObjectSignedResponseAlgImpl extends AbstractMetadataValueSAMLObject implements RequestObjectSignedResponseAlg {
+
+    /**
+     * Constructor.
+     * 
+     * @param namespaceURI the namespace the element is in
+     * @param elementLocalName the local name of the XML element this Object represents
+     * @param namespacePrefix the prefix for the given namespace
+     */
+    protected RequestObjectSignedResponseAlgImpl(final String namespaceURI, final String elementLocalName, final String namespacePrefix) {
+        super(namespaceURI, elementLocalName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestObjectSignedResponseAlgMarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestObjectSignedResponseAlgMarshaller.java
new file mode 100644
index 00000000..39f82b73
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestObjectSignedResponseAlgMarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.RequestObjectSignedResponseAlg;
+
+/**
+ * A thread safe Marshaller for {@link RequestObjectSignedResponseAlg} objects.
+ */
+public class RequestObjectSignedResponseAlgMarshaller extends AbstractMetadataValueMarshaller<RequestObjectSignedResponseAlg> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestObjectSignedResponseAlgUnmarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestObjectSignedResponseAlgUnmarshaller.java
new file mode 100644
index 00000000..c7b88142
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestObjectSignedResponseAlgUnmarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.RequestObjectSignedResponseAlg;
+
+/**
+ * A thread-safe Unmarshaller for {@link RequestObjectSignedResponseAlg} objects.
+ */
+public class RequestObjectSignedResponseAlgUnmarshaller extends AbstractMetadataValueUnmarshaller<RequestObjectSignedResponseAlg> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestUriBuilder.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestUriBuilder.java
new file mode 100644
index 00000000..8c4cb2d1
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestUriBuilder.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.RequestUri;
+import net.shibboleth.idp.saml.oidc.xmlobject.Constants;
+
+/**
+ * Builder of {@link RequestUriImpl}.
+ */
+public class RequestUriBuilder extends AbstractSAMLObjectBuilder<RequestUri> {
+
+    /**
+     * Constructor.
+     */
+    public RequestUriBuilder() {
+
+    }
+
+    /** {@inheritDoc} */
+    public RequestUri buildObject() {
+        return buildObject(Constants.SAML20MDOIDCMD_NS, RequestUri.DEFAULT_ELEMENT_LOCAL_NAME,
+                Constants.SAML20MDOIDCMD_PREFIX);
+    }
+
+    /** {@inheritDoc} */
+    public RequestUri buildObject(final String namespaceURI, final String localName, final String namespacePrefix) {
+        return new RequestUriImpl(namespaceURI, localName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestUriImpl.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestUriImpl.java
new file mode 100644
index 00000000..2fb9efaa
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestUriImpl.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.RequestUri;
+
+/**
+ * Concrete implementation of {@link RequestUri}.
+ */
+public class RequestUriImpl extends AbstractMetadataValueSAMLObject implements RequestUri {
+
+    /**
+     * Constructor.
+     * 
+     * @param namespaceURI the namespace the element is in
+     * @param elementLocalName the local name of the XML element this Object represents
+     * @param namespacePrefix the prefix for the given namespace
+     */
+    protected RequestUriImpl(final String namespaceURI, final String elementLocalName, final String namespacePrefix) {
+        super(namespaceURI, elementLocalName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestUriMarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestUriMarshaller.java
new file mode 100644
index 00000000..e3005ff1
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestUriMarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.RequestUri;
+
+/**
+ * A thread safe Marshaller for {@link RequestUri} objects.
+ */
+public class RequestUriMarshaller extends AbstractMetadataValueMarshaller<RequestUri> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestUriUnmarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestUriUnmarshaller.java
new file mode 100644
index 00000000..13ef6724
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/RequestUriUnmarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.RequestUri;
+
+/**
+ * A thread-safe Unmarshaller for {@link RequestUri} objects.
+ */
+public class RequestUriUnmarshaller extends AbstractMetadataValueUnmarshaller<RequestUri> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ResponseTypeBuilder.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ResponseTypeBuilder.java
new file mode 100644
index 00000000..62872c69
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ResponseTypeBuilder.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.Constants;
+import net.shibboleth.idp.saml.oidc.xmlobject.ResponseType;
+
+/**
+ * Builder of {@link ResponseTypeImpl}.
+ */
+public class ResponseTypeBuilder extends AbstractSAMLObjectBuilder<ResponseType> {
+
+    /**
+     * Constructor.
+     */
+    public ResponseTypeBuilder() {
+
+    }
+
+    /** {@inheritDoc} */
+    public ResponseType buildObject() {
+        return buildObject(Constants.SAML20MDOIDCMD_NS, ResponseType.DEFAULT_ELEMENT_LOCAL_NAME,
+                Constants.SAML20MDOIDCMD_PREFIX);
+    }
+
+    /** {@inheritDoc} */
+    public ResponseType buildObject(final String namespaceURI, final String localName, final String namespacePrefix) {
+        return new ResponseTypeImpl(namespaceURI, localName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ResponseTypeImpl.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ResponseTypeImpl.java
new file mode 100644
index 00000000..0b16ac70
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ResponseTypeImpl.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.ResponseType;
+
+/**
+ * Concrete implementation of {@link ResponseType}.
+ */
+public class ResponseTypeImpl extends AbstractMetadataValueSAMLObject implements ResponseType {
+
+    /**
+     * Constructor.
+     * 
+     * @param namespaceURI the namespace the element is in
+     * @param elementLocalName the local name of the XML element this Object represents
+     * @param namespacePrefix the prefix for the given namespace
+     */
+    protected ResponseTypeImpl(final String namespaceURI, final String elementLocalName, final String namespacePrefix) {
+        super(namespaceURI, elementLocalName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ResponseTypeMarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ResponseTypeMarshaller.java
new file mode 100644
index 00000000..d89c7ee6
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ResponseTypeMarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.ResponseType;
+
+/**
+ * A thread safe Marshaller for {@link ResponseType} objects.
+ */
+public class ResponseTypeMarshaller extends AbstractMetadataValueMarshaller<ResponseType> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ResponseTypeUnmarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ResponseTypeUnmarshaller.java
new file mode 100644
index 00000000..afd265b9
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ResponseTypeUnmarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.ResponseType;
+
+/**
+ * A thread-safe Unmarshaller for {@link ResponseType} objects.
+ */
+public class ResponseTypeUnmarshaller extends AbstractMetadataValueUnmarshaller<ResponseType> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ScopeBuilder.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ScopeBuilder.java
new file mode 100644
index 00000000..49cb1f0c
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ScopeBuilder.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.Constants;
+import net.shibboleth.idp.saml.oidc.xmlobject.Scope;
+
+/**
+ * Builder of {@link ResponseTypeImpl}.
+ */
+public class ScopeBuilder extends AbstractSAMLObjectBuilder<Scope> {
+
+    /**
+     * Constructor.
+     */
+    public ScopeBuilder() {
+
+    }
+
+    /** {@inheritDoc} */
+    public Scope buildObject() {
+        return buildObject(Constants.SAML20MDOIDCMD_NS, Scope.DEFAULT_ELEMENT_LOCAL_NAME,
+                Constants.SAML20MDOIDCMD_PREFIX);
+    }
+
+    /** {@inheritDoc} */
+    public Scope buildObject(final String namespaceURI, final String localName, final String namespacePrefix) {
+        return new ScopeImpl(namespaceURI, localName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ScopeImpl.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ScopeImpl.java
new file mode 100644
index 00000000..b4ebb1b6
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ScopeImpl.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.Scope;
+
+/**
+ * Concrete implementation of {@link Scope}.
+ */
+public class ScopeImpl extends AbstractMetadataValueSAMLObject implements Scope {
+
+    /**
+     * Constructor.
+     * 
+     * @param namespaceURI the namespace the element is in
+     * @param elementLocalName the local name of the XML element this Object represents
+     * @param namespacePrefix the prefix for the given namespace
+     */
+    protected ScopeImpl(final String namespaceURI, final String elementLocalName, final String namespacePrefix) {
+        super(namespaceURI, elementLocalName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ScopeMarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ScopeMarshaller.java
new file mode 100644
index 00000000..581ae19e
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ScopeMarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.Scope;
+
+/**
+ * A thread safe Marshaller for {@link Scope} objects.
+ */
+public class ScopeMarshaller extends AbstractMetadataValueMarshaller<Scope> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ScopeUnmarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ScopeUnmarshaller.java
new file mode 100644
index 00000000..dbf2b64f
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/ScopeUnmarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.Scope;
+
+/**
+ * A thread-safe Unmarshaller for {@link Scope} objects.
+ */
+public class ScopeUnmarshaller extends AbstractMetadataValueUnmarshaller<Scope> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SectorIdentifierUriBuilder.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SectorIdentifierUriBuilder.java
new file mode 100644
index 00000000..b0a29274
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SectorIdentifierUriBuilder.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.SectorIdentifierUri;
+import net.shibboleth.idp.saml.oidc.xmlobject.Constants;
+
+/**
+ * Builder of {@link SectorIdentifierUriImpl}.
+ */
+public class SectorIdentifierUriBuilder extends AbstractSAMLObjectBuilder<SectorIdentifierUri> {
+
+    /**
+     * Constructor.
+     */
+    public SectorIdentifierUriBuilder() {
+
+    }
+
+    /** {@inheritDoc} */
+    public SectorIdentifierUri buildObject() {
+        return buildObject(Constants.SAML20MDOIDCMD_NS, SectorIdentifierUri.DEFAULT_ELEMENT_LOCAL_NAME,
+                Constants.SAML20MDOIDCMD_PREFIX);
+    }
+
+    /** {@inheritDoc} */
+    public SectorIdentifierUri buildObject(final String namespaceURI, final String localName, final String namespacePrefix) {
+        return new SectorIdentifierUriImpl(namespaceURI, localName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SectorIdentifierUriImpl.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SectorIdentifierUriImpl.java
new file mode 100644
index 00000000..24bf5977
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SectorIdentifierUriImpl.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.SectorIdentifierUri;
+
+/**
+ * Concrete implementation of {@link SectorIdentifierUri}.
+ */
+public class SectorIdentifierUriImpl extends AbstractMetadataValueSAMLObject implements SectorIdentifierUri {
+
+    /**
+     * Constructor.
+     * 
+     * @param namespaceURI the namespace the element is in
+     * @param elementLocalName the local name of the XML element this Object represents
+     * @param namespacePrefix the prefix for the given namespace
+     */
+    protected SectorIdentifierUriImpl(final String namespaceURI, final String elementLocalName, final String namespacePrefix) {
+        super(namespaceURI, elementLocalName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SectorIdentifierUriMarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SectorIdentifierUriMarshaller.java
new file mode 100644
index 00000000..98ad9fff
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SectorIdentifierUriMarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.SectorIdentifierUri;
+
+/**
+ * A thread safe Marshaller for {@link SectorIdentifierUri} objects.
+ */
+public class SectorIdentifierUriMarshaller extends AbstractMetadataValueMarshaller<SectorIdentifierUri> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SectorIdentifierUriUnmarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SectorIdentifierUriUnmarshaller.java
new file mode 100644
index 00000000..64145b9d
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SectorIdentifierUriUnmarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.SectorIdentifierUri;
+
+/**
+ * A thread-safe Unmarshaller for {@link SectorIdentifierUri} objects.
+ */
+public class SectorIdentifierUriUnmarshaller extends AbstractMetadataValueUnmarshaller<SectorIdentifierUri> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SoftwareIdBuilder.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SoftwareIdBuilder.java
new file mode 100644
index 00000000..ec73489f
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SoftwareIdBuilder.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.SoftwareId;
+import net.shibboleth.idp.saml.oidc.xmlobject.Constants;
+
+/**
+ * Builder of {@link SoftwareIdImpl}.
+ */
+public class SoftwareIdBuilder extends AbstractSAMLObjectBuilder<SoftwareId> {
+
+    /**
+     * Constructor.
+     */
+    public SoftwareIdBuilder() {
+
+    }
+
+    /** {@inheritDoc} */
+    public SoftwareId buildObject() {
+        return buildObject(Constants.SAML20MDOIDCMD_NS, SoftwareId.DEFAULT_ELEMENT_LOCAL_NAME,
+                Constants.SAML20MDOIDCMD_PREFIX);
+    }
+
+    /** {@inheritDoc} */
+    public SoftwareId buildObject(final String namespaceURI, final String localName, final String namespacePrefix) {
+        return new SoftwareIdImpl(namespaceURI, localName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SoftwareIdImpl.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SoftwareIdImpl.java
new file mode 100644
index 00000000..d635f82b
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SoftwareIdImpl.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.SoftwareId;
+
+/**
+ * Concrete implementation of {@link SoftwareId}.
+ */
+public class SoftwareIdImpl extends AbstractMetadataValueSAMLObject implements SoftwareId {
+
+    /**
+     * Constructor.
+     * 
+     * @param namespaceURI the namespace the element is in
+     * @param elementLocalName the local name of the XML element this Object represents
+     * @param namespacePrefix the prefix for the given namespace
+     */
+    protected SoftwareIdImpl(final String namespaceURI, final String elementLocalName, final String namespacePrefix) {
+        super(namespaceURI, elementLocalName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SoftwareIdMarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SoftwareIdMarshaller.java
new file mode 100644
index 00000000..74e2b383
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SoftwareIdMarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.SoftwareId;
+
+/**
+ * A thread safe Marshaller for {@link SoftwareId} objects.
+ */
+public class SoftwareIdMarshaller extends AbstractMetadataValueMarshaller<SoftwareId> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SoftwareIdUnmarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SoftwareIdUnmarshaller.java
new file mode 100644
index 00000000..887cfd27
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SoftwareIdUnmarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.SoftwareId;
+
+/**
+ * A thread-safe Unmarshaller for {@link SoftwareId} objects.
+ */
+public class SoftwareIdUnmarshaller extends AbstractMetadataValueUnmarshaller<SoftwareId> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SoftwareVersionBuilder.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SoftwareVersionBuilder.java
new file mode 100644
index 00000000..32e42362
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SoftwareVersionBuilder.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.SoftwareVersion;
+import net.shibboleth.idp.saml.oidc.xmlobject.Constants;
+
+/**
+ * Builder of {@link SoftwareVersionImpl}.
+ */
+public class SoftwareVersionBuilder extends AbstractSAMLObjectBuilder<SoftwareVersion> {
+
+    /**
+     * Constructor.
+     */
+    public SoftwareVersionBuilder() {
+
+    }
+
+    /** {@inheritDoc} */
+    public SoftwareVersion buildObject() {
+        return buildObject(Constants.SAML20MDOIDCMD_NS, SoftwareVersion.DEFAULT_ELEMENT_LOCAL_NAME,
+                Constants.SAML20MDOIDCMD_PREFIX);
+    }
+
+    /** {@inheritDoc} */
+    public SoftwareVersion buildObject(final String namespaceURI, final String localName, final String namespacePrefix) {
+        return new SoftwareVersionImpl(namespaceURI, localName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SoftwareVersionImpl.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SoftwareVersionImpl.java
new file mode 100644
index 00000000..e3616e35
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SoftwareVersionImpl.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.SoftwareVersion;
+
+/**
+ * Concrete implementation of {@link SoftwareVersion}.
+ */
+public class SoftwareVersionImpl extends AbstractMetadataValueSAMLObject implements SoftwareVersion {
+
+    /**
+     * Constructor.
+     * 
+     * @param namespaceURI the namespace the element is in
+     * @param elementLocalName the local name of the XML element this Object represents
+     * @param namespacePrefix the prefix for the given namespace
+     */
+    protected SoftwareVersionImpl(final String namespaceURI, final String elementLocalName, final String namespacePrefix) {
+        super(namespaceURI, elementLocalName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SoftwareVersionMarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SoftwareVersionMarshaller.java
new file mode 100644
index 00000000..d93958b0
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SoftwareVersionMarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.SoftwareVersion;
+
+/**
+ * A thread safe Marshaller for {@link SoftwareVersion} objects.
+ */
+public class SoftwareVersionMarshaller extends AbstractMetadataValueMarshaller<SoftwareVersion> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SoftwareVersionUnmarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SoftwareVersionUnmarshaller.java
new file mode 100644
index 00000000..35c51523
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SoftwareVersionUnmarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.SoftwareVersion;
+
+/**
+ * A thread-safe Unmarshaller for {@link SoftwareVersion} objects.
+ */
+public class SoftwareVersionUnmarshaller extends AbstractMetadataValueUnmarshaller<SoftwareVersion> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SubjectTypeBuilder.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SubjectTypeBuilder.java
new file mode 100644
index 00000000..5b2a9f7a
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SubjectTypeBuilder.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.SubjectType;
+import net.shibboleth.idp.saml.oidc.xmlobject.Constants;
+
+/**
+ * Builder of {@link SubjectTypeImpl}.
+ */
+public class SubjectTypeBuilder extends AbstractSAMLObjectBuilder<SubjectType> {
+
+    /**
+     * Constructor.
+     */
+    public SubjectTypeBuilder() {
+
+    }
+
+    /** {@inheritDoc} */
+    public SubjectType buildObject() {
+        return buildObject(Constants.SAML20MDOIDCMD_NS, SubjectType.DEFAULT_ELEMENT_LOCAL_NAME,
+                Constants.SAML20MDOIDCMD_PREFIX);
+    }
+
+    /** {@inheritDoc} */
+    public SubjectType buildObject(final String namespaceURI, final String localName, final String namespacePrefix) {
+        return new SubjectTypeImpl(namespaceURI, localName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SubjectTypeImpl.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SubjectTypeImpl.java
new file mode 100644
index 00000000..2d562fe6
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SubjectTypeImpl.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.SubjectType;
+
+/**
+ * Concrete implementation of {@link SubjectType}.
+ */
+public class SubjectTypeImpl extends AbstractMetadataValueSAMLObject implements SubjectType {
+
+    /**
+     * Constructor.
+     * 
+     * @param namespaceURI the namespace the element is in
+     * @param elementLocalName the local name of the XML element this Object represents
+     * @param namespacePrefix the prefix for the given namespace
+     */
+    protected SubjectTypeImpl(final String namespaceURI, final String elementLocalName, final String namespacePrefix) {
+        super(namespaceURI, elementLocalName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SubjectTypeMarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SubjectTypeMarshaller.java
new file mode 100644
index 00000000..50bf6130
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SubjectTypeMarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.SubjectType;
+
+/**
+ * A thread safe Marshaller for {@link SubjectType} objects.
+ */
+public class SubjectTypeMarshaller extends AbstractMetadataValueMarshaller<SubjectType> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SubjectTypeUnmarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SubjectTypeUnmarshaller.java
new file mode 100644
index 00000000..f146e19a
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/SubjectTypeUnmarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.SubjectType;
+
+/**
+ * A thread-safe Unmarshaller for {@link SubjectType} objects.
+ */
+public class SubjectTypeUnmarshaller extends AbstractMetadataValueUnmarshaller<SubjectType> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/TokenEndpointAuthMethodBuilder.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/TokenEndpointAuthMethodBuilder.java
new file mode 100644
index 00000000..ebc06b82
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/TokenEndpointAuthMethodBuilder.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.TokenEndpointAuthMethod;
+import net.shibboleth.idp.saml.oidc.xmlobject.Constants;
+
+/**
+ * Builder of {@link TokenEndpointAuthMethodImpl}.
+ */
+public class TokenEndpointAuthMethodBuilder extends AbstractSAMLObjectBuilder<TokenEndpointAuthMethod> {
+
+    /**
+     * Constructor.
+     */
+    public TokenEndpointAuthMethodBuilder() {
+
+    }
+
+    /** {@inheritDoc} */
+    public TokenEndpointAuthMethod buildObject() {
+        return buildObject(Constants.SAML20MDOIDCMD_NS, TokenEndpointAuthMethod.DEFAULT_ELEMENT_LOCAL_NAME,
+                Constants.SAML20MDOIDCMD_PREFIX);
+    }
+
+    /** {@inheritDoc} */
+    public TokenEndpointAuthMethod buildObject(final String namespaceURI, final String localName, final String namespacePrefix) {
+        return new TokenEndpointAuthMethodImpl(namespaceURI, localName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/TokenEndpointAuthMethodImpl.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/TokenEndpointAuthMethodImpl.java
new file mode 100644
index 00000000..30bab0f1
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/TokenEndpointAuthMethodImpl.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.TokenEndpointAuthMethod;
+
+/**
+ * Concrete implementation of {@link TokenEndpointAuthMethod}.
+ */
+public class TokenEndpointAuthMethodImpl extends AbstractMetadataValueSAMLObject implements TokenEndpointAuthMethod {
+
+    /**
+     * Constructor.
+     * 
+     * @param namespaceURI the namespace the element is in
+     * @param elementLocalName the local name of the XML element this Object represents
+     * @param namespacePrefix the prefix for the given namespace
+     */
+    protected TokenEndpointAuthMethodImpl(final String namespaceURI, final String elementLocalName, final String namespacePrefix) {
+        super(namespaceURI, elementLocalName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/TokenEndpointAuthMethodMarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/TokenEndpointAuthMethodMarshaller.java
new file mode 100644
index 00000000..2e4151c3
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/TokenEndpointAuthMethodMarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.TokenEndpointAuthMethod;
+
+/**
+ * A thread safe Marshaller for {@link TokenEndpointAuthMethod} objects.
+ */
+public class TokenEndpointAuthMethodMarshaller extends AbstractMetadataValueMarshaller<TokenEndpointAuthMethod> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/TokenEndpointAuthMethodUnmarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/TokenEndpointAuthMethodUnmarshaller.java
new file mode 100644
index 00000000..1e378c66
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/TokenEndpointAuthMethodUnmarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.TokenEndpointAuthMethod;
+
+/**
+ * A thread-safe Unmarshaller for {@link TokenEndpointAuthMethod} objects.
+ */
+public class TokenEndpointAuthMethodUnmarshaller extends AbstractMetadataValueUnmarshaller<TokenEndpointAuthMethod> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/TokenEndpointAuthSigningAlgBuilder.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/TokenEndpointAuthSigningAlgBuilder.java
new file mode 100644
index 00000000..3928b2e0
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/TokenEndpointAuthSigningAlgBuilder.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.TokenEndpointAuthSigningAlg;
+import net.shibboleth.idp.saml.oidc.xmlobject.Constants;
+
+/**
+ * Builder of {@link TokenEndpointAuthSigningAlgImpl}.
+ */
+public class TokenEndpointAuthSigningAlgBuilder extends AbstractSAMLObjectBuilder<TokenEndpointAuthSigningAlg> {
+
+    /**
+     * Constructor.
+     */
+    public TokenEndpointAuthSigningAlgBuilder() {
+
+    }
+
+    /** {@inheritDoc} */
+    public TokenEndpointAuthSigningAlg buildObject() {
+        return buildObject(Constants.SAML20MDOIDCMD_NS, TokenEndpointAuthSigningAlg.DEFAULT_ELEMENT_LOCAL_NAME,
+                Constants.SAML20MDOIDCMD_PREFIX);
+    }
+
+    /** {@inheritDoc} */
+    public TokenEndpointAuthSigningAlg buildObject(final String namespaceURI, final String localName, final String namespacePrefix) {
+        return new TokenEndpointAuthSigningAlgImpl(namespaceURI, localName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/TokenEndpointAuthSigningAlgImpl.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/TokenEndpointAuthSigningAlgImpl.java
new file mode 100644
index 00000000..89abe9b5
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/TokenEndpointAuthSigningAlgImpl.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.TokenEndpointAuthSigningAlg;
+
+/**
+ * Concrete implementation of {@link TokenEndpointAuthSigningAlg}.
+ */
+public class TokenEndpointAuthSigningAlgImpl extends AbstractMetadataValueSAMLObject implements TokenEndpointAuthSigningAlg {
+
+    /**
+     * Constructor.
+     * 
+     * @param namespaceURI the namespace the element is in
+     * @param elementLocalName the local name of the XML element this Object represents
+     * @param namespacePrefix the prefix for the given namespace
+     */
+    protected TokenEndpointAuthSigningAlgImpl(final String namespaceURI, final String elementLocalName, final String namespacePrefix) {
+        super(namespaceURI, elementLocalName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/TokenEndpointAuthSigningAlgMarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/TokenEndpointAuthSigningAlgMarshaller.java
new file mode 100644
index 00000000..7d6072a7
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/TokenEndpointAuthSigningAlgMarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.TokenEndpointAuthSigningAlg;
+
+/**
+ * A thread safe Marshaller for {@link TokenEndpointAuthSigningAlg} objects.
+ */
+public class TokenEndpointAuthSigningAlgMarshaller extends AbstractMetadataValueMarshaller<TokenEndpointAuthSigningAlg> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/TokenEndpointAuthSigningAlgUnmarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/TokenEndpointAuthSigningAlgUnmarshaller.java
new file mode 100644
index 00000000..73f195e1
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/TokenEndpointAuthSigningAlgUnmarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.TokenEndpointAuthSigningAlg;
+
+/**
+ * A thread-safe Unmarshaller for {@link TokenEndpointAuthSigningAlg} objects.
+ */
+public class TokenEndpointAuthSigningAlgUnmarshaller extends AbstractMetadataValueUnmarshaller<TokenEndpointAuthSigningAlg> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/UserInfoEncryptionResponseAlgBuilder.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/UserInfoEncryptionResponseAlgBuilder.java
new file mode 100644
index 00000000..8b0072fc
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/UserInfoEncryptionResponseAlgBuilder.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.UserInfoEncryptionResponseAlg;
+import net.shibboleth.idp.saml.oidc.xmlobject.Constants;
+
+/**
+ * Builder of {@link UserInfoEncryptionResponseAlgImpl}.
+ */
+public class UserInfoEncryptionResponseAlgBuilder extends AbstractSAMLObjectBuilder<UserInfoEncryptionResponseAlg> {
+
+    /**
+     * Constructor.
+     */
+    public UserInfoEncryptionResponseAlgBuilder() {
+
+    }
+
+    /** {@inheritDoc} */
+    public UserInfoEncryptionResponseAlg buildObject() {
+        return buildObject(Constants.SAML20MDOIDCMD_NS, UserInfoEncryptionResponseAlg.DEFAULT_ELEMENT_LOCAL_NAME,
+                Constants.SAML20MDOIDCMD_PREFIX);
+    }
+
+    /** {@inheritDoc} */
+    public UserInfoEncryptionResponseAlg buildObject(final String namespaceURI, final String localName, final String namespacePrefix) {
+        return new UserInfoEncryptionResponseAlgImpl(namespaceURI, localName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/UserInfoEncryptionResponseAlgImpl.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/UserInfoEncryptionResponseAlgImpl.java
new file mode 100644
index 00000000..8ca7fcf4
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/UserInfoEncryptionResponseAlgImpl.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.UserInfoEncryptionResponseAlg;
+
+/**
+ * Concrete implementation of {@link UserInfoEncryptionResponseAlg}.
+ */
+public class UserInfoEncryptionResponseAlgImpl extends AbstractMetadataValueSAMLObject implements UserInfoEncryptionResponseAlg {
+
+    /**
+     * Constructor.
+     * 
+     * @param namespaceURI the namespace the element is in
+     * @param elementLocalName the local name of the XML element this Object represents
+     * @param namespacePrefix the prefix for the given namespace
+     */
+    protected UserInfoEncryptionResponseAlgImpl(final String namespaceURI, final String elementLocalName, final String namespacePrefix) {
+        super(namespaceURI, elementLocalName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/UserInfoEncryptionResponseAlgMarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/UserInfoEncryptionResponseAlgMarshaller.java
new file mode 100644
index 00000000..02179a73
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/UserInfoEncryptionResponseAlgMarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.UserInfoEncryptionResponseAlg;
+
+/**
+ * A thread safe Marshaller for {@link UserInfoEncryptionResponseAlg} objects.
+ */
+public class UserInfoEncryptionResponseAlgMarshaller extends AbstractMetadataValueMarshaller<UserInfoEncryptionResponseAlg> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/UserInfoEncryptionResponseAlgUnmarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/UserInfoEncryptionResponseAlgUnmarshaller.java
new file mode 100644
index 00000000..00a1472a
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/UserInfoEncryptionResponseAlgUnmarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.UserInfoEncryptionResponseAlg;
+
+/**
+ * A thread-safe Unmarshaller for {@link UserInfoEncryptionResponseAlg} objects.
+ */
+public class UserInfoEncryptionResponseAlgUnmarshaller extends AbstractMetadataValueUnmarshaller<UserInfoEncryptionResponseAlg> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/UserInfoEncryptionResponseEncBuilder.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/UserInfoEncryptionResponseEncBuilder.java
new file mode 100644
index 00000000..56103568
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/UserInfoEncryptionResponseEncBuilder.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.UserInfoEncryptionResponseEnc;
+import net.shibboleth.idp.saml.oidc.xmlobject.Constants;
+
+/**
+ * Builder of {@link UserInfoEncryptionResponseEncImpl}.
+ */
+public class UserInfoEncryptionResponseEncBuilder extends AbstractSAMLObjectBuilder<UserInfoEncryptionResponseEnc> {
+
+    /**
+     * Constructor.
+     */
+    public UserInfoEncryptionResponseEncBuilder() {
+
+    }
+
+    /** {@inheritDoc} */
+    public UserInfoEncryptionResponseEnc buildObject() {
+        return buildObject(Constants.SAML20MDOIDCMD_NS, UserInfoEncryptionResponseEnc.DEFAULT_ELEMENT_LOCAL_NAME,
+                Constants.SAML20MDOIDCMD_PREFIX);
+    }
+
+    /** {@inheritDoc} */
+    public UserInfoEncryptionResponseEnc buildObject(final String namespaceURI, final String localName, final String namespacePrefix) {
+        return new UserInfoEncryptionResponseEncImpl(namespaceURI, localName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/UserInfoEncryptionResponseEncImpl.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/UserInfoEncryptionResponseEncImpl.java
new file mode 100644
index 00000000..6aa56124
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/UserInfoEncryptionResponseEncImpl.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.UserInfoEncryptionResponseEnc;
+
+/**
+ * Concrete implementation of {@link UserInfoEncryptionResponseEnc}.
+ */
+public class UserInfoEncryptionResponseEncImpl extends AbstractMetadataValueSAMLObject implements UserInfoEncryptionResponseEnc {
+
+    /**
+     * Constructor.
+     * 
+     * @param namespaceURI the namespace the element is in
+     * @param elementLocalName the local name of the XML element this Object represents
+     * @param namespacePrefix the prefix for the given namespace
+     */
+    protected UserInfoEncryptionResponseEncImpl(final String namespaceURI, final String elementLocalName, final String namespacePrefix) {
+        super(namespaceURI, elementLocalName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/UserInfoEncryptionResponseEncMarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/UserInfoEncryptionResponseEncMarshaller.java
new file mode 100644
index 00000000..2dd468ca
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/UserInfoEncryptionResponseEncMarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.UserInfoEncryptionResponseEnc;
+
+/**
+ * A thread safe Marshaller for {@link UserInfoEncryptionResponseEnc} objects.
+ */
+public class UserInfoEncryptionResponseEncMarshaller extends AbstractMetadataValueMarshaller<UserInfoEncryptionResponseEnc> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/UserInfoEncryptionResponseEncUnmarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/UserInfoEncryptionResponseEncUnmarshaller.java
new file mode 100644
index 00000000..a7cff36c
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/UserInfoEncryptionResponseEncUnmarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.UserInfoEncryptionResponseEnc;
+
+/**
+ * A thread-safe Unmarshaller for {@link UserInfoEncryptionResponseEnc} objects.
+ */
+public class UserInfoEncryptionResponseEncUnmarshaller extends AbstractMetadataValueUnmarshaller<UserInfoEncryptionResponseEnc> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/UserInfoSignedResponseAlgBuilder.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/UserInfoSignedResponseAlgBuilder.java
new file mode 100644
index 00000000..7f7d9d75
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/UserInfoSignedResponseAlgBuilder.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.UserInfoSignedResponseAlg;
+import net.shibboleth.idp.saml.oidc.xmlobject.Constants;
+
+/**
+ * Builder of {@link UserInfoSignedResponseAlgImpl}.
+ */
+public class UserInfoSignedResponseAlgBuilder extends AbstractSAMLObjectBuilder<UserInfoSignedResponseAlg> {
+
+    /**
+     * Constructor.
+     */
+    public UserInfoSignedResponseAlgBuilder() {
+
+    }
+
+    /** {@inheritDoc} */
+    public UserInfoSignedResponseAlg buildObject() {
+        return buildObject(Constants.SAML20MDOIDCMD_NS, UserInfoSignedResponseAlg.DEFAULT_ELEMENT_LOCAL_NAME,
+                Constants.SAML20MDOIDCMD_PREFIX);
+    }
+
+    /** {@inheritDoc} */
+    public UserInfoSignedResponseAlg buildObject(final String namespaceURI, final String localName, final String namespacePrefix) {
+        return new UserInfoSignedResponseAlgImpl(namespaceURI, localName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/UserInfoSignedResponseAlgImpl.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/UserInfoSignedResponseAlgImpl.java
new file mode 100644
index 00000000..5713557c
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/UserInfoSignedResponseAlgImpl.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.UserInfoSignedResponseAlg;
+
+/**
+ * Concrete implementation of {@link UserInfoSignedResponseAlg}.
+ */
+public class UserInfoSignedResponseAlgImpl extends AbstractMetadataValueSAMLObject implements UserInfoSignedResponseAlg {
+
+    /**
+     * Constructor.
+     * 
+     * @param namespaceURI the namespace the element is in
+     * @param elementLocalName the local name of the XML element this Object represents
+     * @param namespacePrefix the prefix for the given namespace
+     */
+    protected UserInfoSignedResponseAlgImpl(final String namespaceURI, final String elementLocalName, final String namespacePrefix) {
+        super(namespaceURI, elementLocalName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/UserInfoSignedResponseAlgMarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/UserInfoSignedResponseAlgMarshaller.java
new file mode 100644
index 00000000..82d9b471
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/UserInfoSignedResponseAlgMarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.UserInfoSignedResponseAlg;
+
+/**
+ * A thread safe Marshaller for {@link UserInfoSignedResponseAlg} objects.
+ */
+public class UserInfoSignedResponseAlgMarshaller extends AbstractMetadataValueMarshaller<UserInfoSignedResponseAlg> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/UserInfoSignedResponseAlgUnmarshaller.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/UserInfoSignedResponseAlgUnmarshaller.java
new file mode 100644
index 00000000..535f5dc7
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/UserInfoSignedResponseAlgUnmarshaller.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import net.shibboleth.idp.saml.oidc.xmlobject.UserInfoSignedResponseAlg;
+
+/**
+ * A thread-safe Unmarshaller for {@link UserInfoSignedResponseAlg} objects.
+ */
+public class UserInfoSignedResponseAlgUnmarshaller extends AbstractMetadataValueUnmarshaller<UserInfoSignedResponseAlg> {
+
+}
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/XMLObjectProviderInitializer.java b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/XMLObjectProviderInitializer.java
new file mode 100644
index 00000000..d0a99de9
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/java/net/shibboleth/idp/saml/oidc/xmlobject/impl/XMLObjectProviderInitializer.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2017 - 2020, GÉANT
+ *
+ * Licensed under the Apache License, Version 2.0 (the “License”); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an “AS IS” BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.saml.oidc.xmlobject.impl;
+
+import org.opensaml.core.xml.config.AbstractXMLObjectProviderInitializer;
+
+/**
+ * XMLObject provider initializer for the metadata extension.
+ */
+public class XMLObjectProviderInitializer extends AbstractXMLObjectProviderInitializer {
+    
+    /** Config resources. */
+    private static String[] configs = {
+        "/saml2-metadata-oidcmd-config.xml", 
+        };
+
+    /** {@inheritDoc} */
+    @Override
+    protected String[] getConfigResources() {
+        return configs;
+    }
+
+}
diff --git a/idp-oidc-extension-impl/src/main/resources/META-INF/services/org.opensaml.core.config.Initializer b/idp-oidc-extension-impl/src/main/resources/META-INF/services/org.opensaml.core.config.Initializer
new file mode 100644
index 00000000..ef3a2676
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/resources/META-INF/services/org.opensaml.core.config.Initializer
@@ -0,0 +1 @@
+net.shibboleth.idp.saml.oidc.xmlobject.impl.XMLObjectProviderInitializer
\ No newline at end of file
diff --git a/idp-oidc-extension-impl/src/main/resources/saml2-metadata-oidcmd-config.xml b/idp-oidc-extension-impl/src/main/resources/saml2-metadata-oidcmd-config.xml
new file mode 100644
index 00000000..f174d5ad
--- /dev/null
+++ b/idp-oidc-extension-impl/src/main/resources/saml2-metadata-oidcmd-config.xml
@@ -0,0 +1,170 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<XMLTooling xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:oidcmd="urn:mace:shibboleth:metadata:oidc:1.0" xmlns="http://www.opensaml.org/xmltooling-config" xsi:schemaLocation="http://www.opensaml.org/xmltooling-config ../../src/schema/xmltooling-config.xsd">
+
+    <!-- SAML 2.0 Protocol Third-party Object providers -->
+    <ObjectProviders>
+
+        <ObjectProvider qualifiedName="oidcmd:ApplicationType">
+            <BuilderClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.ApplicationTypeBuilder"/>
+            <MarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.ApplicationTypeMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.ApplicationTypeUnmarshaller"/>
+        </ObjectProvider>
+
+        <ObjectProvider qualifiedName="oidcmd:ClientUri">
+            <BuilderClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.ClientUriBuilder"/>
+            <MarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.ClientUriMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.ClientUriUnmarshaller"/>
+        </ObjectProvider>
+
+        <ObjectProvider qualifiedName="oidcmd:DefaultAcrValue">
+            <BuilderClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.DefaultAcrValueBuilder"/>
+            <MarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.DefaultAcrValueMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.DefaultAcrValueUnmarshaller"/>
+        </ObjectProvider>
+
+        <ObjectProvider qualifiedName="oidcmd:GrantType">
+            <BuilderClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.GrantTypeBuilder"/>
+            <MarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.GrantTypeMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.GrantTypeUnmarshaller"/>
+        </ObjectProvider>
+
+        <ObjectProvider qualifiedName="oidcmd:IdTokenEncryptionResponseAlg">
+            <BuilderClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.IdTokenEncryptionResponseAlgBuilder"/>
+            <MarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.IdTokenEncryptionResponseAlgMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.IdTokenEncryptionResponseAlgUnmarshaller"/>
+        </ObjectProvider>
+        
+        <ObjectProvider qualifiedName="oidcmd:IdTokenEncryptionResponseEnc">
+            <BuilderClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.IdTokenEncryptionResponseEncBuilder"/>
+            <MarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.IdTokenEncryptionResponseEncMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.IdTokenEncryptionResponseEncUnmarshaller"/>
+        </ObjectProvider>
+        
+        <ObjectProvider qualifiedName="oidcmd:IdTokenSignedResponseAlg">
+            <BuilderClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.IdTokenSignedResponseAlgBuilder"/>
+            <MarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.IdTokenSignedResponseAlgMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.IdTokenSignedResponseAlgUnmarshaller"/>
+        </ObjectProvider>
+        
+        <ObjectProvider qualifiedName="oidcmd:InitiateLoginUri">
+            <BuilderClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.InitiateLoginUriBuilder"/>
+            <MarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.InitiateLoginUriMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.InitiateLoginUriUnmarshaller"/>
+        </ObjectProvider>
+        
+        <ObjectProvider qualifiedName="oidcmd:JwksUri">
+            <BuilderClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.JwksUriBuilder"/>
+            <MarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.JwksUriMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.JwksUriUnmarshaller"/>
+        </ObjectProvider>
+        
+        <ObjectProvider qualifiedName="oidcmd:OAuthRPRoleDescriptorType">
+            <BuilderClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.OAuthRPRoleDescriptorTypeBuilder"/>
+            <MarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.OAuthRPRoleDescriptorTypeMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.OAuthRPRoleDescriptorTypeUnmarshaller"/>
+        </ObjectProvider>
+        
+        <ObjectProvider qualifiedName="oidcmd:PostLogoutRedirectUri">
+            <BuilderClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.PostLogoutRedirectUriBuilder"/>
+            <MarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.PostLogoutRedirectUriMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.PostLogoutRedirectUriUnmarshaller"/>
+        </ObjectProvider>
+
+        <ObjectProvider qualifiedName="oidcmd:RedirectUri">
+            <BuilderClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.RedirectUriBuilder"/>
+            <MarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.RedirectUriMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.RedirectUriUnmarshaller"/>
+        </ObjectProvider>
+        
+        <ObjectProvider qualifiedName="oidcmd:RequestObjectEncryptionResponseAlg">
+            <BuilderClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.RequestObjectEncryptionResponseAlgBuilder"/>
+            <MarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.RequestObjectEncryptionResponseAlgMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.RequestObjectEncryptionResponseAlgUnmarshaller"/>
+        </ObjectProvider>
+
+        <ObjectProvider qualifiedName="oidcmd:RequestObjectEncryptionResponseEnc">
+            <BuilderClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.RequestObjectEncryptionResponseEncBuilder"/>
+            <MarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.RequestObjectEncryptionResponseEncMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.RequestObjectEncryptionResponseEncUnmarshaller"/>
+        </ObjectProvider>
+
+        <ObjectProvider qualifiedName="oidcmd:RequestObjectSignedResponseAlg">
+            <BuilderClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.RequestObjectSignedResponseAlgBuilder"/>
+            <MarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.RequestObjectSignedResponseAlgMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.RequestObjectSignedResponseAlgUnmarshaller"/>
+        </ObjectProvider>
+
+        <ObjectProvider qualifiedName="oidcmd:RequestUri">
+            <BuilderClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.RequestUriBuilder"/>
+            <MarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.RequestUriMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.RequestUriUnmarshaller"/>
+        </ObjectProvider>
+
+        <ObjectProvider qualifiedName="oidcmd:ResponseType">
+            <BuilderClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.ResponseTypeBuilder"/>
+            <MarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.ResponseTypeMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.ResponseTypeUnmarshaller"/>
+        </ObjectProvider>
+        
+        <ObjectProvider qualifiedName="oidcmd:Scope">
+            <BuilderClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.ScopeBuilder"/>
+            <MarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.ScopeMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.ScopeUnmarshaller"/>
+        </ObjectProvider>
+
+        <ObjectProvider qualifiedName="oidcmd:SectorIdentifierUri">
+            <BuilderClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.SectorIdentifierUriBuilder"/>
+            <MarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.SectorIdentifierUriMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.SectorIdentifierUriUnmarshaller"/>
+        </ObjectProvider>
+
+        <ObjectProvider qualifiedName="oidcmd:SoftwareId">
+            <BuilderClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.SoftwareIdBuilder"/>
+            <MarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.SoftwareIdMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.SoftwareIdUnmarshaller"/>
+        </ObjectProvider>
+
+        <ObjectProvider qualifiedName="oidcmd:SoftwareVersion">
+            <BuilderClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.SoftwareVersionBuilder"/>
+            <MarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.SoftwareVersionMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.SoftwareVersionUnmarshaller"/>
+        </ObjectProvider>
+
+        <ObjectProvider qualifiedName="oidcmd:SubjectType">
+            <BuilderClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.SubjectTypeBuilder"/>
+            <MarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.SubjectTypeMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.SubjectTypeUnmarshaller"/>
+        </ObjectProvider>
+
+        <ObjectProvider qualifiedName="oidcmd:TokenEndpointAuthMethod">
+            <BuilderClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.TokenEndpointAuthMethodBuilder"/>
+            <MarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.TokenEndpointAuthMethodMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.TokenEndpointAuthMethodUnmarshaller"/>
+        </ObjectProvider>
+
+        <ObjectProvider qualifiedName="oidcmd:TokenEndpointAuthSigningAlg">
+            <BuilderClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.TokenEndpointAuthSigningAlgBuilder"/>
+            <MarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.TokenEndpointAuthSigningAlgMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.TokenEndpointAuthSigningAlgUnmarshaller"/>
+        </ObjectProvider>
+
+        <ObjectProvider qualifiedName="oidcmd:UserInfoEncryptionResponseAlg">
+            <BuilderClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.UserInfoEncryptionResponseAlgBuilder"/>
+            <MarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.UserInfoEncryptionResponseAlgMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.UserInfoEncryptionResponseAlgUnmarshaller"/>
+        </ObjectProvider>
+
+        <ObjectProvider qualifiedName="oidcmd:UserInfoEncryptionResponseEnc">
+            <BuilderClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.UserInfoEncryptionResponseEncBuilder"/>
+            <MarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.UserInfoEncryptionResponseEncMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.UserInfoEncryptionResponseEncUnmarshaller"/>
+        </ObjectProvider>
+
+        <ObjectProvider qualifiedName="oidcmd:UserInfoSignedResponseAlg">
+            <BuilderClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.UserInfoSignedResponseAlgBuilder"/>
+            <MarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.UserInfoSignedResponseAlgMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.idp.saml.oidc.xmlobject.impl.UserInfoSignedResponseAlgUnmarshaller"/>
+        </ObjectProvider>
+
+    </ObjectProviders>
+</XMLTooling>

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list