GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — crypto: pass all WebCryptoAPI WPTs by panva · Pull Request #43656 · nodejs/node

Conversation

@panva

@panva panva commented Jul 2, 2022 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member

I'm not expecting to land this PR as-is but i'm seeking feedback from @nodejs/crypto namely @tniessen and @jasnell on the end state which this currently reflects.

Overall the question is - is passing all relevant WebCryptoAPI WPT worth the ❗ items?

  • update WebCryptoAPI WPT
  • OperationError for generateKey() AES key length validation
  • NotSupportedError for generateKey() and importKey() EC key namedCurve validation
  • OperationError for HKDF deriveBits() length being null
  • ❗ support for zero-length secret KeyObject
  • OperationError for PBKDF2 deriveBits() iterations being 0
  • OperationError for PBKDF2 deriveBits() length being null
  • OperationError for when async crypto jobs fail for operation specific reasons
  • ❗ workaround for openssl EVP_PKEY_derive HKDF not playing nice with zero-length IKM
  • WPT global.location polyfill so that wpt/common/subset-tests.js execute

The C++ linter fails due to variable-length array use and I'd like suggestions for the C++ changes anyway.

I would still break this down into more individual commits. Or PRs if that's what the ask will be.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

bricss reacted with eyes emoji
All reactions
  • 👀 1 reaction
@panva panva added crypto Issues and PRs related to the crypto subsystem. experimental Issues and PRs related to experimental features. webcrypto Issues and PRs related to the Web Crypto API. labels Jul 2, 2022
@panva
panva requested review from jasnell and tniessen July 2, 2022 16:57
@nodejs-github-bot

nodejs-github-bot commented Jul 2, 2022

Copy link
Copy Markdown
Collaborator

Review requested:

  • @nodejs/crypto
All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@nodejs-github-bot nodejs-github-bot added lib / src Issues and PRs involving general changes in the lib/ or src/ directories. needs-ci PRs that need a full CI run. labels Jul 2, 2022
@panva
panva force-pushed the webcrypto-wpt branch 3 times, most recently from 716caf7 to 5b47b67 Compare July 2, 2022 17:40
@panva panva added request-ci Add this label to start a Jenkins CI on a PR. Only starts once the PR has an approving review. labels Jul 2, 2022
@github-actions github-actions Bot removed the request-ci Add this label to start a Jenkins CI on a PR. Only starts once the PR has an approving review. label Jul 2, 2022
@nodejs-github-bot

This comment was marked as outdated.

Sign in to view
bnoordhuis
bnoordhuis reviewed Jul 2, 2022
View reviewed changes

@bnoordhuis bnoordhuis left a comment

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some drive-by comments. I'm surprised WPT expects zero-sized keys to do something meaningful.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread src/crypto/crypto_hkdf.cc Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/crypto/crypto_hkdf.cc Resolved

Uh oh!

There was an error while loading. Please reload this page.

@nodejs-github-bot

This comment was marked as outdated.

Sign in to view
@panva

panva commented Jul 3, 2022 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member Author

@nodejs/testing how can I increase the test timeout for test.wpt/test-webcrypto? The new vectors and the fact we execute them all seems to have pushed it over the 2m edge on some configurations as well as github CI.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@nodejs-github-bot

This comment was marked as outdated.

Sign in to view
@github-actions github-actions Bot mentioned this pull request Jul 4, 2022
CI Reliability 2022-07-04 nodejs/reliability#317
Open
23 tasks
bnoordhuis
bnoordhuis reviewed Jul 5, 2022
View reviewed changes
Comment thread src/crypto/crypto_hkdf.cc Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/crypto/crypto_hkdf.cc Resolved

Uh oh!

There was an error while loading. Please reload this page.

@github-actions github-actions Bot mentioned this pull request Jul 8, 2022
CI Reliability 2022-07-08 nodejs/reliability#318
Open
16 tasks
@panva panva added the review wanted PRs that need review. label Jul 12, 2022
@panva

panva commented Jul 12, 2022

Copy link
Copy Markdown
Member Author

@nodejs/testing please take a look at my previous question #43656 (comment)

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@Trott

Trott commented Jul 12, 2022

Copy link
Copy Markdown
Member

@panva Is the issue with the timeout set in tools/test.py or is this some other timeout?

node/tools/test.py

Lines 945 to 949 in 3aec7da

def GetTimeout(self, mode, section=''):
timeout = self.timeout * TIMEOUT_SCALEFACTOR[ARCH_GUESS or 'ia32'][mode]
if section == 'pummel' or section == 'benchmark':
timeout = timeout * 6
return timeout

