Re: Need to execute javascript using JMeter

Abhitosh Patil <[email protected]> Fri, 4 Apr 2025 03:18:37 +0530
Newsgroups gmane.comp.jakarta.jmeter.user
Message-ID <CAC-b7DSNnCKa_z8hUKzxuZ8ia-35ASv_OP8zLikp671=OOWYyg@mail.gmail.com>
--000000000000fcf4510631e6bb71
Content-Type: multipart/alternative; boundary="000000000000fcf44f0631e6bb70"

--000000000000fcf44f0631e6bb70
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

I passed environment variables like this in user defined variables:
${__BeanShell(System.getenv,appKey)}
${__BeanShell(System.getenv,appSecret)}

Now the JSR223 sampler has 200 OK response. But where can I see the
signature value? Response is blank in the view results tree.

[image: image.png]



On Fri, Apr 4, 2025 at 2:06=E2=80=AFAM [email protected] <
[email protected]> wrote:

> sorry, I made a copy paste error, once again a fixed code snippet:...
> and an additional information: you must provide the appKey and the
> appSecret as an environment variable from outside.
> that means that you have to export those variables in the terminla from
> which you start your jmeter session, or as usual in an encapsulating shel=
l
> script
>
> // here the code...
> import javax.crypto.Mac
> import javax.crypto.spec.SecretKeySpec
> import java.util.Base64
>
> // Retrieve environment variables (using System.getenv as an example)
> def key =3D System.getenv("appKey") ?: "defaultKey"
> def secret =3D System.getenv("appSecret") ?: "am1ldGVy"
>
> def ts =3D System.currentTimeMillis()
> def baseString =3D "${key}-2-${ts}"
>
> // Decode the secret from Base64
> def secretDecoded =3D Base64.decoder.decode(secret)
>
> // Generate HMAC-SHA256 hash
> Mac mac =3D Mac.getInstance("HmacSHA256")
> mac.init(new SecretKeySpec(secretDecoded, "HmacSHA256"))
> byte[] macSignature =3D mac.doFinal(baseString.getBytes("UTF-8"))
>
> // Encode the signature to Base64 and sanitize it
> def macSignatureBase64 =3D Base64.encoder.encodeToString(macSignature)
>     .replace("=3D", "")
>     .replace("+", "-")
>     .replace("/", "_")
>
> // Simulated environment variable storage (Postman equivalent)
> def environment =3D [:] // A map to mimic Postman environment variables
> environment["signature"] =3D macSignatureBase64
> environment["timestamp"] =3D ts
>
> // put the result in jmeter vars
> vars.put("signature",macSignatureBase64)
> vars.put("timestamp","" + ts)
>
> // Debug output
> println "Signature: ${macSignatureBase64}"
> println "Timestamp: ${ts}"
>
> > Abhitosh Patil <[email protected]> hat am 03.04.2025 21:15 CEST
> geschrieben:
> >
> >
> > Hi Chriss,
> > Hi executed below Groovy code with JSR223 sampler and got an error for
> that.
> >
> > Code:
> > import javax.crypto.Mac
> > import javax.crypto.spec.SecretKeySpec
> > import java.util.Base64
> >
> > // Retrieve environment variables (using System.getenv as an example)
> > def key =3D System.getenv("d552a1b3-3558-3c47-b34a-1ba87558b74b") ?:
> "defaultKey"
> > def secret =3D
> System.getenv("vz7noe5z17i2usV58oFR5YMtU1BUFL0Ah9+eXuwV6IQ=3D") ?: "am1ld=
GVy"
> > def ts =3D System.currentTimeMillis()
> > def baseString =3D "${key}-2-${ts}"
> >
> > // Decode the secret from Base64
> > def secretDecoded =3D Base64.decoder.decode(secret)
> >
> > // Generate HMAC-SHA256 hash
> > Mac mac =3D Mac.getInstance("HmacSHA256")
> > mac.init(new SecretKeySpec(secretDecoded, "HmacSHA256"))
> > byte[] macSignature =3D mac.doFinal(baseString.getBytes("UTF-8"))
> >
> > // Encode the signature to Base64 and sanitize it
> > def macSignatureBase64 =3D Base64.encoder.encodeToString(macSignature)
> >  .replace("=3D", "")import javax.crypto.Mac
> > import javax.crypto.spec.SecretKeySpec
> > import java.util.Base64
> >
> > // Retrieve environment variables (using System.getenv as an example)
> > def key =3D System.getenv("appKey") ?: "defaultKey"
> > def secret =3D System.getenv("appSecret") ?: "am1ldGVy"
> >
> > def ts =3D System.currentTimeMillis()
> > def baseString =3D "${key}-2-${ts}"
> >
> > // Decode the secret from Base64
> > def secretDecoded =3D Base64.decoder.decode(secret)
> >
> > // Generate HMAC-SHA256 hash
> > Mac mac =3D Mac.getInstance("HmacSHA256")
> > mac.init(new SecretKeySpec(secretDecoded, "HmacSHA256"))
> > byte[] macSignature =3D mac.doFinal(baseString.getBytes("UTF-8"))
> >
> > // Encode the signature to Base64 and sanitize it
> > def macSignatureBase64 =3D Base64.encoder.encodeToString(macSignature)
> >  .replace("=3D", "")
> >  .replace("+", "-")
> >  .replace("/", "_")
> >
> > // Simulated environment variable storage (Postman equivalent)
> > def environment =3D [:] // A map to mimic Postman environment variables
> > environment["signature"] =3D macSignatureBase64
> > environment["timestamp"] =3D ts
> >
> > // put the result in jmeter vars
> > vars.put("signature",macSignatureBase64)
> > vars.put("timestamp","" + ts)
> >
> > // Debug output
> > println "Signature: ${macSignatureBase64}"
> > println "Timestamp: ${ts}"
> >
> > Getting this error:
> >
> >
> > On Thu, Apr 3, 2025 at 11:30=E2=80=AFPM Christof Schmalenbach <
> [email protected]> wrote:
> > > I see that my last mail was not well formatted; here another trial...
> > >
> > > import javax.crypto.Mac
> > > import javax.crypto.spec.SecretKeySpec
> > > import java.util.Base64
> > >
> > > // Retrieve environment variables (using System.getenv as an example)
> > > def key =3D System.getenv("appKey") ?: "defaultKey"
> > > def secret =3D System.getenv("appSecret") ?: "am1ldGVy"
> > >
> > > def ts =3D System.currentTimeMillis()
> > > def baseString =3D "${key}-2-${ts}"
> > >
> > > // Decode the secret from Base64
> > > def secretDecoded =3D Base64.decoder.decode(secret)
> > >
> > > // Generate HMAC-SHA256 hash
> > > Mac mac =3D Mac.getInstance("HmacSHA256")
> > > mac.init(new SecretKeySpec(secretDecoded, "HmacSHA256"))
> > > byte[] macSignature =3D mac.doFinal(baseString.getBytes("UTF-8"))
> > >
> > > // Encode the signature to Base64 and sanitize it
> > > def macSignatureBase64 =3D Base64.encoder.encodeToString(macSignature=
)
> > >  .replace("=3D", "")import javax.crypto.Mac
> > > import javax.crypto.spec.SecretKeySpec
> > > import java.util.Base64
> > >
> > > // Retrieve environment variables (using System.getenv as an example)
> > > def key =3D System.getenv("appKey") ?: "defaultKey"
> > > def secret =3D System.getenv("appSecret") ?: "am1ldGVy"
> > >
> > > def ts =3D System.currentTimeMillis()
> > > def baseString =3D "${key}-2-${ts}"
> > >
> > > // Decode the secret from Base64
> > > def secretDecoded =3D Base64.decoder.decode(secret)
> > >
> > > // Generate HMAC-SHA256 hash
> > > Mac mac =3D Mac.getInstance("HmacSHA256")
> > > mac.init(new SecretKeySpec(secretDecoded, "HmacSHA256"))
> > > byte[] macSignature =3D mac.doFinal(baseString.getBytes("UTF-8"))
> > >
> > > // Encode the signature to Base64 and sanitize it
> > > def macSignatureBase64 =3D Base64.encoder.encodeToString(macSignature=
)
> > >  .replace("=3D", "")
> > >  .replace("+", "-")
> > >  .replace("/", "_")
> > >
> > > // Simulated environment variable storage (Postman equivalent)
> > > def environment =3D [:] // A map to mimic Postman environment variabl=
es
> > > environment["signature"] =3D macSignatureBase64
> > > environment["timestamp"] =3D ts
> > >
> > > // put the result in jmeter vars
> > > vars.put("signature",macSignatureBase64)
> > > vars.put("timestamp","" + ts)
> > >
> > > // Debug output
> > > println "Signature: ${macSignatureBase64}"
> > > println "Timestamp: ${ts}"
> > >
> > >  .replace("+", "-")
> > >  .replace("/", "_")
> > >
> > > // Simulated environment variable storage (Postman equivalent)
> > > def environment =3D [:] // A map to mimic Postman environment variabl=
es
> > > environment["signature"] =3D macSignatureBase64
> > > environment["timestamp"] =3D ts
> > >
> > > // put the result in jmeter vars
> > > vars.put("signature",macSignatureBase64)
> > > vars.put("timestamp","" + ts)
> > >
> > > // Debug output
> > > println "Signature: ${macSignatureBase64}"
> > > println "Timestamp: ${ts}"
> > >
> > >
> > > On 4/3/25 19:49, Christof Schmalenbach wrote:
> > > > Hi Abhitosh,
> > > > I'm not sure, whether I understand your js code completely.
> > > > But I got at least an idea. This is the result of my code migration=
.
> > > > I test the code in a jmeter script within a jsr223 sampler and it
> seems
> > > > to work.
> > > > (OpenJDK version 19.X; may be that in java version 8.X not all
> packages
> > > > used are supported???)
> > > >
> > > > regards
> > > > Christof
> > > >
> > > > import javax.crypto.Mac import javax.crypto.spec.SecretKeySpec impo=
rt
> > > > java.util.Base64 // Retrieve environment variables (using
> System.getenv
> > > > as an example) def key =3D System.getenv("appKey") ?: "defaultKey" =
def
> > > > secret =3D System.getenv("appSecret") ?: "am1ldGVy" def ts =3D
> > > > System.currentTimeMillis() def baseString =3D "${key}-2-${ts}" //
> Decode
> > > > the secret from Base64 def secretDecoded =3D
> Base64.decoder.decode(secret)
> > > > // Generate HMAC-SHA256 hash Mac mac =3D Mac.getInstance("HmacSHA25=
6")
> > > > mac.init(new SecretKeySpec(secretDecoded, "HmacSHA256")) byte[]
> > > > macSignature =3D mac.doFinal(baseString.getBytes("UTF-8")) // Encod=
e
> the
> > > > signature to Base64 and sanitize it def macSignatureBase64 =3D
> > > > Base64.encoder.encodeToString(macSignature) .replace("=3D", "")
> > > > .replace("+", "-") .replace("/", "_") // Simulated environment
> variable
> > > > storage (Postman equivalent) def environment =3D [:] // A map to mi=
mic
> > > > Postman environment variables environment["signature"] =3D
> > > > macSignatureBase64 environment["timestamp"] =3D ts // Debug output
> println
> > > > "Signature: ${macSignatureBase64}" println "Timestamp: ${ts}"
> > > >
> > > >
> > > >
> > > > On 4/3/25 16:32, Abhitosh Patil wrote:
> > > >> Javascript:
> > > >>
> > > >> var key =3D pm.environment.get('appKey);
> > > >>
> > > >> var secret =3D pm.environment.get('appSecret);
> > > >>
> > > >> var ts =3D (new Date()).getTime());
> > > >> var baseString =3D key + "-" + "2" + "-" + ts;
> > > >>
> > > >> var words =3D CryptoJS. enc.Base64.parse(secret);
> > > >>
> > > >> vaz macSignature =3D CryptoJS. HmacSHA256 (CryptoJS. enc. Utf8.par=
se
> > > >> (baseString), words);
> > > >>
> > > >> var macSignatureBase64 =3D macSignature.toString (CryptoJS.
> enc.Base64);
> > > >>
> > > >> macSignatureBase64 =3D macSignatureBase64.replace(/=3D/g, "");
> > > >>
> > > >> mac SignatureBase64 =3D macSignatureBase64.replace(/\+/g, "-");
> > > >>
> > > >> macSignatureBase64 =3D macSignatureBase64.replace(/\//g, "_");
> > > >>
> > > >> postman.setEnvironmentVariable("signature", macSignatureBase64);
> > > >>
> > > >> postman, setEnvironmentVariable("timestamp", ts);
> > > >>
> > > >> On Thu, 3 Apr, 2025, 5:12 pm Christof,<
> [email protected]>
> > > >> wrote:
> > > >>
> > > >>> Hi Abhitosh,
> > > >>> is the javascript script small in size?
> > > >>> If so you could remove or replace with dummies all hardcoded
> security
> > > >>> related parts and attach the script in this channel.
> > > >>> May be , that someone will take the challenge and migrate it to
> > > >>> groovy .
> > > >>> It it is 100 lines or more I will not have the time to do that.
> > > >>> Otherwise
> > > >>> I will give it a chance.
> > > >>>
> > > >>> Christof
> > > >>>
> > > >>>
> > > >>>
> > > >>> Am 3. April 2025 09:02:36 UTC schrieb Abhitosh Patil <
> > > >>> [email protected]>:
> > > >>>> Unfortunately ChatGPT or other AI tools are not allowed in our
> > > >>> organisation
> > > >>>> network.
> > > >>>>
> > > >>>> On Wed, 2 Apr, 2025, 9:04 pm Abhitosh Patil,<
> [email protected]>
> > > >>> wrote:
> > > >>>>> Thank you Chris.
> > > >>>>> I'll check this possibility.
> > > >>>>>
> > > >>>>> On Wed, 2 Apr, 2025, 9:03 pm
> > > >>>>> Christof,<[email protected]>
> > > >>>>> wrote:
> > > >>>>>
> > > >>>>>> Hi Abhitosh,
> > > >>>>>> groovy is one of the supported languages in jsr223 sampler. If
> your
> > > >>>>>> javascript has not thousand codelines, I'm very optimistic, th=
at
> > > >>>>>> with
> > > >>> the
> > > >>>>>> help of chatGPT you should be able to migrate your code
> > > >>>>>> from js -> groovy.
> > > >>>>>> regards
> > > >>>>>> Christof
> > > >>>>>>
> > > >>>>>>
> > > >>>>>> Am 2. April 2025 14:49:15 UTC schrieb Abhitosh Patil <
> > > >>>>>> [email protected]>:
> > > >>>>>>> Initially I was using Java 17 but later switched to java 8
> > > >>>>>>> Currently getting error like "javax.script.scriptExecution:
> > > >>>>>>> reference
> > > >>>>>>> error: pm is not defined.
> > > >>>>>>>
> > > >>>>>>> Rhino or Graalvm are not available on our company download
> portal.
> > > >>>>>>>
> > > >>>>>>> I don't know anything about Groovy.
> > > >>>>>>>
> > > >>>>>>> On Wed, 2 Apr, 2025, 8:10 pm Dmitri T,<[email protected]>
> wrote:
> > > >>>>>>>
> > > >>>>>>>> 1.
> > > >>>>>>>> You answered your own question: JavaScript code cannot be ru=
n
> in
> > > >>>>>> JMeter.
> > > >>>>>>>>
> > > >>>>>>>> 1.
> > > >>>>>>>> Also, if you're on Java 15+ you won't be able able to choose
> > > >>>>>> JavaScript
> > > >>>>>>>> in JSR223 test elements because it has been removed from JDK=
<
> > > >>>>>>>> https://openjdk.org/jeps/372>
> > > >>>>>>>> 2.
> > > >>>>>>>> There could be inconsistencies between Postman JavaScript AP=
I
> and
> > > >>>>>> JMeter
> > > >>>>>>>> so you won't have access to pm. namespace in JMeter
> > > >>>>>>>>
> > > >>>>>>>>
> > > >>>>>>>> So you either need to restore JavaScript engine by adding
> Mozilla
> > > >>>>>> Rhino<
> > > >>>>>>>> https://github.com/mozilla/rhino> or switching to GraalVM<
> > > >>>>>>>> https://www.graalvm.org/> or re-write your code in Groovy.
> The
> > > >>> latter
> > > >>>>>>>> option is better from performance perspective as Groovy
> scripts
> > > >>>>>>>> can
> > > >>> be
> > > >>>>>>>> compiled and cached and it matters especially for "heavy"
> tasks
> > > >>>>>>>> like
> > > >>>>>>>> cryptography. More information: Apache Groovy: What Is Groov=
y
> Used
> > > >>>>>> For?<
> > > >>>>>>>> https://www.blazemeter.com/blog/apache-groovy>
> > > >>>>>>>>
> > > >>>>>>>>
> > > >>>>>>>>
> > > >>>>>>>> ________________________________
> > > >>>>>>>> From: Abhitosh Patil<[email protected]>
> > > >>>>>>>> Sent: Wednesday, April 2, 2025 5:14 PM
> > > >>>>>>>> To: JMeter Users List<[email protected]>
> > > >>>>>>>> Subject: Need to execute javascript using JMeter
> > > >>>>>>>>
> > > >>>>>>>> We have a requirement to generate unique authentication
> > > >>>>>>>> signature to
> > > >>>>>> pass
> > > >>>>>>>> as a header in API request. We have a pre-request javascript
> for
> > > >>> same
> > > >>>>>> in
> > > >>>>>>>> postman tool.
> > > >>>>>>>>
> > > >>>>>>>> Same javascript we tried in JMeter using jsr223 and beanshel=
l
> > > >>>>>> elements. But
> > > >>>>>>>> it's not working. Any solution for this?
> > > >>>>>>>>
> > > >
> > >
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: [email protected]
> > > For additional commands, e-mail: [email protected]
> > >
>

--000000000000fcf44f0631e6bb70
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">I passed environment variables=C2=A0like this in user=C2=
=A0defined variables:<div>${__BeanShell(System.getenv,appKey)}</div><div>${=
__BeanShell(System.getenv,appSecret)}</div><div><br></div><div>Now the JSR2=
23 sampler has 200 OK response. But where can I see the signature value? Re=
sponse=C2=A0is blank in the view results tree.</div><div><br></div><div><im=
g src=3D"cid:ii_m91vzzw80" alt=3D"image.png" width=3D"472" height=3D"275"><=
br></div><div><br></div><div><br></div></div><br><div class=3D"gmail_quote =
gmail_quote_container"><div dir=3D"ltr" class=3D"gmail_attr">On Fri, Apr 4,=
 2025 at 2:06=E2=80=AFAM <a href=3D"mailto:[email protected]">schmalenba=
[email protected]</a> &lt;<a href=3D"mailto:[email protected]">c.schm=
[email protected]</a>&gt; wrote:<br></div><blockquote class=3D"gmail=
_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204=
,204);padding-left:1ex">sorry, I made a copy paste error, once again a fixe=
d code snippet:...<br>
and an additional information: you must provide the appKey and the appSecre=
t as an environment variable from outside.<br>
that means that you have to export those variables in the terminla from whi=
ch you start your jmeter session, or as usual in an encapsulating shell scr=
ipt <br>
<br>
// here the code...<br>
import javax.crypto.Mac<br>
import javax.crypto.spec.SecretKeySpec<br>
import java.util.Base64<br>
<br>
// Retrieve environment variables (using System.getenv as an example)<br>
def key =3D System.getenv(&quot;appKey&quot;) ?: &quot;defaultKey&quot;<br>
def secret =3D System.getenv(&quot;appSecret&quot;) ?: &quot;am1ldGVy&quot;=
<br>
<br>
def ts =3D System.currentTimeMillis()<br>
def baseString =3D &quot;${key}-2-${ts}&quot;<br>
<br>
// Decode the secret from Base64<br>
def secretDecoded =3D Base64.decoder.decode(secret)<br>
<br>
// Generate HMAC-SHA256 hash<br>
Mac mac =3D Mac.getInstance(&quot;HmacSHA256&quot;)<br>
mac.init(new SecretKeySpec(secretDecoded, &quot;HmacSHA256&quot;))<br>
byte[] macSignature =3D mac.doFinal(baseString.getBytes(&quot;UTF-8&quot;))=
<br>
<br>
// Encode the signature to Base64 and sanitize it<br>
def macSignatureBase64 =3D Base64.encoder.encodeToString(macSignature)<br>
=C2=A0 =C2=A0 .replace(&quot;=3D&quot;, &quot;&quot;)<br>
=C2=A0 =C2=A0 .replace(&quot;+&quot;, &quot;-&quot;)<br>
=C2=A0 =C2=A0 .replace(&quot;/&quot;, &quot;_&quot;)<br>
<br>
// Simulated environment variable storage (Postman equivalent)<br>
def environment =3D [:] // A map to mimic Postman environment variables<br>
environment[&quot;signature&quot;] =3D macSignatureBase64<br>
environment[&quot;timestamp&quot;] =3D ts<br>
<br>
// put the result in jmeter vars<br>
vars.put(&quot;signature&quot;,macSignatureBase64)<br>
vars.put(&quot;timestamp&quot;,&quot;&quot; + ts)<br>
<br>
// Debug output<br>
println &quot;Signature: ${macSignatureBase64}&quot;<br>
println &quot;Timestamp: ${ts}&quot;<br>
<br>
&gt; Abhitosh Patil &lt;<a href=3D"mailto:[email protected]" target=3D"=
_blank">[email protected]</a>&gt; hat am 03.04.2025 21:15 CEST geschrie=
ben:<br>
&gt; <br>
&gt; <br>
&gt; Hi Chriss,<br>
&gt; Hi executed below Groovy code with JSR223 sampler and got an error for=
 that.<br>
&gt; <br>
&gt; Code:<br>
&gt; import javax.crypto.Mac<br>
&gt; import javax.crypto.spec.SecretKeySpec<br>
&gt; import java.util.Base64<br>
&gt; <br>
&gt; // Retrieve environment variables (using System.getenv as an example)<=
br>
&gt; def key =3D System.getenv(&quot;d552a1b3-3558-3c47-b34a-1ba87558b74b&q=
uot;) ?: &quot;defaultKey&quot;<br>
&gt; def secret =3D System.getenv(&quot;vz7noe5z17i2usV58oFR5YMtU1BUFL0Ah9+=
eXuwV6IQ=3D&quot;) ?: &quot;am1ldGVy&quot;<br>
&gt; def ts =3D System.currentTimeMillis()<br>
&gt; def baseString =3D &quot;${key}-2-${ts}&quot;<br>
&gt; <br>
&gt; // Decode the secret from Base64<br>
&gt; def secretDecoded =3D Base64.decoder.decode(secret)<br>
&gt; <br>
&gt; // Generate HMAC-SHA256 hash<br>
&gt; Mac mac =3D Mac.getInstance(&quot;HmacSHA256&quot;)<br>
&gt; mac.init(new SecretKeySpec(secretDecoded, &quot;HmacSHA256&quot;))<br>
&gt; byte[] macSignature =3D mac.doFinal(baseString.getBytes(&quot;UTF-8&qu=
ot;))<br>
&gt; <br>
&gt; // Encode the signature to Base64 and sanitize it<br>
&gt; def macSignatureBase64 =3D Base64.encoder.encodeToString(macSignature)=
<br>
&gt;=C2=A0 .replace(&quot;=3D&quot;, &quot;&quot;)import javax.crypto.Mac<b=
r>
&gt; import javax.crypto.spec.SecretKeySpec<br>
&gt; import java.util.Base64<br>
&gt; <br>
&gt; // Retrieve environment variables (using System.getenv as an example)<=
br>
&gt; def key =3D System.getenv(&quot;appKey&quot;) ?: &quot;defaultKey&quot=
;<br>
&gt; def secret =3D System.getenv(&quot;appSecret&quot;) ?: &quot;am1ldGVy&=
quot;<br>
&gt; <br>
&gt; def ts =3D System.currentTimeMillis()<br>
&gt; def baseString =3D &quot;${key}-2-${ts}&quot;<br>
&gt; <br>
&gt; // Decode the secret from Base64<br>
&gt; def secretDecoded =3D Base64.decoder.decode(secret)<br>
&gt; <br>
&gt; // Generate HMAC-SHA256 hash<br>
&gt; Mac mac =3D Mac.getInstance(&quot;HmacSHA256&quot;)<br>
&gt; mac.init(new SecretKeySpec(secretDecoded, &quot;HmacSHA256&quot;))<br>
&gt; byte[] macSignature =3D mac.doFinal(baseString.getBytes(&quot;UTF-8&qu=
ot;))<br>
&gt; <br>
&gt; // Encode the signature to Base64 and sanitize it<br>
&gt; def macSignatureBase64 =3D Base64.encoder.encodeToString(macSignature)=
<br>
&gt;=C2=A0 .replace(&quot;=3D&quot;, &quot;&quot;)<br>
&gt;=C2=A0 .replace(&quot;+&quot;, &quot;-&quot;)<br>
&gt;=C2=A0 .replace(&quot;/&quot;, &quot;_&quot;)<br>
&gt; <br>
&gt; // Simulated environment variable storage (Postman equivalent)<br>
&gt; def environment =3D [:] // A map to mimic Postman environment variable=
s<br>
&gt; environment[&quot;signature&quot;] =3D macSignatureBase64<br>
&gt; environment[&quot;timestamp&quot;] =3D ts<br>
&gt; <br>
&gt; // put the result in jmeter vars<br>
&gt; vars.put(&quot;signature&quot;,macSignatureBase64)<br>
&gt; vars.put(&quot;timestamp&quot;,&quot;&quot; + ts)<br>
&gt; <br>
&gt; // Debug output<br>
&gt; println &quot;Signature: ${macSignatureBase64}&quot;<br>
&gt; println &quot;Timestamp: ${ts}&quot;<br>
&gt; <br>
&gt; Getting this error:<br>
&gt; <br>
&gt; <br>
&gt; On Thu, Apr 3, 2025 at 11:30=E2=80=AFPM Christof Schmalenbach &lt;<a h=
ref=3D"mailto:[email protected]" target=3D"_blank">c.schmalenb=
[email protected]</a>&gt; wrote:<br>
&gt; &gt; I see that my last mail was not well formatted; here another tria=
l...<br>
&gt; &gt; <br>
&gt; &gt; import javax.crypto.Mac<br>
&gt; &gt; import javax.crypto.spec.SecretKeySpec<br>
&gt; &gt; import java.util.Base64<br>
&gt; &gt; <br>
&gt; &gt; // Retrieve environment variables (using System.getenv as an exam=
ple)<br>
&gt; &gt; def key =3D System.getenv(&quot;appKey&quot;) ?: &quot;defaultKey=
&quot;<br>
&gt; &gt; def secret =3D System.getenv(&quot;appSecret&quot;) ?: &quot;am1l=
dGVy&quot;<br>
&gt; &gt; <br>
&gt; &gt; def ts =3D System.currentTimeMillis()<br>
&gt; &gt; def baseString =3D &quot;${key}-2-${ts}&quot;<br>
&gt; &gt; <br>
&gt; &gt; // Decode the secret from Base64<br>
&gt; &gt; def secretDecoded =3D Base64.decoder.decode(secret)<br>
&gt; &gt; <br>
&gt; &gt; // Generate HMAC-SHA256 hash<br>
&gt; &gt; Mac mac =3D Mac.getInstance(&quot;HmacSHA256&quot;)<br>
&gt; &gt; mac.init(new SecretKeySpec(secretDecoded, &quot;HmacSHA256&quot;)=
)<br>
&gt; &gt; byte[] macSignature =3D mac.doFinal(baseString.getBytes(&quot;UTF=
-8&quot;))<br>
&gt; &gt; <br>
&gt; &gt; // Encode the signature to Base64 and sanitize it<br>
&gt; &gt; def macSignatureBase64 =3D Base64.encoder.encodeToString(macSigna=
ture)<br>
&gt; &gt;=C2=A0 .replace(&quot;=3D&quot;, &quot;&quot;)import javax.crypto.=
Mac<br>
&gt; &gt; import javax.crypto.spec.SecretKeySpec<br>
&gt; &gt; import java.util.Base64<br>
&gt; &gt; <br>
&gt; &gt; // Retrieve environment variables (using System.getenv as an exam=
ple)<br>
&gt; &gt; def key =3D System.getenv(&quot;appKey&quot;) ?: &quot;defaultKey=
&quot;<br>
&gt; &gt; def secret =3D System.getenv(&quot;appSecret&quot;) ?: &quot;am1l=
dGVy&quot;<br>
&gt; &gt; <br>
&gt; &gt; def ts =3D System.currentTimeMillis()<br>
&gt; &gt; def baseString =3D &quot;${key}-2-${ts}&quot;<br>
&gt; &gt; <br>
&gt; &gt; // Decode the secret from Base64<br>
&gt; &gt; def secretDecoded =3D Base64.decoder.decode(secret)<br>
&gt; &gt; <br>
&gt; &gt; // Generate HMAC-SHA256 hash<br>
&gt; &gt; Mac mac =3D Mac.getInstance(&quot;HmacSHA256&quot;)<br>
&gt; &gt; mac.init(new SecretKeySpec(secretDecoded, &quot;HmacSHA256&quot;)=
)<br>
&gt; &gt; byte[] macSignature =3D mac.doFinal(baseString.getBytes(&quot;UTF=
-8&quot;))<br>
&gt; &gt; <br>
&gt; &gt; // Encode the signature to Base64 and sanitize it<br>
&gt; &gt; def macSignatureBase64 =3D Base64.encoder.encodeToString(macSigna=
ture)<br>
&gt; &gt;=C2=A0 .replace(&quot;=3D&quot;, &quot;&quot;)<br>
&gt; &gt;=C2=A0 .replace(&quot;+&quot;, &quot;-&quot;)<br>
&gt; &gt;=C2=A0 .replace(&quot;/&quot;, &quot;_&quot;)<br>
&gt; &gt; <br>
&gt; &gt; // Simulated environment variable storage (Postman equivalent)<br=
>
&gt; &gt; def environment =3D [:] // A map to mimic Postman environment var=
iables<br>
&gt; &gt; environment[&quot;signature&quot;] =3D macSignatureBase64<br>
&gt; &gt; environment[&quot;timestamp&quot;] =3D ts<br>
&gt; &gt; <br>
&gt; &gt; // put the result in jmeter vars<br>
&gt; &gt; vars.put(&quot;signature&quot;,macSignatureBase64)<br>
&gt; &gt; vars.put(&quot;timestamp&quot;,&quot;&quot; + ts)<br>
&gt; &gt; <br>
&gt; &gt; // Debug output<br>
&gt; &gt; println &quot;Signature: ${macSignatureBase64}&quot;<br>
&gt; &gt; println &quot;Timestamp: ${ts}&quot;<br>
&gt; &gt; <br>
&gt; &gt;=C2=A0 .replace(&quot;+&quot;, &quot;-&quot;)<br>
&gt; &gt;=C2=A0 .replace(&quot;/&quot;, &quot;_&quot;)<br>
&gt; &gt; <br>
&gt; &gt; // Simulated environment variable storage (Postman equivalent)<br=
>
&gt; &gt; def environment =3D [:] // A map to mimic Postman environment var=
iables<br>
&gt; &gt; environment[&quot;signature&quot;] =3D macSignatureBase64<br>
&gt; &gt; environment[&quot;timestamp&quot;] =3D ts<br>
&gt; &gt; <br>
&gt; &gt; // put the result in jmeter vars<br>
&gt; &gt; vars.put(&quot;signature&quot;,macSignatureBase64)<br>
&gt; &gt; vars.put(&quot;timestamp&quot;,&quot;&quot; + ts)<br>
&gt; &gt; <br>
&gt; &gt; // Debug output<br>
&gt; &gt; println &quot;Signature: ${macSignatureBase64}&quot;<br>
&gt; &gt; println &quot;Timestamp: ${ts}&quot;<br>
&gt; &gt; <br>
&gt; &gt; <br>
&gt; &gt; On 4/3/25 19:49, Christof Schmalenbach wrote:<br>
&gt; &gt; &gt; Hi Abhitosh,<br>
&gt; &gt; &gt; I&#39;m not sure, whether I understand your js code complete=
ly.<br>
&gt; &gt; &gt; But I got at least an idea. This is the result of my code mi=
gration.<br>
&gt; &gt; &gt; I test the code in a jmeter script within a jsr223 sampler a=
nd it seems<br>
&gt; &gt; &gt; to work.<br>
&gt; &gt; &gt; (OpenJDK version 19.X; may be that in java version 8.X not a=
ll packages<br>
&gt; &gt; &gt; used are supported???)<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; regards<br>
&gt; &gt; &gt; Christof<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; import javax.crypto.Mac import javax.crypto.spec.SecretKeySp=
ec import<br>
&gt; &gt; &gt; java.util.Base64 // Retrieve environment variables (using Sy=
stem.getenv<br>
&gt; &gt; &gt; as an example) def key =3D System.getenv(&quot;appKey&quot;)=
 ?: &quot;defaultKey&quot; def<br>
