Author: remm
Date: Sun May 10 20:56:52 2026
New Revision: 1934065

Log:
Javadoc update for 9.0.118

Added:
   
tomcat/site/trunk/docs/tomcat-9.0-doc/api/org/apache/tomcat/util/security/ConstantTime.html
Deleted:
   
tomcat/site/trunk/docs/tomcat-9.0-doc/api/org/apache/catalina/authenticator/SpnegoAuthenticator.SpnegoTokenFixer.html

Added: 
tomcat/site/trunk/docs/tomcat-9.0-doc/api/org/apache/tomcat/util/security/ConstantTime.html
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ 
tomcat/site/trunk/docs/tomcat-9.0-doc/api/org/apache/tomcat/util/security/ConstantTime.html
 Sun May 10 20:56:52 2026        (r1934065)
@@ -0,0 +1,217 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (25) -->
+<title>ConstantTime (Apache Tomcat 9.0.118 API Documentation)</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="description" content="declaration: package: 
org.apache.tomcat.util.security, class: ConstantTime">
+<meta name="generator" content="javadoc/ClassWriter">
+<link rel="stylesheet" type="text/css" 
href="../../../../../resource-files/jquery-ui.min.css">
+<link rel="stylesheet" type="text/css" 
href="../../../../../resource-files/stylesheet.css">
+<script type="text/javascript" 
src="../../../../../script-files/script.js"></script>
+<script type="text/javascript" 
src="../../../../../script-files/jquery-3.7.1.min.js"></script>
+<script type="text/javascript" 
src="../../../../../script-files/jquery-ui.min.js"></script>
+</head>
+<body class="class-declaration-page">
+<script type="text/javascript">const pathtoroot = "../../../../../";
+loadScripts(document, 'script');</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<header role="banner">
+<nav role="navigation">
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="top-nav" id="navbar-top">
+<div class="nav-content">
+<div class="nav-menu-button"><button id="navbar-toggle-button" 
aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation 
links"><span class="nav-bar-toggle-icon">&nbsp;</span><span 
class="nav-bar-toggle-icon">&nbsp;</span><span 
class="nav-bar-toggle-icon">&nbsp;</span></button></div>
+<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation 
links">Skip navigation links</a></div>
+<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
+<li><a href="../../../../../index.html">Overview</a></li>
+<li class="nav-bar-cell1-rev">Class</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../search.html">Search</a></li>
+<li><a href="../../../../../help-doc.html#class">Help</a></li>
+</ul>
+<div class="about-language"><b>Apache Tomcat<sup>®</sup> 9.0.118</b></div>
+</div>
+</div>
+<div class="sub-nav">
+<div class="nav-content">
+<ol class="sub-nav-list">
+<li><a href="package-summary.html">org.apache.tomcat.util.security</a></li>
+<li><a href="ConstantTime.html" class="current-selection">ConstantTime</a></li>
+</ol>
+<div class="nav-list-search"><input type="text" id="search-input" disabled 
placeholder="Search documentation (type /)" aria-label="Search in 
documentation" autocomplete="off" spellcheck="false"><input type="reset" 
id="reset-search" disabled value="Reset"></div>
+</div>
+</div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<span class="skip-nav" id="skip-navbar-top"></span></nav>
+</header>
+<div class="main-grid">
+<nav role="navigation" class="toc" aria-label="Table of contents">
+<div class="toc-header">Contents&nbsp;<input type="text" class="filter-input" 
disabled placeholder="Filter contents (type .)" aria-label="Filter table of 
contents" autocomplete="off" spellcheck="false"><input type="reset" 
class="reset-filter" disabled tabindex="-1" value="Reset"></div>
+<ol class="toc-list" tabindex="-1">
+<li><a href="#" tabindex="0">Description</a></li>
+<li><a href="#method-summary" tabindex="0">Method Summary</a></li>
+<li><a href="#method-detail" tabindex="0">Method Details</a>
+<ol class="toc-list">
+<li><a href="#equals(java.lang.String,java.lang.String,boolean)" 
tabindex="0">equals(String, String, boolean)</a></li>
+<li><a href="#equals(org.apache.tomcat.util.buf.ByteChunk,java.lang.String)" 
tabindex="0">equals(ByteChunk, String)</a></li>
+<li><a href="#equals(byte%5B%5D,byte%5B%5D)" tabindex="0">equals(byte[], 
byte[])</a></li>
+</ol>
+</li>
+</ol>
+<button class="hide-sidebar"><span>Hide sidebar&nbsp;</span><img 
src="../../../../../resource-files/left.svg" alt="Hide 
sidebar"></button><button class="show-sidebar"><img 
src="../../../../../resource-files/right.svg" alt="Show 
sidebar"><span>&nbsp;Show sidebar</span></button></nav>
+<main role="main">
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<h1 title="Class ConstantTime" class="title">Class ConstantTime</h1>
+</div>
+<div class="inheritance" title="Inheritance Tree"><a 
href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html";
 title="class or interface in java.lang" 