If that's the timeout you are referring to, you can perhaps do something similar to what was done for pummel and benchmark tests.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@panva

panva commented Jul 12, 2022

Copy link
Copy Markdown
Member Author

@panva Is the issue with the timeout set in tools/test.py or is this some other timeout?

node/tools/test.py

Lines 945 to 949 in 3aec7da

def GetTimeout(self, mode, section=''):
timeout = self.timeout * TIMEOUT_SCALEFACTOR[ARCH_GUESS or 'ia32'][mode]
if section == 'pummel' or section == 'benchmark':
timeout = timeout * 6
return timeout

If that's the timeout you are referring to, you can perhaps do something similar to what was done for pummel and benchmark tests.

Thank you @Trott, I've just pushed an inclusion of wpt in the same condition to see if it'll help or if it times out for some other reason.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@nodejs-github-bot

This comment was marked as outdated.

Sign in to view
@nodejs-github-bot

This comment was marked as outdated.

Sign in to view
@github-actions github-actions Bot mentioned this pull request Jul 13, 2022
CI Reliability 2022-07-13 nodejs/reliability#321
Open
23 tasks
@panva

panva commented Jul 13, 2022

Copy link
Copy Markdown
Member Author

@Trott the timeout change has definitely helped on most configurations, and github CI, but node-test-commit-freebsd failed the same way two times in a row, the webcrypto job is not even logged

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@panva

panva commented Jul 20, 2022 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member Author

@Trott Similar to FreeBSD before, the node-test-commit-arm-debug build times out after 5 minutes.

Trott reacted with eyes emoji
All reactions
  • 👀 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@nodejs-github-bot

nodejs-github-bot commented Jul 22, 2022

Copy link
Copy Markdown
Collaborator

CI: https://ci.nodejs.org/job/node-test-pull-request/45600/

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@Trott Trott mentioned this pull request Jul 22, 2022
increasing no-activity timeout for node-test-commit-arm-debug to 12 minutes nodejs/build#3001
Closed
@Trott

Trott commented Jul 22, 2022

Copy link
Copy Markdown
Member

@Trott Similar to FreeBSD before, the node-test-commit-arm-debug build times out after 5 minutes.

@panva I've increased the timeout to 12 minutes. nodejs/build#3001

I didn't do it before resuming the build 5 minutes ago, though, so if that build fails, use Resume Build on it and it should run again with the 12-minute limit instead.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@nodejs-github-bot

nodejs-github-bot commented Jul 22, 2022

Copy link
Copy Markdown
Collaborator

CI: https://ci.nodejs.org/job/node-test-pull-request/45601/

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

tniessen
tniessen reviewed Jul 22, 2022
View reviewed changes

@tniessen tniessen left a comment

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is really great work.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread test/parallel/test-crypto-key-objects.js Resolved

Uh oh!

There was an error while loading. Please reload this page.

tniessen
tniessen reviewed Jul 23, 2022
View reviewed changes

@tniessen tniessen left a comment

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❗ support for zero-length secret KeyObject

I am not happy about this, but I also don't see a way around it.

❗ workaround for openssl EVP_PKEY_derive HKDF not playing nice with zero-length IKM

It might be worth considering allowing this only through Web Crypto, not through node crypto. On the other hand, it seems to go through createSecretKey in both cases, so that might not be pretty.

I really don't like supporting things that OpenSSL does not support, but at least it's somewhat simple here.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread src/crypto/crypto_keys.cc
}

