---
title: roPassKey
slug: develop/ropasskey
docTags: 
createdAt: 2025-03-11T07:07:17.200Z
---

This object provides a means for generating keys (hashes) from a password and salt. The JavaScript equivalent is the Node.js Crypto API.

Object Creation: The object is passed an associative array that specifies the generation methods and cipher.

```text
CreateObject("roPassKey", parameters As roAssociativeArray)
```

The associative array should contain the following parameters:

- `method`: The key derivation method. Currently, only "pbkdf2" can be specified.
- `keyfn`: The pseudorandom function (PRF). Currently, only "hmac-sha256" can be specified.
- `keylen`: The key length
- `iterations`: The number of iterations

## ifPassKey

### GenerateKey(password As Object, salt As Object) As roByteArray

Generates a key using the supplied password and salt. The parameters may be passed as either strings or *roByteArray* instances. The generated *roByteArray* instance may contain all possible byte values, including NUL.

### GenerateSalt(length As Integer) As roByteArray

Generates a salt of the specified length. This salt can be used when calling the `GenerateKey()` method. The generated *roByteArray* instance may contain all possible byte values, including NUL.

### Example

```text
' Create input test data
salt = CreateObject("roByteArray")
pass = CreateObject("roByteArray")
pass.FromAsciiString("password")
salt.FromAsciiString("salt")
' Create the key generator
pk = CreateObject("roPassKey",  { method: "pbkdf2", keyfn: "hmac-sha256", keylen: 32, iterations: 4096 } )
' key with be a roByteArray
key = pk.GenerateKey(pass, salt)
```