class="external-link">java.lang.Object</a>
+<div class="inheritance">org.apache.tomcat.util.security.ConstantTime</div>
+</div>
+<section class="class-description" id="class-description">
+<hr>
+<div class="horizontal-scroll">
+<div class="type-signature"><span class="modifiers">public class </span><span 
class="element-name type-name-label">ConstantTime</span>
+<span class="extends-implements">extends <a 
href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html";
 title="class or interface in java.lang" 
class="external-link">Object</a></span></div>
+<div class="block">Utility class for methods that, for security reasons, need 
to run in - as far as practical - constant time.</div>
+</div>
+</section>
+<section class="summary">
+<ul class="summary-list">
+<!-- ========== METHOD SUMMARY =========== -->
+<li>
+<section class="method-summary" id="method-summary">
+<h2>Method Summary</h2>
+<div id="method-summary-table">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button 
id="method-summary-table-tab0" role="tab" aria-selected="true" 
aria-controls="method-summary-table.tabpanel" tabindex="0" 
onkeydown="switchTab(event)" onclick="show('method-summary-table', 
'method-summary-table', 3)" class="active-table-tab">All 
Methods</button><button id="method-summary-table-tab1" role="tab" 
aria-selected="false" aria-controls="method-summary-table.tabpanel" 
tabindex="-1" onkeydown="switchTab(event)" 
onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" 
class="table-tab">Static Methods</button><button id="method-summary-table-tab4" 
role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" 
tabindex="-1" onkeydown="switchTab(event)" 
onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" 
class="table-tab">Concrete Methods</button></div>
+<div id="method-summary-table.tabpanel" role="tabpanel" 
aria-labelledby="method-summary-table-tab0">
+<div class="summary-table three-column-summary">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color method-summary-table 
method-summary-table-tab1 method-summary-table-tab4"><code>static 
boolean</code></div>
+<div class="col-second even-row-color method-summary-table 
method-summary-table-tab1 method-summary-table-tab4"><code><a 
href="#equals(byte%5B%5D,byte%5B%5D)" 
class="member-name-link">equals</a><wbr>(byte[]&nbsp;b1,
+ byte[]&nbsp;b2)</code></div>
+<div class="col-last even-row-color method-summary-table 
method-summary-table-tab1 method-summary-table-tab4">
+<div class="block">Implements byte-array equality which always compares all 
bytes in the array, without stopping early if any bytes
+do not match.</div>
+</div>
+<div class="col-first odd-row-color method-summary-table 
method-summary-table-tab1 method-summary-table-tab4"><code>static 
boolean</code></div>
+<div class="col-second odd-row-color method-summary-table 
method-summary-table-tab1 method-summary-table-tab4"><code><a 
href="#equals(java.lang.String,java.lang.String,boolean)" 
class="member-name-link">equals</a><wbr>(<a 
href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html";
 title="class or interface in java.lang" 
class="external-link">String</a>&nbsp;s1,
+ <a 
href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html";
 title="class or interface in java.lang" 
class="external-link">String</a>&nbsp;s2,
+ boolean&nbsp;ignoreCase)</code></div>
+<div class="col-last odd-row-color method-summary-table 
method-summary-table-tab1 method-summary-table-tab4">
+<div class="block">Implements String equality which always compares all 
characters in the string, without stopping early if any
+characters do not match.</div>
+</div>
+<div class="col-first even-row-color method-summary-table 
method-summary-table-tab1 method-summary-table-tab4"><code>static 
boolean</code></div>
+<div class="col-second even-row-color method-summary-table 
method-summary-table-tab1 method-summary-table-tab4"><code><a 
href="#equals(org.apache.tomcat.util.buf.ByteChunk,java.lang.String)" 
class="member-name-link">equals</a><wbr>(<a href="../buf/ByteChunk.html" 
title="class in org.apache.tomcat.util.buf">ByteChunk</a>&nbsp;bc,
+ <a 
href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html";
 title="class or interface in java.lang" 
class="external-link">String</a>&nbsp;s)</code></div>
+<div class="col-last even-row-color method-summary-table 
method-summary-table-tab1 method-summary-table-tab4">
+<div class="block">Implements ByteChunk / String equality which always 
compares all characters, without stopping early if any
+characters do not match.</div>
+</div>
+</div>
+</div>
+</div>
+<div class="inherited-list">
+<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from 
class&nbsp;<a 
href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#method-summary";
 title="class or interface in java.lang" class="external-link">Object</a></h3>