std::shared_ptr<KeyObjectData> KeyObjectData::CreateSecret(ByteSource key) {
CHECK(key);

@tniessen tniessen Jul 23, 2022

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We might need to verify that no other uses of KeyObjectData (and related structures) assume that the stored pointer is not nullptr. Otherwise, we might end up with aborts/crashes if someone constructs 0-length keys and uses them with other APIs.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@panva panva Jul 23, 2022 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is a zero length buffer key data treated as a nullptr? I would like to keep the check here but I don't understand the C++ keyobject implementation enough.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@tniessen tniessen Jul 23, 2022

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It might be because malloc(len) for len = 0 is allowed to return a nullptr. The standard only requires the returned pointer to be valid for len bytes, which nullptr fulfills when len = 0.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@panva panva Jul 23, 2022

Copy link
Copy Markdown
Member Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you have a suggestion that would allow us to keep this check?

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread src/crypto/crypto_hkdf.cc Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/crypto/crypto_hkdf.cc
if (!EVP_PKEY_CTX_hkdf_mode(ctx.get(),
EVP_PKEY_HKDEF_MODE_EXTRACT_AND_EXPAND) ||
!EVP_PKEY_CTX_set1_hkdf_salt(
ctx.get(), params.salt.data<unsigned char>(), params.salt.size()) ||

@tniessen tniessen Jul 23, 2022

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does a non-zero-length key work with a 0-length salt?

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@panva panva Jul 23, 2022

Copy link
Copy Markdown
Member Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@panva panva Jul 23, 2022

Copy link
Copy Markdown
Member Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

https://datatracker.ietf.org/doc/html/rfc5869#section-2.2

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@tniessen tniessen Jul 23, 2022

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I know it's allowed, I am just wondering if OpenSSL implements it that way. The RFC's statement if not provided could be interpreted as "if the user does not call EVP_PKEY_CTX_set1_hkdf_salt".

Now I am confused as to whether an empty salt is the same as passing no salt in our current implementation.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@panva panva Jul 23, 2022

Copy link
Copy Markdown
Member Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Our implementation does not allow to omit passing salt, we require the argument, albeit we allow it to be zero-length.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@panva panva Jul 24, 2022

Copy link
Copy Markdown
Member Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does a non-zero-length key work with a 0-length salt?

that's also covered by a passing wpt btw

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread src/crypto/crypto_hkdf.cc Resolved

Uh oh!

There was an error while loading. Please reload this page.

@panva

panva commented Jul 23, 2022

Copy link
Copy Markdown
Member Author

❗ support for zero-length secret KeyObject

I am not happy about this, but I also don't see a way around it.

❗ workaround for openssl EVP_PKEY_derive HKDF not playing nice with zero-length IKM

It might be worth considering allowing this only through Web Crypto, not through node crypto. On the other hand, it seems to go through createSecretKey in both cases, so that might not be pretty.

My thought process was exactly the same. I know we're missing 0-length tests for every single operation we accept a SecretKeyObject in.

I really don't like supporting things that OpenSSL does not support, but at least it's somewhat simple here.

OpenSSL does support it, but this fix did not get extended to the particular API we use. I would happily use the new API but it's only available in 3 and we still have to support 1.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

panva added 3 commits July 23, 2022 20:43
@panva
apply review feedback
03275d0
@panva
update hkdf docs
8c05855
@panva
add 0-length key hmac and equals tests
2561171
@panva panva added the request-ci Add this label to start a Jenkins CI on a PR. Only starts once the PR has an approving review. label Jul 23, 2022
@github-actions github-actions Bot removed the request-ci Add this label to start a Jenkins CI on a PR. Only starts once the PR has an approving review. label Jul 23, 2022
@nodejs-github-bot

nodejs-github-bot commented Jul 23, 2022

Copy link
Copy Markdown
Collaborator

CI: https://ci.nodejs.org/job/node-test-pull-request/45620/

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

tniessen
tniessen reviewed Jul 23, 2022
View reviewed changes
Comment thread doc/api/crypto.md Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread lib/internal/crypto/keys.js Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/crypto/crypto_hkdf.cc
params.key->GetSymmetricKeySize())) {
return false;
}
} else {

@tniessen tniessen Jul 23, 2022

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you add a brief comment to the beginning of the else branch to explain why it exists for future readers?

If we accept that this branch must exist (until we fully drop OpenSSL 1.1.1), then we should probably either

  • remove the other branch that uses EVP_PKEY_HKDEF_MODE_EXTRACT_AND_EXPAND and pass the key to HMAC in this new branch (that should be equivalent as far as I can tell), or
  • add a TODO comment saying to remove this branch once we have dropped OpenSSL 1.1.1.

The first option would give us improved coverage because all HMAC operations would go through it.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@panva panva Jul 23, 2022

Copy link
Copy Markdown
Member Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you add a brief comment to the beginning of the else branch to explain why it exists for future readers?

Sure.

If we accept that this branch must exist (until we fully drop OpenSSL 1.1.1), then we should probably either

  • remove the other branch that uses EVP_PKEY_HKDEF_MODE_EXTRACT_AND_EXPAND and pass the key to HMAC in this new branch (that should be equivalent as far as I can tell)

I think that can be done as a follow-up, I am not up for such challenge myself.

  • add a TODO comment saying to remove this branch once we have dropped OpenSSL 1.1.1.

You mean to change the implementation to use EVP_KDF-HKDF when 1.1.1 is dropped?

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread test/common/wpt.js
this.inProgress.delete(testFileName);
});

