[java-oidc-common] 01/01: JCOMOIDC-2 Initial import from the java-idp-oidc/JOIDC-5 branch.

Ian Young ian at iay.org.uk
Fri Oct 16 13:15:01 UTC 2020


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

iay pushed a commit to branch main
in repository java-oidc-common.

View the commit online:
http://git.shibboleth.net/view/?p=java-oidc-common.git;a=commit;h=378636189bccba3dca0876e130ce125cdfbc2ba9

commit 378636189bccba3dca0876e130ce125cdfbc2ba9
Author: Henri Mikkonen <henri.mikkonen at iki.fi>
AuthorDate: Fri Oct 16 14:07:43 2020 +0300

    JCOMOIDC-2 Initial import from the java-idp-oidc/JOIDC-5 branch.
    
    https://issues.shibboleth.net/jira/browse/JCOMOIDC-2
    
    Also improves Javadocs, checkstyle and unti tests.
---
 checkstyle.xml                                     | 117 +++++
 oidc-common-saml-api/pom.xml                       |  28 ++
 .../oidc/saml/xmlobject/ApplicationType.java       |  38 ++
 .../oidc/saml/xmlobject/ClientSecret.java          |  38 ++
 .../saml/xmlobject/ClientSecretKeyReference.java   |  38 ++
 .../shibboleth/oidc/saml/xmlobject/ClientUri.java  |  38 ++
 .../shibboleth/oidc/saml/xmlobject/Constants.java  |  43 ++
 .../oidc/saml/xmlobject/DefaultAcrValue.java       |  38 ++
 .../shibboleth/oidc/saml/xmlobject/GrantType.java  |  38 ++
 .../xmlobject/IdTokenEncryptedResponseAlg.java     |  38 ++
 .../xmlobject/IdTokenEncryptedResponseEnc.java     |  38 ++
 .../saml/xmlobject/IdTokenSignedResponseAlg.java   |  38 ++
 .../oidc/saml/xmlobject/InitiateLoginUri.java      |  38 ++
 .../shibboleth/oidc/saml/xmlobject/JwksData.java   |  38 ++
 .../shibboleth/oidc/saml/xmlobject/JwksUri.java    |  38 ++
 .../saml/xmlobject/MetadataValueSAMLObject.java    |  49 ++
 .../oidc/saml/xmlobject/OAuthRPExtensions.java     | 368 +++++++++++++++
 .../oidc/saml/xmlobject/PostLogoutRedirectUri.java |  38 ++
 .../saml/xmlobject/RequestObjectEncryptionAlg.java |  38 ++
 .../saml/xmlobject/RequestObjectEncryptionEnc.java |  38 ++
 .../saml/xmlobject/RequestObjectSigningAlg.java    |  38 ++
 .../shibboleth/oidc/saml/xmlobject/RequestUri.java |  38 ++
 .../oidc/saml/xmlobject/ResponseType.java          |  38 ++
 .../net/shibboleth/oidc/saml/xmlobject/Scope.java  |  38 ++
 .../oidc/saml/xmlobject/SectorIdentifierUri.java   |  38 ++
 .../shibboleth/oidc/saml/xmlobject/SoftwareId.java |  38 ++
 .../oidc/saml/xmlobject/SoftwareVersion.java       |  38 ++
 .../saml/xmlobject/TokenEndpointAuthMethod.java    |  38 ++
 .../xmlobject/TokenEndpointAuthSigningAlg.java     |  38 ++
 .../xmlobject/UserInfoEncryptedResponseAlg.java    |  38 ++
 .../xmlobject/UserInfoEncryptedResponseEnc.java    |  38 ++
 .../saml/xmlobject/UserInfoSignedResponseAlg.java  |  38 ++
 .../oidc/saml/xmlobject/package-info.java          |  22 +
 .../resources/schema/saml-metadata-ext-oidcmd.xsd  |  76 ++++
 oidc-common-saml-impl/pom.xml                      |  41 ++
 .../impl/AbstractMetadataValueMarshaller.java      |  44 ++
 .../impl/AbstractMetadataValueSAMLObject.java      |  69 +++
 .../impl/AbstractMetadataValueUnmarshaller.java    |  37 ++
 .../xmlobject/impl/ApplicationTypeBuilder.java     |  48 ++
 .../saml/xmlobject/impl/ApplicationTypeImpl.java   |  38 ++
 .../xmlobject/impl/ApplicationTypeMarshaller.java  |  27 ++
 .../impl/ApplicationTypeUnmarshaller.java          |  27 ++
 .../saml/xmlobject/impl/ClientSecretBuilder.java   |  47 ++
 .../oidc/saml/xmlobject/impl/ClientSecretImpl.java |  37 ++
 .../impl/ClientSecretKeyReferenceBuilder.java      |  48 ++
 .../impl/ClientSecretKeyReferenceImpl.java         |  38 ++
 .../impl/ClientSecretKeyReferenceMarshaller.java   |  27 ++
 .../impl/ClientSecretKeyReferenceUnmarshaller.java |  27 ++
 .../xmlobject/impl/ClientSecretMarshaller.java     |  27 ++
 .../xmlobject/impl/ClientSecretUnmarshaller.java   |  27 ++
 .../oidc/saml/xmlobject/impl/ClientUriBuilder.java |  47 ++
 .../oidc/saml/xmlobject/impl/ClientUriImpl.java    |  37 ++
 .../saml/xmlobject/impl/ClientUriMarshaller.java   |  27 ++
 .../saml/xmlobject/impl/ClientUriUnmarshaller.java |  27 ++
 .../xmlobject/impl/DefaultAcrValueBuilder.java     |  48 ++
 .../saml/xmlobject/impl/DefaultAcrValueImpl.java   |  38 ++
 .../xmlobject/impl/DefaultAcrValueMarshaller.java  |  27 ++
 .../impl/DefaultAcrValueUnmarshaller.java          |  27 ++
 .../oidc/saml/xmlobject/impl/GrantTypeBuilder.java |  47 ++
 .../oidc/saml/xmlobject/impl/GrantTypeImpl.java    |  38 ++
 .../saml/xmlobject/impl/GrantTypeMarshaller.java   |  27 ++
 .../saml/xmlobject/impl/GrantTypeUnmarshaller.java |  27 ++
 .../impl/IdTokenEncryptedResponseAlgBuilder.java   |  48 ++
 .../impl/IdTokenEncryptedResponseAlgImpl.java      |  39 ++
 .../IdTokenEncryptedResponseAlgMarshaller.java     |  28 ++
 .../IdTokenEncryptedResponseAlgUnmarshaller.java   |  28 ++
 .../impl/IdTokenEncryptedResponseEncBuilder.java   |  48 ++
 .../impl/IdTokenEncryptedResponseEncImpl.java      |  39 ++
 .../IdTokenEncryptedResponseEncMarshaller.java     |  28 ++
 .../IdTokenEncryptedResponseEncUnmarshaller.java   |  28 ++
 .../impl/IdTokenSignedResponseAlgBuilder.java      |  48 ++
 .../impl/IdTokenSignedResponseAlgImpl.java         |  38 ++
 .../impl/IdTokenSignedResponseAlgMarshaller.java   |  27 ++
 .../impl/IdTokenSignedResponseAlgUnmarshaller.java |  27 ++
 .../xmlobject/impl/InitiateLoginUriBuilder.java    |  48 ++
 .../saml/xmlobject/impl/InitiateLoginUriImpl.java  |  38 ++
 .../xmlobject/impl/InitiateLoginUriMarshaller.java |  27 ++
 .../impl/InitiateLoginUriUnmarshaller.java         |  27 ++
 .../oidc/saml/xmlobject/impl/JwksDataBuilder.java  |  47 ++
 .../oidc/saml/xmlobject/impl/JwksDataImpl.java     |  37 ++
 .../saml/xmlobject/impl/JwksDataMarshaller.java    |  27 ++
 .../saml/xmlobject/impl/JwksDataUnmarshaller.java  |  27 ++
 .../oidc/saml/xmlobject/impl/JwksUriBuilder.java   |  47 ++
 .../oidc/saml/xmlobject/impl/JwksUriImpl.java      |  37 ++
 .../saml/xmlobject/impl/JwksUriMarshaller.java     |  27 ++
 .../saml/xmlobject/impl/JwksUriUnmarshaller.java   |  27 ++
 .../xmlobject/impl/OAuthRPExtensionsBuilder.java   |  49 ++
 .../saml/xmlobject/impl/OAuthRPExtensionsImpl.java | 494 +++++++++++++++++++++
 .../impl/OAuthRPExtensionsMarshaller.java          |  52 +++
 .../impl/OAuthRPExtensionsUnmarshaller.java        | 136 ++++++
 .../impl/PostLogoutRedirectUriBuilder.java         |  48 ++
 .../xmlobject/impl/PostLogoutRedirectUriImpl.java  |  38 ++
 .../impl/PostLogoutRedirectUriMarshaller.java      |  27 ++
 .../impl/PostLogoutRedirectUriUnmarshaller.java    |  27 ++
 .../impl/RequestObjectEncryptionAlgBuilder.java    |  48 ++
 .../impl/RequestObjectEncryptionAlgImpl.java       |  39 ++
 .../impl/RequestObjectEncryptionAlgMarshaller.java |  27 ++
 .../RequestObjectEncryptionAlgUnmarshaller.java    |  28 ++
 .../impl/RequestObjectEncryptionEncBuilder.java    |  48 ++
 .../impl/RequestObjectEncryptionEncImpl.java       |  39 ++
 .../impl/RequestObjectEncryptionEncMarshaller.java |  27 ++
 .../RequestObjectEncryptionEncUnmarshaller.java    |  28 ++
 .../impl/RequestObjectSigningAlgBuilder.java       |  48 ++
 .../impl/RequestObjectSigningAlgImpl.java          |  38 ++
 .../impl/RequestObjectSigningAlgMarshaller.java    |  27 ++
 .../impl/RequestObjectSigningAlgUnmarshaller.java  |  27 ++
 .../saml/xmlobject/impl/RequestUriBuilder.java     |  47 ++
 .../oidc/saml/xmlobject/impl/RequestUriImpl.java   |  37 ++
 .../saml/xmlobject/impl/RequestUriMarshaller.java  |  27 ++
 .../xmlobject/impl/RequestUriUnmarshaller.java     |  27 ++
 .../saml/xmlobject/impl/ResponseTypeBuilder.java   |  47 ++
 .../oidc/saml/xmlobject/impl/ResponseTypeImpl.java |  37 ++
 .../xmlobject/impl/ResponseTypeMarshaller.java     |  27 ++
 .../xmlobject/impl/ResponseTypeUnmarshaller.java   |  27 ++
 .../oidc/saml/xmlobject/impl/ScopeBuilder.java     |  47 ++
 .../oidc/saml/xmlobject/impl/ScopeImpl.java        |  37 ++
 .../oidc/saml/xmlobject/impl/ScopeMarshaller.java  |  27 ++
 .../saml/xmlobject/impl/ScopeUnmarshaller.java     |  27 ++
 .../xmlobject/impl/SectorIdentifierUriBuilder.java |  48 ++
 .../xmlobject/impl/SectorIdentifierUriImpl.java    |  38 ++
 .../impl/SectorIdentifierUriMarshaller.java        |  27 ++
 .../impl/SectorIdentifierUriUnmarshaller.java      |  27 ++
 .../saml/xmlobject/impl/SoftwareIdBuilder.java     |  47 ++
 .../oidc/saml/xmlobject/impl/SoftwareIdImpl.java   |  37 ++
 .../saml/xmlobject/impl/SoftwareIdMarshaller.java  |  27 ++
 .../xmlobject/impl/SoftwareIdUnmarshaller.java     |  27 ++
 .../xmlobject/impl/SoftwareVersionBuilder.java     |  48 ++
 .../saml/xmlobject/impl/SoftwareVersionImpl.java   |  38 ++
 .../xmlobject/impl/SoftwareVersionMarshaller.java  |  27 ++
 .../impl/SoftwareVersionUnmarshaller.java          |  27 ++
 .../impl/TokenEndpointAuthMethodBuilder.java       |  48 ++
 .../impl/TokenEndpointAuthMethodImpl.java          |  38 ++
 .../impl/TokenEndpointAuthMethodMarshaller.java    |  27 ++
 .../impl/TokenEndpointAuthMethodUnmarshaller.java  |  27 ++
 .../impl/TokenEndpointAuthSigningAlgBuilder.java   |  48 ++
 .../impl/TokenEndpointAuthSigningAlgImpl.java      |  39 ++
 .../TokenEndpointAuthSigningAlgMarshaller.java     |  28 ++
 .../TokenEndpointAuthSigningAlgUnmarshaller.java   |  28 ++
 .../impl/UserInfoEncryptedResponseAlgBuilder.java  |  48 ++
 .../impl/UserInfoEncryptedResponseAlgImpl.java     |  39 ++
 .../UserInfoEncryptedResponseAlgMarshaller.java    |  28 ++
 .../UserInfoEncryptedResponseAlgUnmarshaller.java  |  28 ++
 .../impl/UserInfoEncryptedResponseEncBuilder.java  |  48 ++
 .../impl/UserInfoEncryptedResponseEncImpl.java     |  39 ++
 .../UserInfoEncryptedResponseEncMarshaller.java    |  28 ++
 .../UserInfoEncryptedResponseEncUnmarshaller.java  |  28 ++
 .../impl/UserInfoSignedResponseAlgBuilder.java     |  48 ++
 .../impl/UserInfoSignedResponseAlgImpl.java        |  39 ++
 .../impl/UserInfoSignedResponseAlgMarshaller.java  |  27 ++
 .../UserInfoSignedResponseAlgUnmarshaller.java     |  28 ++
 .../impl/XMLObjectProviderInitializer.java         |  38 ++
 .../oidc/saml/xmlobject/impl/package-info.java     |  22 +
 .../services/org.opensaml.core.config.Initializer  |   1 +
 .../resources/saml2-metadata-oidcmd-config.xml     | 176 ++++++++
 .../saml/xmlobject/impl/ApplicationTypeTest.java   |  48 ++
 .../saml/xmlobject/impl/BaseMetadataValueTest.java |  63 +++
 .../impl/ClientSecretKeyReferenceTest.java         |  48 ++
 .../oidc/saml/xmlobject/impl/ClientSecretTest.java |  48 ++
 .../oidc/saml/xmlobject/impl/ClientUriTest.java    |  48 ++
 .../saml/xmlobject/impl/DefaultAcrValueTest.java   |  48 ++
 .../oidc/saml/xmlobject/impl/GrantTypeTest.java    |  48 ++
 .../impl/IdTokenEncryptedResponseAlgTest.java      |  48 ++
 .../impl/IdTokenEncryptedResponseEncTest.java      |  48 ++
 .../impl/IdTokenSignedResponseAlgTest.java         |  48 ++
 .../saml/xmlobject/impl/InitiateLoginUriTest.java  |  48 ++
 .../oidc/saml/xmlobject/impl/JwksDataTest.java     |  48 ++
 .../oidc/saml/xmlobject/impl/JwksUriTest.java      |  48 ++
 .../saml/xmlobject/impl/OAuthRPExtensionsTest.java | 207 +++++++++
 .../xmlobject/impl/PostLogoutRedirectUriTest.java  |  48 ++
 .../impl/RequestObjectEncryptionAlgTest.java       |  48 ++
 .../impl/RequestObjectEncryptionEncTest.java       |  48 ++
 .../impl/RequestObjectSigningAlgTest.java          |  48 ++
 .../oidc/saml/xmlobject/impl/RequestUriTest.java   |  48 ++
 .../oidc/saml/xmlobject/impl/ResponseTypeTest.java |  48 ++
 .../oidc/saml/xmlobject/impl/ScopeTest.java        |  48 ++
 .../xmlobject/impl/SectorIdentifierUriTest.java    |  48 ++
 .../oidc/saml/xmlobject/impl/SoftwareIdTest.java   |  48 ++
 .../saml/xmlobject/impl/SoftwareVersionTest.java   |  48 ++
 .../impl/TokenEndpointAuthMethodTest.java          |  48 ++
 .../impl/TokenEndpointAuthSigningAlgTest.java      |  48 ++
 .../impl/UserInfoEncryptedResponseAlgTest.java     |  48 ++
 .../impl/UserInfoEncryptedResponseEncTest.java     |  48 ++
 .../impl/UserInfoSignedResponseAlgTest.java        |  48 ++
 .../src/test/resources/logback-test.xml            |  19 +
 .../oidc/saml/xmlobject/impl/ApplicationType.xml   |   2 +
 .../oidc/saml/xmlobject/impl/ClientSecret.xml      |   2 +
 .../xmlobject/impl/ClientSecretKeyReference.xml    |   2 +
 .../oidc/saml/xmlobject/impl/ClientUri.xml         |   2 +
 .../oidc/saml/xmlobject/impl/DefaultAcrValue.xml   |   2 +
 .../oidc/saml/xmlobject/impl/GrantType.xml         |   2 +
 .../xmlobject/impl/IdTokenEncryptedResponseAlg.xml |   2 +
 .../xmlobject/impl/IdTokenEncryptedResponseEnc.xml |   2 +
 .../xmlobject/impl/IdTokenSignedResponseAlg.xml    |   2 +
 .../oidc/saml/xmlobject/impl/InitiateLoginUri.xml  |   2 +
 .../oidc/saml/xmlobject/impl/JwksData.xml          |   2 +
 .../oidc/saml/xmlobject/impl/JwksUri.xml           |   2 +
 .../oidc/saml/xmlobject/impl/OAuthRPExtensions.xml |  30 ++
 .../xmlobject/impl/OAuthRPExtensions_ordered.xml   |  30 ++
 .../saml/xmlobject/impl/PostLogoutRedirectUri.xml  |   2 +
 .../xmlobject/impl/RequestObjectEncryptionAlg.xml  |   2 +
 .../xmlobject/impl/RequestObjectEncryptionEnc.xml  |   2 +
 .../xmlobject/impl/RequestObjectSigningAlg.xml     |   2 +
 .../oidc/saml/xmlobject/impl/RequestUri.xml        |   2 +
 .../oidc/saml/xmlobject/impl/ResponseType.xml      |   2 +
 .../shibboleth/oidc/saml/xmlobject/impl/Scope.xml  |   2 +
 .../saml/xmlobject/impl/SectorIdentifierUri.xml    |   2 +
 .../oidc/saml/xmlobject/impl/SoftwareId.xml        |   2 +
 .../oidc/saml/xmlobject/impl/SoftwareVersion.xml   |   2 +
 .../xmlobject/impl/TokenEndpointAuthMethod.xml     |   2 +
 .../xmlobject/impl/TokenEndpointAuthSigningAlg.xml |   2 +
 .../impl/UserInfoEncryptedResponseAlg.xml          |   2 +
 .../impl/UserInfoEncryptedResponseEnc.xml          |   2 +
 .../xmlobject/impl/UserInfoSignedResponseAlg.xml   |   2 +
 pom.xml                                            | 124 ++++++
 214 files changed, 8495 insertions(+)

