deriveBits It takes as its arguments the base key, the derivation algorithm to use, and the length of the bits to derive. It returns a Promise which will be fulfilled with an ArrayBuffer
containing the derived bits. This array of bits can be used as a key for encryption or decryption as a shared secret.
Usage deriveBits(algorithm, baseKey, length)
Parameters Expand table
Name Type Description algorithm
EcdhKeyDeriveParams An object defining a derivation algorithm to use. baseKey
CryptoKey Represent an input to derivation algorithm. Currently it could be only a private ECDH key. length
number
Optional. A length of the bits to derive. Currently, only multiplies of 8 are supported.
Supported algorithms Return Value A Promise
that resolves to a new ArrayBuffer
containing the derived bits.
Example Expand code
import { crypto } from 'k6/experimental/webcrypto' ;
export default async function ( ) {
const aliceKeyPair = await crypto. subtle. generateKey (
{
name : 'ECDH' ,
namedCurve : 'P-256' ,
} ,
true ,
[ 'deriveKey' , 'deriveBits' ]
) ;
const bobKeyPair = await crypto. subtle. generateKey (
{
name : 'ECDH' ,
namedCurve : 'P-256' ,
} ,
true ,
[ 'deriveKey' , 'deriveBits' ]
) ;
const aliceSharedSecret = await deriveSharedSecret ( aliceKeyPair. privateKey, bobKeyPair. publicKey) ;
const bobSharedSecret = await deriveSharedSecret ( bobKeyPair. privateKey, aliceKeyPair. publicKey) ;
console. log ( 'alice shared secret: ' + printArrayBuffer ( aliceSharedSecret) ) ;
console. log ( 'bob shared secret: ' + printArrayBuffer ( bobSharedSecret) ) ;
}
async function deriveSharedSecret ( privateKey, publicKey ) {
return crypto. subtle. deriveBits (
{
name : 'ECDH' ,
public : publicKey,
} ,
privateKey,
256
) ;
}
const printArrayBuffer = ( buffer ) => {
const view = new Uint8Array ( buffer) ;
return Array. from ( view) ;
} ;