await new Promise((resolve) => {

@tniessen tniessen Jul 23, 2022

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you want to reject when the worker emits an error event, you could also use
await events.once(worker, 'exit').

That being said, it looks like the caller never awaits the returned Promise (e.g., in test-webcrypto.js). What is the point in creating the Promise here if the caller does not await it?

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@panva panva Jul 23, 2022

Copy link
Copy Markdown
Member Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The point is to process the queue one by one. This has helped stabilize CI, especially the keygen tests that easily bogged the hosts down minutes at a time.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@panva panva Jul 23, 2022 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you want to reject when the worker emits an error event, you could also use await events.once(worker, 'exit').

Rejecting would skip running the rest of the queue. So maybe this?

await Promise.allSettled([events.once(worker, 'exit')])

or

await events.once(worker, 'exit').catch(() => {})

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
panva added 3 commits July 23, 2022 22:59
@panva
add yaml change entries
09a6e50
@panva
apply review feedback
d51c30c
@panva
make lint happy
c8d7b2c
@panva

panva commented Jul 23, 2022 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member Author

Now on the matter of eventually landing this. I propose to commit-queue-rebase PRs the Commit Queue should land as multiple self-contained commits. to land the PR in several commits. Also semver-minor PRs that contain new features and should be released in the next minor version. and leave a note to releasers that only some of the commits are minor, the rest are patch.

  • crypto: fix webcrypto generateKey() AES key length validation error - crypto: fix webcrypto generateKey() AES key length validation error #44170
  • crypto: fix webcrypto generateKey() and importKey() EC key namedCurve validation error - crypto: fix webcrypto EC key namedCurve validation errors #44172
  • crypto: fix webcrypto HKDF deriveBits() null length validation error - crypto: fix webcrypto deriveBits validations #44173
  • crypto: fix webcrypto PBKDF2 deriveBits() null length validation error - crypto: fix webcrypto deriveBits validations #44173
  • crypto: fix webcrypto PBKDF2 deriveBits() 0 iterations validation error - crypto: fix webcrypto deriveBits validations #44173
  • crypto: fix webcrypto operation errors to be OperationError - crypto: fix webcrypto operation errors to be OperationError #44171
  • semver-minor PRs that contain new features and should be released in the next minor version. crypto: allow zero-length secret KeyObject - crypto: allow zero-length secrets and IKM in HKDF (and in webcrypto PBKDF2) #44201
  • semver-minor PRs that contain new features and should be released in the next minor version. crypto: allow zero-length IKM in HKDF - crypto: allow zero-length secrets and IKM in HKDF (and in webcrypto PBKDF2) #44201
  • test,crypto: update WebCryptoAPI WPT - TBD

WDYT?

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

This was referenced Jul 24, 2022
CI Reliability 2022-07-24 nodejs/reliability#330
Open
CI Reliability 2022-07-25 nodejs/reliability#331
Open
CI Reliability 2022-07-26 nodejs/reliability#332
Open
CI Reliability 2022-07-27 nodejs/reliability#333
Open
@tniessen tniessen mentioned this pull request Aug 2, 2022
test: update webcrypto api wpt tests #44097
Closed
@panva

panva commented Aug 7, 2022

Copy link
Copy Markdown
Member Author

I will pick this up again and break down to individual PRs after #43455 when every new WPT fixing PR will visibly show how many tests it fixes.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@panva
panva marked this pull request as draft August 8, 2022 10:41
@panva panva mentioned this pull request Aug 10, 2022
crypto: allow zero-length secrets and IKM in HKDF (and in webcrypto PBKDF2) #44201
Closed
@panva panva closed this Aug 11, 2022
@panva

panva commented Aug 11, 2022

Copy link
Copy Markdown
Member Author

Split up into #44170, #44171, #44172, #44173, and #44201. Pulling updated WPT will be done after they land to avoid unnecessary conflicts.

tniessen reacted with heart emoji
All reactions
  • ❤️ 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@panva
panva deleted the webcrypto-wpt branch October 13, 2022 09:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@bnoordhuis bnoordhuis bnoordhuis left review comments
@tniessen tniessen tniessen left review comments
@jasnell jasnell Awaiting requested review from jasnell

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

crypto Issues and PRs related to the crypto subsystem. experimental Issues and PRs related to experimental features. lib / src Issues and PRs involving general changes in the lib/ or src/ directories. needs-ci PRs that need a full CI run. review wanted PRs that need review. webcrypto Issues and PRs related to the Web Crypto API.

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

5 participants

@panva @nodejs-github-bot @Trott @bnoordhuis @tniessen
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.