&gt; &gt; &gt; secret =3D System.getenv(&quot;appSecret&quot;) ?: &quot;am1=
ldGVy&quot; def ts =3D<br>
&gt; &gt; &gt; System.currentTimeMillis() def baseString =3D &quot;${key}-2=
-${ts}&quot; // Decode<br>
&gt; &gt; &gt; the secret from Base64 def secretDecoded =3D Base64.decoder.=
decode(secret)<br>
&gt; &gt; &gt; // Generate HMAC-SHA256 hash Mac mac =3D Mac.getInstance(&qu=
ot;HmacSHA256&quot;)<br>
&gt; &gt; &gt; mac.init(new SecretKeySpec(secretDecoded, &quot;HmacSHA256&q=
uot;)) byte[]<br>
&gt; &gt; &gt; macSignature =3D mac.doFinal(baseString.getBytes(&quot;UTF-8=
&quot;)) // Encode the<br>
&gt; &gt; &gt; signature to Base64 and sanitize it def macSignatureBase64 =
=3D<br>
&gt; &gt; &gt; Base64.encoder.encodeToString(macSignature) .replace(&quot;=
=3D&quot;, &quot;&quot;)<br>
&gt; &gt; &gt; .replace(&quot;+&quot;, &quot;-&quot;) .replace(&quot;/&quot=
;, &quot;_&quot;) // Simulated environment variable<br>
&gt; &gt; &gt; storage (Postman equivalent) def environment =3D [:] // A ma=
p to mimic<br>
&gt; &gt; &gt; Postman environment variables environment[&quot;signature&qu=
ot;] =3D<br>
&gt; &gt; &gt; macSignatureBase64 environment[&quot;timestamp&quot;] =3D ts=
 // Debug output println<br>
