AesCbcParams
Caution
The experimental module
k6/experimental/webcrypto
has graduated, and its functionality is now available globally through thecrypto
object. Thek6/experimental/webcrypto
is deprecated and will be removed in the near future.To migrate your scripts, remove the
k6/experimental/webcrypto
imports and use thecrypto
object instead.
The AesCbcParams
object represents the object that should be passed as the algorithm parameter into the encrypt and decrypt operation when using the AES-CBC algorithm.
For more details, head to the MDN Web Crypto API documentation on AES-CBC.
Properties
Property | Type | Description |
---|---|---|
name | string | Should be set to AES-CBC . |
iv | ArrayBuffer , TypedArray , or DataView | The initialization vector. Must be 16 bytes, unpredictable and cryptographically random. Yet, it doesn’t need to be secret and can be transmitted along with the ciphertext. |
Example
import { crypto } from 'k6/experimental/webcrypto';
export default async function () {
const plaintext = stringToArrayBuffer('Hello, World!');
/**
* Generate a symmetric key using the AES-CBC algorithm.
*/
const key = await crypto.subtle.generateKey(
{
name: 'AES-CBC',
length: 256,
},
true,
['encrypt', 'decrypt']
);
/**
* Encrypt the plaintext using the AES-CBC key with
* have generated.
*/
const ciphertext = await crypto.subtle.encrypt(
{
name: 'AES-CBC',
iv: crypto.getRandomValues(new Uint8Array(16)),
},
key,
plaintext
);
}
function stringToArrayBuffer(str) {
const buf = new ArrayBuffer(str.length * 2); // 2 bytes for each char
const bufView = new Uint16Array(buf);
for (let i = 0, strLen = str.length; i < strLen; i++) {
bufView[i] = str.charCodeAt(i);
}
return buf;
}