blob: 2a2c2efe723e17cfa4be499f422430dec750df77 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>ScramUtils (ActiveMQ Artemis Website 2.32.0 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="../../../../../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="ScramUtils (ActiveMQ Artemis Website 2.32.0 API)";
}
}
catch(err) {
}
//-->
var data = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/ScramUtils.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.apache.activemq.artemis.spi.core.security.scram</a></div>
<h2 title="Class ScramUtils" class="title">Class ScramUtils</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>org.apache.activemq.artemis.spi.core.security.scram.ScramUtils</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<pre>public class <span class="typeNameLabel">ScramUtils</span>
extends <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a></pre>
<div class="block">Provides static methods for working with SCRAM/SASL</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<table class="memberSummary">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Class</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="ScramUtils.NewPasswordByteArrayData.html" title="class in org.apache.activemq.artemis.spi.core.security.scram">ScramUtils.NewPasswordByteArrayData</a></span></code></th>
<td class="colLast">
<div class="block">New password data in byte array format</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="ScramUtils.NewPasswordStringData.html" title="class in org.apache.activemq.artemis.spi.core.security.scram">ScramUtils.NewPasswordStringData</a></span></code></th>
<td class="colLast">
<div class="block">New password data in database friendly format, i.e.</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>static <a href="ScramUtils.NewPasswordStringData.html" title="class in org.apache.activemq.artemis.spi.core.security.scram">ScramUtils.NewPasswordStringData</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#byteArrayToStringData(org.apache.activemq.artemis.spi.core.security.scram.ScramUtils.NewPasswordByteArrayData)">byteArrayToStringData</a></span>&#8203;(<a href="ScramUtils.NewPasswordByteArrayData.html" title="class in org.apache.activemq.artemis.spi.core.security.scram">ScramUtils.NewPasswordByteArrayData</a>&nbsp;ba)</code></th>
<td class="colLast">
<div class="block">Transforms NewPasswordByteArrayData into NewPasswordStringData into database friendly (string)
representation Uses Base64 to encode the byte arrays into strings</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>static byte[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#computeHmac(byte%5B%5D,java.lang.String,java.lang.String)">computeHmac</a></span>&#8203;(byte[]&nbsp;key,
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;hmacName,
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;string)</code></th>
<td class="colLast">
<div class="block">Computes HMAC byte array for given string</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>static byte[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#computeHmac(byte%5B%5D,javax.crypto.Mac,java.lang.String)">computeHmac</a></span>&#8203;(byte[]&nbsp;key,
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/javax/crypto/Mac.html?is-external=true" title="class or interface in javax.crypto" class="externalLink">Mac</a>&nbsp;hmac,
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;string)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/javax/crypto/Mac.html?is-external=true" title="class or interface in javax.crypto" class="externalLink">Mac</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#createHmac(byte%5B%5D,java.lang.String)">createHmac</a></span>&#8203;(byte[]&nbsp;keyBytes,
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;hmacName)</code></th>
<td class="colLast">
<div class="block">Creates HMAC</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>static byte[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#generateSaltedPassword(java.lang.String,byte%5B%5D,int,javax.crypto.Mac)">generateSaltedPassword</a></span>&#8203;(<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;password,
byte[]&nbsp;salt,
int&nbsp;iterationsCount,
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/javax/crypto/Mac.html?is-external=true" title="class or interface in javax.crypto" class="externalLink">Mac</a>&nbsp;mac)</code></th>
<td class="colLast">
<div class="block">Generates salted password.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isNullOrEmpty(java.lang.String)">isNullOrEmpty</a></span>&#8203;(<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;string)</code></th>
<td class="colLast">
<div class="block">Checks if string is null or empty</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>static <a href="ScramUtils.NewPasswordByteArrayData.html" title="class in org.apache.activemq.artemis.spi.core.security.scram">ScramUtils.NewPasswordByteArrayData</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#newPassword(java.lang.String,byte%5B%5D,int,java.security.MessageDigest,javax.crypto.Mac)">newPassword</a></span>&#8203;(<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;passwordClearText,
byte[]&nbsp;salt,
int&nbsp;iterations,
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/security/MessageDigest.html?is-external=true" title="class or interface in java.security" class="externalLink">MessageDigest</a>&nbsp;messageDigest,
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/javax/crypto/Mac.html?is-external=true" title="class or interface in javax.crypto" class="externalLink">Mac</a>&nbsp;mac)</code></th>
<td class="colLast">
<div class="block">Computes the data associated with new password like salted password, keys, etc</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang" class="externalLink">clone</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang" class="externalLink">equals</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang" class="externalLink">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang" class="externalLink">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang" class="externalLink">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang" class="externalLink">notify</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang" class="externalLink">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang" class="externalLink">toString</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#wait(long,int)" title="class or interface in java.lang" class="externalLink">wait</a></code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="generateSaltedPassword(java.lang.String,byte[],int,javax.crypto.Mac)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>generateSaltedPassword</h4>
<pre class="methodSignature">public static&nbsp;byte[]&nbsp;generateSaltedPassword&#8203;(<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;password,
byte[]&nbsp;salt,
int&nbsp;iterationsCount,
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/javax/crypto/Mac.html?is-external=true" title="class or interface in javax.crypto" class="externalLink">Mac</a>&nbsp;mac)
throws <a href="ScramException.html" title="class in org.apache.activemq.artemis.spi.core.security.scram">ScramException</a></pre>
<div class="block">Generates salted password.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>password</code> - Clear form password, i.e. what user typed</dd>
<dd><code>salt</code> - Salt to be used</dd>
<dd><code>iterationsCount</code> - Iterations for 'salting'</dd>
<dd><code>mac</code> - HMAC to be used</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>salted password</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="ScramException.html" title="class in org.apache.activemq.artemis.spi.core.security.scram">ScramException</a></code></dd>
</dl>
</li>
</ul>
<a id="createHmac(byte[],java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createHmac</h4>
<pre class="methodSignature">public static&nbsp;<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/javax/crypto/Mac.html?is-external=true" title="class or interface in javax.crypto" class="externalLink">Mac</a>&nbsp;createHmac&#8203;(byte[]&nbsp;keyBytes,
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;hmacName)
throws <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/security/NoSuchAlgorithmException.html?is-external=true" title="class or interface in java.security" class="externalLink">NoSuchAlgorithmException</a>,
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/security/InvalidKeyException.html?is-external=true" title="class or interface in java.security" class="externalLink">InvalidKeyException</a></pre>
<div class="block">Creates HMAC</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>keyBytes</code> - key</dd>
<dd><code>hmacName</code> - HMAC name</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Mac</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/security/InvalidKeyException.html?is-external=true" title="class or interface in java.security" class="externalLink">InvalidKeyException</a></code> - if internal error occur while working with SecretKeySpec</dd>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/security/NoSuchAlgorithmException.html?is-external=true" title="class or interface in java.security" class="externalLink">NoSuchAlgorithmException</a></code> - if hmacName is not supported by the java</dd>
</dl>
</li>
</ul>
<a id="computeHmac(byte[],java.lang.String,java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>computeHmac</h4>
<pre class="methodSignature">public static&nbsp;byte[]&nbsp;computeHmac&#8203;(byte[]&nbsp;key,
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;hmacName,
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;string)
throws <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/security/InvalidKeyException.html?is-external=true" title="class or interface in java.security" class="externalLink">InvalidKeyException</a>,
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/security/NoSuchAlgorithmException.html?is-external=true" title="class or interface in java.security" class="externalLink">NoSuchAlgorithmException</a></pre>
<div class="block">Computes HMAC byte array for given string</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>key</code> - key</dd>
<dd><code>hmacName</code> - HMAC name</dd>
<dd><code>string</code> - string for which HMAC will be computed</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>computed HMAC</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/security/InvalidKeyException.html?is-external=true" title="class or interface in java.security" class="externalLink">InvalidKeyException</a></code> - if internal error occur while working with SecretKeySpec</dd>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/security/NoSuchAlgorithmException.html?is-external=true" title="class or interface in java.security" class="externalLink">NoSuchAlgorithmException</a></code> - if hmacName is not supported by the java</dd>
</dl>
</li>
</ul>
<a id="computeHmac(byte[],javax.crypto.Mac,java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>computeHmac</h4>
<pre class="methodSignature">public static&nbsp;byte[]&nbsp;computeHmac&#8203;(byte[]&nbsp;key,
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/javax/crypto/Mac.html?is-external=true" title="class or interface in javax.crypto" class="externalLink">Mac</a>&nbsp;hmac,
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;string)
throws <a href="ScramException.html" title="class in org.apache.activemq.artemis.spi.core.security.scram">ScramException</a></pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="ScramException.html" title="class in org.apache.activemq.artemis.spi.core.security.scram">ScramException</a></code></dd>
</dl>
</li>
</ul>
<a id="isNullOrEmpty(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isNullOrEmpty</h4>
<pre class="methodSignature">public static&nbsp;boolean&nbsp;isNullOrEmpty&#8203;(<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;string)</pre>
<div class="block">Checks if string is null or empty</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>string</code> - String to be tested</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if the string is null or empty, false otherwise</dd>
</dl>
</li>
</ul>
<a id="newPassword(java.lang.String,byte[],int,java.security.MessageDigest,javax.crypto.Mac)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>newPassword</h4>
<pre class="methodSignature">public static&nbsp;<a href="ScramUtils.NewPasswordByteArrayData.html" title="class in org.apache.activemq.artemis.spi.core.security.scram">ScramUtils.NewPasswordByteArrayData</a>&nbsp;newPassword&#8203;(<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;passwordClearText,
byte[]&nbsp;salt,
int&nbsp;iterations,
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/security/MessageDigest.html?is-external=true" title="class or interface in java.security" class="externalLink">MessageDigest</a>&nbsp;messageDigest,
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/javax/crypto/Mac.html?is-external=true" title="class or interface in javax.crypto" class="externalLink">Mac</a>&nbsp;mac)
throws <a href="ScramException.html" title="class in org.apache.activemq.artemis.spi.core.security.scram">ScramException</a></pre>
<div class="block">Computes the data associated with new password like salted password, keys, etc
<p>
This method is supposed to be used by a server when user provides new clear form password. We
don't want to save it that way so we generate salted password and store it along with other
data required by the SCRAM mechanism</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>passwordClearText</code> - Clear form password, i.e. as provided by the user</dd>
<dd><code>salt</code> - Salt to be used</dd>
<dd><code>iterations</code> - Iterations for 'salting'</dd>
<dd><code>mac</code> - HMAC name to be used</dd>
<dd><code>messageDigest</code> - Digest name to be used</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>new password data while working with SecretKeySpec</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="ScramException.html" title="class in org.apache.activemq.artemis.spi.core.security.scram">ScramException</a></code></dd>
</dl>
</li>
</ul>
<a id="byteArrayToStringData(org.apache.activemq.artemis.spi.core.security.scram.ScramUtils.NewPasswordByteArrayData)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>byteArrayToStringData</h4>
<pre class="methodSignature">public static&nbsp;<a href="ScramUtils.NewPasswordStringData.html" title="class in org.apache.activemq.artemis.spi.core.security.scram">ScramUtils.NewPasswordStringData</a>&nbsp;byteArrayToStringData&#8203;(<a href="ScramUtils.NewPasswordByteArrayData.html" title="class in org.apache.activemq.artemis.spi.core.security.scram">ScramUtils.NewPasswordByteArrayData</a>&nbsp;ba)</pre>
<div class="block">Transforms NewPasswordByteArrayData into NewPasswordStringData into database friendly (string)
representation Uses Base64 to encode the byte arrays into strings</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>ba</code> - Byte array data</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>String data</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/ScramUtils.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &#169; 2024 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</footer>
</body>
</html>