From 9616c8aeb4f3e288ef9ef826ae44d593d1864932 Mon Sep 17 00:00:00 2001 From: Brad Hill Date: Thu, 7 Apr 2016 15:38:00 -0700 Subject: [PATCH 1/2] document using algorithms not directly exposed with sign --- doc/api/crypto.markdown | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/doc/api/crypto.markdown b/doc/api/crypto.markdown index 6c45d17951bdd4..e98e6b93db4c8d 100644 --- a/doc/api/crypto.markdown +++ b/doc/api/crypto.markdown @@ -734,6 +734,28 @@ console.log(sign.sign(private_key, 'hex')); // Prints the calculated signature ``` +A [`sign`][] instance can also be created by just passing in the digest +algorithm name, in which case OpenSSL will infer the full signature algorithm +from the type of the PEM-formatted private key, including algorithms that +do not have directly exposed name constants, e.g. 'ecdsa-with-SHA256'. + +Example: signing using ECDSA with SHA256 + +```js +const crypto = require('crypto'); +const sign = crypto.createSign('sha256'); + +sign.update('some data to sign'); + +const privateKey = '-----BEGIN EC PRIVATE KEY-----\n' + + 'MHcCAQEEIF+jnWY1D5kbVYDNvxxo/Y+ku2uJPDwS0r/VuPZQrjjVoAoGCCqGSM49\n' + + 'AwEHoUQDQgAEurOxfSxmqIRYzJVagdZfMMSjRNNhB8i3mXyIMq704m2m52FdfKZ2\n' + + 'pQhByd5eyj3lgZ7m7jbchtdgyOF8Io/1ng==\n' + + '-----END EC PRIVATE KEY-----\n', + +console.log(sign.sign(private_key).toString('hex')); +``` + ### sign.sign(private_key[, output_format]) Calculates the signature on all the data passed through using either From 969c0280f9dba2273597de116c797945438e3c89 Mon Sep 17 00:00:00 2001 From: Brad Hill Date: Thu, 7 Apr 2016 15:55:08 -0700 Subject: [PATCH 2/2] identifier typo --- doc/api/crypto.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/api/crypto.markdown b/doc/api/crypto.markdown index e98e6b93db4c8d..1bfe27ca72be3f 100644 --- a/doc/api/crypto.markdown +++ b/doc/api/crypto.markdown @@ -747,7 +747,7 @@ const sign = crypto.createSign('sha256'); sign.update('some data to sign'); -const privateKey = '-----BEGIN EC PRIVATE KEY-----\n' + +const private_key = '-----BEGIN EC PRIVATE KEY-----\n' + 'MHcCAQEEIF+jnWY1D5kbVYDNvxxo/Y+ku2uJPDwS0r/VuPZQrjjVoAoGCCqGSM49\n' + 'AwEHoUQDQgAEurOxfSxmqIRYzJVagdZfMMSjRNNhB8i3mXyIMq704m2m52FdfKZ2\n' + 'pQhByd5eyj3lgZ7m7jbchtdgyOF8Io/1ng==\n' +