+<code><a 
href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#clone()"
 title="class or interface in java.lang" class="external-link">clone</a>, <a 
href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)"
 title="class or interface in java.lang" class="external-link">equals</a>, <a 
href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#finalize()"
 title="class or interface in java.lang" class="external-link">finalize</a>, <a 
href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#getClass()"
 title="class or interface in java.lang" class="external-link">getClass</a>, <a 
href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#hashCode()"
 title="class or interface in java.lang" class="external-link">hashCode</a>, <a 
href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Objec
 t.html#notify()" title="class or interface in java.lang" 
class="external-link">notify</a>, <a 
href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#notifyAll()"
 title="class or interface in java.lang" class="external-link">notifyAll</a>, 
<a 
href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#toString()"
 title="class or interface in java.lang" class="external-link">toString</a>, <a 
href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#wait()"
 title="class or interface in java.lang" class="external-link">wait</a>, <a 
href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#wait(long)"
 title="class or interface in java.lang" class="external-link">wait</a>, <a 
href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#wait(long,int)"
 title="class or interface in java.lang" 
class="external-link">wait</a></code></div>
+</section>
+</li>
+</ul>
+</section>
+<section class="details">
+<ul class="details-list">
+<!-- ============ METHOD DETAIL ========== -->
+<li>
+<section class="method-details" id="method-detail">
+<h2>Method Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="equals(java.lang.String,java.lang.String,boolean)">
+<h3>equals</h3>
+<div class="horizontal-scroll">
+<div class="member-signature"><span class="modifiers">public 
static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span 
class="element-name">equals</span><wbr><span class="parameters">(<a 
href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html";
 title="class or interface in java.lang" 
class="external-link">String</a>&nbsp;s1,
+ <a 
href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html";
 title="class or interface in java.lang" 
class="external-link">String</a>&nbsp;s2,
+ boolean&nbsp;ignoreCase)</span></div>
+<div class="block">Implements String equality which always compares all 
characters in the string, without stopping early if any
+characters do not match.
+<p>
+<i>Note:</i> This implementation was adapted from <a 
href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/security/MessageDigest.html#isEqual(byte%5B%5D,byte%5B%5D)"
 title="class or interface in java.security" 
