<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE javadoc SYSTEM "https://raw.githubusercontent.com/eclipse-ee4j/jakartaee-tck/master/internal/docs/dtd/javadoc_assertions.dtd">
<!--

    Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Public License v. 2.0, which is available at
    http://www.eclipse.org/legal/epl-2.0.

    This Source Code may also be made available under the following Secondary
    Licenses when the conditions for such availability set forth in the
    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
    version 2 with the GNU Classpath Exception, which is available at
    https://www.gnu.org/software/classpath/license.html.

    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0

-->

<javadoc>
    <next-available-id>108</next-available-id>
    <previous-id>1</previous-id>
    <technology>JASPIC</technology>
    <id>JASPIC</id>
    <name>Jakarta Authentication</name>
    <version>2.0</version>
    <assertions>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>1</id>
            <description>
                Constructs an AuthException with no detail message.
                A detail message is a String that describes this particular exception.
            </description>
            <package>jakarta.security.auth.message</package>
            <class-interface>AuthException</class-interface>
            <method name="AuthException" return-type="AuthException" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>2</id>
            <description>
                Constructs an AuthException with the specified detail message.
                A detail message is a String that describes this particular exception.
            </description>
            <package>jakarta.security.auth.message</package>
            <class-interface>AuthException</class-interface>
            <method name="AuthException" return-type="AuthException">
                <parameters>
                    <parameter>java.lang.String</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>3</id>
            <description>
                Remove implementation specific principals and credentials from the subject.
            </description>
            <package>jakarta.security.auth.message</package>
            <class-interface>ClientAuth</class-interface>
            <method name="cleanSubject" return-type="void">
                <parameters>
                    <parameter>jakarta.security.auth.message.MessageInfo</parameter>
                    <parameter>javax.security.auth.Subject</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>4</id>
            <description>If an error occurs during the Subject processing.</description>
            <package>jakarta.security.auth.message</package>
            <class-interface>ClientAuth</class-interface>
            <method name="cleanSubject" return-type="void">
                <parameters>
                    <parameter>jakarta.security.auth.message.MessageInfo</parameter>
                    <parameter>javax.security.auth.Subject</parameter>
                </parameters>
                <throw>jakarta.security.auth.message.AuthException</throw>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>5</id>
            <description>
                Secure a service request message before sending it to the service.
                This method is called to transform the request message acquired by calling getRequestMessage (on messageInfo) into the
                mechanism-specific form to be sent by the runtime. This method conveys the outcome of its message
                processing either by returning an AuthStatus value or by throwing an AuthException.
            </description>
            <package>jakarta.security.auth.message</package>
            <class-interface>ClientAuth</class-interface>
            <method name="secureRequest" return-type="jakarta.security.auth.message.AuthStatus">
                <parameters>
                    <parameter>jakarta.security.auth.message.MessageInfo</parameter>
                    <parameter>javax.security.auth.Subject</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>6</id>
            <description>When the message processing failed without establishing a failure response message (in
                messageInfo).</description>
            <package>jakarta.security.auth.message</package>
            <class-interface>ClientAuth</class-interface>
            <method name="secureRequest" return-type="jakarta.security.auth.message.AuthStatus">
                <parameters>
                    <parameter>jakarta.security.auth.message.MessageInfo</parameter>
                    <parameter>javax.security.auth.Subject</parameter>
                </parameters>
                <throw>jakarta.security.auth.message.AuthException</throw>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>7</id>
            <description>
                Validate a received service response.
                This method is called to transform the mechanism-specific response message acquired by calling getResponseMessage (on
                messageInfo) into the validated application message to be returned to the message processing runtime. If
                the response message is a (mechanism-specific) meta-message, the method implementation must attempt to
                transform the meta-message into the next mechanism-specific request message to be sent by the runtime.
                This method conveys the outcome of its message processing either by returning an AuthStatus value or by
                throwing an AuthException.
            </description>
            <package>jakarta.security.auth.message</package>
            <class-interface>ClientAuth</class-interface>
            <method name="validateResponse" return-type="jakarta.security.auth.message.AuthStatus">
                <parameters>
                    <parameter>jakarta.security.auth.message.MessageInfo</parameter>
                    <parameter>javax.security.auth.Subject</parameter>
                    <parameter>javax.security.auth.Subject</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>8</id>
            <description>When the message processing failed without establishing a failure response message (in
                messageInfo).</description>
            <package>jakarta.security.auth.message</package>
            <class-interface>ClientAuth</class-interface>
            <method name="validateResponse" return-type="jakarta.security.auth.message.AuthStatus">
                <parameters>
                    <parameter>jakarta.security.auth.message.MessageInfo</parameter>
                    <parameter>javax.security.auth.Subject</parameter>
                    <parameter>javax.security.auth.Subject</parameter>
                </parameters>
                <throw>jakarta.security.auth.message.AuthException</throw>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>9</id>
            <description>
                Get (a reference to) the Map object of this MessageInfo.
                Operations performed on the acquired Map must effect the Map within the MessageInfo.
            </description>
            <package>jakarta.security.auth.message</package>
            <class-interface>MessageInfo</class-interface>
            <method name="getMap" return-type="java.util.Map" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>10</id>
            <description>
                Get the request message object from this MessageInfo.
            </description>
            <package>jakarta.security.auth.message</package>
            <class-interface>MessageInfo</class-interface>
            <method name="getRequestMessage" return-type="java.lang.Object" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>11</id>
            <description>
                Get the response message object from this MessageInfo.
            </description>
            <package>jakarta.security.auth.message</package>
            <class-interface>MessageInfo</class-interface>
            <method name="getResponseMessage" return-type="java.lang.Object" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>12</id>
            <description>
                Set the request message object in this MessageInfo.
            </description>
            <package>jakarta.security.auth.message</package>
            <class-interface>MessageInfo</class-interface>
            <method name="setRequestMessage" return-type="void">
                <parameters>
                    <parameter>java.lang.Object</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>13</id>
            <description>
                Set the response message object in this MessageInfo.
            </description>
            <package>jakarta.security.auth.message</package>
            <class-interface>MessageInfo</class-interface>
            <method name="setResponseMessage" return-type="void">
                <parameters>
                    <parameter>java.lang.Object</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>14</id>
            <description>
                Get the target policies that comprise the authentication policy.

            </description>
            <package>jakarta.security.auth.message</package>
            <class-interface>MessagePolicy</class-interface>
            <method name="getTargetPolicies"
                return-type="jakarta.security.auth.message.MessagePolicy.MessagePolicy.TargetPolicy[]" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>15</id>
            <description>
                Get the MessagePolicy modifier.
            </description>
            <package>jakarta.security.auth.message</package>
            <class-interface>MessagePolicy</class-interface>
            <method name="isMandatory" return-type="boolean" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>16</id>
            <description>
                Create a MessagePolicy instance with an array of target policies.
            </description>
            <package>jakarta.security.auth.message</package>
            <class-interface>MessagePolicy</class-interface>
            <method name="MessagePolicy" return-type="MessagePolicy">
                <parameters>
                    <parameter>jakarta.security.auth.message.MessagePolicy.MessagePolicy.TargetPolicy[]</parameter>
                    <parameter>boolean</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>17</id>
            <description>
                Get the ProtectionPolicy identifier.
                An identifier may represent a conceptual protection policy (as is the case with the static identifiers defined within
                this interface) or it may identify a procedural policy expression or plan that may be more difficult to
                categorize in terms of a conceptual identifier.
            </description>
            <package>jakarta.security.auth.message</package>
            <class-interface>MessagePolicy.ProtectionPolicy</class-interface>
            <method name="getID" return-type="java.lang.String" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>18</id>
            <description>
                Get the Object identified by the Target from the MessageInfo.
            </description>
            <package>jakarta.security.auth.message</package>
            <class-interface>MessagePolicy.Target</class-interface>
            <method name="get" return-type="java.lang.Object">
                <parameters>
                    <parameter>jakarta.security.auth.message.MessageInfo</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>19</id>
            <description>
                Put the Object into the MessageInfo at the location identified by the target.
            </description>
            <package>jakarta.security.auth.message</package>
            <class-interface>MessagePolicy.Target</class-interface>
            <method name="put" return-type="void">
                <parameters>
                    <parameter>jakarta.security.auth.message.MessageInfo</parameter>
                    <parameter>java.lang.Object</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>20</id>
            <description>
                Remove the Object identified by the Target from the MessageInfo.
            </description>
            <package>jakarta.security.auth.message</package>
            <class-interface>MessagePolicy.Target</class-interface>
            <method name="remove" return-type="void">
                <parameters>
                    <parameter>jakarta.security.auth.message.MessageInfo</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>21</id>
            <description>
                Get the ProtectionPolicy that applies to the targets.
            </description>
            <package>jakarta.security.auth.message</package>
            <class-interface>MessagePolicy.TargetPolicy</class-interface>
            <method name="getProtectionPolicy"
                return-type="jakarta.security.auth.message.MessagePolicy.MessagePolicy.ProtectionPolicy" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>22</id>
            <description>
                Get the array of layer-specific target descriptors that identify the one or more message parts to which the specified
                message protection policy applies.
            </description>
            <package>jakarta.security.auth.message</package>
            <class-interface>MessagePolicy.TargetPolicy</class-interface>
            <method name="getTargets"
                return-type="jakarta.security.auth.message.MessagePolicy.MessagePolicy.Target[]" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>23</id>
            <description>
                Create a TargetPolicy instance with an array of Targets and with a ProtectionPolicy.
            </description>
            <package>jakarta.security.auth.message</package>
            <class-interface>MessagePolicy.TargetPolicy</class-interface>
            <method name="MessagePolicy.TargetPolicy" return-type="MessagePolicy.TargetPolicy">
                <parameters>
                    <parameter>jakarta.security.auth.message.MessagePolicy.MessagePolicy.Target[]</parameter>
                    <parameter>jakarta.security.auth.message.MessagePolicy.MessagePolicy.ProtectionPolicy</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>24</id>
            <description>
                Remove method specific principals and credentials from the subject.
            </description>
            <package>jakarta.security.auth.message</package>
            <class-interface>ServerAuth</class-interface>
            <method name="cleanSubject" return-type="void">
                <parameters>
                    <parameter>jakarta.security.auth.message.MessageInfo</parameter>
                    <parameter>javax.security.auth.Subject</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>25</id>
            <description>If an error occurs during the Subject processing.</description>
            <package>jakarta.security.auth.message</package>
            <class-interface>ServerAuth</class-interface>
            <method name="cleanSubject" return-type="void">
                <parameters>
                    <parameter>jakarta.security.auth.message.MessageInfo</parameter>
                    <parameter>javax.security.auth.Subject</parameter>
                </parameters>
                <throw>jakarta.security.auth.message.AuthException</throw>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>26</id>
            <description>
                Secure a service response before sending it to the client.
                This method is called to transform the response message acquired by calling getResponseMessage (on messageInfo) into the
                mechanism-specific form to be sent by the runtime. This method conveys the outcome of its message
                processing either by returning an AuthStatus value or by throwing an AuthException.
            </description>
            <package>jakarta.security.auth.message</package>
            <class-interface>ServerAuth</class-interface>
            <method name="secureResponse" return-type="jakarta.security.auth.message.AuthStatus">
                <parameters>
                    <parameter>jakarta.security.auth.message.MessageInfo</parameter>
                    <parameter>javax.security.auth.Subject</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>27</id>
            <description>When the message processing failed without establishing a failure response message (in
                messageInfo).</description>
            <package>jakarta.security.auth.message</package>
            <class-interface>ServerAuth</class-interface>
            <method name="secureResponse" return-type="jakarta.security.auth.message.AuthStatus">
                <parameters>
                    <parameter>jakarta.security.auth.message.MessageInfo</parameter>
                    <parameter>javax.security.auth.Subject</parameter>
                </parameters>
                <throw>jakarta.security.auth.message.AuthException</throw>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>28</id>
            <description>
                Authenticate a received service request.
                This method is called to transform the mechanism-specific request message acquired by calling getRequestMessage (on
                messageInfo) into the validated application message to be returned to the message processing runtime. If
                the received message is a (mechanism-specific) meta-message, the method implementation must attempt to
                transform the meta-message into a corresponding mechanism-specific response message, or to the validated
                application request message. The runtime will bind a validated application message into the the
                corresponding service invocation. This method conveys the outcome of its message processing either by
                returning an AuthStatus value or by throwing an AuthException.
            </description>
            <package>jakarta.security.auth.message</package>
            <class-interface>ServerAuth</class-interface>
            <method name="validateRequest" return-type="jakarta.security.auth.message.AuthStatus">
                <parameters>
                    <parameter>jakarta.security.auth.message.MessageInfo</parameter>
                    <parameter>javax.security.auth.Subject</parameter>
                    <parameter>javax.security.auth.Subject</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>29</id>
            <description>When the message processing failed without establishing a failure response message (in
                messageInfo).</description>
            <package>jakarta.security.auth.message</package>
            <class-interface>ServerAuth</class-interface>
            <method name="validateRequest" return-type="jakarta.security.auth.message.AuthStatus">
                <parameters>
                    <parameter>jakarta.security.auth.message.MessageInfo</parameter>
                    <parameter>javax.security.auth.Subject</parameter>
                    <parameter>javax.security.auth.Subject</parameter>
                </parameters>
                <throw>jakarta.security.auth.message.AuthException</throw>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>30</id>
            <description>
                Create a CallerPrincipalCallback to set the container's representation of the caller principal
            </description>
            <package>jakarta.security.auth.message.callback</package>
            <class-interface>CallerPrincipalCallback</class-interface>
            <method name="CallerPrincipalCallback" return-type="CallerPrincipalCallback">
                <parameters>
                    <parameter>javax.security.auth.Subject</parameter>
                    <parameter>java.security.Principal</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>31</id>
            <description>
                Create a CallerPrincipalCallback to set the container's representation of the caller principal.
            </description>
            <package>jakarta.security.auth.message.callback</package>
            <class-interface>CallerPrincipalCallback</class-interface>
            <method name="CallerPrincipalCallback" return-type="CallerPrincipalCallback">
                <parameters>
                    <parameter>javax.security.auth.Subject</parameter>
                    <parameter>java.lang.String</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>32</id>
            <description>
                Get the caller principal name.
            </description>
            <package>jakarta.security.auth.message.callback</package>
            <class-interface>CallerPrincipalCallback</class-interface>
            <method name="getName" return-type="java.lang.String" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>33</id>
            <description>
                Get the caller principal.
            </description>
            <package>jakarta.security.auth.message.callback</package>
            <class-interface>CallerPrincipalCallback</class-interface>
            <method name="getPrincipal" return-type="java.security.Principal" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>34</id>
            <description>
                Get the Subject in which the handler will distinguish the caller principal
            </description>
            <package>jakarta.security.auth.message.callback</package>
            <class-interface>CallerPrincipalCallback</class-interface>
            <method name="getSubject" return-type="javax.security.auth.Subject" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>35</id>
            <description>
                Create a CertStoreCallback.
            </description>
            <package>jakarta.security.auth.message.callback</package>
            <class-interface>CertStoreCallback</class-interface>
            <method name="CertStoreCallback" return-type="CertStoreCallback" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>36</id>
            <description>
                Used by the CertStore user to obtain the CertStore set within the Callback.
            </description>
            <package>jakarta.security.auth.message.callback</package>
            <class-interface>CertStoreCallback</class-interface>
            <method name="getCertStore" return-type="java.security.cert.CertStore" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>37</id>
            <description>
                Used by the CallbackHandler to set the CertStore within the Callback.
            </description>
            <package>jakarta.security.auth.message.callback</package>
            <class-interface>CertStoreCallback</class-interface>
            <method name="setCertStore" return-type="void">
                <parameters>
                    <parameter>java.security.cert.CertStore</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>38</id>
            <description>
                Get the array of group names.
            </description>
            <package>jakarta.security.auth.message.callback</package>
            <class-interface>GroupPrincipalCallback</class-interface>
            <method name="getGroups" return-type="java.lang.String[]" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>39</id>
            <description>
                Get the Subject in which the handler will establish the group principals.
            </description>
            <package>jakarta.security.auth.message.callback</package>
            <class-interface>GroupPrincipalCallback</class-interface>
            <method name="getSubject" return-type="javax.security.auth.Subject" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>40</id>
            <description>
                Create a GroupPrincipalCallback to establish the container's representation of the corresponding group principals within
                the Subject.
            </description>
            <package>jakarta.security.auth.message.callback</package>
            <class-interface>GroupPrincipalCallback</class-interface>
            <method name="GroupPrincipalCallback" return-type="GroupPrincipalCallback">
                <parameters>
                    <parameter>javax.security.auth.Subject</parameter>
                    <parameter>java.lang.String[]</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>41</id>
            <description>
                Clear the password.
            </description>
            <package>jakarta.security.auth.message.callback</package>
            <class-interface>PasswordValidationCallback</class-interface>
            <method name="clearPassword" return-type="void" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>42</id>
            <description>
                Get the password.
                Note that this method returns a reference to the password. If a clone of the array is created it is the caller's
                responsibility to zero out the password information after it is no longer needed.
            </description>
            <package>jakarta.security.auth.message.callback</package>
            <class-interface>PasswordValidationCallback</class-interface>
            <method name="getPassword" return-type="char[]" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>43</id>
            <description>
                Get the authentication result.
            </description>
            <package>jakarta.security.auth.message.callback</package>
            <class-interface>PasswordValidationCallback</class-interface>
            <method name="getResult" return-type="boolean" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>44</id>
            <description>
                Get the subject.
            </description>
            <package>jakarta.security.auth.message.callback</package>
            <class-interface>PasswordValidationCallback</class-interface>
            <method name="getSubject" return-type="javax.security.auth.Subject" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>45</id>
            <description>
                Get the username.
            </description>
            <package>jakarta.security.auth.message.callback</package>
            <class-interface>PasswordValidationCallback</class-interface>
            <method name="getUsername" return-type="java.lang.String" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>46</id>
            <description>
                Create a PasswordValidationCallback.
            </description>
            <package>jakarta.security.auth.message.callback</package>
            <class-interface>PasswordValidationCallback</class-interface>
            <method name="PasswordValidationCallback" return-type="PasswordValidationCallback">
                <parameters>
                    <parameter>javax.security.auth.Subject</parameter>
                    <parameter>java.lang.String</parameter>
                    <parameter>char[]</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>47</id>
            <description>
                Set the authentication result.
            </description>
            <package>jakarta.security.auth.message.callback</package>
            <class-interface>PasswordValidationCallback</class-interface>
            <method name="setResult" return-type="void">
                <parameters>
                    <parameter>boolean</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>48</id>
            <description>
                Used to obtain the certicicate chain set within the Callback.
            </description>
            <package>jakarta.security.auth.message.callback</package>
            <class-interface>PrivateKeyCallback</class-interface>
            <method name="getChain" return-type="java.security.cert.Certificate[]" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>49</id>
            <description>
                Used to obtain the private key set within the Callback.
            </description>
            <package>jakarta.security.auth.message.callback</package>
            <class-interface>PrivateKeyCallback</class-interface>
            <method name="getKey" return-type="java.security.PrivateKey" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>50</id>
            <description>
                Used by the CallbackHandler to get the Request object that identifies the private key to be returned.
            </description>
            <package>jakarta.security.auth.message.callback</package>
            <class-interface>PrivateKeyCallback</class-interface>
            <method name="getRequest"
                return-type="jakarta.security.auth.message.callback.PrivateKeyCallback.PrivateKeyCallback.Request" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>51</id>
            <description>
                Constructs this PrivateKeyCallback with a private key Request object.
                The request object identifies the private key to be returned. The corresponding certificate chain for the private key
                is also returned. If the request object is null, the handler of the callback relies on its own default.
            </description>
            <package>jakarta.security.auth.message.callback</package>
            <class-interface>PrivateKeyCallback</class-interface>
            <method name="PrivateKeyCallback" return-type="PrivateKeyCallback">
                <parameters>
                    <parameter>jakarta.security.auth.message.callback.PrivateKeyCallback.PrivateKeyCallback.Request</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>52</id>
            <description>
                Used by the CallbackHandler to set the requested private key and the corresponding certificate chain within the
                Callback.
                If the requested private key or chain could not be found, then both values must be set to null.
            </description>
            <package>jakarta.security.auth.message.callback</package>
            <class-interface>PrivateKeyCallback</class-interface>
            <method name="setKey" return-type="void">
                <parameters>
                    <parameter>java.security.PrivateKey</parameter>
                    <parameter>java.security.cert.Certificate[]</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>53</id>
            <description>
                Get the alias.
            </description>
            <package>jakarta.security.auth.message.callback</package>
            <class-interface>PrivateKeyCallback.AliasRequest</class-interface>
            <method name="getAlias" return-type="java.lang.String" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>54</id>
            <description>
                Construct an AliasRequest with an alias.
                The alias is used to directly identify the private key to be returned. The corresponding certificate chain for the
                private key is also returned. If the alias is null, the handler of the callback relies on its own
                default.
            </description>
            <package>jakarta.security.auth.message.callback</package>
            <class-interface>PrivateKeyCallback.AliasRequest</class-interface>
            <method name="PrivateKeyCallback.AliasRequest" return-type="PrivateKeyCallback.AliasRequest">
                <parameters>
                    <parameter>java.lang.String</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>55</id>
            <description>
                Get the algorithm identifier.
            </description>
            <package>jakarta.security.auth.message.callback</package>
            <class-interface>PrivateKeyCallback.DigestRequest</class-interface>
            <method name="getAlgorithm" return-type="java.lang.String" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>56</id>
            <description>
                Get the digest value.
            </description>
            <package>jakarta.security.auth.message.callback</package>
            <class-interface>PrivateKeyCallback.DigestRequest</class-interface>
            <method name="getDigest" return-type="byte[]" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>57</id>
            <description>
                Constructs a DigestRequest with a digest value and algorithm identifier.
                The digest of the certificate whose private key is returned must match the provided digest. The certificate digest is
                computed by applying the specified algorithm to the bytes of the certificate. For example:
                MessageDigest.getInstance(algorithm).digest(cert.getEncoded()) . The corresponding certificate chain for
                the private key is also returned. If the digest or algorithm parameters are null, the handler of the
                callback relies on its own defaults.
            </description>
            <package>jakarta.security.auth.message.callback</package>
            <class-interface>PrivateKeyCallback.DigestRequest</class-interface>
            <method name="PrivateKeyCallback.DigestRequest" return-type="PrivateKeyCallback.DigestRequest">
                <parameters>
                    <parameter>byte[]</parameter>
                    <parameter>java.lang.String</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>58</id>
            <description>
                Get the issuer.
            </description>
            <package>jakarta.security.auth.message.callback</package>
            <class-interface>PrivateKeyCallback.IssuerSerialNumRequest</class-interface>
            <method name="getIssuer" return-type="javax.security.auth.x500.X500Principal" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>59</id>
            <description>
                Get the serial number.
            </description>
            <package>jakarta.security.auth.message.callback</package>
            <class-interface>PrivateKeyCallback.IssuerSerialNumRequest</class-interface>
            <method name="getSerialNum" return-type="java.math.BigInteger" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>60</id>
            <description>
                Constructs a IssuerSerialNumRequest with an issuer/serial number.
                The issuer/serial number is used to identify a public key certificate. The corresponding private key is returned in the
                callback. The corresponding certificate chain for the private key is also returned. If the
                issuer/serialNumber parameters are null, the handler of the callback relies on its own defaults.
            </description>
            <package>jakarta.security.auth.message.callback</package>
            <class-interface>PrivateKeyCallback.IssuerSerialNumRequest</class-interface>
            <method name="PrivateKeyCallback.IssuerSerialNumRequest"
                return-type="PrivateKeyCallback.IssuerSerialNumRequest">
                <parameters>
                    <parameter>javax.security.auth.x500.X500Principal</parameter>
                    <parameter>java.math.BigInteger</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>61</id>
            <description>
                Get the subjectKeyID.
            </description>
            <package>jakarta.security.auth.message.callback</package>
            <class-interface>PrivateKeyCallback.SubjectKeyIDRequest</class-interface>
            <method name="getSubjectKeyID" return-type="byte[]" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>62</id>
            <description>
                Construct a SubjectKeyIDRequest with an subjectKeyID.
                The subjectKeyID is used to directly identify the private key to be returned. The corresponding certificate chain for
                the private key is also returned. If the subjectKeyID is null, the handler of the callback relies on its
                own default.
            </description>
            <package>jakarta.security.auth.message.callback</package>
            <class-interface>PrivateKeyCallback.SubjectKeyIDRequest</class-interface>
            <method name="PrivateKeyCallback.SubjectKeyIDRequest"
                return-type="PrivateKeyCallback.SubjectKeyIDRequest">
                <parameters>
                    <parameter>byte[]</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>63</id>
            <description>
                Used to obtain the secret key set within the Callback.
            </description>
            <package>jakarta.security.auth.message.callback</package>
            <class-interface>SecretKeyCallback</class-interface>
            <method name="getKey" return-type="javax.crypto.SecretKey" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>64</id>
            <description>
                Used by the CallbackHandler to get the Request object which identifies the secret key to be returned.
            </description>
            <package>jakarta.security.auth.message.callback</package>
            <class-interface>SecretKeyCallback</class-interface>
            <method name="getRequest"
                return-type="jakarta.security.auth.message.callback.SecretKeyCallback.SecretKeyCallback.Request" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>65</id>
            <description>
                Constructs this SecretKeyCallback with a secret key Request object.
                The request object identifies the secret key to be returned. If the alias is null, the handler of the callback relies
                on its own default.
            </description>
            <package>jakarta.security.auth.message.callback</package>
            <class-interface>SecretKeyCallback</class-interface>
            <method name="SecretKeyCallback" return-type="SecretKeyCallback">
                <parameters>
                    <parameter>jakarta.security.auth.message.callback.SecretKeyCallback.SecretKeyCallback.Request</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>66</id>
            <description>
                Used by the CallbackHandler to set the requested secret key within the Callback.
            </description>
            <package>jakarta.security.auth.message.callback</package>
            <class-interface>SecretKeyCallback</class-interface>
            <method name="setKey" return-type="void">
                <parameters>
                    <parameter>javax.crypto.SecretKey</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>67</id>
            <description>
                Get the alias.
            </description>
            <package>jakarta.security.auth.message.callback</package>
            <class-interface>SecretKeyCallback.AliasRequest</class-interface>
            <method name="getAlias" return-type="java.lang.String" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>68</id>
            <description>
                Construct an AliasRequest with an alias.
                The alias is used to directly identify the secret key to be returned. If the alias is null, the handler of the callback
                relies on its own default.
            </description>
            <package>jakarta.security.auth.message.callback</package>
            <class-interface>SecretKeyCallback.AliasRequest</class-interface>
            <method name="SecretKeyCallback.AliasRequest" return-type="SecretKeyCallback.AliasRequest">
                <parameters>
                    <parameter>java.lang.String</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>69</id>
            <description>
                Used by the TrustStore user to obtain the TrustStore set within the Callback.
            </description>
            <package>jakarta.security.auth.message.callback</package>
            <class-interface>TrustStoreCallback</class-interface>
            <method name="getTrustStore" return-type="java.security.KeyStore" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>70</id>
            <description>
                Used by the CallbackHandler to set the trusted certificate keystore within the Callback.
            </description>
            <package>jakarta.security.auth.message.callback</package>
            <class-interface>TrustStoreCallback</class-interface>
            <method name="setTrustStore" return-type="void">
                <parameters>
                    <parameter>java.security.KeyStore</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>71</id>
            <description>
                Create a TrustStoreCallback.
            </description>
            <package>jakarta.security.auth.message.callback</package>
            <class-interface>TrustStoreCallback</class-interface>
            <method name="TrustStoreCallback" return-type="TrustStoreCallback" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>72</id>
            <description>
                Get the application context identifier of this authentication context configuration object.
            </description>
            <package>jakarta.security.auth.message.config</package>
            <class-interface>AuthConfig</class-interface>
            <method name="getAppContext" return-type="java.lang.String" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>73</id>
            <description>
                Get the authentication context identifier corresponding to the request and response objects encapsulated in
                messageInfo.
            </description>
            <package>jakarta.security.auth.message.config</package>
            <class-interface>AuthConfig</class-interface>
            <method name="getAuthContextID" return-type="java.lang.String">
                <parameters>
                    <parameter>jakarta.security.auth.message.MessageInfo</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>74</id>
            <description>
                Get the message layer name of this authentication context configuration object.
            </description>
            <package>jakarta.security.auth.message.config</package>
            <class-interface>AuthConfig</class-interface>
            <method name="getMessageLayer" return-type="java.lang.String" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>75</id>
            <description>
                Used to determine whether the authentication context configuration object encapsulates any protected authentication
                contexts.
            </description>
            <package>jakarta.security.auth.message.config</package>
            <class-interface>AuthConfig</class-interface>
            <method name="isProtected" return-type="boolean" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>76</id>
            <description>
                Causes a dynamic anthentication context configuration object to update the internal state that it uses to process calls to
                its getAuthContext method.
            </description>
            <package>jakarta.security.auth.message.config</package>
            <class-interface>AuthConfig</class-interface>
            <method name="refresh" return-type="void" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>77</id>
            <description />
            <package>jakarta.security.auth.message.config</package>
            <class-interface>AuthConfigFactory</class-interface>
            <method name="AuthConfigFactory" return-type="AuthConfigFactory" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>78</id>
            <description>
                Disassociate the listener from all the provider registrations whose layer and appContext values are matched by the corresponding
                arguments to this method.
                Factories should periodically notify Listeners to effectively detach listeners that are no longer in use.
            </description>
            <package>jakarta.security.auth.message.config</package>
            <class-interface>AuthConfigFactory</class-interface>
            <method name="detachListener" return-type="java.lang.String[]">
                <parameters>
                    <parameter>jakarta.security.auth.message.config.RegistrationListener</parameter>
                    <parameter>java.lang.String</parameter>
                    <parameter>java.lang.String</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>79</id>
            <description>
                Get a registered AuthConfigProvider from the factory.
                Get the provider of ServerAuthConfig and ClientAuthConfig objects registered for the identified message layer and
                application context. All factories shall employ the following precedence rules to select the registered
                AuthConfigProvider that matches the layer and appContext arguments: The provider specifically registered
                for the values passed as the layer and appContext arguments shall be selected. If no provider is
                selected according to the preceding rule, the provider specifically registered for the value passed as
                the appContext argument and for all (that is, null) layers shall be selected. If no provider is selected
                according to the preceding rules, the provider specifically registered for the value passed as the layer
                argument and for all (that is, null) appContexts shall be selected. If no provider is selected according
                to the preceding rules, the provider registered for all (that is, null) layers and for all (that is,
                null) appContexts shall be selected. If no provider is selected according to the preceding rules, the
                factory shall terminate its search for a registered provider. The above precedence rules apply
                equivalently to registrations created with a null or non-null className argument.
            </description>
            <package>jakarta.security.auth.message.config</package>
            <class-interface>AuthConfigFactory</class-interface>
            <method name="getConfigProvider"
                return-type="jakarta.security.auth.message.config.AuthConfigProvider">
                <parameters>
                    <parameter>java.lang.String</parameter>
                    <parameter>java.lang.String</parameter>
                    <parameter>jakarta.security.auth.message.config.RegistrationListener</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>80</id>
            <description>
                Get the system-wide AuthConfigFactory implementation.
                If a non-null system-wide factory instance is defined at the time of the call, for example, with setFactory, it will
                be returned. Otherwise, an attempt will be made to construct an instance of the default
                AuthConfigFactory implementation class. The fully qualified class name of the default factory
                implementation class is obtained from the value of the authconfigprovider.factory security property.
                When an instance of the default factory implementation class is successfully constructed by this method,
                this method will set it as the system-wide factory instance. The absolute pathname of the Java security
                properties file is JAVA_HOME/lib/security/java.security, where JAVA_HOME refers to the directory where
                the JDK was installed.
            </description>
            <package>jakarta.security.auth.message.config</package>
            <class-interface>AuthConfigFactory</class-interface>
            <method name="getFactory" return-type="jakarta.security.auth.message.config.AuthConfigFactory" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>81</id>
            <description>
                Get the the registration context for the identified registration.
            </description>
            <package>jakarta.security.auth.message.config</package>
            <class-interface>AuthConfigFactory</class-interface>
            <method name="getRegistrationContext"
                return-type="jakarta.security.auth.message.config.AuthConfigFactory.AuthConfigFactory.RegistrationContext">
                <parameters>
                    <parameter>java.lang.String</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>82</id>
            <description>
                Get the registration identifiers for all registrations of the provider instance at the factory.
            </description>
            <package>jakarta.security.auth.message.config</package>
            <class-interface>AuthConfigFactory</class-interface>
            <method name="getRegistrationIDs" return-type="java.lang.String[]">
                <parameters>
                    <parameter>jakarta.security.auth.message.config.AuthConfigProvider</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>83</id>
            <description>
                Cause the factory to reprocess its persisent declarative representation of provider registrations.
                A factory should only replace an existing registration when a change of provider implementation class or
                initialization properties has occurred.
            </description>
            <package>jakarta.security.auth.message.config</package>
            <class-interface>AuthConfigFactory</class-interface>
            <method name="refresh" return-type="void" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>84</id>
            <description>
                Registers within the factory and records within the factory's persistent declarative representation of provider registrations
                a provider of ServerAuthConfig and/or ClientAuthConfig objects for a message layer and application
                context identifier.
                This method typically constructs an instance of the provider before registering it with the factory. Factories may
                extend or modify the persisted registrations of existing provider instances, if those instances were
                registered with ClassName and properties arguments equivalent to those passed in the current call. This
                method employs the two argument constructor required to be supported by every implementation of the
                AuthConfigProvider interface, and this method must pass a null value for the factory argument of the
                constructor. AuthConfigProviderImpl AuthConfigProviderImpl(Map properties, AuthConfigFactory factory).
                At most one registration may exist within the factory for a given combination of message layer and
                appContext. Any pre-existing registration with identical values for layer and appContext is replaced by
                a subsequent registration. When replacement occurs, the registration identifier, layer, and appContext
                identifier remain unchanged, and the AuthConfigProvider (with initialization properties) and description
                are replaced. Within the lifetime of its Java process, a factory must assign unique registration
                identifiers to registrations, and must never assign a previously used registration identifier to a
                registration whose message layer and or appContext identifier differ from the previous use. Programmatic
                registrations performed by using this method must update (according to the replacement rules described
                above) the persistent declarative representation of provider registrations employed by the factory
                constructor.
            </description>
            <package>jakarta.security.auth.message.config</package>
            <class-interface>AuthConfigFactory</class-interface>
            <method name="registerConfigProvider" return-type="java.lang.String">
                <parameters>
                    <parameter>java.lang.String</parameter>
                    <parameter>java.util.Map</parameter>
                    <parameter>java.lang.String</parameter>
                    <parameter>java.lang.String</parameter>
                    <parameter>java.lang.String</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>85</id>
            <description>
                Registers within the (in-memory) factory, a provider of ServerAuthConfig and/or ClientAuthConfig objects for a message layer
                and application context identifier.
                This method does NOT effect the factory's persistent declarative representation of provider registrations, and is
                intended to be used by providers to perform self-Registration. At most one registration may exist within
                the factory for a given combination of message layer and appContext. Any pre-existing registration with
                identical values for layer and appContext is replaced by a subsequent registration. When replacement
                occurs, the registration identifier, layer, and appContext identifier remain unchanged, and the
                AuthConfigProvider (with initialization properties) and description are replaced. Within the lifetime of
                its Java process, a factory must assign unique registration identifiers to registrations, and must never
                assign a previously used registration identifier to a registration whose message layer and or appContext
                identifier differ from the previous use.
            </description>
            <package>jakarta.security.auth.message.config</package>
            <class-interface>AuthConfigFactory</class-interface>
            <method name="registerConfigProvider" return-type="java.lang.String">
                <parameters>
                    <parameter>jakarta.security.auth.message.config.AuthConfigProvider</parameter>
                    <parameter>java.lang.String</parameter>
                    <parameter>java.lang.String</parameter>
                    <parameter>java.lang.String</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>86</id>
            <description>
                Remove the identified provider registration from the factory (and from the persistent declarative representation of
                provider registrations, if appropriate) and invoke any listeners associated with the removed
                registration.
            </description>
            <package>jakarta.security.auth.message.config</package>
            <class-interface>AuthConfigFactory</class-interface>
            <method name="removeRegistration" return-type="boolean">
                <parameters>
                    <parameter>java.lang.String</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>87</id>
            <description>
                Set the system-wide AuthConfigFactory implementation.
                If an implementation was set previously, it will be replaced. Listeners are not notified of a change to the registered
                factory.
            </description>
            <package>jakarta.security.auth.message.config</package>
            <class-interface>AuthConfigFactory</class-interface>
            <method name="setFactory" return-type="void">
                <parameters>
                    <parameter>jakarta.security.auth.message.config.AuthConfigFactory</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>88</id>
            <description>
                Get the application context identifier from the registration context
            </description>
            <package>jakarta.security.auth.message.config</package>
            <class-interface>AuthConfigFactory.RegistrationContext</class-interface>
            <method name="getAppContext" return-type="java.lang.String" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>89</id>
            <description>
                Get the description from the registration context
            </description>
            <package>jakarta.security.auth.message.config</package>
            <class-interface>AuthConfigFactory.RegistrationContext</class-interface>
            <method name="getDescription" return-type="java.lang.String" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>90</id>
            <description>
                Get the layer name from the registration context
            </description>
            <package>jakarta.security.auth.message.config</package>
            <class-interface>AuthConfigFactory.RegistrationContext</class-interface>
            <method name="getMessageLayer" return-type="java.lang.String" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>91</id>
            <description>
                Get the persisted status from the registration context.
            </description>
            <package>jakarta.security.auth.message.config</package>
            <class-interface>AuthConfigFactory.RegistrationContext</class-interface>
            <method name="isPersistent" return-type="boolean" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>92</id>
            <description>
                Get an instance of ClientAuthConfig from this provider.
                The implementation of this method returns a ClientAuthConfig instance that describes the configuration of
                ClientAuthModules at a given message layer, and for use in an identified application context.
            </description>
            <package>jakarta.security.auth.message.config</package>
            <class-interface>AuthConfigProvider</class-interface>
            <method name="getClientAuthConfig"
                return-type="jakarta.security.auth.message.config.ClientAuthConfig">
                <parameters>
                    <parameter>java.lang.String</parameter>
                    <parameter>java.lang.String</parameter>
                    <parameter>javax.security.auth.callback.CallbackHandler</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>93</id>
            <description>If this provider does not support the assignment of a default CallbackHandler to the returned
                ClientAuthConfig.</description>
            <package>jakarta.security.auth.message.config</package>
            <class-interface>AuthConfigProvider</class-interface>
            <method name="getClientAuthConfig"
                return-type="jakarta.security.auth.message.config.ClientAuthConfig">
                <parameters>
                    <parameter>java.lang.String</parameter>
                    <parameter>java.lang.String</parameter>
                    <parameter>javax.security.auth.callback.CallbackHandler</parameter>
                </parameters>
                <throw>jakarta.security.auth.message.AuthException</throw>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>94</id>
            <description>
                Get an instance of ServerAuthConfig from this provider.
                The implementation of this method returns a ServerAuthConfig instance that describes the configuration of
                ServerAuthModules at a given message layer, and for a particular application context.
            </description>
            <package>jakarta.security.auth.message.config</package>
            <class-interface>AuthConfigProvider</class-interface>
            <method name="getServerAuthConfig"
                return-type="jakarta.security.auth.message.config.ServerAuthConfig">
                <parameters>
                    <parameter>java.lang.String</parameter>
                    <parameter>java.lang.String</parameter>
                    <parameter>javax.security.auth.callback.CallbackHandler</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>95</id>
            <description>If this provider does not support the assignment of a default CallbackHandler to the returned
                ServerAuthConfig.</description>
            <package>jakarta.security.auth.message.config</package>
            <class-interface>AuthConfigProvider</class-interface>
            <method name="getServerAuthConfig"
                return-type="jakarta.security.auth.message.config.ServerAuthConfig">
                <parameters>
                    <parameter>java.lang.String</parameter>
                    <parameter>java.lang.String</parameter>
                    <parameter>javax.security.auth.callback.CallbackHandler</parameter>
                </parameters>
                <throw>jakarta.security.auth.message.AuthException</throw>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>96</id>
            <description>
                Causes a dynamic configuration provider to update its internal state such that any resulting change to its state is
                reflected in the corresponding authentication context configuration objects previously created by the
                provider within the current process context.
            </description>
            <package>jakarta.security.auth.message.config</package>
            <class-interface>AuthConfigProvider</class-interface>
            <method name="refresh" return-type="void" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>97</id>
            <description>
                Get a ClientAuthContext instance from this ClientAuthConfig.
                The implementation of this method returns a ClientAuthContext instance that encapsulates the ClientAuthModules used to
                secure and validate requests/responses associated with the given authContextID. Specifically, this
                method accesses this ClientAuthConfig object with the argument authContextID to determine the
                ClientAuthModules that are to be encapsulated in the returned ClientAuthContext instance. The
                ClientAuthConfig object establishes the request and response MessagePolicy objects that are passed to
                the encapsulated modules when they are initialized by the returned ClientAuthContext instance. It is the
                modules' responsibility to enforce these policies when invoked.
            </description>
            <package>jakarta.security.auth.message.config</package>
            <class-interface>ClientAuthConfig</class-interface>
            <method name="getAuthContext" return-type="jakarta.security.auth.message.config.ClientAuthContext">
                <parameters>
                    <parameter>java.lang.String</parameter>
                    <parameter>javax.security.auth.Subject</parameter>
                    <parameter>java.util.Map</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>98</id>
            <description>If this method fails.</description>
            <package>jakarta.security.auth.message.config</package>
            <class-interface>ClientAuthConfig</class-interface>
            <method name="getAuthContext" return-type="jakarta.security.auth.message.config.ClientAuthContext">
                <parameters>
                    <parameter>java.lang.String</parameter>
                    <parameter>javax.security.auth.Subject</parameter>
                    <parameter>java.util.Map</parameter>
                </parameters>
                <throw>jakarta.security.auth.message.AuthException</throw>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>99</id>
            <description>
                Notify the listener that a registration with which it was associated was replaced or unregistered.
                When a RegistrationListener is associated with a provider registration within the factory, the factory must call its
                notify method when the corresponding registration is unregistered or replaced.
            </description>
            <package>jakarta.security.auth.message.config</package>
            <class-interface>RegistrationListener</class-interface>
            <method name="notify" return-type="void">
                <parameters>
                    <parameter>java.lang.String</parameter>
                    <parameter>java.lang.String</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>100</id>
            <description>
                Get a ServerAuthContext instance from this ServerAuthConfig.
                The implementation of this method returns a ServerAuthContext instance that encapsulates the ServerAuthModules used to
                validate requests and secure responses associated with the given authContextID. Specifically, this
                method accesses this ServerAuthConfig object with the argument authContextID to determine the
                ServerAuthModules that are to be encapsulated in the returned ServerAuthContext instance. The
                ServerAuthConfig object establishes the request and response MessagePolicy objects that are passed to
                the encapsulated modules when they are initialized by the returned ServerAuthContext instance. It is the
                modules' responsibility to enforce these policies when invoked.
            </description>
            <package>jakarta.security.auth.message.config</package>
            <class-interface>ServerAuthConfig</class-interface>
            <method name="getAuthContext" return-type="jakarta.security.auth.message.config.ServerAuthContext">
                <parameters>
                    <parameter>java.lang.String</parameter>
                    <parameter>javax.security.auth.Subject</parameter>
                    <parameter>java.util.Map</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>101</id>
            <description>If this method fails.</description>
            <package>jakarta.security.auth.message.config</package>
            <class-interface>ServerAuthConfig</class-interface>
            <method name="getAuthContext" return-type="jakarta.security.auth.message.config.ServerAuthContext">
                <parameters>
                    <parameter>java.lang.String</parameter>
                    <parameter>javax.security.auth.Subject</parameter>
                    <parameter>java.util.Map</parameter>
                </parameters>
                <throw>jakarta.security.auth.message.AuthException</throw>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>102</id>
            <description>
                Get the one or more Class objects representing the message types supported by the module.
            </description>
            <package>jakarta.security.auth.message.module</package>
            <class-interface>ClientAuthModule</class-interface>
            <method name="getSupportedMessageTypes" return-type="java.lang.Class[]" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>103</id>
            <description>
                Initialize this module with request and response message policies to enforce, a CallbackHandler, and any module-specific
                configuration properties.
                The request policy and the response policy must not both be null.
            </description>
            <package>jakarta.security.auth.message.module</package>
            <class-interface>ClientAuthModule</class-interface>
            <method name="initialize" return-type="void">
                <parameters>
                    <parameter>jakarta.security.auth.message.MessagePolicy</parameter>
                    <parameter>jakarta.security.auth.message.MessagePolicy</parameter>
                    <parameter>javax.security.auth.callback.CallbackHandler</parameter>
                    <parameter>java.util.Map</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>104</id>
            <description>If module initialization fails, including for the case where the options argument contains
                elements that are not supported by the module.</description>
            <package>jakarta.security.auth.message.module</package>
            <class-interface>ClientAuthModule</class-interface>
            <method name="initialize" return-type="void">
                <parameters>
                    <parameter>jakarta.security.auth.message.MessagePolicy</parameter>
                    <parameter>jakarta.security.auth.message.MessagePolicy</parameter>
                    <parameter>javax.security.auth.callback.CallbackHandler</parameter>
                    <parameter>java.util.Map</parameter>
                </parameters>
                <throw>jakarta.security.auth.message.AuthException</throw>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>105</id>
            <description>
                Get the one or more Class objects representing the message types supported by the module.
            </description>
            <package>jakarta.security.auth.message.module</package>
            <class-interface>ServerAuthModule</class-interface>
            <method name="getSupportedMessageTypes" return-type="java.lang.Class[]" />
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>106</id>
            <description>
                Initialize this module with request and response message policies to enforce, a CallbackHandler, and any module-specific
                configuration properties.
                The request policy and the response policy must not both be null.
            </description>
            <package>jakarta.security.auth.message.module</package>
            <class-interface>ServerAuthModule</class-interface>
            <method name="initialize" return-type="void">
                <parameters>
                    <parameter>jakarta.security.auth.message.MessagePolicy</parameter>
                    <parameter>jakarta.security.auth.message.MessagePolicy</parameter>
                    <parameter>javax.security.auth.callback.CallbackHandler</parameter>
                    <parameter>java.util.Map</parameter>
                </parameters>
            </method>
        </assertion>
        <assertion required="true" impl-spec="false" status="active" testable="true">
            <id>107</id>
            <description>If module initialization fails, including for the case where the options argument contains
                elements that are not supported by the module.</description>
            <package>jakarta.security.auth.message.module</package>
            <class-interface>ServerAuthModule</class-interface>
            <method name="initialize" return-type="void">
                <parameters>
                    <parameter>jakarta.security.auth.message.MessagePolicy</parameter>
                    <parameter>jakarta.security.auth.message.MessagePolicy</parameter>
                    <parameter>javax.security.auth.callback.CallbackHandler</parameter>
                    <parameter>java.util.Map</parameter>
                </parameters>
                <throw>jakarta.security.auth.message.AuthException</throw>
            </method>
        </assertion>
    </assertions>
</javadoc>