&gt; &gt; &gt; &quot;Signature: ${macSignatureBase64}&quot; println &quot;T=
imestamp: ${ts}&quot;<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; On 4/3/25 16:32, Abhitosh Patil wrote:<br>
&gt; &gt; &gt;&gt; Javascript:<br>
&gt; &gt; &gt;&gt;<br>
&gt; &gt; &gt;&gt; var key =3D pm.environment.get(&#39;appKey);<br>
&gt; &gt; &gt;&gt;<br>
&gt; &gt; &gt;&gt; var secret =3D pm.environment.get(&#39;appSecret);<br>
&gt; &gt; &gt;&gt;<br>
&gt; &gt; &gt;&gt; var ts =3D (new Date()).getTime());<br>
&gt; &gt; &gt;&gt; var baseString =3D key + &quot;-&quot; + &quot;2&quot; +=
 &quot;-&quot; + ts;<br>
&gt; &gt; &gt;&gt;<br>
&gt; &gt; &gt;&gt; var words =3D CryptoJS. enc.Base64.parse(secret);<br>
&gt; &gt; &gt;&gt;<br>
&gt; &gt; &gt;&gt; vaz macSignature =3D CryptoJS. HmacSHA256 (CryptoJS. enc=
. Utf8.parse<br>
&gt; &gt; &gt;&gt; (baseString), words);<br>
&gt; &gt; &gt;&gt;<br>
&gt; &gt; &gt;&gt; var macSignatureBase64 =3D macSignature.toString (Crypto=
JS. enc.Base64);<br>
&gt; &gt; &gt;&gt;<br>
&gt; &gt; &gt;&gt; macSignatureBase64 =3D macSignatureBase64.replace(/=3D/g=
, &quot;&quot;);<br>
&gt; &gt; &gt;&gt;<br>
&gt; &gt; &gt;&gt; mac SignatureBase64 =3D macSignatureBase64.replace(/\+/g=
, &quot;-&quot;);<br>
&gt; &gt; &gt;&gt;<br>
&gt; &gt; &gt;&gt; macSignatureBase64 =3D macSignatureBase64.replace(/\//g,=
 &quot;_&quot;);<br>
&gt; &gt; &gt;&gt;<br>
&gt; &gt; &gt;&gt; postman.setEnvironmentVariable(&quot;signature&quot;, ma=
cSignatureBase64);<br>
&gt; &gt; &gt;&gt;<br>
&gt; &gt; &gt;&gt; postman, setEnvironmentVariable(&quot;timestamp&quot;, t=
s);<br>
&gt; &gt; &gt;&gt;<br>
&gt; &gt; &gt;&gt; On Thu, 3 Apr, 2025, 5:12 pm Christof,&lt;<a href=3D"mai=
lto:[email protected]" target=3D"_blank">c.schmalenbach@perfom=
atics.com</a>&gt;<br>
&gt; &gt; &gt;&gt; wrote:<br>
&gt; &gt; &gt;&gt;<br>
&gt; &gt; &gt;&gt;&gt; Hi Abhitosh,<br>
&gt; &gt; &gt;&gt;&gt; is the javascript script small in size?<br>
&gt; &gt; &gt;&gt;&gt; If so you could remove or replace with dummies all h=
ardcoded security<br>
&gt; &gt; &gt;&gt;&gt; related parts and attach the script in this channel.=
<br>
&gt; &gt; &gt;&gt;&gt; May be , that someone will take the challenge and mi=
grate it to<br>
&gt; &gt; &gt;&gt;&gt; groovy .<br>
&gt; &gt; &gt;&gt;&gt; It it is 100 lines or more I will not have the time =
to do that.<br>
&gt; &gt; &gt;&gt;&gt; Otherwise<br>
&gt; &gt; &gt;&gt;&gt; I will give it a chance.<br>
&gt; &gt; &gt;&gt;&gt;<br>
&gt; &gt; &gt;&gt;&gt; Christof<br>
&gt; &gt; &gt;&gt;&gt;<br>
&gt; &gt; &gt;&gt;&gt;<br>
&gt; &gt; &gt;&gt;&gt;<br>
&gt; &gt; &gt;&gt;&gt; Am 3. April 2025 09:02:36 UTC schrieb Abhitosh Patil=
 &lt;<br>
&gt; &gt; &gt;&gt;&gt; <a href=3D"mailto:[email protected]" target=3D"_=
blank">[email protected]</a>&gt;:<br>
&gt; &gt; &gt;&gt;&gt;&gt; Unfortunately ChatGPT or other AI tools are not =
allowed in our<br>
&gt; &gt; &gt;&gt;&gt; organisation<br>
&gt; &gt; &gt;&gt;&gt;&gt; network.<br>
&gt; &gt; &gt;&gt;&gt;&gt;<br>
&gt; &gt; &gt;&gt;&gt;&gt; On Wed, 2 Apr, 2025, 9:04 pm Abhitosh Patil,&lt;=
<a href=3D"mailto:[email protected]" target=3D"_blank">abhitosh.qa@gmai=
l.com</a>&gt;<br>
&gt; &gt; &gt;&gt;&gt; wrote:<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt; Thank you Chris.<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt; I&#39;ll check this possibility.<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt; On Wed, 2 Apr, 2025, 9:03 pm<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt; Christof,&lt;<a href=3D"mailto:c.schmalenbac=
[email protected]" target=3D"_blank">[email protected]</a>&gt;=
<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt; wrote:<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt; Hi Abhitosh,<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt; groovy is one of the supported languages=
 in jsr223 sampler. If your<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt; javascript has not thousand codelines, I=
&#39;m very optimistic, that<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt; with<br>
&gt; &gt; &gt;&gt;&gt; the<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt; help of chatGPT you should be able to mi=
grate your code<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt; from js -&gt; groovy.<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt; regards<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt; Christof<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt; Am 2. April 2025 14:49:15 UTC schrieb Ab=
hitosh Patil &lt;<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt; <a href=3D"mailto:[email protected]"=
 target=3D"_blank">[email protected]</a>&gt;:<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; Initially I was using Java 17 but la=
ter switched to java 8<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; Currently getting error like &quot;j=
avax.script.scriptExecution:<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; reference<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; error: pm is not defined.<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; Rhino or Graalvm are not available o=
n our company download portal.<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; I don&#39;t know anything about Groo=
vy.<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; On Wed, 2 Apr, 2025, 8:10 pm Dmitri =
T,&lt;<a href=3D"mailto:[email protected]" target=3D"_blank">[email protected]=
m</a>&gt; wrote:<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; 1.<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; You answered your own question: =
JavaScript code cannot be run in<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt; JMeter.<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; 1.<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Also, if you&#39;re on Java 15+ =
you won&#39;t be able able to choose<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt; JavaScript<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; in JSR223 test elements because =
it has been removed from JDK&lt;<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a href=3D"https://openjdk.org/j=
eps/372" rel=3D"noreferrer" target=3D"_blank">https://openjdk.org/jeps/372<=
/a>&gt;<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; 2.<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; There could be inconsistencies b=
etween Postman JavaScript API and<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt; JMeter<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; so you won&#39;t have access to =
pm. namespace in JMeter<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; So you either need to restore Ja=
vaScript engine by adding Mozilla<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt; Rhino&lt;<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a href=3D"https://github.com/mo=
zilla/rhino" rel=3D"noreferrer" target=3D"_blank">https://github.com/mozill=
a/rhino</a>&gt; or switching to GraalVM&lt;<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a href=3D"https://www.graalvm.o=
rg/" rel=3D"noreferrer" target=3D"_blank">https://www.graalvm.org/</a>&gt; =
or re-write your code in Groovy. The<br>
&gt; &gt; &gt;&gt;&gt; latter<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; option is better from performanc=
e perspective as Groovy scripts<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; can<br>
&gt; &gt; &gt;&gt;&gt; be<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; compiled and cached and it matte=
rs especially for &quot;heavy&quot; tasks<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; like<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; cryptography. More information: =
Apache Groovy: What Is Groovy Used<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt; For?&lt;<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a href=3D"https://www.blazemete=
r.com/blog/apache-groovy" rel=3D"noreferrer" target=3D"_blank">https://www.=
blazemeter.com/blog/apache-groovy</a>&gt;<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; ________________________________=
<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; From: Abhitosh Patil&lt;<a href=
=3D"mailto:[email protected]" target=3D"_blank">[email protected]</=
a>&gt;<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Sent: Wednesday, April 2, 2025 5=
:14 PM<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; To: JMeter Users List&lt;<a href=
=3D"mailto:[email protected]" target=3D"_blank">[email protected]=
</a>&gt;<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Subject: Need to execute javascr=
ipt using JMeter<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; We have a requirement to generat=
e unique authentication<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; signature to<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt; pass<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; as a header in API request. We h=
ave a pre-request javascript for<br>
&gt; &gt; &gt;&gt;&gt; same<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt; in<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; postman tool.<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Same javascript we tried in JMet=
er using jsr223 and beanshell<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt; elements. But<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; it&#39;s not working. Any soluti=
on for this?<br>
&gt; &gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; <br>
&gt; &gt; <br>
&gt; &gt; -----------------------------------------------------------------=
----<br>
&gt; &gt; To unsubscribe, e-mail: <a href=3D"mailto:user-unsubscribe@jmeter=
.apache.org" target=3D"_blank">[email protected]</a><br>
&gt; &gt; For additional commands, e-mail: <a href=3D"mailto:user-help@jmet=
er.apache.org" target=3D"_blank">[email protected]</a><br>
&gt; &gt;<br>
</blockquote></div>

--000000000000fcf44f0631e6bb70--
--000000000000fcf4510631e6bb71
Content-Type: image/png; name="image.png"
Content-Disposition: inline; filename="image.png"
Content-Transfer-Encoding: base64
Content-ID: <ii_m91vzzw80>
X-Attachment-Id: ii_m91vzzw80

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
SUVORK5CYII=
--000000000000fcf4510631e6bb71--