diff --git a/checkstyle.xml b/checkstyle.xml
new file mode 100644
index 0000000..f3f13f6
--- /dev/null
+++ b/checkstyle.xml
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.3//EN" "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
+
+<!--
+    This configuration file was written by the eclipse-cs plugin configuration editor
+-->
+<!--
+    Checkstyle-Configuration: Shibboleth Checkstyle
+    Description: none
+-->
+<module name="Checker">
+  <property name="severity" value="warning"/>
+  <module name="TreeWalker">
+    <property name="tabWidth" value="4"/>
+    <module name="JavadocMethod"/>
+    <module name="JavadocType">
+        <property name="allowUnknownTags" value="true"/>
+    </module>
+    <module name="JavadocVariable"/>
+    <module name="JavadocStyle">
+      <property name="checkEmptyJavadoc" value="true"/>
+    </module>
+    <module name="ConstantName"/>
+    <module name="LocalFinalVariableName"/>
+    <module name="LocalVariableName"/>
+    <module name="MemberName"/>
+    <module name="MethodName"/>
+    <module name="PackageName"/>
+    <module name="ParameterName"/>
+    <module name="StaticVariableName"/>
+    <module name="TypeName"/>
+    <module name="AvoidStarImport"/>
+    <module name="IllegalImport"/>
+    <module name="RedundantImport"/>
+    <module name="UnusedImports"/>
+    <module name="MethodLength">
+      <property name="max" value="70"/>
+    </module>
+    <module name="ParameterNumber">
+      <property name="max" value="5"/>
+    </module>
+    <module name="EmptyForIteratorPad"/>
+    <module name="MethodParamPad"/>
+    <module name="ModifierOrder"/>
+    <module name="AvoidNestedBlocks"/>
+    <module name="LeftCurly"/>
+    <module name="NeedBraces"/>
+    <module name="RightCurly"/>
+    <module name="EmptyStatement"/>
+    <module name="EqualsHashCode"/>
+    <module name="HiddenField"/>
+    <module name="IllegalInstantiation"/>
+    <module name="InnerAssignment"/>
+    <module name="MissingSwitchDefault"/>
+    <module name="SimplifyBooleanExpression"/>
+    <module name="SimplifyBooleanReturn"/>
+    <module name="FinalClass"/>
+    <module name="HideUtilityClassConstructor"/>
+    <module name="VisibilityModifier"/>
+    <module name="ArrayTypeStyle"/>
+    <module name="UpperEll"/>
+    <module name="AnonInnerLength"/>
+    <module name="EmptyForInitializerPad"/>
+    <module name="CovariantEquals"/>
+    <module name="DefaultComesLast"/>
+    <module name="DeclarationOrder"/>
+    <module name="ExplicitInitialization"/>
+    <module name="FallThrough"/>
+    <module name="IllegalThrows"/>
+    <module name="MultipleVariableDeclarations"/>
+    <module name="PackageDeclaration"/>
+    <module name="ParameterAssignment"/>
+    <module name="ReturnCount">
+      <property name="max" value="8"/>
+      <property name="maxForVoid" value="8"/>
+    </module>
+    <module name="StringLiteralEquality"/>
+    <module name="SuperFinalize"/>
+    <module name="ArrayTrailingComma"/>
+    <module name="UnnecessaryParentheses"/>
+    <module name="MutableException"/>
+    <module name="ThrowsCount">
+      <property name="max" value="3"/>
+    </module>
+    <module name="CyclomaticComplexity"/>
+    <module name="TrailingComment"/>
+    <module name="EqualsAvoidNull"/>
+    <module name="ModifiedControlVariable"/>
+    <module name="FinalParameters">
+      <property name="tokens" value="METHOD_DEF,CTOR_DEF,LITERAL_CATCH"/>
+    </module>
+    <module name="FinalLocalVariable">
+      <property name="tokens" value="PARAMETER_DEF,VARIABLE_DEF"/>
+      <property name="validateEnhancedForLoopVariable" value="true"/>
+    </module>
+    <module name="SuppressionCommentFilter">
+      <property name="offCommentFormat" value="\bCheck[Ss]tyle:\s*([\w|]+)\s+OFF\b"/>
+      <property name="onCommentFormat" value="\bCheck[Ss]tyle:\s*([\w|]+)\s+ON\b"/>
+      <property name="checkFormat" value="$1"/>
+    </module>
+    <module name="MissingJavadocMethod"/>
+    <module name="MissingJavadocPackage"/>
+    <module name="MissingJavadocType"/>
+    <module name="InvalidJavadocPosition"/>
+  </module>
+  <module name="FileTabCharacter"/>
+  <module name="FileLength">
+    <property name="max" value="1000"/>
+  </module>
+  <module name="Header">
+    <property name="header" value="/*\n * Licensed to the University Corporation for Advanced Internet Development,\n * Inc. (UCAID) under one or more contributor license agreements.  See the\n * NOTICE file distributed with this work for additional information regarding\n * copyright ownership. The UCAID licenses this file to You under the Apache\n * License, Version 2.0 (the "License"); you may not use this file except in\n * compliance with the License.  You may obtain a cop [...]
+  </module>
+  <module name="JavadocPackage"/>
+  <module name="LineLength">
+    <property name="max" value="120"/>
+  </module>
+</module>
diff --git a/oidc-common-saml-api/pom.xml b/oidc-common-saml-api/pom.xml
new file mode 100644
index 0000000..4ccee4f
--- /dev/null
+++ b/oidc-common-saml-api/pom.xml
@@ -0,0 +1,28 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>net.shibboleth.oidc</groupId>
+        <artifactId>oidc-common-parent</artifactId>
+        <version>0.0.1-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>oidc-common-saml-api</artifactId>
+    <packaging>jar</packaging>
+    <name>Shibboleth OIDC Java Common Library - SAML Metadata extension API</name>
+    <description>Schema and corresponding XMLObject interfaces for the SAML metadata extension for OIDC RPs.</description>
+
+    <properties>
+        <checkstyle.configLocation>${project.basedir}/../checkstyle.xml</checkstyle.configLocation>
+        <automatic.module.name>net.shibboleth.oidc.saml.api</automatic.module.name>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.opensaml</groupId>
+            <artifactId>opensaml-saml-api</artifactId>
+        </dependency>
+    </dependencies>
+
+</project>
diff --git a/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/ApplicationType.java b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/ApplicationType.java
new file mode 100644
index 0000000..7fcd972
--- /dev/null
+++ b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/ApplicationType.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject;
+
+import javax.xml.namespace.QName;
+
+/**
+ * SAML2 OIDC metadata extension 'ApplicationType'.
+ */
+public interface ApplicationType extends MetadataValueSAMLObject {
+
+    /** Element name, no namespace. */
+    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "ApplicationType";
+
+    /** Default element name. */
+    public static final QName DEFAULT_ELEMENT_NAME =
+            new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME, SAML20MDOIDCMD_PREFIX);
+
+    /** QName of the XSI type. */
+    public static final QName TYPE_NAME =
+            new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME, SAML20MDOIDCMD_PREFIX);
+
+}
diff --git a/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/ClientSecret.java b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/ClientSecret.java
new file mode 100644
index 0000000..b0ce7ac
--- /dev/null
+++ b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/ClientSecret.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject;
+
+import javax.xml.namespace.QName;
+
+/**
+ * SAML2 OIDC metadata extension 'ClientSecret'.
+ */
+public interface ClientSecret extends MetadataValueSAMLObject {
+
+    /** Element name, no namespace. */
+    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "ClientSecret";
+
+    /** Default element name. */
+    public static final QName DEFAULT_ELEMENT_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+    /** QName of the XSI type. */
+    public static final QName TYPE_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+}
diff --git a/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/ClientSecretKeyReference.java b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/ClientSecretKeyReference.java
new file mode 100644
index 0000000..b0978e5
--- /dev/null
+++ b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/ClientSecretKeyReference.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject;
+
+import javax.xml.namespace.QName;
+
+/**
+ * SAML2 OIDC metadata extension 'ClientSecretReferenceKey'.
+ */
+public interface ClientSecretKeyReference extends MetadataValueSAMLObject {
+
+    /** Element name, no namespace. */
+    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "ClientSecretKeyReference";
+
+    /** Default element name. */
+    public static final QName DEFAULT_ELEMENT_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+    /** QName of the XSI type. */
+    public static final QName TYPE_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+}
diff --git a/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/ClientUri.java b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/ClientUri.java
new file mode 100644
index 0000000..debfede
--- /dev/null
+++ b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/ClientUri.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject;
+
+import javax.xml.namespace.QName;
+
+/**
+ * SAML2 OIDC metadata extension 'ClientUri'.
+ */
+public interface ClientUri extends MetadataValueSAMLObject {
+
+    /** Element name, no namespace. */
+    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "ClientUri";
+
+    /** Default element name. */
+    public static final QName DEFAULT_ELEMENT_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+    /** QName of the XSI type. */
+    public static final QName TYPE_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+}
diff --git a/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/Constants.java b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/Constants.java
new file mode 100644
index 0000000..316d364
--- /dev/null
+++ b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/Constants.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject;
+
+import org.opensaml.saml.common.xml.SAMLConstants;
+
+/**
+ * Constants related to SAML 2.0 Metadata extension OAuthRPRoleDescriptorType.
+ */
+public final class Constants {
+
+    /** SAML 2.0 Metadata extension for OAuth/OIDC descriptors prefi. */
+    public static final String SAML20MDOIDCMD_PREFIX = "oidcmd";
+
+    /** SAML 2.0 Metadata extension for OAuth/OIDC descriptors XML namespace. */
+    public static final String SAML20MDOIDCMD_NS = "urn:mace:shibboleth:metadata:oidc:1.0";
+
+    /** SAML 2.0 Metadata extension for OAuth/OIDC descriptors. */
+    public static final String SAML20MDOIDCMD_SCHEMA_LOCATION =
+            SAMLConstants.SCHEMA_DIR + "saml-metadata-ext-oidcmd.xsd";
+    
+    /**
+     * Constructor.
+     */
+    private Constants() {
+        // no op
+    }
+}
diff --git a/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/DefaultAcrValue.java b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/DefaultAcrValue.java
new file mode 100644
index 0000000..1b1eb2f
--- /dev/null
+++ b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/DefaultAcrValue.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject;
+
+import javax.xml.namespace.QName;
+
+/**
+ * SAML2 OIDC metadata extension 'DefaultAcrValue'.
+ */
+public interface DefaultAcrValue extends MetadataValueSAMLObject {
+
+    /** Element name, no namespace. */
+    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "DefaultAcrValue";
+
+    /** Default element name. */
+    public static final QName DEFAULT_ELEMENT_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+    /** QName of the XSI type. */
+    public static final QName TYPE_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+}
diff --git a/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/GrantType.java b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/GrantType.java
new file mode 100644
index 0000000..12fbb32
--- /dev/null
+++ b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/GrantType.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject;
+
+import javax.xml.namespace.QName;
+
+/**
+ * SAML2 OIDC metadata extension 'GrantType'.
+ */
+public interface GrantType extends MetadataValueSAMLObject {
+
+    /** Element name, no namespace. */
+    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "GrantType";
+
+    /** Default element name. */
+    public static final QName DEFAULT_ELEMENT_NAME =
+            new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME, SAML20MDOIDCMD_PREFIX);
+
+    /** QName of the XSI type. */
+    public static final QName TYPE_NAME =
+            new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME, SAML20MDOIDCMD_PREFIX);
+
+}
diff --git a/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/IdTokenEncryptedResponseAlg.java b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/IdTokenEncryptedResponseAlg.java
new file mode 100644
index 0000000..3ffd0e3
--- /dev/null
+++ b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/IdTokenEncryptedResponseAlg.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject;
+
+import javax.xml.namespace.QName;
+
+/**
+ * SAML2 OIDC metadata extension 'IdTokenEncryptedResponseAlg'.
+ */
+public interface IdTokenEncryptedResponseAlg extends MetadataValueSAMLObject {
+
+    /** Element name, no namespace. */
+    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "IdTokenEncryptedResponseAlg";
+
+    /** Default element name. */
+    public static final QName DEFAULT_ELEMENT_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+    /** QName of the XSI type. */
+    public static final QName TYPE_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+}
diff --git a/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/IdTokenEncryptedResponseEnc.java b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/IdTokenEncryptedResponseEnc.java
new file mode 100644
index 0000000..cc54222
--- /dev/null
+++ b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/IdTokenEncryptedResponseEnc.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject;
+
+import javax.xml.namespace.QName;
+
+/**
+ * SAML2 OIDC metadata extension 'IdTokenEncryptedResponseEnc'.
+ */
+public interface IdTokenEncryptedResponseEnc extends MetadataValueSAMLObject {
+
+    /** Element name, no namespace. */
+    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "IdTokenEncryptedResponseEnc";
+
+    /** Default element name. */
+    public static final QName DEFAULT_ELEMENT_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+    /** QName of the XSI type. */
+    public static final QName TYPE_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+}
diff --git a/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/IdTokenSignedResponseAlg.java b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/IdTokenSignedResponseAlg.java
new file mode 100644
index 0000000..96d1c01
--- /dev/null
+++ b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/IdTokenSignedResponseAlg.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject;
+
+import javax.xml.namespace.QName;
+
+/**
+ * SAML2 OIDC metadata extension 'IdTokenSignedResponseAlg'.
+ */
+public interface IdTokenSignedResponseAlg extends MetadataValueSAMLObject {
+
+    /** Element name, no namespace. */
+    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "IdTokenSignedResponseAlg";
+
+    /** Default element name. */
+    public static final QName DEFAULT_ELEMENT_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+    /** QName of the XSI type. */
+    public static final QName TYPE_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+}
diff --git a/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/InitiateLoginUri.java b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/InitiateLoginUri.java
new file mode 100644
index 0000000..69f845a
--- /dev/null
+++ b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/InitiateLoginUri.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject;
+
+import javax.xml.namespace.QName;
+
+/**
+ * SAML2 OIDC metadata extension 'InitiateLoginUri'.
+ */
+public interface InitiateLoginUri extends MetadataValueSAMLObject {
+
+    /** Element name, no namespace. */
+    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "InitiateLoginUri";
+
+    /** Default element name. */
+    public static final QName DEFAULT_ELEMENT_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+    /** QName of the XSI type. */
+    public static final QName TYPE_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+}
diff --git a/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/JwksData.java b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/JwksData.java
new file mode 100644
index 0000000..a61baec
--- /dev/null
+++ b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/JwksData.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject;
+
+import javax.xml.namespace.QName;
+
+/**
+ * SAML2 OIDC metadata extension 'JwksData'.
+ */
+public interface JwksData extends MetadataValueSAMLObject {
+
+    /** Element name, no namespace. */
+    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "JwksData";
+
+    /** Default element name. */
+    public static final QName DEFAULT_ELEMENT_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+    /** QName of the XSI type. */
+    public static final QName TYPE_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+}
diff --git a/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/JwksUri.java b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/JwksUri.java
new file mode 100644
index 0000000..c2b3504
--- /dev/null
+++ b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/JwksUri.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject;
+
+import javax.xml.namespace.QName;
+
+/**
+ * SAML2 OIDC metadata extension 'JwksUri'.
+ */
+public interface JwksUri extends MetadataValueSAMLObject {
+
+    /** Element name, no namespace. */
+    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "JwksUri";
+
+    /** Default element name. */
+    public static final QName DEFAULT_ELEMENT_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+    /** QName of the XSI type. */
+    public static final QName TYPE_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+}
diff --git a/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/MetadataValueSAMLObject.java b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/MetadataValueSAMLObject.java
new file mode 100644
index 0000000..b5e4915
--- /dev/null
+++ b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/MetadataValueSAMLObject.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject;
+
+import org.opensaml.saml.common.SAMLObject;
+
+/**
+ * Abstract interface for SAML metadata objects containing single {@link String} value inside the element.
+ */
+public abstract interface MetadataValueSAMLObject extends SAMLObject {
+
+    /** SAML 2.0 Metadata extension for OAuth/OIDC descriptors prefi. */
+    public static final String SAML20MDOIDCMD_PREFIX = Constants.SAML20MDOIDCMD_PREFIX;
+
+    /** SAML 2.0 Metadata extension for OAuth/OIDC descriptors XML namespace. */
+    public static final String SAML20MDOIDCMD_NS = Constants.SAML20MDOIDCMD_NS;
+
+    /** SAML 2.0 Metadata extension for OAuth/OIDC descriptors. */
+    public static final String SAML20MDOIDCMD_SCHEMA_LOCATION = Constants.SAML20MDOIDCMD_SCHEMA_LOCATION;
+    
+    /**
+     * Get the value for this metadata object.
+     * 
+     * @return The value for this metadata object.
+     */
+    public String getValue();
+    
+    /**
+     * Set the value for this metadata object.
+     * 
+     * @param newValue What to set.
+     */
+    public void setValue(final String newValue);
+}
diff --git a/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/OAuthRPExtensions.java b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/OAuthRPExtensions.java
new file mode 100644
index 0000000..7e1c728
--- /dev/null
+++ b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/OAuthRPExtensions.java
@@ -0,0 +1,368 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject;
+
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import org.opensaml.core.xml.AttributeExtensibleXMLObject;
+import org.opensaml.core.xml.ElementExtensibleXMLObject;
+import org.opensaml.saml.common.SAMLObject;
+
+/**
+ * SAML 2.0 Metadata extension OAuthRPExtensions.
+ */
+public interface OAuthRPExtensions extends SAMLObject, AttributeExtensibleXMLObject, ElementExtensibleXMLObject {
+    
+    /** Local name of the XSI type. */
+    public static final String TYPE_LOCAL_NAME = "OAuthRPExtensions";
+
+    /** QName of the XSI type. */
+    public static final QName TYPE_NAME = new QName(MetadataValueSAMLObject.SAML20MDOIDCMD_NS, TYPE_LOCAL_NAME,
+            MetadataValueSAMLObject.SAML20MDOIDCMD_PREFIX);
+    
+    /** "defaultMaxAge" attribute's local name. */
+    public static final String DEFAULT_MAX_AGE_ATTRIB_NAME = "defaultMaxAge";
+
+    /** "requireAuthTime" attribute's local name. */
+    public static final String REQUIRE_AUTH_TIME_ATTRIB_NAME = "requireAuthTime";
+    
+    /**
+     * Get the token endpoint authentication method.
+     * 
+     * @return The token endpoint authentication method.
+     */
+    public TokenEndpointAuthMethod getTokenEndpointAuthMethod();
+    
+    /**
+     * Set the token endpoint authentication method.
+     * 
+     * @param method The token endpoint authentication method.
+     */
+    public void setTokenEndpointAuthMethod(final TokenEndpointAuthMethod method);
+    
+    /**
+     * Get the list of response types.
+     * 
+     * @return The list of response types.
+     */
+    public List<ResponseType> getResponseTypes();
+    
+    /**
+     * Get the list of grant types.
+     * 
+     * @return The list of grant types.
+     */
+    public List<GrantType> getGrantTypes();
+    
+    /**
+     * Get the application type.
+     * 
+     * @return The application type.
+     */
+    public ApplicationType getApplicationType();
+    
+    /**
+     * Set the application type.
+     * 
+     * @param type The application type.
+     */
+    public void setApplicationType(final ApplicationType type);
+
+    /**
+     * Get the client URI.
+     * 
+     * @return The client URI.
+     */
+    public ClientUri getClientUri();
+    
+    /**
+     * Set the client URI.
+     * 
+     * @param uri The client URI.
+     */
+    public void setClientUri(final ClientUri uri);
+    
+    /**
+     * Get the list of scopes.
+     * 
+     * @return The list of scopes.
+     */
+    public List<Scope> getScopes();
+    
+    /**
+     * Get the URI for the JWK set.
+     * 
+     * @return The URI for the JWK set.
+     */
+    public JwksUri getJwksUri();
+    
+    /**
+     * Set the URI for the JWK set.
+     * 
+     * @param uri The URI for the JWK set.
+     */
+    public void setJwksUri(final JwksUri uri);
+    
+    /**
+     * Get the software identifier.
+     * 
+     * @return The software identifier.
+     */
+    public SoftwareId getSoftwareId();
+    
+    /**
+     * Set the software identifier.
+     * 
+     * @param id The software identifier.
+     */
+    public void setSoftwareId(final SoftwareId id);
+    
+    /**
+     * Get the software version.
+     * 
+     * @return The software version.
+     */
+    public SoftwareVersion getSoftwareVersion();
+    
+    /**
+     * Set the software version.
+     * 
+     * @param version The software version.
+     */
+    public void setSoftwareVersion(final SoftwareVersion version);
+    
+    /**
+     * Get the sector identifier URI.
+     * 
+     * @return he sector identifier URI.
+     */
+    public SectorIdentifierUri getSectorIdentifierUri();
+    
+    /**
+     * Set the sector identifier URI.
+     * 
+     * @param uri The sector identifier URI.
+     */
+    public void setSectorIdentifierUri(final SectorIdentifierUri uri);
+
+    /**
+     * Get the JWS alg algorithm for ID token signature.
+     * 
+     * @return The JWS alg algorithm for ID token signature.
+     */
+    public IdTokenSignedResponseAlg getIdTokenSignedResponseAlg();
+    
+    /**
+     * Set the JWS alg algorithm for ID token signature.
+     * 
+     * @param algorithm The JWS alg algorithm for ID token signature.
+     */
+    public void setIdTokenSignedResponseAlg(final IdTokenSignedResponseAlg algorithm);
+
+    /**
+     * Get the JWE alg algorithm for ID token encryption.
+     * 
+     * @return The JWE alg algorithm for ID token encryption.
+     */
+    public IdTokenEncryptedResponseAlg getIdTokenEncryptedResponseAlg();
+    
+    /**
+     * Set the JWE alg algorithm for ID token encryption.
+     * 
+     * @param algorithm The JWE alg algorithm for ID token encryption.
+     */
+    public void setIdTokenEncryptedResponseAlg(final IdTokenEncryptedResponseAlg algorithm);
+
+    /**
+     * Get the JWE enc algorithm for ID token encryption.
+     * 
+     * @return The JWE enc algorithm for ID token encryption.
+     */
+    public IdTokenEncryptedResponseEnc getIdTokenEncryptedResponseEnc();
+    
+    /**
+     * Set the JWE enc algorithm for ID token encryption.
+     * 
+     * @param algorithm The JWE enc algorithm for ID token encryption.
+     */
+    public void setIdTokenEncryptedResponseEnc(final IdTokenEncryptedResponseEnc algorithm);
+
+    /**
+     * Get the JWS alg algorithm for UserInfo response signature.
+     * 
+     * @return The JWS alg algorithm for UserInfo response signature.
+     */
+    public UserInfoSignedResponseAlg getUserInfoSignedResponseAlg();
+    
+    /**
+     * Set the JWS alg algorithm for UserInfo response signature.
+     * 
+     * @param algorithm The JWS alg algorithm for UserInfo response signature.
+     */
+    public void setUserInfoSignedResponseAlg(final UserInfoSignedResponseAlg algorithm);
+    
+    /**
+     * Get the JWE alg algorithm for UserInfo response encryption.
+     * 
+     * @return The JWE alg algorithm for UserInfo response encryption.
+     */
+    public UserInfoEncryptedResponseAlg getUserInfoEncryptedResponseAlg();
+    
+    /**
+     * Set the JWE alg algorithm for UserInfo response encryption.
+     * 
+     * @param algorithm The JWE alg algorithm for UserInfo response encryption.
+     */
+    public void setUserInfoEncryptedResponseAlg(final UserInfoEncryptedResponseAlg algorithm);
+
+    /**
+     * Get the JWE enc algorithm for UserInfo response encryption.
+     * 
+     * @return The JWE enc algorithm for UserInfo response encryption.
+     */
+    public UserInfoEncryptedResponseEnc getUserInfoEncryptedResponseEnc();
+    
+    /**
+     * Set the JWE enc algorithm for UserInfo response encryption.
+     * 
+     * @param algorithm The JWE enc algorithm for UserInfo response encryption.
+     */
+    public void setUserInfoEncryptedResponseEnc(final UserInfoEncryptedResponseEnc algorithm);
+    
+    /**
+     * Get the JWS alg algorithm for request object signature.
+     * 
+     * @return The JWS alg algorithm for request object signature.
+     */
+    public RequestObjectSigningAlg getRequestObjectSigningAlg();
+    
+    /**
+     * Set the JWS alg algorithm for request object signature.
+     * 
+     * @param algorithm The JWS alg algorithm for request object signature.
+     */
+    public void setRequestObjectSigningAlg(final RequestObjectSigningAlg algorithm);
+    
+    /**
+     * Get the JWE alg algorithm for request object encryption.
+     * 
+     * @return The JWE alg algorithm for request object encryption.
+     */
+    public RequestObjectEncryptionAlg getRequestObjectEncryptionAlg();
+    
+    /**
+     * Set the JWE alg algorithm for request object encryption.
+     * 
+     * @param algorithm The JWE alg algorithm for request object encryption.
+     */
+    public void setRequestObjectEncryptionAlg(final RequestObjectEncryptionAlg algorithm);
+
+    /**
+     * Get the JWE enc algorithm for request object encryption.
+     * 
+     * @return The JWE enc algorithm for request object encryption.
+     */
+    public RequestObjectEncryptionEnc getRequestObjectEncryptionEnc();
+    
+    /**
+     * Set the JWE enc algorithm for request object encryption.
+     * 
+     * @param algorithm The JWE enc algorithm for request object encryption.
+     */
+    public void setRequestObjectEncryptionEnc(final RequestObjectEncryptionEnc algorithm);
+    
+    /**
+     * Get the JWS alg algorithm for token endpoint authentication signature.
+     * 
+     * @return The JWS alg algorithm for token endpoint authentication signature.
+     */
+    public TokenEndpointAuthSigningAlg getTokenEndpointAuthSigningAlg();
+    
+    /**
+     * Set the JWS alg algorithm for token endpoint authentication signature.
+     * 
+     * @param algorithm The JWS alg algorithm for token endpoint authentication signature.
+     */
+    public void setTokenEndpointAuthSigningAlg(final TokenEndpointAuthSigningAlg algorithm);
+    
+    /**
+     * Get the list of default ACR values.
+     * 
+     * @return The list of default ACR values.
+     */
+    public List<DefaultAcrValue> getDefaultAcrValues();
+    
+    /**
+     * Get the URI for initiating login.
+     * 
+     * @return The URI for initiating login.
+     */
+    public InitiateLoginUri getInitiateLoginUri();
+    
+    /**
+     * Set the URI for initiating login.
+     * 
+     * @param uri The URI for initiating login.
+     */
+    public void setInitiateLoginUri(final InitiateLoginUri uri);
+    
+    /**
+     * Get the list of request URIs.
+     * 
+     * @return The list of request URIs.
+     */
+    public List<RequestUri> getRequestUris();
+    
+    /**
+     * Get the list of post logout redirection URIs.
+     * 
+     * @return The list of post logout redirection URIs.
+     */
+    public List<PostLogoutRedirectUri> getPostLogoutRedirectUris();
+    
+    /**
+     * Get the value for default max age.
+     * 
+     * @return The value for default max age.
+     */
+    public int getDefaultMaxAge();
+    
+    /**
+     * Set the value for default max age.
+     * 
+     * @param age The value for default max age.
+     */
+    public void setDefaultMaxAge(final int age);
+    
+    /**
+     * Get the flag to require authentication time.
+     * 
+     * @return The flag to require authentication time.
+     */
+    public boolean isRequireAuthTime();
+    
+    /**
+     * Set the flag to require authentication time.
+     * 
+     * @param flag The flag to require authentication time.
+     */
+    public void setRequireAuthTime(final boolean flag);
+
+}
diff --git a/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/PostLogoutRedirectUri.java b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/PostLogoutRedirectUri.java
new file mode 100644
index 0000000..1fd1007
--- /dev/null
+++ b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/PostLogoutRedirectUri.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject;
+
+import javax.xml.namespace.QName;
+
+/**
+ * SAML2 OIDC metadata extension 'PostLogoutRedirectUri'.
+ */
+public interface PostLogoutRedirectUri extends MetadataValueSAMLObject {
+
+    /** Element name, no namespace. */
+    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "PostLogoutRedirectUri";
+
+    /** Default element name. */
+    public static final QName DEFAULT_ELEMENT_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+    /** QName of the XSI type. */
+    public static final QName TYPE_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+}
diff --git a/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/RequestObjectEncryptionAlg.java b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/RequestObjectEncryptionAlg.java
new file mode 100644
index 0000000..c6a6086
--- /dev/null
+++ b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/RequestObjectEncryptionAlg.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject;
+
+import javax.xml.namespace.QName;
+
+/**
+ * SAML2 OIDC metadata extension 'RequestObjectEncryptionAlg'.
+ */
+public interface RequestObjectEncryptionAlg extends MetadataValueSAMLObject {
+
+    /** Element name, no namespace. */
+    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "RequestObjectEncryptionAlg";
+
+    /** Default element name. */
+    public static final QName DEFAULT_ELEMENT_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+    /** QName of the XSI type. */
+    public static final QName TYPE_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+}
diff --git a/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/RequestObjectEncryptionEnc.java b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/RequestObjectEncryptionEnc.java
new file mode 100644
index 0000000..9f23cd0
--- /dev/null
+++ b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/RequestObjectEncryptionEnc.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject;
+
+import javax.xml.namespace.QName;
+
+/**
+ * SAML2 OIDC metadata extension 'RequestObjectEncryptionEnc'.
+ */
+public interface RequestObjectEncryptionEnc extends MetadataValueSAMLObject {
+
+    /** Element name, no namespace. */
+    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "RequestObjectEncryptionEnc";
+
+    /** Default element name. */
+    public static final QName DEFAULT_ELEMENT_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+    /** QName of the XSI type. */
+    public static final QName TYPE_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+}
diff --git a/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/RequestObjectSigningAlg.java b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/RequestObjectSigningAlg.java
new file mode 100644
index 0000000..7286ce9
--- /dev/null
+++ b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/RequestObjectSigningAlg.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject;
+
+import javax.xml.namespace.QName;
+
+/**
+ * SAML2 OIDC metadata extension 'RequestObjectSigningAlg'.
+ */
+public interface RequestObjectSigningAlg extends MetadataValueSAMLObject {
+
+    /** Element name, no namespace. */
+    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "RequestObjectSigningAlg";
+
+    /** Default element name. */
+    public static final QName DEFAULT_ELEMENT_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+    /** QName of the XSI type. */
+    public static final QName TYPE_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+}
diff --git a/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/RequestUri.java b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/RequestUri.java
new file mode 100644
index 0000000..928cd18
--- /dev/null
+++ b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/RequestUri.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject;
+
+import javax.xml.namespace.QName;
+
+/**
+ * SAML2 OIDC metadata extension 'RequestUri'.
+ */
+public interface RequestUri extends MetadataValueSAMLObject {
+
+    /** Element name, no namespace. */
+    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "RequestUri";
+
+    /** Default element name. */
+    public static final QName DEFAULT_ELEMENT_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+    /** QName of the XSI type. */
+    public static final QName TYPE_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+}
diff --git a/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/ResponseType.java b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/ResponseType.java
new file mode 100644
index 0000000..1521b54
--- /dev/null
+++ b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/ResponseType.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject;
+
+import javax.xml.namespace.QName;
+
+/**
+ * SAML2 OIDC metadata extension 'ResponseType'.
+ */
+public interface ResponseType extends MetadataValueSAMLObject {
+
+    /** Element name, no namespace. */
+    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "ResponseType";
+
+    /** Default element name. */
+    public static final QName DEFAULT_ELEMENT_NAME =
+            new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME, SAML20MDOIDCMD_PREFIX);
+
+    /** QName of the XSI type. */
+    public static final QName TYPE_NAME =
+            new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME, SAML20MDOIDCMD_PREFIX);
+
+}
diff --git a/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/Scope.java b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/Scope.java
new file mode 100644
index 0000000..ae85ea5
--- /dev/null
+++ b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/Scope.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject;
+
+import javax.xml.namespace.QName;
+
+/**
+ * SAML2 OIDC metadata extension 'Scope'.
+ */
+public interface Scope extends MetadataValueSAMLObject {
+
+    /** Element name, no namespace. */
+    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "Scope";
+
+    /** Default element name. */
+    public static final QName DEFAULT_ELEMENT_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+    /** QName of the XSI type. */
+    public static final QName TYPE_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+}
diff --git a/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/SectorIdentifierUri.java b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/SectorIdentifierUri.java
new file mode 100644
index 0000000..c2a3dc5
--- /dev/null
+++ b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/SectorIdentifierUri.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject;
+
+import javax.xml.namespace.QName;
+
+/**
+ * SAML2 OIDC metadata extension 'SectorIdentifierUri'.
+ */
+public interface SectorIdentifierUri extends MetadataValueSAMLObject {
+
+    /** Element name, no namespace. */
+    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "SectorIdentifierUri";
+
+    /** Default element name. */
+    public static final QName DEFAULT_ELEMENT_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+    /** QName of the XSI type. */
+    public static final QName TYPE_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+}
diff --git a/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/SoftwareId.java b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/SoftwareId.java
new file mode 100644
index 0000000..e7acec4
--- /dev/null
+++ b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/SoftwareId.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject;
+
+import javax.xml.namespace.QName;
+
+/**
+ * SAML2 OIDC metadata extension 'SoftwareId'.
+ */
+public interface SoftwareId extends MetadataValueSAMLObject {
+
+    /** Element name, no namespace. */
+    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "SoftwareId";
+
+    /** Default element name. */
+    public static final QName DEFAULT_ELEMENT_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+    /** QName of the XSI type. */
+    public static final QName TYPE_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+}
diff --git a/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/SoftwareVersion.java b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/SoftwareVersion.java
new file mode 100644
index 0000000..05cd3ee
--- /dev/null
+++ b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/SoftwareVersion.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject;
+
+import javax.xml.namespace.QName;
+
+/**
+ * SAML2 OIDC metadata extension 'SoftwareVersion'.
+ */
+public interface SoftwareVersion extends MetadataValueSAMLObject {
+
+    /** Element name, no namespace. */
+    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "SoftwareVersion";
+
+    /** Default element name. */
+    public static final QName DEFAULT_ELEMENT_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+    /** QName of the XSI type. */
+    public static final QName TYPE_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+}
diff --git a/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/TokenEndpointAuthMethod.java b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/TokenEndpointAuthMethod.java
new file mode 100644
index 0000000..0d4da2b
--- /dev/null
+++ b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/TokenEndpointAuthMethod.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject;
+
+import javax.xml.namespace.QName;
+
+/**
+ * SAML2 OIDC metadata extension 'TokenEndpointAuthMethod'.
+ */
+public interface TokenEndpointAuthMethod extends MetadataValueSAMLObject {
+
+    /** Element name, no namespace. */
+    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "TokenEndpointAuthMethod";
+
+    /** Default element name. */
+    public static final QName DEFAULT_ELEMENT_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+    /** QName of the XSI type. */
+    public static final QName TYPE_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+}
diff --git a/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/TokenEndpointAuthSigningAlg.java b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/TokenEndpointAuthSigningAlg.java
new file mode 100644
index 0000000..8cead4e
--- /dev/null
+++ b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/TokenEndpointAuthSigningAlg.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject;
+
+import javax.xml.namespace.QName;
+
+/**
+ * SAML2 OIDC metadata extension 'TokenEndpointAuthSigningAlg'.
+ */
+public interface TokenEndpointAuthSigningAlg extends MetadataValueSAMLObject {
+
+    /** Element name, no namespace. */
+    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "TokenEndpointAuthSigningAlg";
+
+    /** Default element name. */
+    public static final QName DEFAULT_ELEMENT_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+    /** QName of the XSI type. */
+    public static final QName TYPE_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+}
diff --git a/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/UserInfoEncryptedResponseAlg.java b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/UserInfoEncryptedResponseAlg.java
new file mode 100644
index 0000000..ea840b0
--- /dev/null
+++ b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/UserInfoEncryptedResponseAlg.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject;
+
+import javax.xml.namespace.QName;
+
+/**
+ * SAML2 OIDC metadata extension 'UserInfoEncryptedResponseAlg'.
+ */
+public interface UserInfoEncryptedResponseAlg extends MetadataValueSAMLObject {
+
+    /** Element name, no namespace. */
+    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "UserInfoEncryptedResponseAlg";
+
+    /** Default element name. */
+    public static final QName DEFAULT_ELEMENT_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+    /** QName of the XSI type. */
+    public static final QName TYPE_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+}
diff --git a/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/UserInfoEncryptedResponseEnc.java b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/UserInfoEncryptedResponseEnc.java
new file mode 100644
index 0000000..c815a2e
--- /dev/null
+++ b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/UserInfoEncryptedResponseEnc.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject;
+
+import javax.xml.namespace.QName;
+
+/**
+ * SAML2 OIDC metadata extension 'UserInfoEncryptedResponseEnc'.
+ */
+public interface UserInfoEncryptedResponseEnc extends MetadataValueSAMLObject {
+
+    /** Element name, no namespace. */
+    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "UserInfoEncryptedResponseEnc";
+
+    /** Default element name. */
+    public static final QName DEFAULT_ELEMENT_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+    /** QName of the XSI type. */
+    public static final QName TYPE_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+}
diff --git a/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/UserInfoSignedResponseAlg.java b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/UserInfoSignedResponseAlg.java
new file mode 100644
index 0000000..475dc09
--- /dev/null
+++ b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/UserInfoSignedResponseAlg.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject;
+
+import javax.xml.namespace.QName;
+
+/**
+ * SAML2 OIDC metadata extension 'UserInfoSignedResponseAlg'.
+ */
+public interface UserInfoSignedResponseAlg extends MetadataValueSAMLObject {
+
+    /** Element name, no namespace. */
+    public static final String DEFAULT_ELEMENT_LOCAL_NAME = "UserInfoSignedResponseAlg";
+
+    /** Default element name. */
+    public static final QName DEFAULT_ELEMENT_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+    /** QName of the XSI type. */
+    public static final QName TYPE_NAME = new QName(SAML20MDOIDCMD_NS, DEFAULT_ELEMENT_LOCAL_NAME,
+            SAML20MDOIDCMD_PREFIX);
+
+}
diff --git a/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/package-info.java b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/package-info.java
new file mode 100644
index 0000000..0605af2
--- /dev/null
+++ b/oidc-common-saml-api/src/main/java/net/shibboleth/oidc/saml/xmlobject/package-info.java
@@ -0,0 +1,22 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.
+ */
+
+/**
+ * 
+ * Concrete definitions of the objects described in saml-metadata-ext-oidcmd.xsd work.  
+ */
+package net.shibboleth.oidc.saml.xmlobject;
\ No newline at end of file
diff --git a/oidc-common-saml-api/src/main/resources/schema/saml-metadata-ext-oidcmd.xsd b/oidc-common-saml-api/src/main/resources/schema/saml-metadata-ext-oidcmd.xsd
new file mode 100644
index 0000000..8302a99
--- /dev/null
+++ b/oidc-common-saml-api/src/main/resources/schema/saml-metadata-ext-oidcmd.xsd
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:oidcmd="urn:mace:shibboleth:metadata:oidc:1.0" targetNamespace="urn:mace:shibboleth:metadata:oidc:1.0" elementFormDefault="unqualified" attributeFormDefault="unqualified" blockDefault="substitution" version="2.0">
+
+    <annotation>
+        <documentation>
+            Document title: SAML Metadata Extension Schema for OIDC OP/RP information.
+        </documentation>
+    </annotation>
+
+    <element name="OAuthRPExtensions">
+        <complexType>
+            <choice minOccurs="0" maxOccurs="unbounded">
+                <element ref="oidcmd:TokenEndpointAuthMethod" />
+                <element ref="oidcmd:GrantType" />
+                <element ref="oidcmd:ResponseType" />
+                <element ref="oidcmd:ApplicationType" />
+                <element ref="oidcmd:ClientUri" />
+                <element ref="oidcmd:Scope" />
+                <element ref="oidcmd:SoftwareId" />
+                <element ref="oidcmd:SoftwareVersion" />
+                <element ref="oidcmd:SectorIdentifierUri" />
+                <element ref="oidcmd:IdTokenSignedResponseAlg" />
+                <element ref="oidcmd:IdTokenEncryptedResponseAlg" />
+                <element ref="oidcmd:IdTokenEncryptedResponseEnc" />
+                <element ref="oidcmd:UserInfoSignedResponseAlg" />
+                <element ref="oidcmd:UserInfoEncryptedResponseAlg" />
+                <element ref="oidcmd:UserInfoEncryptedResponseEnc" />
+                <element ref="oidcmd:RequestObjectSigningAlg" />
+                <element ref="oidcmd:RequestObjectEncryptionAlg" />
+                <element ref="oidcmd:RequestObjectEncryptionEnc" />
+                <element ref="oidcmd:TokenEndpointAuthSigningAlg" />
+                <element ref="oidcmd:DefaultAcrValue" /><!-- order matters -->
+                <element ref="oidcmd:InitiateLoginUri" />
+                <element ref="oidcmd:RequestUri" />
+                <element ref="oidcmd:PostLogoutRedirectUri" />
+                <any namespace="##other" processContents="lax" />
+            </choice>
+            <attribute name="defaultMaxAge" type="int" use="optional" />
+            <attribute name="requireAuthTime" type="string" use="optional" />
+            <anyAttribute namespace="##other" processContents="lax" />
+        </complexType>
+    </element>
+
+    <element name="TokenEndpointAuthMethod" type="anyURI" />
+    <element name="GrantType" type="anyURI" />
+    <element name="ResponseType" type="anyURI" />
+    <element name="ApplicationType" type="anyURI" />
+
+    <element name="ClientUri" type="anyURI" />
+    <element name="Scope" type="anyURI" />
+    <element name="SoftwareId" type="anyURI" />
+    <element name="SoftwareVersion" type="anyURI" />
+    <element name="SectorIdentifierUri" type="anyURI" />
+
+    <element name="IdTokenSignedResponseAlg" type="anyURI" />
+    <element name="IdTokenEncryptedResponseAlg" type="anyURI" />
+    <element name="IdTokenEncryptedResponseEnc" type="anyURI" />
+    <element name="UserInfoSignedResponseAlg" type="anyURI" />
+    <element name="UserInfoEncryptedResponseAlg" type="anyURI" />
+    <element name="UserInfoEncryptedResponseEnc" type="anyURI" />
+    <element name="RequestObjectSigningAlg" type="anyURI" />
+    <element name="RequestObjectEncryptionAlg" type="anyURI" />
+    <element name="RequestObjectEncryptionEnc" type="anyURI" />
+    <element name="TokenEndpointAuthSigningAlg" type="anyURI" />
+    <element name="DefaultAcrValue" type="anyURI" />
+    <element name="InitiateLoginUri" type="anyURI" />
+    <element name="RequestUri" type="anyURI" />
+    <element name="PostLogoutRedirectUri" type="anyURI" />
+    
+    <element name="JwkSet" type="anyURI" />
+    <element name="JwkSetUri" type="anyURI" />
+    <element name="JwksData" type="anyURI" />
+    <element name="ClientSecret" type="anyURI" />
+    <element name="ClientSecretKeyReference" type="anyURI" />
+
+</schema>
diff --git a/oidc-common-saml-impl/pom.xml b/oidc-common-saml-impl/pom.xml
new file mode 100644
index 0000000..2df3eab
--- /dev/null
+++ b/oidc-common-saml-impl/pom.xml
@@ -0,0 +1,41 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>net.shibboleth.oidc</groupId>
+        <artifactId>oidc-common-parent</artifactId>
+        <version>0.0.1-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>oidc-common-saml-impl</artifactId>
+    <packaging>jar</packaging>    
+    <name>Shibboleth OIDC Java Common Library - SAML Metadata extension implementation</name>
+    <description>Implementation and OpenSAML configuration for the SAML metadata extension for OIDC RPs.</description>
+    
+    <properties>
+        <checkstyle.configLocation>${project.basedir}/../checkstyle.xml</checkstyle.configLocation>
+        <automatic.module.name>net.shibboleth.oidc.saml.impl</automatic.module.name>
+    </properties>
+    
+    <dependencies>
+        <dependency>
+            <groupId>net.shibboleth.oidc</groupId>
+            <artifactId>oidc-common-saml-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>${opensaml.groupId}</groupId>
+            <artifactId>opensaml-core</artifactId>
+            <version>${opensaml.version}</version>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${opensaml.groupId}</groupId>
+            <artifactId>opensaml-saml-impl</artifactId>
+            <version>${opensaml.version}</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+</project>
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/AbstractMetadataValueMarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/AbstractMetadataValueMarshaller.java
new file mode 100644
index 0000000..0047313
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/AbstractMetadataValueMarshaller.java
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+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.oidc.saml.xmlobject.MetadataValueSAMLObject;
+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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/AbstractMetadataValueSAMLObject.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/AbstractMetadataValueSAMLObject.java
new file mode 100644
index 0000000..63c47a4
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/AbstractMetadataValueSAMLObject.java
@@ -0,0 +1,69 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/AbstractMetadataValueUnmarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/AbstractMetadataValueUnmarshaller.java
new file mode 100644
index 0000000..d0db2fe
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/AbstractMetadataValueUnmarshaller.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import org.opensaml.core.xml.XMLObject;
+import org.opensaml.saml.common.AbstractSAMLObjectUnmarshaller;
+
+import net.shibboleth.oidc.saml.xmlobject.MetadataValueSAMLObject;
+
+/**
+ * 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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ApplicationTypeBuilder.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ApplicationTypeBuilder.java
new file mode 100644
index 0000000..07d83f9
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ApplicationTypeBuilder.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.oidc.saml.xmlobject.ApplicationType;
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ApplicationTypeImpl.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ApplicationTypeImpl.java
new file mode 100644
index 0000000..15dbe6c
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ApplicationTypeImpl.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ApplicationTypeMarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ApplicationTypeMarshaller.java
new file mode 100644
index 0000000..865635d
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ApplicationTypeMarshaller.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ApplicationTypeUnmarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ApplicationTypeUnmarshaller.java
new file mode 100644
index 0000000..af4a631
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ApplicationTypeUnmarshaller.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientSecretBuilder.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientSecretBuilder.java
new file mode 100644
index 0000000..16abab7
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientSecretBuilder.java
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.oidc.saml.xmlobject.ClientSecret;
+import net.shibboleth.oidc.saml.xmlobject.Constants;
+
+/**
+ * Builder of {@link ClientSecretImpl}.
+ */
+public class ClientSecretBuilder extends AbstractSAMLObjectBuilder<ClientSecret> {
+
+    /**
+     * Constructor.
+     */
+    public ClientSecretBuilder() {
+
+    }
+
+    /** {@inheritDoc} */
+    public ClientSecret buildObject() {
+        return buildObject(Constants.SAML20MDOIDCMD_NS, ClientSecret.DEFAULT_ELEMENT_LOCAL_NAME,
+                Constants.SAML20MDOIDCMD_PREFIX);
+    }
+
+    /** {@inheritDoc} */
+    public ClientSecret buildObject(final String namespaceURI, final String localName, final String namespacePrefix) {
+        return new ClientSecretImpl(namespaceURI, localName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientSecretImpl.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientSecretImpl.java
new file mode 100644
index 0000000..c7999e3
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientSecretImpl.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.xmlobject.ClientSecret;
+
+/**
+ * Concrete implementation of {@link ClientSecret}.
+ */
+public class ClientSecretImpl extends AbstractMetadataValueSAMLObject implements ClientSecret {
+
+    /**
+     * 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 ClientSecretImpl(final String namespaceURI, final String elementLocalName, final String namespacePrefix) {
+        super(namespaceURI, elementLocalName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientSecretKeyReferenceBuilder.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientSecretKeyReferenceBuilder.java
new file mode 100644
index 0000000..c8ce3e2
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientSecretKeyReferenceBuilder.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.oidc.saml.xmlobject.ClientSecretKeyReference;
+import net.shibboleth.oidc.saml.xmlobject.Constants;
+
+/**
+ * Builder of {@link ClientSecretKeyReferenceImpl}.
+ */
+public class ClientSecretKeyReferenceBuilder extends AbstractSAMLObjectBuilder<ClientSecretKeyReference> {
+
+    /**
+     * Constructor.
+     */
+    public ClientSecretKeyReferenceBuilder() {
+
+    }
+
+    /** {@inheritDoc} */
+    public ClientSecretKeyReference buildObject() {
+        return buildObject(Constants.SAML20MDOIDCMD_NS, ClientSecretKeyReference.DEFAULT_ELEMENT_LOCAL_NAME,
+                Constants.SAML20MDOIDCMD_PREFIX);
+    }
+
+    /** {@inheritDoc} */
+    public ClientSecretKeyReference buildObject(final String namespaceURI, final String localName,
+            final String namespacePrefix) {
+        return new ClientSecretKeyReferenceImpl(namespaceURI, localName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientSecretKeyReferenceImpl.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientSecretKeyReferenceImpl.java
new file mode 100644
index 0000000..bb8f76d
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientSecretKeyReferenceImpl.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.xmlobject.ClientSecretKeyReference;
+
+/**
+ * Concrete implementation of {@link ClientSecretKeyReference}.
+ */
+public class ClientSecretKeyReferenceImpl extends AbstractMetadataValueSAMLObject implements ClientSecretKeyReference {
+
+    /**
+     * 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 ClientSecretKeyReferenceImpl(final String namespaceURI, final String elementLocalName,
+            final String namespacePrefix) {
+        super(namespaceURI, elementLocalName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientSecretKeyReferenceMarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientSecretKeyReferenceMarshaller.java
new file mode 100644
index 0000000..51b5970
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientSecretKeyReferenceMarshaller.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.xmlobject.ClientSecretKeyReference;
+
+/**
+ * A thread safe Marshaller for {@link ClientSecretKeyReference} objects.
+ */
+public class ClientSecretKeyReferenceMarshaller extends AbstractMetadataValueMarshaller<ClientSecretKeyReference> {
+
+}
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientSecretKeyReferenceUnmarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientSecretKeyReferenceUnmarshaller.java
new file mode 100644
index 0000000..43e7758
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientSecretKeyReferenceUnmarshaller.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.xmlobject.ClientSecretKeyReference;
+
+/**
+ * A thread-safe Unmarshaller for {@link ClientSecretKeyReference} objects.
+ */
+public class ClientSecretKeyReferenceUnmarshaller extends AbstractMetadataValueUnmarshaller<ClientSecretKeyReference> {
+
+}
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientSecretMarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientSecretMarshaller.java
new file mode 100644
index 0000000..b85ccfa
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientSecretMarshaller.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.xmlobject.ClientSecret;
+
+/**
+ * A thread safe Marshaller for {@link ClientSecret} objects.
+ */
+public class ClientSecretMarshaller extends AbstractMetadataValueMarshaller<ClientSecret> {
+
+}
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientSecretUnmarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientSecretUnmarshaller.java
new file mode 100644
index 0000000..2889fe3
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientSecretUnmarshaller.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.xmlobject.ClientSecret;
+
+/**
+ * A thread-safe Unmarshaller for {@link ClientSecret} objects.
+ */
+public class ClientSecretUnmarshaller extends AbstractMetadataValueUnmarshaller<ClientSecret> {
+
+}
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientUriBuilder.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientUriBuilder.java
new file mode 100644
index 0000000..5c60b15
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientUriBuilder.java
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.oidc.saml.xmlobject.ClientUri;
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientUriImpl.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientUriImpl.java
new file mode 100644
index 0000000..91f24e8
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientUriImpl.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientUriMarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientUriMarshaller.java
new file mode 100644
index 0000000..01f0a2a
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientUriMarshaller.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientUriUnmarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientUriUnmarshaller.java
new file mode 100644
index 0000000..082454e
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientUriUnmarshaller.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/DefaultAcrValueBuilder.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/DefaultAcrValueBuilder.java
new file mode 100644
index 0000000..92abc72
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/DefaultAcrValueBuilder.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.oidc.saml.xmlobject.Constants;
+import net.shibboleth.oidc.saml.xmlobject.DefaultAcrValue;
+
+/**
+ * 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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/DefaultAcrValueImpl.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/DefaultAcrValueImpl.java
new file mode 100644
index 0000000..19a01a0
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/DefaultAcrValueImpl.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/DefaultAcrValueMarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/DefaultAcrValueMarshaller.java
new file mode 100644
index 0000000..f99c34b
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/DefaultAcrValueMarshaller.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/DefaultAcrValueUnmarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/DefaultAcrValueUnmarshaller.java
new file mode 100644
index 0000000..138844d
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/DefaultAcrValueUnmarshaller.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/GrantTypeBuilder.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/GrantTypeBuilder.java
new file mode 100644
index 0000000..356495b
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/GrantTypeBuilder.java
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.oidc.saml.xmlobject.Constants;
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/GrantTypeImpl.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/GrantTypeImpl.java
new file mode 100644
index 0000000..bdf7ae6
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/GrantTypeImpl.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/GrantTypeMarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/GrantTypeMarshaller.java
new file mode 100644
index 0000000..8db9b57
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/GrantTypeMarshaller.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/GrantTypeUnmarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/GrantTypeUnmarshaller.java
new file mode 100644
index 0000000..5b0a74c
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/GrantTypeUnmarshaller.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenEncryptedResponseAlgBuilder.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenEncryptedResponseAlgBuilder.java
new file mode 100644
index 0000000..b362176
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenEncryptedResponseAlgBuilder.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.oidc.saml.xmlobject.Constants;
+import net.shibboleth.oidc.saml.xmlobject.IdTokenEncryptedResponseAlg;
+
+/**
+ * Builder of {@link IdTokenEncryptedResponseAlgImpl}.
+ */
+public class IdTokenEncryptedResponseAlgBuilder extends AbstractSAMLObjectBuilder<IdTokenEncryptedResponseAlg> {
+
+    /**
+     * Constructor.
+     */
+    public IdTokenEncryptedResponseAlgBuilder() {
+
+    }
+
+    /** {@inheritDoc} */
+    public IdTokenEncryptedResponseAlg buildObject() {
+        return buildObject(Constants.SAML20MDOIDCMD_NS, IdTokenEncryptedResponseAlg.DEFAULT_ELEMENT_LOCAL_NAME,
+                Constants.SAML20MDOIDCMD_PREFIX);
+    }
+
+    /** {@inheritDoc} */
+    public IdTokenEncryptedResponseAlg buildObject(final String namespaceURI, final String localName,
+            final String namespacePrefix) {
+        return new IdTokenEncryptedResponseAlgImpl(namespaceURI, localName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenEncryptedResponseAlgImpl.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenEncryptedResponseAlgImpl.java
new file mode 100644
index 0000000..4e1f03a
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenEncryptedResponseAlgImpl.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.xmlobject.IdTokenEncryptedResponseAlg;
+
+/**
+ * Concrete implementation of {@link IdTokenEncryptedResponseAlg}.
+ */
+public class IdTokenEncryptedResponseAlgImpl extends AbstractMetadataValueSAMLObject
+        implements IdTokenEncryptedResponseAlg {
+
+    /**
+     * 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 IdTokenEncryptedResponseAlgImpl(final String namespaceURI, final String elementLocalName,
+            final String namespacePrefix) {
+        super(namespaceURI, elementLocalName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenEncryptedResponseAlgMarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenEncryptedResponseAlgMarshaller.java
new file mode 100644
index 0000000..3eda376
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenEncryptedResponseAlgMarshaller.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.xmlobject.IdTokenEncryptedResponseAlg;
+
+/**
+ * A thread safe Marshaller for {@link IdTokenEncryptedResponseAlg} objects.
+ */
+public class IdTokenEncryptedResponseAlgMarshaller
+        extends AbstractMetadataValueMarshaller<IdTokenEncryptedResponseAlg> {
+
+}
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenEncryptedResponseAlgUnmarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenEncryptedResponseAlgUnmarshaller.java
new file mode 100644
index 0000000..0cc6393
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenEncryptedResponseAlgUnmarshaller.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.xmlobject.IdTokenEncryptedResponseAlg;
+
+/**
+ * A thread-safe Unmarshaller for {@link IdTokenEncryptedResponseAlg} objects.
+ */
+public class IdTokenEncryptedResponseAlgUnmarshaller
+        extends AbstractMetadataValueUnmarshaller<IdTokenEncryptedResponseAlg> {
+
+}
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenEncryptedResponseEncBuilder.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenEncryptedResponseEncBuilder.java
new file mode 100644
index 0000000..c4ee591
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenEncryptedResponseEncBuilder.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.oidc.saml.xmlobject.Constants;
+import net.shibboleth.oidc.saml.xmlobject.IdTokenEncryptedResponseEnc;
+
+/**
+ * Builder of {@link IdTokenEncryptedResponseEncImpl}.
+ */
+public class IdTokenEncryptedResponseEncBuilder extends AbstractSAMLObjectBuilder<IdTokenEncryptedResponseEnc> {
+
+    /**
+     * Constructor.
+     */
+    public IdTokenEncryptedResponseEncBuilder() {
+
+    }
+
+    /** {@inheritDoc} */
+    public IdTokenEncryptedResponseEnc buildObject() {
+        return buildObject(Constants.SAML20MDOIDCMD_NS, IdTokenEncryptedResponseEnc.DEFAULT_ELEMENT_LOCAL_NAME,
+                Constants.SAML20MDOIDCMD_PREFIX);
+    }
+
+    /** {@inheritDoc} */
+    public IdTokenEncryptedResponseEnc buildObject(final String namespaceURI, final String localName,
+            final String namespacePrefix) {
+        return new IdTokenEncryptedResponseEncImpl(namespaceURI, localName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenEncryptedResponseEncImpl.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenEncryptedResponseEncImpl.java
new file mode 100644
index 0000000..daf5d12
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenEncryptedResponseEncImpl.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.xmlobject.IdTokenEncryptedResponseEnc;
+
+/**
+ * Concrete implementation of {@link IdTokenEncryptedResponseEnc}.
+ */
+public class IdTokenEncryptedResponseEncImpl extends AbstractMetadataValueSAMLObject
+        implements IdTokenEncryptedResponseEnc {
+
+    /**
+     * 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 IdTokenEncryptedResponseEncImpl(final String namespaceURI, final String elementLocalName,
+            final String namespacePrefix) {
+        super(namespaceURI, elementLocalName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenEncryptedResponseEncMarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenEncryptedResponseEncMarshaller.java
new file mode 100644
index 0000000..b22ab66
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenEncryptedResponseEncMarshaller.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.xmlobject.IdTokenEncryptedResponseEnc;
+
+/**
+ * A thread safe Marshaller for {@link IdTokenEncryptedResponseEnc} objects.
+ */
+public class IdTokenEncryptedResponseEncMarshaller
+        extends AbstractMetadataValueMarshaller<IdTokenEncryptedResponseEnc> {
+
+}
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenEncryptedResponseEncUnmarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenEncryptedResponseEncUnmarshaller.java
new file mode 100644
index 0000000..9fa9355
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenEncryptedResponseEncUnmarshaller.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.xmlobject.IdTokenEncryptedResponseEnc;
+
+/**
+ * A thread-safe Unmarshaller for {@link IdTokenEncryptedResponseEnc} objects.
+ */
+public class IdTokenEncryptedResponseEncUnmarshaller
+        extends AbstractMetadataValueUnmarshaller<IdTokenEncryptedResponseEnc> {
+
+}
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenSignedResponseAlgBuilder.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenSignedResponseAlgBuilder.java
new file mode 100644
index 0000000..ef92498
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenSignedResponseAlgBuilder.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.oidc.saml.xmlobject.Constants;
+import net.shibboleth.oidc.saml.xmlobject.IdTokenSignedResponseAlg;
+
+/**
+ * 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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenSignedResponseAlgImpl.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenSignedResponseAlgImpl.java
new file mode 100644
index 0000000..2bb176e
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenSignedResponseAlgImpl.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenSignedResponseAlgMarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenSignedResponseAlgMarshaller.java
new file mode 100644
index 0000000..c56c4e2
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenSignedResponseAlgMarshaller.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenSignedResponseAlgUnmarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenSignedResponseAlgUnmarshaller.java
new file mode 100644
index 0000000..7d310b6
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenSignedResponseAlgUnmarshaller.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/InitiateLoginUriBuilder.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/InitiateLoginUriBuilder.java
new file mode 100644
index 0000000..24fc1cd
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/InitiateLoginUriBuilder.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.oidc.saml.xmlobject.Constants;
+import net.shibboleth.oidc.saml.xmlobject.InitiateLoginUri;
+
+/**
+ * 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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/InitiateLoginUriImpl.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/InitiateLoginUriImpl.java
new file mode 100644
index 0000000..4f640dc
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/InitiateLoginUriImpl.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/InitiateLoginUriMarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/InitiateLoginUriMarshaller.java
new file mode 100644
index 0000000..3ba317c
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/InitiateLoginUriMarshaller.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/InitiateLoginUriUnmarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/InitiateLoginUriUnmarshaller.java
new file mode 100644
index 0000000..da0c1ff
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/InitiateLoginUriUnmarshaller.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/JwksDataBuilder.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/JwksDataBuilder.java
new file mode 100644
index 0000000..8281d91
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/JwksDataBuilder.java
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.oidc.saml.xmlobject.Constants;
+import net.shibboleth.oidc.saml.xmlobject.JwksData;
+
+/**
+ * Builder of {@link JwksDataImpl}.
+ */
+public class JwksDataBuilder extends AbstractSAMLObjectBuilder<JwksData> {
+
+    /**
+     * Constructor.
+     */
+    public JwksDataBuilder() {
+
+    }
+
+    /** {@inheritDoc} */
+    public JwksData buildObject() {
+        return buildObject(Constants.SAML20MDOIDCMD_NS, JwksData.DEFAULT_ELEMENT_LOCAL_NAME,
+                Constants.SAML20MDOIDCMD_PREFIX);
+    }
+
+    /** {@inheritDoc} */
+    public JwksData buildObject(final String namespaceURI, final String localName, final String namespacePrefix) {
+        return new JwksDataImpl(namespaceURI, localName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/JwksDataImpl.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/JwksDataImpl.java
new file mode 100644
index 0000000..523ed84
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/JwksDataImpl.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.xmlobject.JwksData;
+
+/**
+ * Concrete implementation of {@link JwksData}.
+ */
+public class JwksDataImpl extends AbstractMetadataValueSAMLObject implements JwksData {
+
+    /**
+     * 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 JwksDataImpl(final String namespaceURI, final String elementLocalName, final String namespacePrefix) {
+        super(namespaceURI, elementLocalName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/JwksDataMarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/JwksDataMarshaller.java
new file mode 100644
index 0000000..d4b6525
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/JwksDataMarshaller.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.xmlobject.JwksData;
+
+/**
+ * A thread safe Marshaller for {@link JwksData} objects.
+ */
+public class JwksDataMarshaller extends AbstractMetadataValueMarshaller<JwksData> {
+
+}
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/JwksDataUnmarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/JwksDataUnmarshaller.java
new file mode 100644
index 0000000..8fc73de
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/JwksDataUnmarshaller.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.xmlobject.JwksData;
+
+/**
+ * A thread-safe Unmarshaller for {@link JwksData} objects.
+ */
+public class JwksDataUnmarshaller extends AbstractMetadataValueUnmarshaller<JwksData> {
+
+}
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/JwksUriBuilder.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/JwksUriBuilder.java
new file mode 100644
index 0000000..4698a74
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/JwksUriBuilder.java
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.oidc.saml.xmlobject.Constants;
+import net.shibboleth.oidc.saml.xmlobject.JwksUri;
+
+/**
+ * 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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/JwksUriImpl.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/JwksUriImpl.java
new file mode 100644
index 0000000..8935115
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/JwksUriImpl.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/JwksUriMarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/JwksUriMarshaller.java
new file mode 100644
index 0000000..5aad75c
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/JwksUriMarshaller.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/JwksUriUnmarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/JwksUriUnmarshaller.java
new file mode 100644
index 0000000..00a03f9
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/JwksUriUnmarshaller.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/OAuthRPExtensionsBuilder.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/OAuthRPExtensionsBuilder.java
new file mode 100644
index 0000000..25c5181
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/OAuthRPExtensionsBuilder.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.oidc.saml.xmlobject.MetadataValueSAMLObject;
+import net.shibboleth.oidc.saml.xmlobject.OAuthRPExtensions;
+
+/**
+ * Builder of {@link OAuthRPExtensions} objects.
+ */
+public class OAuthRPExtensionsBuilder extends AbstractSAMLObjectBuilder<OAuthRPExtensions> {
+
+    /** Constructor. */
+    public OAuthRPExtensionsBuilder() {
+
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public OAuthRPExtensions buildObject() {
+        return buildObject(MetadataValueSAMLObject.SAML20MDOIDCMD_NS,
+                OAuthRPExtensions.TYPE_LOCAL_NAME,
+                MetadataValueSAMLObject.SAML20MDOIDCMD_PREFIX);
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public OAuthRPExtensions buildObject(final String namespaceURI, final String localName,
+            final String namespacePrefix) {
+        return new OAuthRPExtensionsImpl(namespaceURI, localName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/OAuthRPExtensionsImpl.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/OAuthRPExtensionsImpl.java
new file mode 100644
index 0000000..40cdd54
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/OAuthRPExtensionsImpl.java
@@ -0,0 +1,494 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import org.opensaml.core.xml.AbstractXMLObject;
+import org.opensaml.core.xml.XMLObject;
+import org.opensaml.core.xml.util.AttributeMap;
+import org.opensaml.core.xml.util.IndexedXMLObjectChildrenList;
+import org.opensaml.core.xml.util.XMLObjectChildrenList;
+
+import net.shibboleth.oidc.saml.xmlobject.ApplicationType;
+import net.shibboleth.oidc.saml.xmlobject.ClientUri;
+import net.shibboleth.oidc.saml.xmlobject.DefaultAcrValue;
+import net.shibboleth.oidc.saml.xmlobject.GrantType;
+import net.shibboleth.oidc.saml.xmlobject.IdTokenEncryptedResponseAlg;
+import net.shibboleth.oidc.saml.xmlobject.IdTokenEncryptedResponseEnc;
+import net.shibboleth.oidc.saml.xmlobject.IdTokenSignedResponseAlg;
+import net.shibboleth.oidc.saml.xmlobject.InitiateLoginUri;
+import net.shibboleth.oidc.saml.xmlobject.JwksUri;
+import net.shibboleth.oidc.saml.xmlobject.OAuthRPExtensions;
+import net.shibboleth.oidc.saml.xmlobject.PostLogoutRedirectUri;
+import net.shibboleth.oidc.saml.xmlobject.RequestObjectEncryptionAlg;
+import net.shibboleth.oidc.saml.xmlobject.RequestObjectEncryptionEnc;
+import net.shibboleth.oidc.saml.xmlobject.RequestObjectSigningAlg;
+import net.shibboleth.oidc.saml.xmlobject.RequestUri;
+import net.shibboleth.oidc.saml.xmlobject.ResponseType;
+import net.shibboleth.oidc.saml.xmlobject.Scope;
+import net.shibboleth.oidc.saml.xmlobject.SectorIdentifierUri;
+import net.shibboleth.oidc.saml.xmlobject.SoftwareId;
+import net.shibboleth.oidc.saml.xmlobject.SoftwareVersion;
+import net.shibboleth.oidc.saml.xmlobject.TokenEndpointAuthMethod;
+import net.shibboleth.oidc.saml.xmlobject.TokenEndpointAuthSigningAlg;
+import net.shibboleth.oidc.saml.xmlobject.UserInfoEncryptedResponseAlg;
+import net.shibboleth.oidc.saml.xmlobject.UserInfoEncryptedResponseEnc;
+import net.shibboleth.oidc.saml.xmlobject.UserInfoSignedResponseAlg;
+
+/**
+ * Implementation for {@link OAuthRPExtensions}.
+ */
+public class OAuthRPExtensionsImpl extends AbstractXMLObject implements OAuthRPExtensions {
+
+    /** 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;
+    
+    /** Scopes for this entity. */
+    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;
+    
+    /** ID token signed response algorithm for this entity. */
+    private IdTokenSignedResponseAlg idTokenSignedResponseAlg;
+    
+    /** ID token encrypted response algorithm for this entity. */
+    private IdTokenEncryptedResponseAlg idTokenEncryptedResponseAlg;
+
+    /** ID token encrypted response encoder for this entity. */
+    private IdTokenEncryptedResponseEnc idTokenEncryptedResponseEnc;
+
+    /** User info signed response algorithm for this entity. */
+    private UserInfoSignedResponseAlg userInfoSignedResponseAlg;
+    
+    /** User info encrypted response algorithm for this entity. */
+    private UserInfoEncryptedResponseAlg userInfoEncryptedResponseAlg;
+
+    /** User info encrypted response encoder for this entity. */
+    private UserInfoEncryptedResponseEnc userInfoEncryptedResponseEnc;
+
+    /** Request object signing algorithm for this entity. */
+    private RequestObjectSigningAlg requestObjectSigningAlg;
+    
+    /** Request object encryption algorithm for this entity. */
+    private RequestObjectEncryptionAlg requestObjectEncryptionAlg;
+
+    /** Request object encryption encoder for this entity. */
+    private RequestObjectEncryptionEnc requestObjectEncryptionEnc;
+    
+    /** 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;
+    
+    /** "anyAttribute" attributes. */
+    private final AttributeMap unknownAttributes;
+    
+    /** "any" children. */
+    private final IndexedXMLObjectChildrenList<XMLObject> unknownChildren;
+
+    /**
+     * 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 OAuthRPExtensionsImpl(final String namespaceURI, final String elementLocalName,
+            final String namespacePrefix) {
+        super(namespaceURI, elementLocalName, namespacePrefix);
+        responseTypes = new XMLObjectChildrenList<>(this);
+        grantTypes = new XMLObjectChildrenList<>(this);
+        scopes = new XMLObjectChildrenList<>(this);
+        defaultAcrValues = new XMLObjectChildrenList<>(this);
+        requestUris = new XMLObjectChildrenList<>(this);
+        postLogoutRedirectUris = new XMLObjectChildrenList<>(this);
+        unknownAttributes = new AttributeMap(this);
+        unknownChildren = new IndexedXMLObjectChildrenList<>(this);
+    }
+    
+    /** {@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(final TokenEndpointAuthMethod method) {
+        tokenEndpointAuthMethod = method;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public ClientUri getClientUri() {
+        return clientUri;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setClientUri(final ClientUri uri) {
+        clientUri = uri;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public List<Scope> getScopes() {
+        return scopes;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public JwksUri getJwksUri() {
+        return jwksUri;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setJwksUri(final JwksUri uri) {
+        jwksUri = uri;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public SoftwareId getSoftwareId() {
+        return softwareId;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setSoftwareId(final SoftwareId id) {
+        softwareId = id;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public SoftwareVersion getSoftwareVersion() {
+        return softwareVersion;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setSoftwareVersion(final SoftwareVersion version) {
+        softwareVersion = version;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public SectorIdentifierUri getSectorIdentifierUri() {
+        return sectorIdentifierUri;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setSectorIdentifierUri(final SectorIdentifierUri uri) {
+        sectorIdentifierUri = uri;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public IdTokenSignedResponseAlg getIdTokenSignedResponseAlg() {
+        return idTokenSignedResponseAlg;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setIdTokenSignedResponseAlg(final IdTokenSignedResponseAlg algorithm) {
+        idTokenSignedResponseAlg = algorithm;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public IdTokenEncryptedResponseAlg getIdTokenEncryptedResponseAlg() {
+        return  idTokenEncryptedResponseAlg;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setIdTokenEncryptedResponseAlg(final IdTokenEncryptedResponseAlg algorithm) {
+        idTokenEncryptedResponseAlg = algorithm;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public IdTokenEncryptedResponseEnc getIdTokenEncryptedResponseEnc() {
+        return idTokenEncryptedResponseEnc;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setIdTokenEncryptedResponseEnc(final IdTokenEncryptedResponseEnc algorithm) {
+        idTokenEncryptedResponseEnc = algorithm;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public UserInfoSignedResponseAlg getUserInfoSignedResponseAlg() {
+        return userInfoSignedResponseAlg;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setUserInfoSignedResponseAlg(final UserInfoSignedResponseAlg algorithm) {
+        userInfoSignedResponseAlg = algorithm;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public UserInfoEncryptedResponseAlg getUserInfoEncryptedResponseAlg() {
+        return userInfoEncryptedResponseAlg;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setUserInfoEncryptedResponseAlg(final UserInfoEncryptedResponseAlg algorithm) {
+        userInfoEncryptedResponseAlg = algorithm;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public UserInfoEncryptedResponseEnc getUserInfoEncryptedResponseEnc() {
+        return userInfoEncryptedResponseEnc;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setUserInfoEncryptedResponseEnc(final UserInfoEncryptedResponseEnc algorithm) {
+        userInfoEncryptedResponseEnc = algorithm;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public RequestObjectSigningAlg getRequestObjectSigningAlg() {
+        return requestObjectSigningAlg;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setRequestObjectSigningAlg(final RequestObjectSigningAlg algorithm) {
+        requestObjectSigningAlg = algorithm;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public RequestObjectEncryptionAlg getRequestObjectEncryptionAlg() {
+        return requestObjectEncryptionAlg;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setRequestObjectEncryptionAlg(final RequestObjectEncryptionAlg algorithm) {
+        requestObjectEncryptionAlg = algorithm;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public RequestObjectEncryptionEnc getRequestObjectEncryptionEnc() {
+        return requestObjectEncryptionEnc;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setRequestObjectEncryptionEnc(final RequestObjectEncryptionEnc algorithm) {
+        requestObjectEncryptionEnc = algorithm;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public TokenEndpointAuthSigningAlg getTokenEndpointAuthSigningAlg() {
+        return tokenEndpointAuthSigningAlg;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setTokenEndpointAuthSigningAlg(final TokenEndpointAuthSigningAlg algorithm) {
+        tokenEndpointAuthSigningAlg = algorithm;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public List<DefaultAcrValue> getDefaultAcrValues() {
+        return defaultAcrValues;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public InitiateLoginUri getInitiateLoginUri() {
+        return initiateLoginUri;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setInitiateLoginUri(final 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(final int age) {
+        defaultMaxAge = age;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public boolean isRequireAuthTime() {
+        return requireAuthTime;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setRequireAuthTime(final boolean flag) {
+        requireAuthTime = flag;
+    }
+    
+    /** {@inheritDoc} */
+    @Override
+    public List<XMLObject> getOrderedChildren() {
+        final ArrayList<XMLObject> children = new ArrayList<>();
+
+        children.add(getApplicationType());
+        children.add(getClientUri());
+        children.addAll(getDefaultAcrValues());
+        children.addAll(getGrantTypes());
+        children.add(getIdTokenEncryptedResponseAlg());
+        children.add(getIdTokenEncryptedResponseEnc());
+        children.add(getIdTokenSignedResponseAlg());
+        children.add(getInitiateLoginUri());
+        children.addAll(getPostLogoutRedirectUris());
+        children.add(getRequestObjectEncryptionAlg());
+        children.add(getRequestObjectEncryptionEnc());
+        children.add(getRequestObjectSigningAlg());
+        children.addAll(getRequestUris());
+        children.addAll(getResponseTypes());
+        children.addAll(getScopes());
+        children.add(getSoftwareId());
+        children.add(getSoftwareVersion());
+        children.add(getTokenEndpointAuthMethod());
+        children.add(getTokenEndpointAuthSigningAlg());
+        children.add(getSectorIdentifierUri());
+        children.add(getUserInfoEncryptedResponseAlg());
+        children.add(getUserInfoEncryptedResponseEnc());
+        children.add(getUserInfoSignedResponseAlg());
+        children.addAll(getUnknownXMLObjects());
+
+        return Collections.unmodifiableList(children);
+    }
+    
+    /** {@inheritDoc} */
+    @Override
+    public AttributeMap getUnknownAttributes() {
+        return unknownAttributes;
+    }
+    
+    /**
+     * {@inheritDoc}
+     */
+    public List<XMLObject> getUnknownXMLObjects() {
+        return unknownChildren;
+    }
+    
+    /** {@inheritDoc} */
+    public List<XMLObject> getUnknownXMLObjects(final QName typeOrName) {
+        return (List<XMLObject>) unknownChildren.subList(typeOrName);
+    }
+
+}
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/OAuthRPExtensionsMarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/OAuthRPExtensionsMarshaller.java
new file mode 100644
index 0000000..8194812
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/OAuthRPExtensionsMarshaller.java
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+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.oidc.saml.xmlobject.OAuthRPExtensions;
+
+/**
+ * Marshaller for {@link OAuthRPExtensions} objects.
+ */
+public class OAuthRPExtensionsMarshaller extends AbstractSAMLObjectMarshaller {
+
+    /** {@inheritDoc} */
+    protected void marshallAttributes(final XMLObject samlElement, final Element domElement)
+            throws MarshallingException {
+        final OAuthRPExtensions rpExtensions = (OAuthRPExtensions) samlElement;
+
+        // Set the default max age attribute
+        if (rpExtensions.getDefaultMaxAge() != 0) {
+            domElement.setAttributeNS(null, OAuthRPExtensions.DEFAULT_MAX_AGE_ATTRIB_NAME,
+                    Integer.toString(rpExtensions.getDefaultMaxAge()));
+            domElement.setIdAttributeNS(null, OAuthRPExtensions.DEFAULT_MAX_AGE_ATTRIB_NAME, true);
+        }
+
+        // Set the require auth time attribute
+        if (rpExtensions.isRequireAuthTime()) {
+            domElement.setAttributeNS(null, OAuthRPExtensions.REQUIRE_AUTH_TIME_ATTRIB_NAME,
+                    Boolean.toString(rpExtensions.isRequireAuthTime()));
+            domElement.setIdAttributeNS(null, OAuthRPExtensions.REQUIRE_AUTH_TIME_ATTRIB_NAME, true);
+        }
+
+        marshallUnknownAttributes(rpExtensions, domElement);
+    }}
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/OAuthRPExtensionsUnmarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/OAuthRPExtensionsUnmarshaller.java
new file mode 100644
index 0000000..69816c6
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/OAuthRPExtensionsUnmarshaller.java
@@ -0,0 +1,136 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import org.opensaml.core.xml.XMLObject;
+import org.opensaml.core.xml.io.UnmarshallingException;
+import org.opensaml.saml.common.AbstractSAMLObjectUnmarshaller;
+import org.w3c.dom.Attr;
+
+import com.google.common.base.Strings;
+
+import net.shibboleth.oidc.saml.xmlobject.ApplicationType;
+import net.shibboleth.oidc.saml.xmlobject.ClientUri;
+import net.shibboleth.oidc.saml.xmlobject.DefaultAcrValue;
+import net.shibboleth.oidc.saml.xmlobject.GrantType;
+import net.shibboleth.oidc.saml.xmlobject.IdTokenEncryptedResponseAlg;
+import net.shibboleth.oidc.saml.xmlobject.IdTokenEncryptedResponseEnc;
+import net.shibboleth.oidc.saml.xmlobject.IdTokenSignedResponseAlg;
+import net.shibboleth.oidc.saml.xmlobject.InitiateLoginUri;
+import net.shibboleth.oidc.saml.xmlobject.JwksUri;
+import net.shibboleth.oidc.saml.xmlobject.OAuthRPExtensions;
+import net.shibboleth.oidc.saml.xmlobject.PostLogoutRedirectUri;
+import net.shibboleth.oidc.saml.xmlobject.RequestObjectEncryptionAlg;
+import net.shibboleth.oidc.saml.xmlobject.RequestObjectEncryptionEnc;
+import net.shibboleth.oidc.saml.xmlobject.RequestObjectSigningAlg;
+import net.shibboleth.oidc.saml.xmlobject.RequestUri;
+import net.shibboleth.oidc.saml.xmlobject.ResponseType;
+import net.shibboleth.oidc.saml.xmlobject.Scope;
+import net.shibboleth.oidc.saml.xmlobject.SectorIdentifierUri;
+import net.shibboleth.oidc.saml.xmlobject.SoftwareId;
+import net.shibboleth.oidc.saml.xmlobject.SoftwareVersion;
+import net.shibboleth.oidc.saml.xmlobject.TokenEndpointAuthMethod;
+import net.shibboleth.oidc.saml.xmlobject.TokenEndpointAuthSigningAlg;
+import net.shibboleth.oidc.saml.xmlobject.UserInfoEncryptedResponseAlg;
+import net.shibboleth.oidc.saml.xmlobject.UserInfoEncryptedResponseEnc;
+import net.shibboleth.oidc.saml.xmlobject.UserInfoSignedResponseAlg;
+
+/**
+ * Unmarshaller for {@link OAuthRPExtensions} objects.
+ */
+public class OAuthRPExtensionsUnmarshaller extends AbstractSAMLObjectUnmarshaller {
+
+// Checkstyle: CyclomaticComplexity OFF
+    /** {@inheritDoc} */
+    protected void processChildElement(final XMLObject parentSAMLObject, final XMLObject childSAMLObject)
+            throws UnmarshallingException {
+        final OAuthRPExtensions descriptor = (OAuthRPExtensions) parentSAMLObject;
+
+        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 IdTokenSignedResponseAlg) {
+            descriptor.setIdTokenSignedResponseAlg((IdTokenSignedResponseAlg) childSAMLObject);
+        } else if (childSAMLObject instanceof IdTokenEncryptedResponseAlg) {
+            descriptor.setIdTokenEncryptedResponseAlg((IdTokenEncryptedResponseAlg) childSAMLObject);
+        } else if (childSAMLObject instanceof IdTokenEncryptedResponseEnc) {
+            descriptor.setIdTokenEncryptedResponseEnc((IdTokenEncryptedResponseEnc) childSAMLObject);
+        } else if (childSAMLObject instanceof UserInfoSignedResponseAlg) {
+            descriptor.setUserInfoSignedResponseAlg((UserInfoSignedResponseAlg) childSAMLObject);
+        } else if (childSAMLObject instanceof UserInfoEncryptedResponseAlg) {
+            descriptor.setUserInfoEncryptedResponseAlg((UserInfoEncryptedResponseAlg) childSAMLObject);
+        } else if (childSAMLObject instanceof UserInfoEncryptedResponseEnc) {
+            descriptor.setUserInfoEncryptedResponseEnc((UserInfoEncryptedResponseEnc) childSAMLObject);
+        } else if (childSAMLObject instanceof RequestObjectSigningAlg) {
+            descriptor.setRequestObjectSigningAlg((RequestObjectSigningAlg) childSAMLObject);
+        } else if (childSAMLObject instanceof RequestObjectEncryptionAlg) {
+            descriptor.setRequestObjectEncryptionAlg((RequestObjectEncryptionAlg) childSAMLObject);
+        } else if (childSAMLObject instanceof RequestObjectEncryptionEnc) {
+            descriptor.setRequestObjectEncryptionEnc((RequestObjectEncryptionEnc) 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 OAuthRPExtensions descriptor = (OAuthRPExtensions) samlObject;
+
+        if (attribute.getNamespaceURI() == null) {
+            if (attribute.getLocalName().equals(OAuthRPExtensions.DEFAULT_MAX_AGE_ATTRIB_NAME)
+                    && !Strings.isNullOrEmpty(attribute.getValue())) {
+                descriptor.setDefaultMaxAge(Integer.parseInt(attribute.getValue()));
+            } else if (attribute.getLocalName().equals(OAuthRPExtensions.REQUIRE_AUTH_TIME_ATTRIB_NAME)
+                    && !Strings.isNullOrEmpty(attribute.getValue())) {
+                descriptor.setRequireAuthTime(Boolean.parseBoolean(attribute.getValue()));
+            } else {
+                super.processAttribute(samlObject, attribute);
+            }
+        } else {
+            processUnknownAttribute(descriptor, attribute);
+        }
+    }
+// Checkstyle: CyclomaticComplexity OFF
+}
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/PostLogoutRedirectUriBuilder.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/PostLogoutRedirectUriBuilder.java
new file mode 100644
index 0000000..72ffa55
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/PostLogoutRedirectUriBuilder.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.oidc.saml.xmlobject.Constants;
+import net.shibboleth.oidc.saml.xmlobject.PostLogoutRedirectUri;
+
+/**
+ * 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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/PostLogoutRedirectUriImpl.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/PostLogoutRedirectUriImpl.java
new file mode 100644
index 0000000..1f7ae5a
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/PostLogoutRedirectUriImpl.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/PostLogoutRedirectUriMarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/PostLogoutRedirectUriMarshaller.java
new file mode 100644
index 0000000..40da2d9
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/PostLogoutRedirectUriMarshaller.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/PostLogoutRedirectUriUnmarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/PostLogoutRedirectUriUnmarshaller.java
new file mode 100644
index 0000000..89aaaaf
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/PostLogoutRedirectUriUnmarshaller.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectEncryptionAlgBuilder.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectEncryptionAlgBuilder.java
new file mode 100644
index 0000000..830dc23
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectEncryptionAlgBuilder.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.oidc.saml.xmlobject.Constants;
+import net.shibboleth.oidc.saml.xmlobject.RequestObjectEncryptionAlg;
+
+/**
+ * Builder of {@link RequestObjectEncryptionAlgImpl}.
+ */
+public class RequestObjectEncryptionAlgBuilder extends AbstractSAMLObjectBuilder<RequestObjectEncryptionAlg> {
+
+    /**
+     * Constructor.
+     */
+    public RequestObjectEncryptionAlgBuilder() {
+
+    }
+
+    /** {@inheritDoc} */
+    public RequestObjectEncryptionAlg buildObject() {
+        return buildObject(Constants.SAML20MDOIDCMD_NS, RequestObjectEncryptionAlg.DEFAULT_ELEMENT_LOCAL_NAME,
+                Constants.SAML20MDOIDCMD_PREFIX);
+    }
+
+    /** {@inheritDoc} */
+    public RequestObjectEncryptionAlg buildObject(final String namespaceURI, final String localName,
+            final String namespacePrefix) {
+        return new RequestObjectEncryptionAlgImpl(namespaceURI, localName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectEncryptionAlgImpl.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectEncryptionAlgImpl.java
new file mode 100644
index 0000000..6e08b05
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectEncryptionAlgImpl.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.xmlobject.RequestObjectEncryptionAlg;
+
+/**
+ * Concrete implementation of {@link RequestObjectEncryptionAlg}.
+ */
+public class RequestObjectEncryptionAlgImpl extends AbstractMetadataValueSAMLObject
+        implements RequestObjectEncryptionAlg {
+
+    /**
+     * 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 RequestObjectEncryptionAlgImpl(final String namespaceURI, final String elementLocalName,
+            final String namespacePrefix) {
+        super(namespaceURI, elementLocalName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectEncryptionAlgMarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectEncryptionAlgMarshaller.java
new file mode 100644
index 0000000..0473f21
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectEncryptionAlgMarshaller.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.xmlobject.RequestObjectEncryptionAlg;
+
+/**
+ * A thread safe Marshaller for {@link RequestObjectEncryptionAlg} objects.
+ */
+public class RequestObjectEncryptionAlgMarshaller extends AbstractMetadataValueMarshaller<RequestObjectEncryptionAlg> {
+
+}
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectEncryptionAlgUnmarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectEncryptionAlgUnmarshaller.java
new file mode 100644
index 0000000..1829c69
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectEncryptionAlgUnmarshaller.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.xmlobject.RequestObjectEncryptionAlg;
+
+/**
+ * A thread-safe Unmarshaller for {@link RequestObjectEncryptionAlg} objects.
+ */
+public class RequestObjectEncryptionAlgUnmarshaller
+        extends AbstractMetadataValueUnmarshaller<RequestObjectEncryptionAlg> {
+
+}
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectEncryptionEncBuilder.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectEncryptionEncBuilder.java
new file mode 100644
index 0000000..6a754fa
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectEncryptionEncBuilder.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.oidc.saml.xmlobject.Constants;
+import net.shibboleth.oidc.saml.xmlobject.RequestObjectEncryptionEnc;
+
+/**
+ * Builder of {@link RequestObjectEncryptionEncImpl}.
+ */
+public class RequestObjectEncryptionEncBuilder extends AbstractSAMLObjectBuilder<RequestObjectEncryptionEnc> {
+
+    /**
+     * Constructor.
+     */
+    public RequestObjectEncryptionEncBuilder() {
+
+    }
+
+    /** {@inheritDoc} */
+    public RequestObjectEncryptionEnc buildObject() {
+        return buildObject(Constants.SAML20MDOIDCMD_NS, RequestObjectEncryptionEnc.DEFAULT_ELEMENT_LOCAL_NAME,
+                Constants.SAML20MDOIDCMD_PREFIX);
+    }
+
+    /** {@inheritDoc} */
+    public RequestObjectEncryptionEnc buildObject(final String namespaceURI, final String localName,
+            final String namespacePrefix) {
+        return new RequestObjectEncryptionEncImpl(namespaceURI, localName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectEncryptionEncImpl.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectEncryptionEncImpl.java
new file mode 100644
index 0000000..d8a7ca2
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectEncryptionEncImpl.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.xmlobject.RequestObjectEncryptionEnc;
+
+/**
+ * Concrete implementation of {@link RequestObjectEncryptionEnc}.
+ */
+public class RequestObjectEncryptionEncImpl extends AbstractMetadataValueSAMLObject
+        implements RequestObjectEncryptionEnc {
+
+    /**
+     * 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 RequestObjectEncryptionEncImpl(final String namespaceURI, final String elementLocalName,
+            final String namespacePrefix) {
+        super(namespaceURI, elementLocalName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectEncryptionEncMarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectEncryptionEncMarshaller.java
new file mode 100644
index 0000000..59c9787
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectEncryptionEncMarshaller.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.xmlobject.RequestObjectEncryptionEnc;
+
+/**
+ * A thread safe Marshaller for {@link RequestObjectEncryptionEnc} objects.
+ */
+public class RequestObjectEncryptionEncMarshaller extends AbstractMetadataValueMarshaller<RequestObjectEncryptionEnc> {
+
+}
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectEncryptionEncUnmarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectEncryptionEncUnmarshaller.java
new file mode 100644
index 0000000..9996d22
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectEncryptionEncUnmarshaller.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.xmlobject.RequestObjectEncryptionEnc;
+
+/**
+ * A thread-safe Unmarshaller for {@link RequestObjectEncryptionEnc} objects.
+ */
+public class RequestObjectEncryptionEncUnmarshaller
+        extends AbstractMetadataValueUnmarshaller<RequestObjectEncryptionEnc> {
+
+}
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectSigningAlgBuilder.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectSigningAlgBuilder.java
new file mode 100644
index 0000000..812544f
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectSigningAlgBuilder.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.oidc.saml.xmlobject.Constants;
+import net.shibboleth.oidc.saml.xmlobject.RequestObjectSigningAlg;
+
+/**
+ * Builder of {@link RequestObjectSigningAlgImpl}.
+ */
+public class RequestObjectSigningAlgBuilder extends AbstractSAMLObjectBuilder<RequestObjectSigningAlg> {
+
+    /**
+     * Constructor.
+     */
+    public RequestObjectSigningAlgBuilder() {
+
+    }
+
+    /** {@inheritDoc} */
+    public RequestObjectSigningAlg buildObject() {
+        return buildObject(Constants.SAML20MDOIDCMD_NS, RequestObjectSigningAlg.DEFAULT_ELEMENT_LOCAL_NAME,
+                Constants.SAML20MDOIDCMD_PREFIX);
+    }
+
+    /** {@inheritDoc} */
+    public RequestObjectSigningAlg buildObject(final String namespaceURI, final String localName,
+            final String namespacePrefix) {
+        return new RequestObjectSigningAlgImpl(namespaceURI, localName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectSigningAlgImpl.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectSigningAlgImpl.java
new file mode 100644
index 0000000..5d95c60
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectSigningAlgImpl.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.xmlobject.RequestObjectSigningAlg;
+
+/**
+ * Concrete implementation of {@link RequestObjectSigningAlg}.
+ */
+public class RequestObjectSigningAlgImpl extends AbstractMetadataValueSAMLObject implements RequestObjectSigningAlg {
+
+    /**
+     * 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 RequestObjectSigningAlgImpl(final String namespaceURI, final String elementLocalName,
+            final String namespacePrefix) {
+        super(namespaceURI, elementLocalName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectSigningAlgMarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectSigningAlgMarshaller.java
new file mode 100644
index 0000000..0399749
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectSigningAlgMarshaller.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.xmlobject.RequestObjectSigningAlg;
+
+/**
+ * A thread safe Marshaller for {@link RequestObjectSigningAlg} objects.
+ */
+public class RequestObjectSigningAlgMarshaller extends AbstractMetadataValueMarshaller<RequestObjectSigningAlg> {
+
+}
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectSigningAlgUnmarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectSigningAlgUnmarshaller.java
new file mode 100644
index 0000000..65a0afc
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectSigningAlgUnmarshaller.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.xmlobject.RequestObjectSigningAlg;
+
+/**
+ * A thread-safe Unmarshaller for {@link RequestObjectSigningAlg} objects.
+ */
+public class RequestObjectSigningAlgUnmarshaller extends AbstractMetadataValueUnmarshaller<RequestObjectSigningAlg> {
+
+}
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestUriBuilder.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestUriBuilder.java
new file mode 100644
index 0000000..6e4cbd8
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestUriBuilder.java
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.oidc.saml.xmlobject.Constants;
+import net.shibboleth.oidc.saml.xmlobject.RequestUri;
+
+/**
+ * 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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestUriImpl.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestUriImpl.java
new file mode 100644
index 0000000..696db31
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestUriImpl.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestUriMarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestUriMarshaller.java
new file mode 100644
index 0000000..1ba7ef2
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestUriMarshaller.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestUriUnmarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestUriUnmarshaller.java
new file mode 100644
index 0000000..a550951
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestUriUnmarshaller.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ResponseTypeBuilder.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ResponseTypeBuilder.java
new file mode 100644
index 0000000..11f7b78
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ResponseTypeBuilder.java
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.oidc.saml.xmlobject.Constants;
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ResponseTypeImpl.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ResponseTypeImpl.java
new file mode 100644
index 0000000..2334cf5
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ResponseTypeImpl.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ResponseTypeMarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ResponseTypeMarshaller.java
new file mode 100644
index 0000000..b957a85
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ResponseTypeMarshaller.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ResponseTypeUnmarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ResponseTypeUnmarshaller.java
new file mode 100644
index 0000000..239b63f
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ResponseTypeUnmarshaller.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ScopeBuilder.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ScopeBuilder.java
new file mode 100644
index 0000000..df94daf
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ScopeBuilder.java
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.oidc.saml.xmlobject.Constants;
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ScopeImpl.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ScopeImpl.java
new file mode 100644
index 0000000..791a46b
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ScopeImpl.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ScopeMarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ScopeMarshaller.java
new file mode 100644
index 0000000..0c211dc
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ScopeMarshaller.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ScopeUnmarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ScopeUnmarshaller.java
new file mode 100644
index 0000000..efd6233
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/ScopeUnmarshaller.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/SectorIdentifierUriBuilder.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/SectorIdentifierUriBuilder.java
new file mode 100644
index 0000000..7cf7049
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/SectorIdentifierUriBuilder.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.oidc.saml.xmlobject.Constants;
+import net.shibboleth.oidc.saml.xmlobject.SectorIdentifierUri;
+
+/**
+ * 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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/SectorIdentifierUriImpl.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/SectorIdentifierUriImpl.java
new file mode 100644
index 0000000..17c336f
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/SectorIdentifierUriImpl.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/SectorIdentifierUriMarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/SectorIdentifierUriMarshaller.java
new file mode 100644
index 0000000..771eb5a
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/SectorIdentifierUriMarshaller.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/SectorIdentifierUriUnmarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/SectorIdentifierUriUnmarshaller.java
new file mode 100644
index 0000000..845d927
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/SectorIdentifierUriUnmarshaller.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/SoftwareIdBuilder.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/SoftwareIdBuilder.java
new file mode 100644
index 0000000..db11f37
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/SoftwareIdBuilder.java
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.oidc.saml.xmlobject.Constants;
+import net.shibboleth.oidc.saml.xmlobject.SoftwareId;
+
+/**
+ * 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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/SoftwareIdImpl.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/SoftwareIdImpl.java
new file mode 100644
index 0000000..9893dcc
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/SoftwareIdImpl.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/SoftwareIdMarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/SoftwareIdMarshaller.java
new file mode 100644
index 0000000..a9dd1a5
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/SoftwareIdMarshaller.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/SoftwareIdUnmarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/SoftwareIdUnmarshaller.java
new file mode 100644
index 0000000..6a2fbf8
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/SoftwareIdUnmarshaller.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/SoftwareVersionBuilder.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/SoftwareVersionBuilder.java
new file mode 100644
index 0000000..0333890
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/SoftwareVersionBuilder.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.oidc.saml.xmlobject.Constants;
+import net.shibboleth.oidc.saml.xmlobject.SoftwareVersion;
+
+/**
+ * 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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/SoftwareVersionImpl.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/SoftwareVersionImpl.java
new file mode 100644
index 0000000..97b1eab
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/SoftwareVersionImpl.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/SoftwareVersionMarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/SoftwareVersionMarshaller.java
new file mode 100644
index 0000000..8d675ec
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/SoftwareVersionMarshaller.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/SoftwareVersionUnmarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/SoftwareVersionUnmarshaller.java
new file mode 100644
index 0000000..b78c570
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/SoftwareVersionUnmarshaller.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/TokenEndpointAuthMethodBuilder.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/TokenEndpointAuthMethodBuilder.java
new file mode 100644
index 0000000..523651f
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/TokenEndpointAuthMethodBuilder.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.oidc.saml.xmlobject.Constants;
+import net.shibboleth.oidc.saml.xmlobject.TokenEndpointAuthMethod;
+
+/**
+ * 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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/TokenEndpointAuthMethodImpl.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/TokenEndpointAuthMethodImpl.java
new file mode 100644
index 0000000..e2eafc5
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/TokenEndpointAuthMethodImpl.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/TokenEndpointAuthMethodMarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/TokenEndpointAuthMethodMarshaller.java
new file mode 100644
index 0000000..63f1fff
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/TokenEndpointAuthMethodMarshaller.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/TokenEndpointAuthMethodUnmarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/TokenEndpointAuthMethodUnmarshaller.java
new file mode 100644
index 0000000..4952feb
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/TokenEndpointAuthMethodUnmarshaller.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/TokenEndpointAuthSigningAlgBuilder.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/TokenEndpointAuthSigningAlgBuilder.java
new file mode 100644
index 0000000..e06fedd
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/TokenEndpointAuthSigningAlgBuilder.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.oidc.saml.xmlobject.Constants;
+import net.shibboleth.oidc.saml.xmlobject.TokenEndpointAuthSigningAlg;
+
+/**
+ * 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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/TokenEndpointAuthSigningAlgImpl.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/TokenEndpointAuthSigningAlgImpl.java
new file mode 100644
index 0000000..dbd2ecb
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/TokenEndpointAuthSigningAlgImpl.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/TokenEndpointAuthSigningAlgMarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/TokenEndpointAuthSigningAlgMarshaller.java
new file mode 100644
index 0000000..3db5c43
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/TokenEndpointAuthSigningAlgMarshaller.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/TokenEndpointAuthSigningAlgUnmarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/TokenEndpointAuthSigningAlgUnmarshaller.java
new file mode 100644
index 0000000..f1eaf1d
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/TokenEndpointAuthSigningAlgUnmarshaller.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoEncryptedResponseAlgBuilder.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoEncryptedResponseAlgBuilder.java
new file mode 100644
index 0000000..24960f2
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoEncryptedResponseAlgBuilder.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.oidc.saml.xmlobject.Constants;
+import net.shibboleth.oidc.saml.xmlobject.UserInfoEncryptedResponseAlg;
+
+/**
+ * Builder of {@link UserInfoEncryptedResponseAlgImpl}.
+ */
+public class UserInfoEncryptedResponseAlgBuilder extends AbstractSAMLObjectBuilder<UserInfoEncryptedResponseAlg> {
+
+    /**
+     * Constructor.
+     */
+    public UserInfoEncryptedResponseAlgBuilder() {
+
+    }
+
+    /** {@inheritDoc} */
+    public UserInfoEncryptedResponseAlg buildObject() {
+        return buildObject(Constants.SAML20MDOIDCMD_NS, UserInfoEncryptedResponseAlg.DEFAULT_ELEMENT_LOCAL_NAME,
+                Constants.SAML20MDOIDCMD_PREFIX);
+    }
+
+    /** {@inheritDoc} */
+    public UserInfoEncryptedResponseAlg buildObject(final String namespaceURI, final String localName,
+            final String namespacePrefix) {
+        return new UserInfoEncryptedResponseAlgImpl(namespaceURI, localName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoEncryptedResponseAlgImpl.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoEncryptedResponseAlgImpl.java
new file mode 100644
index 0000000..07fed6d
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoEncryptedResponseAlgImpl.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.xmlobject.UserInfoEncryptedResponseAlg;
+
+/**
+ * Concrete implementation of {@link UserInfoEncryptedResponseAlg}.
+ */
+public class UserInfoEncryptedResponseAlgImpl extends AbstractMetadataValueSAMLObject
+        implements UserInfoEncryptedResponseAlg {
+
+    /**
+     * 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 UserInfoEncryptedResponseAlgImpl(final String namespaceURI, final String elementLocalName,
+            final String namespacePrefix) {
+        super(namespaceURI, elementLocalName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoEncryptedResponseAlgMarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoEncryptedResponseAlgMarshaller.java
new file mode 100644
index 0000000..44154c5
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoEncryptedResponseAlgMarshaller.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.xmlobject.UserInfoEncryptedResponseAlg;
+
+/**
+ * A thread safe Marshaller for {@link UserInfoEncryptedResponseAlg} objects.
+ */
+public class UserInfoEncryptedResponseAlgMarshaller
+        extends AbstractMetadataValueMarshaller<UserInfoEncryptedResponseAlg> {
+
+}
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoEncryptedResponseAlgUnmarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoEncryptedResponseAlgUnmarshaller.java
new file mode 100644
index 0000000..a751dc5
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoEncryptedResponseAlgUnmarshaller.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.xmlobject.UserInfoEncryptedResponseAlg;
+
+/**
+ * A thread-safe Unmarshaller for {@link UserInfoEncryptedResponseAlg} objects.
+ */
+public class UserInfoEncryptedResponseAlgUnmarshaller
+        extends AbstractMetadataValueUnmarshaller<UserInfoEncryptedResponseAlg> {
+
+}
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoEncryptedResponseEncBuilder.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoEncryptedResponseEncBuilder.java
new file mode 100644
index 0000000..9e46383
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoEncryptedResponseEncBuilder.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.oidc.saml.xmlobject.Constants;
+import net.shibboleth.oidc.saml.xmlobject.UserInfoEncryptedResponseEnc;
+
+/**
+ * Builder of {@link UserInfoEncryptedResponseEncImpl}.
+ */
+public class UserInfoEncryptedResponseEncBuilder extends AbstractSAMLObjectBuilder<UserInfoEncryptedResponseEnc> {
+
+    /**
+     * Constructor.
+     */
+    public UserInfoEncryptedResponseEncBuilder() {
+
+    }
+
+    /** {@inheritDoc} */
+    public UserInfoEncryptedResponseEnc buildObject() {
+        return buildObject(Constants.SAML20MDOIDCMD_NS, UserInfoEncryptedResponseEnc.DEFAULT_ELEMENT_LOCAL_NAME,
+                Constants.SAML20MDOIDCMD_PREFIX);
+    }
+
+    /** {@inheritDoc} */
+    public UserInfoEncryptedResponseEnc buildObject(final String namespaceURI, final String localName,
+            final String namespacePrefix) {
+        return new UserInfoEncryptedResponseEncImpl(namespaceURI, localName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoEncryptedResponseEncImpl.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoEncryptedResponseEncImpl.java
new file mode 100644
index 0000000..5a4084d
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoEncryptedResponseEncImpl.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.xmlobject.UserInfoEncryptedResponseEnc;
+
+/**
+ * Concrete implementation of {@link UserInfoEncryptedResponseEnc}.
+ */
+public class UserInfoEncryptedResponseEncImpl extends AbstractMetadataValueSAMLObject
+        implements UserInfoEncryptedResponseEnc {
+
+    /**
+     * 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 UserInfoEncryptedResponseEncImpl(final String namespaceURI, final String elementLocalName,
+            final String namespacePrefix) {
+        super(namespaceURI, elementLocalName, namespacePrefix);
+    }
+}
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoEncryptedResponseEncMarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoEncryptedResponseEncMarshaller.java
new file mode 100644
index 0000000..3f5efce
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoEncryptedResponseEncMarshaller.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.xmlobject.UserInfoEncryptedResponseEnc;
+
+/**
+ * A thread safe Marshaller for {@link UserInfoEncryptedResponseEnc} objects.
+ */
+public class UserInfoEncryptedResponseEncMarshaller
+        extends AbstractMetadataValueMarshaller<UserInfoEncryptedResponseEnc> {
+
+}
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoEncryptedResponseEncUnmarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoEncryptedResponseEncUnmarshaller.java
new file mode 100644
index 0000000..89b1bdb
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoEncryptedResponseEncUnmarshaller.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.xmlobject.UserInfoEncryptedResponseEnc;
+
+/**
+ * A thread-safe Unmarshaller for {@link UserInfoEncryptedResponseEnc} objects.
+ */
+public class UserInfoEncryptedResponseEncUnmarshaller
+        extends AbstractMetadataValueUnmarshaller<UserInfoEncryptedResponseEnc> {
+
+}
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoSignedResponseAlgBuilder.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoSignedResponseAlgBuilder.java
new file mode 100644
index 0000000..9df301d
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoSignedResponseAlgBuilder.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+
+import net.shibboleth.oidc.saml.xmlobject.Constants;
+import net.shibboleth.oidc.saml.xmlobject.UserInfoSignedResponseAlg;
+
+/**
+ * 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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoSignedResponseAlgImpl.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoSignedResponseAlgImpl.java
new file mode 100644
index 0000000..68eb02c
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoSignedResponseAlgImpl.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoSignedResponseAlgMarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoSignedResponseAlgMarshaller.java
new file mode 100644
index 0000000..9b211d0
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoSignedResponseAlgMarshaller.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoSignedResponseAlgUnmarshaller.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoSignedResponseAlgUnmarshaller.java
new file mode 100644
index 0000000..346ad82
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoSignedResponseAlgUnmarshaller.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import net.shibboleth.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/XMLObjectProviderInitializer.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/XMLObjectProviderInitializer.java
new file mode 100644
index 0000000..72b82e1
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/XMLObjectProviderInitializer.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.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/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/package-info.java b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/package-info.java
new file mode 100644
index 0000000..e8c79d8
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/java/net/shibboleth/oidc/saml/xmlobject/impl/package-info.java
@@ -0,0 +1,22 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.
+ */
+
+/**
+ * 
+ * Concrete implementations of the objects described in saml-metadata-ext-oidcmd.xsd.  
+ */
+package net.shibboleth.oidc.saml.xmlobject.impl;
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/main/resources/META-INF/services/org.opensaml.core.config.Initializer b/oidc-common-saml-impl/src/main/resources/META-INF/services/org.opensaml.core.config.Initializer
new file mode 100644
index 0000000..6d3e425
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/resources/META-INF/services/org.opensaml.core.config.Initializer
@@ -0,0 +1 @@
+net.shibboleth.oidc.saml.xmlobject.impl.XMLObjectProviderInitializer
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/main/resources/saml2-metadata-oidcmd-config.xml b/oidc-common-saml-impl/src/main/resources/saml2-metadata-oidcmd-config.xml
new file mode 100644
index 0000000..59ad4b4
--- /dev/null
+++ b/oidc-common-saml-impl/src/main/resources/saml2-metadata-oidcmd-config.xml
@@ -0,0 +1,176 @@
+<?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.oidc.saml.xmlobject.impl.ApplicationTypeBuilder"/>
+            <MarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.ApplicationTypeMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.ApplicationTypeUnmarshaller"/>
+        </ObjectProvider>
+
+        <ObjectProvider qualifiedName="oidcmd:ClientSecretKeyReference">
+            <BuilderClass className="net.shibboleth.oidc.saml.xmlobject.impl.ClientSecretKeyReferenceBuilder"/>
+            <MarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.ClientSecretKeyReferenceMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.ClientSecretKeyReferenceUnmarshaller"/>
+        </ObjectProvider>
+
+        <ObjectProvider qualifiedName="oidcmd:ClientSecret">
+            <BuilderClass className="net.shibboleth.oidc.saml.xmlobject.impl.ClientSecretBuilder"/>
+            <MarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.ClientSecretMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.ClientSecretUnmarshaller"/>
+        </ObjectProvider>
+
+        <ObjectProvider qualifiedName="oidcmd:ClientUri">
+            <BuilderClass className="net.shibboleth.oidc.saml.xmlobject.impl.ClientUriBuilder"/>
+            <MarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.ClientUriMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.ClientUriUnmarshaller"/>
+        </ObjectProvider>
+
+        <ObjectProvider qualifiedName="oidcmd:DefaultAcrValue">
+            <BuilderClass className="net.shibboleth.oidc.saml.xmlobject.impl.DefaultAcrValueBuilder"/>
+            <MarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.DefaultAcrValueMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.DefaultAcrValueUnmarshaller"/>
+        </ObjectProvider>
+
+        <ObjectProvider qualifiedName="oidcmd:GrantType">
+            <BuilderClass className="net.shibboleth.oidc.saml.xmlobject.impl.GrantTypeBuilder"/>
+            <MarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.GrantTypeMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.GrantTypeUnmarshaller"/>
+        </ObjectProvider>
+
+        <ObjectProvider qualifiedName="oidcmd:IdTokenEncryptedResponseAlg">
+            <BuilderClass className="net.shibboleth.oidc.saml.xmlobject.impl.IdTokenEncryptedResponseAlgBuilder"/>
+            <MarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.IdTokenEncryptedResponseAlgMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.IdTokenEncryptedResponseAlgUnmarshaller"/>
+        </ObjectProvider>
+        
+        <ObjectProvider qualifiedName="oidcmd:IdTokenEncryptedResponseEnc">
+            <BuilderClass className="net.shibboleth.oidc.saml.xmlobject.impl.IdTokenEncryptedResponseEncBuilder"/>
+            <MarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.IdTokenEncryptedResponseEncMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.IdTokenEncryptedResponseEncUnmarshaller"/>
+        </ObjectProvider>
+        
+        <ObjectProvider qualifiedName="oidcmd:IdTokenSignedResponseAlg">
+            <BuilderClass className="net.shibboleth.oidc.saml.xmlobject.impl.IdTokenSignedResponseAlgBuilder"/>
+            <MarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.IdTokenSignedResponseAlgMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.IdTokenSignedResponseAlgUnmarshaller"/>
+        </ObjectProvider>
+        
+        <ObjectProvider qualifiedName="oidcmd:InitiateLoginUri">
+            <BuilderClass className="net.shibboleth.oidc.saml.xmlobject.impl.InitiateLoginUriBuilder"/>
+            <MarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.InitiateLoginUriMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.InitiateLoginUriUnmarshaller"/>
+        </ObjectProvider>
+        
+        <ObjectProvider qualifiedName="oidcmd:JwksData">
+            <BuilderClass className="net.shibboleth.oidc.saml.xmlobject.impl.JwksDataBuilder"/>
+            <MarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.JwksDataMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.JwksDataUnmarshaller"/>
+        </ObjectProvider>
+        
+        <ObjectProvider qualifiedName="oidcmd:JwksUri">
+            <BuilderClass className="net.shibboleth.oidc.saml.xmlobject.impl.JwksUriBuilder"/>
+            <MarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.JwksUriMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.JwksUriUnmarshaller"/>
+        </ObjectProvider>
+        
+        <ObjectProvider qualifiedName="oidcmd:OAuthRPExtensions">
+            <BuilderClass className="net.shibboleth.oidc.saml.xmlobject.impl.OAuthRPExtensionsBuilder"/>
+            <MarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.OAuthRPExtensionsMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.OAuthRPExtensionsUnmarshaller"/>
+        </ObjectProvider>
+        
+        <ObjectProvider qualifiedName="oidcmd:PostLogoutRedirectUri">
+            <BuilderClass className="net.shibboleth.oidc.saml.xmlobject.impl.PostLogoutRedirectUriBuilder"/>
+            <MarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.PostLogoutRedirectUriMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.PostLogoutRedirectUriUnmarshaller"/>
+        </ObjectProvider>
+
+        <ObjectProvider qualifiedName="oidcmd:RequestObjectEncryptionAlg">
+            <BuilderClass className="net.shibboleth.oidc.saml.xmlobject.impl.RequestObjectEncryptionAlgBuilder"/>
+            <MarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.RequestObjectEncryptionAlgMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.RequestObjectEncryptionAlgUnmarshaller"/>
+        </ObjectProvider>
+
+        <ObjectProvider qualifiedName="oidcmd:RequestObjectEncryptionEnc">
+            <BuilderClass className="net.shibboleth.oidc.saml.xmlobject.impl.RequestObjectEncryptionEncBuilder"/>
+            <MarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.RequestObjectEncryptionEncMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.RequestObjectEncryptionEncUnmarshaller"/>
+        </ObjectProvider>
+
+        <ObjectProvider qualifiedName="oidcmd:RequestObjectSigningAlg">
+            <BuilderClass className="net.shibboleth.oidc.saml.xmlobject.impl.RequestObjectSigningAlgBuilder"/>
+            <MarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.RequestObjectSigningAlgMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.RequestObjectSigningAlgUnmarshaller"/>
+        </ObjectProvider>
+
+        <ObjectProvider qualifiedName="oidcmd:RequestUri">
+            <BuilderClass className="net.shibboleth.oidc.saml.xmlobject.impl.RequestUriBuilder"/>
+            <MarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.RequestUriMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.RequestUriUnmarshaller"/>
+        </ObjectProvider>
+
+        <ObjectProvider qualifiedName="oidcmd:ResponseType">
+            <BuilderClass className="net.shibboleth.oidc.saml.xmlobject.impl.ResponseTypeBuilder"/>
+            <MarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.ResponseTypeMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.ResponseTypeUnmarshaller"/>
+        </ObjectProvider>
+        
+        <ObjectProvider qualifiedName="oidcmd:Scope">
+            <BuilderClass className="net.shibboleth.oidc.saml.xmlobject.impl.ScopeBuilder"/>
+            <MarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.ScopeMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.ScopeUnmarshaller"/>
+        </ObjectProvider>
+
+        <ObjectProvider qualifiedName="oidcmd:SectorIdentifierUri">
+            <BuilderClass className="net.shibboleth.oidc.saml.xmlobject.impl.SectorIdentifierUriBuilder"/>
+            <MarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.SectorIdentifierUriMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.SectorIdentifierUriUnmarshaller"/>
+        </ObjectProvider>
+
+        <ObjectProvider qualifiedName="oidcmd:SoftwareId">
+            <BuilderClass className="net.shibboleth.oidc.saml.xmlobject.impl.SoftwareIdBuilder"/>
+            <MarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.SoftwareIdMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.SoftwareIdUnmarshaller"/>
+        </ObjectProvider>
+
+        <ObjectProvider qualifiedName="oidcmd:SoftwareVersion">
+            <BuilderClass className="net.shibboleth.oidc.saml.xmlobject.impl.SoftwareVersionBuilder"/>
+            <MarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.SoftwareVersionMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.SoftwareVersionUnmarshaller"/>
+        </ObjectProvider>
+
+        <ObjectProvider qualifiedName="oidcmd:TokenEndpointAuthMethod">
+            <BuilderClass className="net.shibboleth.oidc.saml.xmlobject.impl.TokenEndpointAuthMethodBuilder"/>
+            <MarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.TokenEndpointAuthMethodMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.TokenEndpointAuthMethodUnmarshaller"/>
+        </ObjectProvider>
+
+        <ObjectProvider qualifiedName="oidcmd:TokenEndpointAuthSigningAlg">
+            <BuilderClass className="net.shibboleth.oidc.saml.xmlobject.impl.TokenEndpointAuthSigningAlgBuilder"/>
+            <MarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.TokenEndpointAuthSigningAlgMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.TokenEndpointAuthSigningAlgUnmarshaller"/>
+        </ObjectProvider>
+
+        <ObjectProvider qualifiedName="oidcmd:UserInfoEncryptedResponseAlg">
+            <BuilderClass className="net.shibboleth.oidc.saml.xmlobject.impl.UserInfoEncryptedResponseAlgBuilder"/>
+            <MarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.UserInfoEncryptedResponseAlgMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.UserInfoEncryptedResponseAlgUnmarshaller"/>
+        </ObjectProvider>
+
+        <ObjectProvider qualifiedName="oidcmd:UserInfoEncryptedResponseEnc">
+            <BuilderClass className="net.shibboleth.oidc.saml.xmlobject.impl.UserInfoEncryptedResponseEncBuilder"/>
+            <MarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.UserInfoEncryptedResponseEncMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.UserInfoEncryptedResponseEncUnmarshaller"/>
+        </ObjectProvider>
+
+        <ObjectProvider qualifiedName="oidcmd:UserInfoSignedResponseAlg">
+            <BuilderClass className="net.shibboleth.oidc.saml.xmlobject.impl.UserInfoSignedResponseAlgBuilder"/>
+            <MarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.UserInfoSignedResponseAlgMarshaller"/>
+            <UnmarshallingClass className="net.shibboleth.oidc.saml.xmlobject.impl.UserInfoSignedResponseAlgUnmarshaller"/>
+        </ObjectProvider>
+
+    </ObjectProviders>
+</XMLTooling>
diff --git a/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/ApplicationTypeTest.java b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/ApplicationTypeTest.java
new file mode 100644
index 0000000..463cd23
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/ApplicationTypeTest.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import javax.xml.namespace.QName;
+
+import net.shibboleth.oidc.saml.xmlobject.ApplicationType;
+
+/**
+ * Test case for creating, marshalling, and unmarshalling {@link ApplicationType}.
+ */
+public class ApplicationTypeTest extends BaseMetadataValueTest {
+    
+    /**
+     * Constructor
+     */
+    public ApplicationTypeTest() {
+        singleElementFile = "/net/shibboleth/oidc/saml/xmlobject/impl/ApplicationType.xml";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected String getExpectedValue() {
+        return "web";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected QName getElementName() {
+        return ApplicationType.DEFAULT_ELEMENT_NAME;
+    }
+
+}
diff --git a/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/BaseMetadataValueTest.java b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/BaseMetadataValueTest.java
new file mode 100644
index 0000000..cd4edf2
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/BaseMetadataValueTest.java
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import javax.xml.namespace.QName;
+
+import org.opensaml.core.testing.XMLObjectProviderBaseTestCase;
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
+import net.shibboleth.oidc.saml.xmlobject.MetadataValueSAMLObject;
+
+/**
+ * Base test case for creating, marshalling, and unmarshalling {@link MetadataValueSAMLObject}s.
+ */
+public abstract class BaseMetadataValueTest extends XMLObjectProviderBaseTestCase {
+    
+    /**
+     * Get the expected value from the file.
+     * @return The expected value.
+     */
+    protected abstract String getExpectedValue();
+    
+    /**
+     * Get the element name.
+     * @return The element name.
+     */
+    protected abstract QName getElementName();
+
+    /** {@inheritDoc} */
+    @Test
+    public void testSingleElementUnmarshall() {
+        MetadataValueSAMLObject object = (MetadataValueSAMLObject) unmarshallElement(singleElementFile);
+        
+        Assert.assertEquals(object.getValue(), getExpectedValue(), "The metadata object did not have expected value");
+    }
+
+    /** {@inheritDoc} */
+    @Test
+    public void testSingleElementMarshall() {
+        MetadataValueSAMLObject object = (MetadataValueSAMLObject) buildXMLObject(getElementName());
+        
+        object.setValue(getExpectedValue());
+
+        assertXMLEquals(expectedDOM, object);
+    }
+
+}
diff --git a/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientSecretKeyReferenceTest.java b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientSecretKeyReferenceTest.java
new file mode 100644
index 0000000..36b5883
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientSecretKeyReferenceTest.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import javax.xml.namespace.QName;
+
+import net.shibboleth.oidc.saml.xmlobject.ClientSecretKeyReference;
+
+/**
+ * Test case for creating, marshalling, and unmarshalling {@link ClientSecretKeyReference}.
+ */
+public class ClientSecretKeyReferenceTest extends BaseMetadataValueTest {
+    
+    /**
+     * Constructor
+     */
+    public ClientSecretKeyReferenceTest() {
+        singleElementFile = "/net/shibboleth/oidc/saml/xmlobject/impl/ClientSecretKeyReference.xml";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected String getExpectedValue() {
+        return "mockKeyReference";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected QName getElementName() {
+        return ClientSecretKeyReference.DEFAULT_ELEMENT_NAME;
+    }
+
+}
diff --git a/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientSecretTest.java b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientSecretTest.java
new file mode 100644
index 0000000..461bf53
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientSecretTest.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import javax.xml.namespace.QName;
+
+import net.shibboleth.oidc.saml.xmlobject.ClientSecret;
+
+/**
+ * Test case for creating, marshalling, and unmarshalling {@link ClientSecret}.
+ */
+public class ClientSecretTest extends BaseMetadataValueTest {
+    
+    /**
+     * Constructor
+     */
+    public ClientSecretTest() {
+        singleElementFile = "/net/shibboleth/oidc/saml/xmlobject/impl/ClientSecret.xml";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected String getExpectedValue() {
+        return "mockSecret";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected QName getElementName() {
+        return ClientSecret.DEFAULT_ELEMENT_NAME;
+    }
+
+}
diff --git a/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientUriTest.java b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientUriTest.java
new file mode 100644
index 0000000..f4787bc
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/ClientUriTest.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import javax.xml.namespace.QName;
+
+import net.shibboleth.oidc.saml.xmlobject.ClientUri;
+
+/**
+ * Test case for creating, marshalling, and unmarshalling {@link ClientUri}.
+ */
+public class ClientUriTest extends BaseMetadataValueTest {
+    
+    /**
+     * Constructor
+     */
+    public ClientUriTest() {
+        singleElementFile = "/net/shibboleth/oidc/saml/xmlobject/impl/ClientUri.xml";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected String getExpectedValue() {
+        return "https://example.org";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected QName getElementName() {
+        return ClientUri.DEFAULT_ELEMENT_NAME;
+    }
+
+}
diff --git a/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/DefaultAcrValueTest.java b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/DefaultAcrValueTest.java
new file mode 100644
index 0000000..b045c22
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/DefaultAcrValueTest.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import javax.xml.namespace.QName;
+
+import net.shibboleth.oidc.saml.xmlobject.DefaultAcrValue;
+
+/**
+ * Test case for creating, marshalling, and unmarshalling {@link DefaultAcrValue}.
+ */
+public class DefaultAcrValueTest extends BaseMetadataValueTest {
+    
+    /**
+     * Constructor
+     */
+    public DefaultAcrValueTest() {
+        singleElementFile = "/net/shibboleth/oidc/saml/xmlobject/impl/DefaultAcrValue.xml";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected String getExpectedValue() {
+        return "password";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected QName getElementName() {
+        return DefaultAcrValue.DEFAULT_ELEMENT_NAME;
+    }
+
+}
diff --git a/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/GrantTypeTest.java b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/GrantTypeTest.java
new file mode 100644
index 0000000..c8a6cea
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/GrantTypeTest.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import javax.xml.namespace.QName;
+
+import net.shibboleth.oidc.saml.xmlobject.GrantType;
+
+/**
+ * Test case for creating, marshalling, and unmarshalling {@link GrantType}.
+ */
+public class GrantTypeTest extends BaseMetadataValueTest {
+    
+    /**
+     * Constructor
+     */
+    public GrantTypeTest() {
+        singleElementFile = "/net/shibboleth/oidc/saml/xmlobject/impl/GrantType.xml";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected String getExpectedValue() {
+        return "authorization_code";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected QName getElementName() {
+        return GrantType.DEFAULT_ELEMENT_NAME;
+    }
+
+}
diff --git a/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenEncryptedResponseAlgTest.java b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenEncryptedResponseAlgTest.java
new file mode 100644
index 0000000..484eb33
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenEncryptedResponseAlgTest.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import javax.xml.namespace.QName;
+
+import net.shibboleth.oidc.saml.xmlobject.IdTokenEncryptedResponseAlg;
+
+/**
+ * Test case for creating, marshalling, and unmarshalling {@link IdTokenEncryptedResponseAlg}.
+ */
+public class IdTokenEncryptedResponseAlgTest extends BaseMetadataValueTest {
+    
+    /**
+     * Constructor
+     */
+    public IdTokenEncryptedResponseAlgTest() {
+        singleElementFile = "/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenEncryptedResponseAlg.xml";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected String getExpectedValue() {
+        return "IdTokenEncryptedResponseAlgValue";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected QName getElementName() {
+        return IdTokenEncryptedResponseAlg.DEFAULT_ELEMENT_NAME;
+    }
+
+}
diff --git a/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenEncryptedResponseEncTest.java b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenEncryptedResponseEncTest.java
new file mode 100644
index 0000000..87fc47d
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenEncryptedResponseEncTest.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import javax.xml.namespace.QName;
+
+import net.shibboleth.oidc.saml.xmlobject.IdTokenEncryptedResponseEnc;
+
+/**
+ * Test case for creating, marshalling, and unmarshalling {@link IdTokenEncryptedResponseEnc}.
+ */
+public class IdTokenEncryptedResponseEncTest extends BaseMetadataValueTest {
+    
+    /**
+     * Constructor
+     */
+    public IdTokenEncryptedResponseEncTest() {
+        singleElementFile = "/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenEncryptedResponseEnc.xml";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected String getExpectedValue() {
+        return "IdTokenEncryptedResponseEncValue";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected QName getElementName() {
+        return IdTokenEncryptedResponseEnc.DEFAULT_ELEMENT_NAME;
+    }
+
+}
diff --git a/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenSignedResponseAlgTest.java b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenSignedResponseAlgTest.java
new file mode 100644
index 0000000..ea4d034
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenSignedResponseAlgTest.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import javax.xml.namespace.QName;
+
+import net.shibboleth.oidc.saml.xmlobject.IdTokenSignedResponseAlg;
+
+/**
+ * Test case for creating, marshalling, and unmarshalling {@link IdTokenSignedResponseAlg}.
+ */
+public class IdTokenSignedResponseAlgTest extends BaseMetadataValueTest {
+    
+    /**
+     * Constructor
+     */
+    public IdTokenSignedResponseAlgTest() {
+        singleElementFile = "/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenSignedResponseAlg.xml";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected String getExpectedValue() {
+        return "IdTokenSignedResponseAlgValue";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected QName getElementName() {
+        return IdTokenSignedResponseAlg.DEFAULT_ELEMENT_NAME;
+    }
+
+}
diff --git a/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/InitiateLoginUriTest.java b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/InitiateLoginUriTest.java
new file mode 100644
index 0000000..e6c6518
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/InitiateLoginUriTest.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import javax.xml.namespace.QName;
+
+import net.shibboleth.oidc.saml.xmlobject.InitiateLoginUri;
+
+/**
+ * Test case for creating, marshalling, and unmarshalling {@link InitiateLoginUri}.
+ */
+public class InitiateLoginUriTest extends BaseMetadataValueTest {
+    
+    /**
+     * Constructor
+     */
+    public InitiateLoginUriTest() {
+        singleElementFile = "/net/shibboleth/oidc/saml/xmlobject/impl/InitiateLoginUri.xml";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected String getExpectedValue() {
+        return "https://example.org/start";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected QName getElementName() {
+        return InitiateLoginUri.DEFAULT_ELEMENT_NAME;
+    }
+
+}
diff --git a/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/JwksDataTest.java b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/JwksDataTest.java
new file mode 100644
index 0000000..3972da3
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/JwksDataTest.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import javax.xml.namespace.QName;
+
+import net.shibboleth.oidc.saml.xmlobject.JwksData;
+
+/**
+ * Test case for creating, marshalling, and unmarshalling {@link JwksData}.
+ */
+public class JwksDataTest extends BaseMetadataValueTest {
+    
+    /**
+     * Constructor
+     */
+    public JwksDataTest() {
+        singleElementFile = "/net/shibboleth/oidc/saml/xmlobject/impl/JwksData.xml";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected String getExpectedValue() {
+        return "base64data";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected QName getElementName() {
+        return JwksData.DEFAULT_ELEMENT_NAME;
+    }
+
+}
diff --git a/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/JwksUriTest.java b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/JwksUriTest.java
new file mode 100644
index 0000000..88d33d2
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/JwksUriTest.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import javax.xml.namespace.QName;
+
+import net.shibboleth.oidc.saml.xmlobject.JwksUri;
+
+/**
+ * Test case for creating, marshalling, and unmarshalling {@link JwksUri}.
+ */
+public class JwksUriTest extends BaseMetadataValueTest {
+    
+    /**
+     * Constructor
+     */
+    public JwksUriTest() {
+        singleElementFile = "/net/shibboleth/oidc/saml/xmlobject/impl/JwksUri.xml";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected String getExpectedValue() {
+        return "https://example.org/jwks";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected QName getElementName() {
+        return JwksUri.DEFAULT_ELEMENT_NAME;
+    }
+
+}
diff --git a/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/OAuthRPExtensionsTest.java b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/OAuthRPExtensionsTest.java
new file mode 100644
index 0000000..c012df3
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/OAuthRPExtensionsTest.java
@@ -0,0 +1,207 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import javax.xml.namespace.QName;
+
+import org.opensaml.core.testing.XMLObjectProviderBaseTestCase;
+import org.opensaml.saml.common.AbstractSAMLObjectBuilder;
+import org.opensaml.saml.common.xml.SAMLConstants;
+import org.opensaml.saml.saml2.metadata.NameIDFormat;
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
+import net.shibboleth.oidc.saml.xmlobject.MetadataValueSAMLObject;
+import net.shibboleth.oidc.saml.xmlobject.OAuthRPExtensions;
+
+/**
+ * Test case for creating, marshalling, and unmarshalling {@link OAuthRPExtensions}.
+ */
+public class OAuthRPExtensionsTest extends XMLObjectProviderBaseTestCase {
+    
+    public static final String EXTENSION_NAMESPACE = "urn:unknown:namespace";
+    
+    public static final QName ATTRIBUTE_EXT_QNAME = new QName(EXTENSION_NAMESPACE, "attributeExtension1", "unknown");
+    
+    public static final String ATTRIBUTE_EXT_VALUE = "extensionValue1";
+    
+    /**
+     * Constructor
+     */
+    public OAuthRPExtensionsTest() {
+        childElementsFile = "/net/shibboleth/oidc/saml/xmlobject/impl/OAuthRPExtensions_ordered.xml";
+    }
+
+    @Override
+    @Test
+    public void testChildElementsMarshall() {
+
+        final OAuthRPExtensions rpExtensions = (OAuthRPExtensions) buildXMLObject(OAuthRPExtensions.TYPE_NAME);
+        rpExtensions.setApplicationType(buildMetadataValueObject(new ApplicationTypeBuilder(), "web"));
+        rpExtensions.setClientUri(buildMetadataValueObject(new ClientUriBuilder(), "https://example.org/clientUri"));
+        rpExtensions.getDefaultAcrValues().add(buildMetadataValueObject(new DefaultAcrValueBuilder(), "password"));
+        rpExtensions.getDefaultAcrValues().add(buildMetadataValueObject(new DefaultAcrValueBuilder(), "mfa"));
+        rpExtensions.getGrantTypes().add(buildMetadataValueObject(new GrantTypeBuilder(), "authorization_code"));
+        rpExtensions.setIdTokenEncryptedResponseAlg(buildMetadataValueObject(new IdTokenEncryptedResponseAlgBuilder(),
+                "A256KW"));
+        rpExtensions.setIdTokenEncryptedResponseEnc(buildMetadataValueObject(new IdTokenEncryptedResponseEncBuilder(),
+                "A256GCM"));
+        rpExtensions.setIdTokenSignedResponseAlg(buildMetadataValueObject(new IdTokenSignedResponseAlgBuilder(),
+                "RS512"));
+        rpExtensions.setInitiateLoginUri(buildMetadataValueObject(new InitiateLoginUriBuilder(),
+                "https://example.org/initiateLogin"));
+        rpExtensions.getPostLogoutRedirectUris().add(buildMetadataValueObject(new PostLogoutRedirectUriBuilder(),
+                "https://example.org/postLogout"));
+        rpExtensions.setRequestObjectEncryptionAlg(buildMetadataValueObject(new RequestObjectEncryptionAlgBuilder(), 
+                "A128KW"));
+        rpExtensions.setRequestObjectEncryptionEnc(buildMetadataValueObject(new RequestObjectEncryptionEncBuilder(),
+                "A128GCM"));
+        rpExtensions.setRequestObjectSigningAlg(buildMetadataValueObject(new RequestObjectSigningAlgBuilder(),
+                "RS256"));
+        rpExtensions.getRequestUris().add(buildMetadataValueObject(new RequestUriBuilder(),
+                "https://example.org/request"));
+        rpExtensions.getResponseTypes().add(buildMetadataValueObject(new ResponseTypeBuilder(), "code"));
+        rpExtensions.getResponseTypes().add(buildMetadataValueObject(new ResponseTypeBuilder(), "id_token"));
+        rpExtensions.getScopes().add(buildMetadataValueObject(new ScopeBuilder(), "openid"));
+        rpExtensions.getScopes().add(buildMetadataValueObject(new ScopeBuilder(), "profile"));
+        rpExtensions.setSoftwareId(buildMetadataValueObject(new SoftwareIdBuilder(), "mockSoftwareId"));
+        rpExtensions.setSoftwareVersion(buildMetadataValueObject(new SoftwareVersionBuilder(),
+                "mockSoftwareVersion"));
+        rpExtensions.setTokenEndpointAuthMethod(buildMetadataValueObject(new TokenEndpointAuthMethodBuilder(),
+                "client_secret_basic"));
+        rpExtensions.setTokenEndpointAuthSigningAlg(buildMetadataValueObject(new TokenEndpointAuthSigningAlgBuilder(),
+                "RS512"));
+        rpExtensions.setSectorIdentifierUri(buildMetadataValueObject(new SectorIdentifierUriBuilder(),
+                "https://example.org/sectorIdentifier"));
+        rpExtensions.setUserInfoEncryptedResponseAlg(buildMetadataValueObject(
+                new UserInfoEncryptedResponseAlgBuilder(), "A192KW"));
+        rpExtensions.setUserInfoEncryptedResponseEnc(buildMetadataValueObject(
+                new UserInfoEncryptedResponseEncBuilder(), "A192GCM"));
+        rpExtensions.setUserInfoSignedResponseAlg(buildMetadataValueObject(new UserInfoSignedResponseAlgBuilder(),
+                "RS384"));
+        rpExtensions.getUnknownAttributes().put(ATTRIBUTE_EXT_QNAME, ATTRIBUTE_EXT_VALUE);
+        
+        final QName nameIDFormatQName =
+                new QName(SAMLConstants.SAML20MD_NS, NameIDFormat.DEFAULT_ELEMENT_LOCAL_NAME,
+                        SAMLConstants.SAML20MD_PREFIX);
+        rpExtensions.getUnknownXMLObjects().add((NameIDFormat) buildXMLObject(nameIDFormatQName));
+
+        assertXMLEquals(expectedChildElementsDOM, rpExtensions);
+    }
+
+    @Override
+    @Test
+    public void testChildElementsUnmarshall() {
+        OAuthRPExtensions rpExtensions = (OAuthRPExtensions) 
+                unmarshallElement("/net/shibboleth/oidc/saml/xmlobject/impl/OAuthRPExtensions.xml");
+        
+        final Object attributeExt = rpExtensions.getUnknownAttributes().get(ATTRIBUTE_EXT_QNAME);
+        Assert.assertNotNull(attributeExt);
+        Assert.assertEquals(attributeExt, ATTRIBUTE_EXT_VALUE);
+        
+        final QName nameIDFormatQName =
+                new QName(SAMLConstants.SAML20MD_NS, NameIDFormat.DEFAULT_ELEMENT_LOCAL_NAME,
+                        SAMLConstants.SAML20MD_PREFIX);
+        Assert.assertNotNull(rpExtensions.getUnknownXMLObjects(nameIDFormatQName));
+        
+        assertMetadataValue(rpExtensions.getApplicationType(), "web", 
+                "The application type did not have expected value");
+        assertMetadataValue(rpExtensions.getClientUri(), "https://example.org/clientUri", 
+                "The client URI did not have expected value");
+        assertMetadataValueList(rpExtensions.getDefaultAcrValues(), Arrays.asList("password", "mfa"),
+                "The default ACR values did not have expected value");
+        assertMetadataValueList(rpExtensions.getGrantTypes(), Arrays.asList("authorization_code"),
+                "The grant types did not have expected value");
+        assertMetadataValue(rpExtensions.getIdTokenEncryptedResponseAlg(), "A256KW",
+                "The IDToken encrypted response alg did not have expected value");
+        assertMetadataValue(rpExtensions.getIdTokenEncryptedResponseEnc(), "A256GCM",
+                "The IDToken encrypted response enc did not have expected value");
+        assertMetadataValue(rpExtensions.getIdTokenSignedResponseAlg(), "RS512",
+                "The IDToken signed response alg did not have expected value");
+        assertMetadataValue(rpExtensions.getInitiateLoginUri(), "https://example.org/initiateLogin",
+                "The initiate login URI did not have expected value");
+        assertMetadataValueList(rpExtensions.getPostLogoutRedirectUris(),
+                Arrays.asList("https://example.org/postLogout"),
+                "The post logout redirect URIs did not have expected value");
+        assertMetadataValue(rpExtensions.getRequestObjectEncryptionAlg(), "A128KW",
+                "The request object encryption alg did not have expected value");
+        assertMetadataValue(rpExtensions.getRequestObjectEncryptionEnc(), "A128GCM",
+                "The request object encryption enc did not have expected value");
+        assertMetadataValue(rpExtensions.getRequestObjectSigningAlg(), "RS256",
+                "The request object signing alg did not have expected value");
+        assertMetadataValueList(rpExtensions.getRequestUris(), Arrays.asList("https://example.org/request"),
+                "The request URIs did not have expected value");
+        assertMetadataValueList(rpExtensions.getResponseTypes(), Arrays.asList("code", "id_token"),
+                "The response types did not have expected value");
+        assertMetadataValueList(rpExtensions.getScopes(), Arrays.asList("openid", "profile"),
+                "The scope did not have expected value");
+        assertMetadataValue(rpExtensions.getSoftwareId(), "mockSoftwareId",
+                "The software ID did not have expected value");
+        assertMetadataValue(rpExtensions.getSoftwareVersion(), "mockSoftwareVersion",
+                "The software version did not have expected value");
+        assertMetadataValue(rpExtensions.getTokenEndpointAuthMethod(), "client_secret_basic",
+                "The token endpoint auth method did not have expected value");
+        assertMetadataValue(rpExtensions.getTokenEndpointAuthSigningAlg(), "RS512",
+                "The token endpoint auth signing alg did not have expected value");
+        assertMetadataValue(rpExtensions.getSectorIdentifierUri(), "https://example.org/sectorIdentifier",
+                "The sector identifier URI did not have expected value");
+        assertMetadataValue(rpExtensions.getUserInfoEncryptedResponseAlg(), "A192KW",
+                "The user info encrypted response alg did not have expected value");
+        assertMetadataValue(rpExtensions.getUserInfoEncryptedResponseEnc(), "A192GCM",
+                "The user info encrypted response enc did not have expected value");
+        assertMetadataValue(rpExtensions.getUserInfoSignedResponseAlg(), "RS384",
+                "The user info signing response alg did not have expected value");
+    }
+    
+    protected <T extends MetadataValueSAMLObject> void assertMetadataValue(final T metadataValue,
+            final String expectedValue, final String message) {
+        Assert.assertEquals(metadataValue.getValue(), expectedValue, message);
+    }
+
+    protected <T extends MetadataValueSAMLObject> void assertMetadataValueSet(final Set<T> metadataValues,
+            final Set<T> expectedValues, final String message) {
+        final Set<String> values = metadataValues.stream().map(T::getValue).collect(Collectors.toSet());
+        Assert.assertEquals(values, expectedValues, message);
+    }
+
+    protected <T extends MetadataValueSAMLObject> void assertMetadataValueList(final List<T> metadataValues,
+            final List<String> expectedValues, final String message) {
+        final List<String> values = metadataValues.stream().map(T::getValue).collect(Collectors.toList());
+        Assert.assertEquals(values, expectedValues, message);
+    }
+    
+    protected <T extends MetadataValueSAMLObject, B extends AbstractSAMLObjectBuilder<T>> T 
+            buildMetadataValueObject(final B builder, final String value) {
+        final T object = builder.buildObject();
+        object.setValue(value);
+        return object;
+    }
+
+    @Override
+    public void testSingleElementMarshall() {
+    }
+
+    @Override
+    public void testSingleElementUnmarshall() {
+    }
+}
diff --git a/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/PostLogoutRedirectUriTest.java b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/PostLogoutRedirectUriTest.java
new file mode 100644
index 0000000..0de886b
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/PostLogoutRedirectUriTest.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import javax.xml.namespace.QName;
+
+import net.shibboleth.oidc.saml.xmlobject.PostLogoutRedirectUri;
+
+/**
+ * Test case for creating, marshalling, and unmarshalling {@link PostLogoutRedirectUri}.
+ */
+public class PostLogoutRedirectUriTest extends BaseMetadataValueTest {
+    
+    /**
+     * Constructor
+     */
+    public PostLogoutRedirectUriTest() {
+        singleElementFile = "/net/shibboleth/oidc/saml/xmlobject/impl/PostLogoutRedirectUri.xml";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected String getExpectedValue() {
+        return "https://example.org/postLogout";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected QName getElementName() {
+        return PostLogoutRedirectUri.DEFAULT_ELEMENT_NAME;
+    }
+
+}
diff --git a/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectEncryptionAlgTest.java b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectEncryptionAlgTest.java
new file mode 100644
index 0000000..3fc7832
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectEncryptionAlgTest.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import javax.xml.namespace.QName;
+
+import net.shibboleth.oidc.saml.xmlobject.RequestObjectEncryptionAlg;
+
+/**
+ * Test case for creating, marshalling, and unmarshalling {@link RequestObjectEncryptionAlg}.
+ */
+public class RequestObjectEncryptionAlgTest extends BaseMetadataValueTest {
+    
+    /**
+     * Constructor
+     */
+    public RequestObjectEncryptionAlgTest() {
+        singleElementFile = "/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectEncryptionAlg.xml";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected String getExpectedValue() {
+        return "RequestObjectEncryptionAlgValue";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected QName getElementName() {
+        return RequestObjectEncryptionAlg.DEFAULT_ELEMENT_NAME;
+    }
+
+}
diff --git a/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectEncryptionEncTest.java b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectEncryptionEncTest.java
new file mode 100644
index 0000000..ee7e68b
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectEncryptionEncTest.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import javax.xml.namespace.QName;
+
+import net.shibboleth.oidc.saml.xmlobject.RequestObjectEncryptionEnc;
+
+/**
+ * Test case for creating, marshalling, and unmarshalling {@link RequestObjectEncryptionEnc}.
+ */
+public class RequestObjectEncryptionEncTest extends BaseMetadataValueTest {
+    
+    /**
+     * Constructor
+     */
+    public RequestObjectEncryptionEncTest() {
+        singleElementFile = "/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectEncryptionEnc.xml";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected String getExpectedValue() {
+        return "RequestObjectEncryptionEncValue";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected QName getElementName() {
+        return RequestObjectEncryptionEnc.DEFAULT_ELEMENT_NAME;
+    }
+
+}
diff --git a/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectSigningAlgTest.java b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectSigningAlgTest.java
new file mode 100644
index 0000000..21939e1
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectSigningAlgTest.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import javax.xml.namespace.QName;
+
+import net.shibboleth.oidc.saml.xmlobject.RequestObjectSigningAlg;
+
+/**
+ * Test case for creating, marshalling, and unmarshalling {@link RequestObjectSigningAlg}.
+ */
+public class RequestObjectSigningAlgTest extends BaseMetadataValueTest {
+    
+    /**
+     * Constructor
+     */
+    public RequestObjectSigningAlgTest() {
+        singleElementFile = "/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectSigningAlg.xml";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected String getExpectedValue() {
+        return "RequestObjectSigningAlgValue";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected QName getElementName() {
+        return RequestObjectSigningAlg.DEFAULT_ELEMENT_NAME;
+    }
+
+}
diff --git a/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestUriTest.java b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestUriTest.java
new file mode 100644
index 0000000..a279a47
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/RequestUriTest.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import javax.xml.namespace.QName;
+
+import net.shibboleth.oidc.saml.xmlobject.RequestUri;
+
+/**
+ * Test case for creating, marshalling, and unmarshalling {@link RequestUri}.
+ */
+public class RequestUriTest extends BaseMetadataValueTest {
+    
+    /**
+     * Constructor
+     */
+    public RequestUriTest() {
+        singleElementFile = "/net/shibboleth/oidc/saml/xmlobject/impl/RequestUri.xml";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected String getExpectedValue() {
+        return "https://example.org/request";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected QName getElementName() {
+        return RequestUri.DEFAULT_ELEMENT_NAME;
+    }
+
+}
diff --git a/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/ResponseTypeTest.java b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/ResponseTypeTest.java
new file mode 100644
index 0000000..7639ef6
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/ResponseTypeTest.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import javax.xml.namespace.QName;
+
+import net.shibboleth.oidc.saml.xmlobject.ResponseType;
+
+/**
+ * Test case for creating, marshalling, and unmarshalling {@link ResponseType}.
+ */
+public class ResponseTypeTest extends BaseMetadataValueTest {
+    
+    /**
+     * Constructor
+     */
+    public ResponseTypeTest() {
+        singleElementFile = "/net/shibboleth/oidc/saml/xmlobject/impl/ResponseType.xml";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected String getExpectedValue() {
+        return "id_token";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected QName getElementName() {
+        return ResponseType.DEFAULT_ELEMENT_NAME;
+    }
+
+}
diff --git a/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/ScopeTest.java b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/ScopeTest.java
new file mode 100644
index 0000000..554abb5
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/ScopeTest.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import javax.xml.namespace.QName;
+
+import net.shibboleth.oidc.saml.xmlobject.Scope;
+
+/**
+ * Test case for creating, marshalling, and unmarshalling {@link Scope}.
+ */
+public class ScopeTest extends BaseMetadataValueTest {
+    
+    /**
+     * Constructor
+     */
+    public ScopeTest() {
+        singleElementFile = "/net/shibboleth/oidc/saml/xmlobject/impl/Scope.xml";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected String getExpectedValue() {
+        return "profile";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected QName getElementName() {
+        return Scope.DEFAULT_ELEMENT_NAME;
+    }
+
+}
diff --git a/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/SectorIdentifierUriTest.java b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/SectorIdentifierUriTest.java
new file mode 100644
index 0000000..ca73da6
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/SectorIdentifierUriTest.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import javax.xml.namespace.QName;
+
+import net.shibboleth.oidc.saml.xmlobject.SectorIdentifierUri;
+
+/**
+ * Test case for creating, marshalling, and unmarshalling {@link SectorIdentifierUri}.
+ */
+public class SectorIdentifierUriTest extends BaseMetadataValueTest {
+    
+    /**
+     * Constructor
+     */
+    public SectorIdentifierUriTest() {
+        singleElementFile = "/net/shibboleth/oidc/saml/xmlobject/impl/SectorIdentifierUri.xml";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected String getExpectedValue() {
+        return "https://example.org/shared";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected QName getElementName() {
+        return SectorIdentifierUri.DEFAULT_ELEMENT_NAME;
+    }
+
+}
diff --git a/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/SoftwareIdTest.java b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/SoftwareIdTest.java
new file mode 100644
index 0000000..70b26e6
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/SoftwareIdTest.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import javax.xml.namespace.QName;
+
+import net.shibboleth.oidc.saml.xmlobject.SoftwareId;
+
+/**
+ * Test case for creating, marshalling, and unmarshalling {@link SoftwareId}.
+ */
+public class SoftwareIdTest extends BaseMetadataValueTest {
+    
+    /**
+     * Constructor
+     */
+    public SoftwareIdTest() {
+        singleElementFile = "/net/shibboleth/oidc/saml/xmlobject/impl/SoftwareId.xml";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected String getExpectedValue() {
+        return "id12";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected QName getElementName() {
+        return SoftwareId.DEFAULT_ELEMENT_NAME;
+    }
+
+}
diff --git a/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/SoftwareVersionTest.java b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/SoftwareVersionTest.java
new file mode 100644
index 0000000..b23b225
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/SoftwareVersionTest.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import javax.xml.namespace.QName;
+
+import net.shibboleth.oidc.saml.xmlobject.SoftwareVersion;
+
+/**
+ * Test case for creating, marshalling, and unmarshalling {@link SoftwareVersion}.
+ */
+public class SoftwareVersionTest extends BaseMetadataValueTest {
+    
+    /**
+     * Constructor
+     */
+    public SoftwareVersionTest() {
+        singleElementFile = "/net/shibboleth/oidc/saml/xmlobject/impl/SoftwareVersion.xml";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected String getExpectedValue() {
+        return "1.0";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected QName getElementName() {
+        return SoftwareVersion.DEFAULT_ELEMENT_NAME;
+    }
+
+}
diff --git a/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/TokenEndpointAuthMethodTest.java b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/TokenEndpointAuthMethodTest.java
new file mode 100644
index 0000000..54a14ef
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/TokenEndpointAuthMethodTest.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import javax.xml.namespace.QName;
+
+import net.shibboleth.oidc.saml.xmlobject.TokenEndpointAuthMethod;
+
+/**
+ * Test case for creating, marshalling, and unmarshalling {@link TokenEndpointAuthMethod}.
+ */
+public class TokenEndpointAuthMethodTest extends BaseMetadataValueTest {
+    
+    /**
+     * Constructor
+     */
+    public TokenEndpointAuthMethodTest() {
+        singleElementFile = "/net/shibboleth/oidc/saml/xmlobject/impl/TokenEndpointAuthMethod.xml";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected String getExpectedValue() {
+        return "client_secret_post";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected QName getElementName() {
+        return TokenEndpointAuthMethod.DEFAULT_ELEMENT_NAME;
+    }
+
+}
diff --git a/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/TokenEndpointAuthSigningAlgTest.java b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/TokenEndpointAuthSigningAlgTest.java
new file mode 100644
index 0000000..fca1335
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/TokenEndpointAuthSigningAlgTest.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import javax.xml.namespace.QName;
+
+import net.shibboleth.oidc.saml.xmlobject.TokenEndpointAuthSigningAlg;
+
+/**
+ * Test case for creating, marshalling, and unmarshalling {@link TokenEndpointAuthSigningAlg}.
+ */
+public class TokenEndpointAuthSigningAlgTest extends BaseMetadataValueTest {
+    
+    /**
+     * Constructor
+     */
+    public TokenEndpointAuthSigningAlgTest() {
+        singleElementFile = "/net/shibboleth/oidc/saml/xmlobject/impl/TokenEndpointAuthSigningAlg.xml";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected String getExpectedValue() {
+        return "TokenEndpointAuthSigningAlgValue";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected QName getElementName() {
+        return TokenEndpointAuthSigningAlg.DEFAULT_ELEMENT_NAME;
+    }
+
+}
diff --git a/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoEncryptedResponseAlgTest.java b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoEncryptedResponseAlgTest.java
new file mode 100644
index 0000000..80bb4f5
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoEncryptedResponseAlgTest.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import javax.xml.namespace.QName;
+
+import net.shibboleth.oidc.saml.xmlobject.UserInfoEncryptedResponseAlg;
+
+/**
+ * Test case for creating, marshalling, and unmarshalling {@link UserInfoEncryptedResponseAlg}.
+ */
+public class UserInfoEncryptedResponseAlgTest extends BaseMetadataValueTest {
+    
+    /**
+     * Constructor
+     */
+    public UserInfoEncryptedResponseAlgTest() {
+        singleElementFile = "/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoEncryptedResponseAlg.xml";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected String getExpectedValue() {
+        return "UserInfoEncryptedResponseAlgValue";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected QName getElementName() {
+        return UserInfoEncryptedResponseAlg.DEFAULT_ELEMENT_NAME;
+    }
+
+}
diff --git a/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoEncryptedResponseEncTest.java b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoEncryptedResponseEncTest.java
new file mode 100644
index 0000000..b3df641
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoEncryptedResponseEncTest.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import javax.xml.namespace.QName;
+
+import net.shibboleth.oidc.saml.xmlobject.UserInfoEncryptedResponseEnc;
+
+/**
+ * Test case for creating, marshalling, and unmarshalling {@link UserInfoEncryptedResponseEnc}.
+ */
+public class UserInfoEncryptedResponseEncTest extends BaseMetadataValueTest {
+    
+    /**
+     * Constructor
+     */
+    public UserInfoEncryptedResponseEncTest() {
+        singleElementFile = "/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoEncryptedResponseEnc.xml";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected String getExpectedValue() {
+        return "UserInfoEncryptedResponseEncValue";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected QName getElementName() {
+        return UserInfoEncryptedResponseEnc.DEFAULT_ELEMENT_NAME;
+    }
+
+}
diff --git a/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoSignedResponseAlgTest.java b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoSignedResponseAlgTest.java
new file mode 100644
index 0000000..786fc4f
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/java/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoSignedResponseAlgTest.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You 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.oidc.saml.xmlobject.impl;
+
+import javax.xml.namespace.QName;
+
+import net.shibboleth.oidc.saml.xmlobject.UserInfoSignedResponseAlg;
+
+/**
+ * Test case for creating, marshalling, and unmarshalling {@link UserInfoSignedResponseAlg}.
+ */
+public class UserInfoSignedResponseAlgTest extends BaseMetadataValueTest {
+    
+    /**
+     * Constructor
+     */
+    public UserInfoSignedResponseAlgTest() {
+        singleElementFile = "/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoSignedResponseAlg.xml";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected String getExpectedValue() {
+        return "UserInfoSignedResponseAlgValue";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected QName getElementName() {
+        return UserInfoSignedResponseAlg.DEFAULT_ELEMENT_NAME;
+    }
+
+}
diff --git a/oidc-common-saml-impl/src/test/resources/logback-test.xml b/oidc-common-saml-impl/src/test/resources/logback-test.xml
new file mode 100644
index 0000000..a58ce3f
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/resources/logback-test.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<configuration>
+    <logger name="net.shibboleth" level="ALL"/>
+    <logger name="org.springframework" level="DEBUG"/>
+
+    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <pattern>%level [%logger:%line] - %msg%n</pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <root>
+        <level value="ALL" />
+        <appender-ref ref="STDOUT" />
+    </root>
+    
+</configuration>
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/ApplicationType.xml b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/ApplicationType.xml
new file mode 100644
index 0000000..1a68ca2
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/ApplicationType.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oidcmd:ApplicationType xmlns:oidcmd="urn:mace:shibboleth:metadata:oidc:1.0">web</oidcmd:ApplicationType>
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/ClientSecret.xml b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/ClientSecret.xml
new file mode 100644
index 0000000..69c3940
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/ClientSecret.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oidcmd:ClientSecret xmlns:oidcmd="urn:mace:shibboleth:metadata:oidc:1.0">mockSecret</oidcmd:ClientSecret>
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/ClientSecretKeyReference.xml b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/ClientSecretKeyReference.xml
new file mode 100644
index 0000000..56fe3b8
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/ClientSecretKeyReference.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oidcmd:ClientSecretKeyReference xmlns:oidcmd="urn:mace:shibboleth:metadata:oidc:1.0">mockKeyReference</oidcmd:ClientSecretKeyReference>
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/ClientUri.xml b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/ClientUri.xml
new file mode 100644
index 0000000..a221aa8
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/ClientUri.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oidcmd:ClientUri xmlns:oidcmd="urn:mace:shibboleth:metadata:oidc:1.0">https://example.org</oidcmd:ClientUri>
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/DefaultAcrValue.xml b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/DefaultAcrValue.xml
new file mode 100644
index 0000000..a7e7ac5
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/DefaultAcrValue.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oidcmd:DefaultAcrValue xmlns:oidcmd="urn:mace:shibboleth:metadata:oidc:1.0">password</oidcmd:DefaultAcrValue>
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/GrantType.xml b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/GrantType.xml
new file mode 100644
index 0000000..29074cb
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/GrantType.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oidcmd:GrantType xmlns:oidcmd="urn:mace:shibboleth:metadata:oidc:1.0">authorization_code</oidcmd:GrantType>
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenEncryptedResponseAlg.xml b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenEncryptedResponseAlg.xml
new file mode 100644
index 0000000..be48df6
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenEncryptedResponseAlg.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oidcmd:IdTokenEncryptedResponseAlg xmlns:oidcmd="urn:mace:shibboleth:metadata:oidc:1.0">IdTokenEncryptedResponseAlgValue</oidcmd:IdTokenEncryptedResponseAlg>
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenEncryptedResponseEnc.xml b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenEncryptedResponseEnc.xml
new file mode 100644
index 0000000..9086d00
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenEncryptedResponseEnc.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oidcmd:IdTokenEncryptedResponseEnc xmlns:oidcmd="urn:mace:shibboleth:metadata:oidc:1.0">IdTokenEncryptedResponseEncValue</oidcmd:IdTokenEncryptedResponseEnc>
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenSignedResponseAlg.xml b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenSignedResponseAlg.xml
new file mode 100644
index 0000000..2df0083
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/IdTokenSignedResponseAlg.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oidcmd:IdTokenSignedResponseAlg xmlns:oidcmd="urn:mace:shibboleth:metadata:oidc:1.0">IdTokenSignedResponseAlgValue</oidcmd:IdTokenSignedResponseAlg>
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/InitiateLoginUri.xml b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/InitiateLoginUri.xml
new file mode 100644
index 0000000..00e8d43
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/InitiateLoginUri.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oidcmd:InitiateLoginUri xmlns:oidcmd="urn:mace:shibboleth:metadata:oidc:1.0">https://example.org/start</oidcmd:InitiateLoginUri>
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/JwksData.xml b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/JwksData.xml
new file mode 100644
index 0000000..73849cd
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/JwksData.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oidcmd:JwksData xmlns:oidcmd="urn:mace:shibboleth:metadata:oidc:1.0">base64data</oidcmd:JwksData>
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/JwksUri.xml b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/JwksUri.xml
new file mode 100644
index 0000000..72f8106
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/JwksUri.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oidcmd:JwksUri xmlns:oidcmd="urn:mace:shibboleth:metadata:oidc:1.0">https://example.org/jwks</oidcmd:JwksUri>
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/OAuthRPExtensions.xml b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/OAuthRPExtensions.xml
new file mode 100644
index 0000000..beeb691
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/OAuthRPExtensions.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oidcmd:OAuthRPExtensions xmlns:oidcmd="urn:mace:shibboleth:metadata:oidc:1.0" xmlns:unknown="urn:unknown:namespace" unknown:attributeExtension1="extensionValue1">
+    <oidcmd:ApplicationType>web</oidcmd:ApplicationType>
+    <oidcmd:ClientUri>https://example.org/clientUri</oidcmd:ClientUri>
+    <oidcmd:DefaultAcrValue>password</oidcmd:DefaultAcrValue>
+    <oidcmd:DefaultAcrValue>mfa</oidcmd:DefaultAcrValue>
+    <oidcmd:GrantType>authorization_code</oidcmd:GrantType>
+    <oidcmd:IdTokenEncryptedResponseAlg>A256KW</oidcmd:IdTokenEncryptedResponseAlg>
+    <oidcmd:IdTokenEncryptedResponseEnc>A256GCM</oidcmd:IdTokenEncryptedResponseEnc>
+    <oidcmd:IdTokenSignedResponseAlg>RS512</oidcmd:IdTokenSignedResponseAlg>
+    <oidcmd:InitiateLoginUri>https://example.org/initiateLogin</oidcmd:InitiateLoginUri>
+    <oidcmd:PostLogoutRedirectUri>https://example.org/postLogout</oidcmd:PostLogoutRedirectUri>
+    <oidcmd:RequestObjectEncryptionAlg>A128KW</oidcmd:RequestObjectEncryptionAlg>
+    <oidcmd:RequestObjectEncryptionEnc>A128GCM</oidcmd:RequestObjectEncryptionEnc>
+    <oidcmd:RequestObjectSigningAlg>RS256</oidcmd:RequestObjectSigningAlg>
+    <oidcmd:RequestUri>https://example.org/request</oidcmd:RequestUri>
+    <oidcmd:ResponseType>code</oidcmd:ResponseType>
+    <oidcmd:ResponseType>id_token</oidcmd:ResponseType>
+    <oidcmd:Scope>openid</oidcmd:Scope>
+    <oidcmd:Scope>profile</oidcmd:Scope>
+    <oidcmd:SoftwareId>mockSoftwareId</oidcmd:SoftwareId>
+    <oidcmd:SoftwareVersion>mockSoftwareVersion</oidcmd:SoftwareVersion>
+    <oidcmd:TokenEndpointAuthMethod>client_secret_basic</oidcmd:TokenEndpointAuthMethod>
+    <oidcmd:TokenEndpointAuthSigningAlg>RS512</oidcmd:TokenEndpointAuthSigningAlg>
+    <oidcmd:UserInfoEncryptedResponseAlg>A192KW</oidcmd:UserInfoEncryptedResponseAlg>
+    <oidcmd:SectorIdentifierUri>https://example.org/sectorIdentifier</oidcmd:SectorIdentifierUri>
+    <oidcmd:UserInfoEncryptedResponseEnc>A192GCM</oidcmd:UserInfoEncryptedResponseEnc>
+    <oidcmd:UserInfoSignedResponseAlg>RS384</oidcmd:UserInfoSignedResponseAlg>
+    <md:NameIDFormat xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"/>
+</oidcmd:OAuthRPExtensions>
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/OAuthRPExtensions_ordered.xml b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/OAuthRPExtensions_ordered.xml
new file mode 100644
index 0000000..1b57fb1
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/OAuthRPExtensions_ordered.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oidcmd:OAuthRPExtensions xmlns:oidcmd="urn:mace:shibboleth:metadata:oidc:1.0" xmlns:unknown="urn:unknown:namespace" unknown:attributeExtension1="extensionValue1">
+    <oidcmd:ApplicationType>web</oidcmd:ApplicationType>
+    <oidcmd:ClientUri>https://example.org/clientUri</oidcmd:ClientUri>
+    <oidcmd:DefaultAcrValue>password</oidcmd:DefaultAcrValue>
+    <oidcmd:DefaultAcrValue>mfa</oidcmd:DefaultAcrValue>
+    <oidcmd:GrantType>authorization_code</oidcmd:GrantType>
+    <oidcmd:IdTokenEncryptedResponseAlg>A256KW</oidcmd:IdTokenEncryptedResponseAlg>
+    <oidcmd:IdTokenEncryptedResponseEnc>A256GCM</oidcmd:IdTokenEncryptedResponseEnc>
+    <oidcmd:IdTokenSignedResponseAlg>RS512</oidcmd:IdTokenSignedResponseAlg>
+    <oidcmd:InitiateLoginUri>https://example.org/initiateLogin</oidcmd:InitiateLoginUri>
+    <oidcmd:PostLogoutRedirectUri>https://example.org/postLogout</oidcmd:PostLogoutRedirectUri>
+    <oidcmd:RequestObjectEncryptionAlg>A128KW</oidcmd:RequestObjectEncryptionAlg>
+    <oidcmd:RequestObjectEncryptionEnc>A128GCM</oidcmd:RequestObjectEncryptionEnc>
+    <oidcmd:RequestObjectSigningAlg>RS256</oidcmd:RequestObjectSigningAlg>
+    <oidcmd:RequestUri>https://example.org/request</oidcmd:RequestUri>
+    <oidcmd:ResponseType>code</oidcmd:ResponseType>
+    <oidcmd:ResponseType>id_token</oidcmd:ResponseType>
+    <oidcmd:Scope>openid</oidcmd:Scope>
+    <oidcmd:Scope>profile</oidcmd:Scope>
+    <oidcmd:SoftwareId>mockSoftwareId</oidcmd:SoftwareId>
+    <oidcmd:SoftwareVersion>mockSoftwareVersion</oidcmd:SoftwareVersion>
+    <oidcmd:TokenEndpointAuthMethod>client_secret_basic</oidcmd:TokenEndpointAuthMethod>
+    <oidcmd:TokenEndpointAuthSigningAlg>RS512</oidcmd:TokenEndpointAuthSigningAlg>
+    <oidcmd:SectorIdentifierUri>https://example.org/sectorIdentifier</oidcmd:SectorIdentifierUri>
+    <oidcmd:UserInfoEncryptedResponseAlg>A192KW</oidcmd:UserInfoEncryptedResponseAlg>
+    <oidcmd:UserInfoEncryptedResponseEnc>A192GCM</oidcmd:UserInfoEncryptedResponseEnc>
+    <oidcmd:UserInfoSignedResponseAlg>RS384</oidcmd:UserInfoSignedResponseAlg>
+    <md:NameIDFormat xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"/>
+</oidcmd:OAuthRPExtensions>
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/PostLogoutRedirectUri.xml b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/PostLogoutRedirectUri.xml
new file mode 100644
index 0000000..eb15039
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/PostLogoutRedirectUri.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oidcmd:PostLogoutRedirectUri xmlns:oidcmd="urn:mace:shibboleth:metadata:oidc:1.0">https://example.org/postLogout</oidcmd:PostLogoutRedirectUri>
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectEncryptionAlg.xml b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectEncryptionAlg.xml
new file mode 100644
index 0000000..f6b5dc1
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectEncryptionAlg.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oidcmd:RequestObjectEncryptionAlg xmlns:oidcmd="urn:mace:shibboleth:metadata:oidc:1.0">RequestObjectEncryptionAlgValue</oidcmd:RequestObjectEncryptionAlg>
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectEncryptionEnc.xml b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectEncryptionEnc.xml
new file mode 100644
index 0000000..35d1b5e
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectEncryptionEnc.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oidcmd:RequestObjectEncryptionEnc xmlns:oidcmd="urn:mace:shibboleth:metadata:oidc:1.0">RequestObjectEncryptionEncValue</oidcmd:RequestObjectEncryptionEnc>
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectSigningAlg.xml b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectSigningAlg.xml
new file mode 100644
index 0000000..95cdf3c
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/RequestObjectSigningAlg.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oidcmd:RequestObjectSigningAlg xmlns:oidcmd="urn:mace:shibboleth:metadata:oidc:1.0">RequestObjectSigningAlgValue</oidcmd:RequestObjectSigningAlg>
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/RequestUri.xml b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/RequestUri.xml
new file mode 100644
index 0000000..7b0f640
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/RequestUri.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oidcmd:RequestUri xmlns:oidcmd="urn:mace:shibboleth:metadata:oidc:1.0">https://example.org/request</oidcmd:RequestUri>
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/ResponseType.xml b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/ResponseType.xml
new file mode 100644
index 0000000..d8fcbf9
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/ResponseType.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oidcmd:ResponseType xmlns:oidcmd="urn:mace:shibboleth:metadata:oidc:1.0">id_token</oidcmd:ResponseType>
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/Scope.xml b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/Scope.xml
new file mode 100644
index 0000000..7f06e81
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/Scope.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oidcmd:Scope xmlns:oidcmd="urn:mace:shibboleth:metadata:oidc:1.0">profile</oidcmd:Scope>
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/SectorIdentifierUri.xml b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/SectorIdentifierUri.xml
new file mode 100644
index 0000000..567f1d5
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/SectorIdentifierUri.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oidcmd:SectorIdentifierUri xmlns:oidcmd="urn:mace:shibboleth:metadata:oidc:1.0">https://example.org/shared</oidcmd:SectorIdentifierUri>
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/SoftwareId.xml b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/SoftwareId.xml
new file mode 100644
index 0000000..e4824b6
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/SoftwareId.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oidcmd:SoftwareId xmlns:oidcmd="urn:mace:shibboleth:metadata:oidc:1.0">id12</oidcmd:SoftwareId>
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/SoftwareVersion.xml b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/SoftwareVersion.xml
new file mode 100644
index 0000000..472bd02
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/SoftwareVersion.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oidcmd:SoftwareVersion xmlns:oidcmd="urn:mace:shibboleth:metadata:oidc:1.0">1.0</oidcmd:SoftwareVersion>
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/TokenEndpointAuthMethod.xml b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/TokenEndpointAuthMethod.xml
new file mode 100644
index 0000000..43c2ced
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/TokenEndpointAuthMethod.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oidcmd:TokenEndpointAuthMethod xmlns:oidcmd="urn:mace:shibboleth:metadata:oidc:1.0">client_secret_post</oidcmd:TokenEndpointAuthMethod>
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/TokenEndpointAuthSigningAlg.xml b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/TokenEndpointAuthSigningAlg.xml
new file mode 100644
index 0000000..aae4d60
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/TokenEndpointAuthSigningAlg.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oidcmd:TokenEndpointAuthSigningAlg xmlns:oidcmd="urn:mace:shibboleth:metadata:oidc:1.0">TokenEndpointAuthSigningAlgValue</oidcmd:TokenEndpointAuthSigningAlg>
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoEncryptedResponseAlg.xml b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoEncryptedResponseAlg.xml
new file mode 100644
index 0000000..0c1ece7
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoEncryptedResponseAlg.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oidcmd:UserInfoEncryptedResponseAlg xmlns:oidcmd="urn:mace:shibboleth:metadata:oidc:1.0">UserInfoEncryptedResponseAlgValue</oidcmd:UserInfoEncryptedResponseAlg>
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoEncryptedResponseEnc.xml b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoEncryptedResponseEnc.xml
new file mode 100644
index 0000000..4421f4c
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoEncryptedResponseEnc.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oidcmd:UserInfoEncryptedResponseEnc xmlns:oidcmd="urn:mace:shibboleth:metadata:oidc:1.0">UserInfoEncryptedResponseEncValue</oidcmd:UserInfoEncryptedResponseEnc>
\ No newline at end of file
diff --git a/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoSignedResponseAlg.xml b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoSignedResponseAlg.xml
new file mode 100644
index 0000000..f332dc9
--- /dev/null
+++ b/oidc-common-saml-impl/src/test/resources/net/shibboleth/oidc/saml/xmlobject/impl/UserInfoSignedResponseAlg.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oidcmd:UserInfoSignedResponseAlg xmlns:oidcmd="urn:mace:shibboleth:metadata:oidc:1.0">UserInfoSignedResponseAlgValue</oidcmd:UserInfoSignedResponseAlg>
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..d44f275
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>net.shibboleth</groupId>
+        <artifactId>parent</artifactId>
+        <version>11.1.0-SNAPSHOT</version>
+    </parent>
+    <groupId>net.shibboleth.oidc</groupId>
+    <artifactId>oidc-common-parent</artifactId>
+    <version>0.0.1-SNAPSHOT</version>
+    <name>Shibboleth OIDC Java Common Library Super POM</name>
+    <packaging>pom</packaging>
+    <description>A POM containing properties, dependencies, etc. that are common across all Shibboleth OIDC Java common libraries.</description>
+    <properties>
+        <idp.groupId>net.shibboleth.idp</idp.groupId>
+        <idp.version>4.1.0-SNAPSHOT</idp.version>
+        <opensaml.groupId>org.opensaml</opensaml.groupId>
+        <opensaml.version>4.1.0-SNAPSHOT</opensaml.version>
+        <checkstyle.configLocation>${project.basedir}/checkstyle.xml</checkstyle.configLocation>
+    </properties>
+    <repositories>
+        <repository>
+            <id>shib-release</id>
+            <url>https://build.shibboleth.net/nexus/content/groups/public</url>
+            <snapshots>
+                <enabled>false</enabled>
+            </snapshots>
+        </repository>
+        <repository>
+            <id>shib-snapshot</id>
+            <url>https://build.shibboleth.net/nexus/content/repositories/snapshots</url>
+            <releases>
+                <enabled>false</enabled>
+            </releases>
+        </repository>
+    </repositories>
+    <scm>
+        <connection>${shibboleth.scm.connection}java-oidc-common</connection>
+        <developerConnection>${shibboleth.scm.developerConnection}java-oidc-common</developerConnection>
+        <url>${shibboleth.scm.url}java-oidc-common.git</url>
+    </scm>
+    <dependencies>
+        <dependency>
+            <groupId>${slf4j.groupId}</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.google.code.findbugs</groupId>
+            <artifactId>jsr305</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <!-- Project wide test Dependencies -->
+        <dependency>
+            <groupId>org.testng</groupId>
+            <artifactId>testng</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-core</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.xmlunit</groupId>
+            <artifactId>xmlunit-core</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.xmlunit</groupId>
+            <artifactId>xmlunit-matchers</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>ch.qos.logback</groupId>
+            <artifactId>logback-classic</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+    <dependencyManagement>
+        <!-- oidc-common project dependencies -->
+        <dependencies>
+            <dependency>
+                <groupId>net.shibboleth.oidc</groupId>
+                <artifactId>oidc-common-saml-api</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>net.shibboleth.oidc</groupId>
+                <artifactId>oidc-common-saml-impl</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <!-- Shibboleth IdP BOM for importing IdP dependencies -->
+            <dependency>
+                <groupId>net.shibboleth.idp</groupId>
+                <artifactId>idp-bom</artifactId>
+                <version>${idp.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <!-- Provided shibboleth support dependencies -->
+            <dependency>
+                <groupId>net.shibboleth.utilities</groupId>
+                <artifactId>java-support</artifactId>
+                <version>${java-support.version}</version>
+                <scope>provided</scope>
+            </dependency>
+            <!-- Test bom dependencies -->
+            <dependency>
+                <groupId>${idp.groupId}</groupId>
+                <artifactId>idp-tests-bom</artifactId>
+                <version>${idp.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+    <modules>
+        <module>oidc-common-saml-api</module>
+        <module>oidc-common-saml-impl</module>
+    </modules>
+</project>

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


More information about the commits mailing list