/*
 * The contents of this file are subject to the terms of the Common Development and
 * Distribution License (the License). You may not use this file except in compliance with the
 * License.
 *
 * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
 * specific language governing permission and limitations under the License.
 *
 * When distributing Covered Software, include this CDDL Header Notice in each file and include
 * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
 * Header, with the fields enclosed by brackets [] replaced by your own identifying
 * information: "Portions Copyrighted [year] [name of copyright owner]".
 *
 * Copyright 2015 ForgeRock AS.
 */

/**
 * The classes in this package encapsulate the state necessary to invoke the token-generation-service. Classes specific
 * to token-generation-service consumption are located in this package. It has an analogue in the org.forgerock.openam.sts.service.invocation
 * package in the openam-client-sts module. All of the classes in the openam-client-sts module are included in the client-sdk,
 * and are used to drive the programmatic publication and consumption of the rest-sts. The classes in this package are
 * specific to state necessary to consume the token-generation-service. The generation of an instance of any specific token
 * requires several pieces of information:
 * 1. token-specific configuration state published with the sts - e.g. signing and encryption context, token audience context, etc.
 * This state is pulled from the SMS by the token-generation-service.
 * 2. invocation-specific state made as part of the soap- or rest-sts invocation - e.g. the OIDC nonce, or the x509 certificate to
 * be included as the proof token state in a HolderOfKey SAML2 assertion
 * 3. information generated as part of the execution of the token transformation invocation itself - e.g. the authentication context
 * class references generated by the examination of the input token state.
 *
 * The classes in this package need to encapsulate the state in list entries 2 and 3 above. I don't want to duplicate classes
 * encapsulating client-invocation-specific state located in the openam-client-sts module, but I also don't want to muddy
 * the concerns of each in the name of code-reuse - duplicated code is preferable to muddied abstractions IMO.
 */
package org.forgerock.openam.sts.service.invocation;