GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | |||||||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | |||||||||||||||||||||
GeezerVison is showing github.com — crypto: add randomFill and randomFillSync by evanlucas · Pull Request #10209 · nodejs/node Conversation
|
|
Shouldn't the |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
hm, it was changed from a |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
No strong opinion, but what about Also, while I appreciate you not wanting to commit too much work to something before you know it is getting a warm receiption, its hard to get meaningful comment on an API addition if you don't provide API documentation in the PR, you can only get feedback from those willing to wade through the C++. And I'm generally +1 on the idea, seems reasonable. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Yeah, I agree, it would probably be easier to have this as its own API, too. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Would there be any reason not to fill the passed buffer directly instead of copying?
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Without doing a copy like this, I couldn't get it to work for some reason. I'll dig more into it though.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
This would work, wouldn't it? let supported = true; try { crypto.randomBytes(new Buffer(1)); } catch (e) { supported = !(e instanceof TypeError); } I have a mild preference for extending the existing API. That said, the API should ideally also take an offset and a length so you can read into a buffer at a specific location. That might get awkward to retrofit onto the existing API. On the other hand: if the first argument is a buffer, it's unambiguous what version of the API you are trying to invoke. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Yes, allowing an offset would be even better. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
@evanlucas @mscdex I was doing some forward proofing, though I seemed to have left in the |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
@bnoordhuis are you suggesting something like this?: That seems like the following arguments would need to be possible: Is there any way I could sway you on introducing a new api for this? |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
I'm definitely +1 on this but agree that a new API would be better. We consistently get feedback that adding new methods is preferable to extending an existing one. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Yes, but we also consistently get feedback that our APIs sprawl and aren't very cohesive. :-) What about |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
No one likes my It does have the downside of coupling the Buffer API to an underlying OpenSSL/crypto facility, though, so maybe that downside overweighs the up. @evanlucas in your examples of the syntaxes that would be reasonably expected to work, will the callback-less one still be async, or will it become magically sync? For a new API, I'd lean towards the more node-typical API pattern of a function with Sync in the name explicitly for sync (not the uv-derived "don't pass a callback and it becomes sync" behaviour). |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
@sam-github I would prefer to explicitly have to specify |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
@sam-github Though we need to consider that there are already APIs in core that write into a Buffer. e.g. +1 for @bnoordhuis proposal. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
@sam-github I prefer this staying in crypto, rather than being a Buffer method, because at least it indicates that OpenSSL is the source of the randomness (rather than |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
+1 to it staying in |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
OK, consensus seems to be keep it in crypto and to use Sync for sync APIs. I think |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
@sam-github Is there a point in supporting |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
34cf94e to
5e3c4d1
Compare
|
I've updated this to be |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
Notable changes:
* **crypto**:
- add randomFill and randomFillSync (Evan Lucas)
#10209
* **meta**: Added new collaborators
- add lucamaraschi to collaborators (Luca Maraschi)
#12538
- add DavidCai1993 to collaborators (David Cai)
#12435
- add jkrems to collaborators (Jan Krems)
#12427
- add AnnaMag to collaborators (AnnaMag)
#12414
* **process**:
- fix crash when Promise rejection is a Symbol (Cameron Little)
#11640
* **url**:
- make WHATWG URL more spec compliant (Timothy Gu)
#12507
* **v8**:
- fix stack overflow in recursive method (Ben Noordhuis)
#12460
- fix build errors with g++ 7 (Ben Noordhuis)
#12392
PR-URL: #12775
Notable changes:
* **crypto**:
- add randomFill and randomFillSync (Evan Lucas)
#10209
* **meta**: Added new collaborators
- add lucamaraschi to collaborators (Luca Maraschi)
#12538
- add DavidCai1993 to collaborators (David Cai)
#12435
- add jkrems to collaborators (Jan Krems)
#12427
- add AnnaMag to collaborators (AnnaMag)
#12414
* **process**:
- fix crash when Promise rejection is a Symbol (Cameron Little)
#11640
* **url**:
- make WHATWG URL more spec compliant (Timothy Gu)
#12507
* **v8**:
- fix stack overflow in recursive method (Ben Noordhuis)
#12460
- fix build errors with g++ 7 (Ben Noordhuis)
#12392
PR-URL: #12775
Notable changes:
* **crypto**:
- add randomFill and randomFillSync (Evan Lucas)
#10209
* **meta**: Added new collaborators
- add lucamaraschi to collaborators (Luca Maraschi)
#12538
- add DavidCai1993 to collaborators (David Cai)
#12435
- add jkrems to collaborators (Jan Krems)
#12427
- add AnnaMag to collaborators (AnnaMag)
#12414
* **process**:
- fix crash when Promise rejection is a Symbol (Cameron Little)
#11640
* **url**:
- make WHATWG URL more spec compliant (Timothy Gu)
#12507
* **v8**:
- fix stack overflow in recursive method (Ben Noordhuis)
#12460
- fix build errors with g++ 7 (Ben Noordhuis)
#12392
PR-URL: #12775
Notable changes:
* **crypto**:
- add randomFill and randomFillSync (Evan Lucas)
nodejs/node#10209
* **meta**: Added new collaborators
- add lucamaraschi to collaborators (Luca Maraschi)
nodejs/node#12538
- add DavidCai1993 to collaborators (David Cai)
nodejs/node#12435
- add jkrems to collaborators (Jan Krems)
nodejs/node#12427
- add AnnaMag to collaborators (AnnaMag)
nodejs/node#12414
* **process**:
- fix crash when Promise rejection is a Symbol (Cameron Little)
nodejs/node#11640
* **url**:
- make WHATWG URL more spec compliant (Timothy Gu)
nodejs/node#12507
* **v8**:
- fix stack overflow in recursive method (Ben Noordhuis)
nodejs/node#12460
- fix build errors with g++ 7 (Ben Noordhuis)
nodejs/node#12392
PR-URL: nodejs/node#12775
Signed-off-by: Ilkka Myller <[email protected]>
Notable changes:
* **crypto**:
- add randomFill and randomFillSync (Evan Lucas)
nodejs#10209
* **meta**: Added new collaborators
- add lucamaraschi to collaborators (Luca Maraschi)
nodejs#12538
- add DavidCai1993 to collaborators (David Cai)
nodejs#12435
- add jkrems to collaborators (Jan Krems)
nodejs#12427
- add AnnaMag to collaborators (AnnaMag)
nodejs#12414
* **process**:
- fix crash when Promise rejection is a Symbol (Cameron Little)
nodejs#11640
* **url**:
- make WHATWG URL more spec compliant (Timothy Gu)
nodejs#12507
* **v8**:
- fix stack overflow in recursive method (Ben Noordhuis)
nodejs#12460
- fix build errors with g++ 7 (Ben Noordhuis)
nodejs#12392
PR-URL: nodejs#12775
There was an error while loading. Please reload this page.
|
LTS opted to punt on this for this release, and consider it before the next semver-minor v6.x release. Should probably land with #10209 |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
should also land with #12541 |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Release team were +1 on backporting to v6.x and v8.x. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
crypto.randomFill and crypto.randomFillSync are similar to crypto.randomBytes, but allow passing in a buffer as the first argument. This allows us to reuse buffers to prevent having to create a new one on every call. PR-URL: #10209 Reviewed-By: Sam Roberts <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Ben Noordhuis <[email protected]> Reviewed-By: Anna Henningsen <[email protected]>
crypto.randomFill and crypto.randomFillSync are similar to crypto.randomBytes, but allow passing in a buffer as the first argument. This allows us to reuse buffers to prevent having to create a new one on every call. PR-URL: #10209 Reviewed-By: Sam Roberts <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Ben Noordhuis <[email protected]> Reviewed-By: Anna Henningsen <[email protected]>
This LTS release comes with 109 commits, 17 of which are considered
Semver-Minor. This includes 32 which are doc related, 29 which are test
related, 8 which are build / tool related and 1 commit which updates
a dependency.
Notable Changes:
* console:
- added console.count() and console.clear() (James M Snell)
#12678
* crypto:
- expose ECDH class (Bryan English)
#8188
- added cypto.randomFill() and crypto.randomFillSync() (Evan Lucas)
#10209
- warn on invalid authentication tag length (Tobias Nießen)
#17566
* deps:
- upgrade libuv to 1.16.1 (cjihrig)
#16835
* dgram:
- added socket.setMulticastInterface() (Will Young)
#7855
* http:
- add agent.keepSocketAlive and agent.reuseSocket as to allow
overridable keep-alive behavior of `Agent` (Fedor Indutny)
#13005
* lib:
- return this from net.Socket.end() (Sam Roberts)
#13481
* module:
- add builtinModules api that provides list of all builtin modules in
Node (Jon Moss)
#16386
* net:
- return this from getConnections() (Sam Roberts)
#13553
* promises:
- more robust stringification for unhandled rejections (Timothy Gu)
#13784
* repl:
- improve require() autocompletion (Alexey Orlenko)
#14409
* src:
- add openssl-system-ca-path configure option (Daniel Bevenius)
#16790
- add --use-bundled-ca --use-openssl-ca check (Daniel Bevenius)
#12087
- add process.ppid (cjihrig)
#16839
* tls:
- accept `lookup` option for `tls.connect()` (Fedor Indutny)
#12839
* tools, build:
- a new macOS installer! (JP Wesselink)
#15179
* url:
- WHATWG URL api support (James M Snell)
#7448
* util:
- add %i and %f formatting specifiers (Roman Reiss)
#10308
PR-URL: #18342
crypto.randomFill and crypto.randomFillSync are similar to crypto.randomBytes, but allow passing in a buffer as the first argument. This allows us to reuse buffers to prevent having to create a new one on every call. PR-URL: #10209 Reviewed-By: Sam Roberts <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Ben Noordhuis <[email protected]> Reviewed-By: Anna Henningsen <[email protected]>
This LTS release comes with 109 commits, 17 of which are considered
Semver-Minor. This includes 32 which are doc related, 29 which are test
related, 8 which are build / tool related and 1 commit which updates
a dependency.
Notable Changes:
* console:
- added console.count() and console.clear() (James M Snell)
#12678
* crypto:
- expose ECDH class (Bryan English)
#8188
- added cypto.randomFill() and crypto.randomFillSync() (Evan Lucas)
#10209
- warn on invalid authentication tag length (Tobias Nießen)
#17566
* deps:
- upgrade libuv to 1.16.1 (cjihrig)
#16835
* dgram:
- added socket.setMulticastInterface() (Will Young)
#7855
* http:
- add agent.keepSocketAlive and agent.reuseSocket as to allow
overridable keep-alive behavior of `Agent` (Fedor Indutny)
#13005
* lib:
- return this from net.Socket.end() (Sam Roberts)
#13481
* module:
- add builtinModules api that provides list of all builtin modules in
Node (Jon Moss)
#16386
* net:
- return this from getConnections() (Sam Roberts)
#13553
* promises:
- more robust stringification for unhandled rejections (Timothy Gu)
#13784
* repl:
- improve require() autocompletion (Alexey Orlenko)
#14409
* src:
- add openssl-system-ca-path configure option (Daniel Bevenius)
#16790
- add --use-bundled-ca --use-openssl-ca check (Daniel Bevenius)
#12087
- add process.ppid (cjihrig)
#16839
* tls:
- accept `lookup` option for `tls.connect()` (Fedor Indutny)
#12839
* tools, build:
- a new macOS installer! (JP Wesselink)
#15179
* url:
- WHATWG URL api support (James M Snell)
#7448
* util:
- add %i and %f formatting specifiers (Roman Reiss)
#10308
PR-URL: #18342
crypto.randomFill and crypto.randomFillSync are similar to crypto.randomBytes, but allow passing in a buffer as the first argument. This allows us to reuse buffers to prevent having to create a new one on every call. PR-URL: #10209 Reviewed-By: Sam Roberts <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Ben Noordhuis <[email protected]> Reviewed-By: Anna Henningsen <[email protected]>
This LTS release comes with 109 commits, 17 of which are considered
Semver-Minor. This includes 32 which are doc related, 29 which are test
related, 8 which are build / tool related and 1 commit which updates
a dependency.
Notable Changes:
* console:
- added console.count() and console.clear() (James M Snell)
#12678
* crypto:
- expose ECDH class (Bryan English)
#8188
- added cypto.randomFill() and crypto.randomFillSync() (Evan Lucas)
#10209
- warn on invalid authentication tag length (Tobias Nießen)
#17566
* deps:
- upgrade libuv to 1.16.1 (cjihrig)
#16835
* dgram:
- added socket.setMulticastInterface() (Will Young)
#7855
* http:
- add agent.keepSocketAlive and agent.reuseSocket as to allow
overridable keep-alive behavior of `Agent` (Fedor Indutny)
#13005
* lib:
- return this from net.Socket.end() (Sam Roberts)
#13481
* module:
- add builtinModules api that provides list of all builtin modules in
Node (Jon Moss)
#16386
* net:
- return this from getConnections() (Sam Roberts)
#13553
* promises:
- more robust stringification for unhandled rejections (Timothy Gu)
#13784
* repl:
- improve require() autocompletion (Alexey Orlenko)
#14409
* src:
- add openssl-system-ca-path configure option (Daniel Bevenius)
#16790
- add --use-bundled-ca --use-openssl-ca check (Daniel Bevenius)
#12087
- add process.ppid (cjihrig)
#16839
* tls:
- accept `lookup` option for `tls.connect()` (Fedor Indutny)
#12839
* tools, build:
- a new macOS installer! (JP Wesselink)
#15179
* url:
- WHATWG URL api support (James M Snell)
#7448
* util:
- add %i and %f formatting specifiers (Roman Reiss)
#10308
PR-URL: #18342
This LTS release comes with 112 commits, 17 of which are considered
Semver-Minor. This includes 32 which are doc related, 30 which are test
related, 8 which are build / tool related and 1 commit which updates
a dependency.
Notable Changes:
* console:
- added console.count() and console.clear() (James M Snell)
#12678
* crypto:
- expose ECDH class (Bryan English)
#8188
- added cypto.randomFill() and crypto.randomFillSync() (Evan Lucas)
#10209
- warn on invalid authentication tag length (Tobias Nießen)
#17566
* deps:
- upgrade libuv to 1.16.1 (cjihrig)
#16835
* dgram:
- added socket.setMulticastInterface() (Will Young)
#7855
* http:
- add agent.keepSocketAlive and agent.reuseSocket as to allow
overridable keep-alive behavior of `Agent` (Fedor Indutny)
#13005
* lib:
- return this from net.Socket.end() (Sam Roberts)
#13481
* module:
- add builtinModules api that provides list of all builtin modules in
Node (Jon Moss)
#16386
* net:
- return this from getConnections() (Sam Roberts)
#13553
* promises:
- more robust stringification for unhandled rejections (Timothy Gu)
#13784
* repl:
- improve require() autocompletion (Alexey Orlenko)
#14409
* src:
- add openssl-system-ca-path configure option (Daniel Bevenius)
#16790
- add --use-bundled-ca --use-openssl-ca check (Daniel Bevenius)
#12087
- add process.ppid (cjihrig)
#16839
* tls:
- accept `lookup` option for `tls.connect()` (Fedor Indutny)
#12839
* tools, build:
- a new macOS installer! (JP Wesselink)
#15179
* url:
- WHATWG URL api support (James M Snell)
#7448
* util:
- add %i and %f formatting specifiers (Roman Reiss)
#10308
PR-URL: #18342
This LTS release comes with 112 commits, 17 of which are considered
Semver-Minor. This includes 32 which are doc related, 30 which are test
related, 8 which are build / tool related and 1 commit which updates
a dependency.
Notable Changes:
* console:
- added console.count() and console.clear() (James M Snell)
#12678
* crypto:
- expose ECDH class (Bryan English)
#8188
- added cypto.randomFill() and crypto.randomFillSync() (Evan Lucas)
#10209
- warn on invalid authentication tag length (Tobias Nießen)
#17566
* deps:
- upgrade libuv to 1.16.1 (cjihrig)
#16835
* dgram:
- added socket.setMulticastInterface() (Will Young)
#7855
* http:
- add agent.keepSocketAlive and agent.reuseSocket as to allow
overridable keep-alive behavior of `Agent` (Fedor Indutny)
#13005
* lib:
- return this from net.Socket.end() (Sam Roberts)
#13481
* module:
- add builtinModules api that provides list of all builtin modules in
Node (Jon Moss)
#16386
* net:
- return this from getConnections() (Sam Roberts)
#13553
* promises:
- more robust stringification for unhandled rejections (Timothy Gu)
#13784
* repl:
- improve require() autocompletion (Alexey Orlenko)
#14409
* src:
- add openssl-system-ca-path configure option (Daniel Bevenius)
#16790
- add --use-bundled-ca --use-openssl-ca check (Daniel Bevenius)
#12087
- add process.ppid (cjihrig)
#16839
* tls:
- accept `lookup` option for `tls.connect()` (Fedor Indutny)
#12839
* tools, build:
- a new macOS installer! (JP Wesselink)
#15179
* url:
- WHATWG URL api support (James M Snell)
#7448
* util:
- add %i and %f formatting specifiers (Roman Reiss)
#10308
PR-URL: #18342
This LTS release comes with 112 commits, 17 of which are considered
Semver-Minor. This includes 32 which are doc related, 30 which are test
related, 8 which are build / tool related and 1 commit which updates
a dependency.
Notable Changes:
* console:
- added console.count() and console.clear() (James M Snell)
nodejs#12678
* crypto:
- expose ECDH class (Bryan English)
nodejs#8188
- added cypto.randomFill() and crypto.randomFillSync() (Evan Lucas)
nodejs#10209
- warn on invalid authentication tag length (Tobias Nießen)
nodejs#17566
* deps:
- upgrade libuv to 1.16.1 (cjihrig)
nodejs#16835
* dgram:
- added socket.setMulticastInterface() (Will Young)
nodejs#7855
* http:
- add agent.keepSocketAlive and agent.reuseSocket as to allow
overridable keep-alive behavior of `Agent` (Fedor Indutny)
nodejs#13005
* lib:
- return this from net.Socket.end() (Sam Roberts)
nodejs#13481
* module:
- add builtinModules api that provides list of all builtin modules in
Node (Jon Moss)
nodejs#16386
* net:
- return this from getConnections() (Sam Roberts)
nodejs#13553
* promises:
- more robust stringification for unhandled rejections (Timothy Gu)
nodejs#13784
* repl:
- improve require() autocompletion (Alexey Orlenko)
nodejs#14409
* src:
- add openssl-system-ca-path configure option (Daniel Bevenius)
nodejs#16790
- add --use-bundled-ca --use-openssl-ca check (Daniel Bevenius)
nodejs#12087
- add process.ppid (cjihrig)
nodejs#16839
* tls:
- accept `lookup` option for `tls.connect()` (Fedor Indutny)
nodejs#12839
* tools, build:
- a new macOS installer! (JP Wesselink)
nodejs#15179
* url:
- WHATWG URL api support (James M Snell)
nodejs#7448
* util:
- add %i and %f formatting specifiers (Roman Reiss)
nodejs#10308
PR-URL: nodejs#18342
There was an error while loading. Please reload this page.
Successfully merging this pull request may close these issues.
There was an error while loading. Please reload this page.