Skip to main content
Sign - node__crypto.d.ts - Node documentation
class Sign
extends stream.Writable

Usage in Deno

```typescript import { Sign } from "node:node__crypto.d.ts"; ```
> [!WARNING] Deno compatibility > The `sign` and `verify` methods are not supported with non BinaryLike input. The `Sign` class is a utility for generating signatures. It can be used in one of two ways: * As a writable `stream`, where data to be signed is written and the `sign.sign()` method is used to generate and return the signature, or * Using the `sign.update()` and `sign.sign()` methods to produce the signature. The [createSign](../.././node__crypto.d.ts/~/createSign) method is used to create `Sign` instances. The argument is the string name of the hash function to use. `Sign` objects are not to be created directly using the `new` keyword. Example: Using `Sign` and `Verify` objects as streams: ```js const { generateKeyPairSync, createSign, createVerify, } = await import('node:crypto'); const { privateKey, publicKey } = generateKeyPairSync('ec', { namedCurve: 'sect239k1', }); const sign = createSign('SHA256'); sign.write('some data to sign'); sign.end(); const signature = sign.sign(privateKey, 'hex'); const verify = createVerify('SHA256'); verify.write('some data to sign'); verify.end(); console.log(verify.verify(publicKey, signature, 'hex')); // Prints: true ``` Example: Using the `sign.update()` and `verify.update()` methods: ```js const { generateKeyPairSync, createSign, createVerify, } = await import('node:crypto'); const { privateKey, publicKey } = generateKeyPairSync('rsa', { modulusLength: 2048, }); const sign = createSign('SHA256'); sign.update('some data to sign'); sign.end(); const signature = sign.sign(privateKey); const verify = createVerify('SHA256'); verify.update('some data to sign'); verify.end(); console.log(verify.verify(publicKey, signature)); // Prints: true ```

Constructors

new
Sign()

Methods

Calculates the signature on all the data passed through using either `sign.update()` or `sign.write()`. If `privateKey` is not a `KeyObject`, this function behaves as if `privateKey` had been passed to [createPrivateKey](../.././node__crypto.d.ts/~/createPrivateKey). If it is an object, the following additional properties can be passed: If `outputEncoding` is provided a string is returned; otherwise a `Buffer` is returned. The `Sign` object can not be again used after `sign.sign()` method has been called. Multiple calls to `sign.sign()` will result in an error being thrown.
update(data: BinaryLike): this
Updates the `Sign` content with the given `data`, the encoding of which is given in `inputEncoding`. If `encoding` is not provided, and the `data` is a string, an encoding of `'utf8'` is enforced. If `data` is a `Buffer`, `TypedArray`, or`DataView`, then `inputEncoding` is ignored. This can be called many times with new data as it is streamed.
update(
data: string,
inputEncoding: Encoding,
): this