# Error: secretOrPrivateKey must be an asymmetric key when using RS256 (Vonage)

## The problem

Using `@vonage/server-sdk` 3.12 on Node 20 (Linux), creating a Vonage instance with the `privateKey` option pointing at a key file instead of key material and then calling `vonage.voice.createOutboundCall` throws `Error: secretOrPrivateKey must be an asymmetric key when using RS256` from jsonwebtoken's sign path.  The error occurs before any network request. Multiple reporters hit it after upgrading to 3.12.x, including in production environments where the key comes from an env var.

## The verified fix

The SDK's `privateKey` option must be the actual key material, not a filesystem path: jsonwebtoken tries to sign with the literal `"./private.key"` string, which is not an asymmetric key. Fix: read the key file yourself and pass its contents, e.g. pass `fs.readFileSync('./private.key')` as the `privateKey` option - the reporter confirmed this resolves it. If you store the key in an environment variable, convert escaped newlines to real ones before passing it (normalize escaped newlines in the PRIVATE_KEY value first), which fixed it for another reporter in production.
Source: https://github.com/Vonage/vonage-node-sdk/issues/900