class="external-link"><code>MessageDigest.isEqual(byte[], byte[])</code></a> 
which we assume is as
+optimizer-defeating as possible.</div>
+<dl class="notes">
+<dt>Parameters:</dt>
+<dd><code>s1</code> - The first string to compare.</dd>
+<dd><code>s2</code> - The second string to compare.</dd>
+<dd><code>ignoreCase</code> - <code>true</code> if the strings should be 
compared without regard to case. Note that "true"
+                      here is only guaranteed to work with plain ASCII 
characters.</dd>
+<dt>Returns:</dt>
+<dd><code>true</code> if the strings are equal to each other, 
<code>false</code> otherwise.</dd>
+</dl>
+</div>
+</section>
+</li>
+<li>
+<section class="detail" 
id="equals(org.apache.tomcat.util.buf.ByteChunk,java.lang.String)">
+<h3>equals</h3>
+<div class="horizontal-scroll">
+<div class="member-signature"><span class="modifiers">public 
static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span 
class="element-name">equals</span><wbr><span class="parameters">(<a 
href="../buf/ByteChunk.html" title="class in 
org.apache.tomcat.util.buf">ByteChunk</a>&nbsp;bc,
+ <a 
href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html";
 title="class or interface in java.lang" 
class="external-link">String</a>&nbsp;s)</span></div>
+<div class="block">Implements ByteChunk / String equality which always 
compares all characters, without stopping early if any
+characters do not match.
+<p>
+<i>Note:</i> This implementation was adapted from <a 
href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/security/MessageDigest.html#isEqual(byte%5B%5D,byte%5B%5D)"
 title="class or interface in java.security" 
class="external-link"><code>MessageDigest.isEqual(byte[], byte[])</code></a> 
which we assume is as
+optimizer-defeating as possible.</div>
+<dl class="notes">
+<dt>Parameters:</dt>
+<dd><code>bc</code> - The ByteChunk to compare.</dd>
+<dd><code>s</code> - The string to compare.</dd>
+<dt>Returns:</dt>
+<dd><code>true</code> if the strings are equal to each other, 
<code>false</code> otherwise.</dd>
+</dl>
+</div>
+</section>
+</li>
+<li>
+<section class="detail" id="equals(byte[],byte[])">
+<h3>equals</h3>
+<div class="horizontal-scroll">
+<div class="member-signature"><span class="modifiers">public 
static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span 
class="element-name">equals</span><wbr><span class="parameters">(byte[]&nbsp;b1,
+ byte[]&nbsp;b2)</span></div>
+<div class="block">Implements byte-array equality which always compares all 
bytes in the array, without stopping early if any bytes
+do not match.
+<p>
+<i>Note:</i> Implementation note: this method delegates to <a 
href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/security/MessageDigest.html#isEqual(byte%5B%5D,byte%5B%5D)"
 title="class or interface in java.security" 
class="external-link"><code>MessageDigest.isEqual(byte[], byte[])</code></a> 
under the assumption
+that it provides a constant-time comparison of the bytes in the arrays. Java 
7+ has such an implementation, but
+neither the Javadoc nor any specification requires it. Therefore, Tomcat 
should continue to use <i>this</i>
+method internally in case the JDK implementation changes so this method can be 
re-implemented properly.</div>
+<dl class="notes">
+<dt>Parameters:</dt>
+<dd><code>b1</code> - The first array to compare.</dd>
+<dd><code>b2</code> - The second array to compare.</dd>
+<dt>Returns:</dt>
+<dd><code>true</code> if the arrays are equal to each other, 
<code>false</code> otherwise.</dd>
+</dl>
+</div>
+</section>
+</li>
+</ul>
+</section>
+</li>
+</ul>
+</section>
+<!-- ========= END OF CLASS DATA ========= -->
+<footer role="contentinfo">
+<hr>
+<p class="legal-copy"><small>Copyright &#169; 2000-2026 Apache Software 
Foundation.               <br/>               Apache Tomcat, Tomcat, Apache, 
the Apache Tomcat logo and the Apache logo are either registered trademarks     
          or trademarks of the Apache Software Foundation.</small></p>
+</footer>
+</main>
+</div>
+</body>
+</html>


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to