deno/tools
Luca Casonato 4fa8869f24
feat(ext/node): rewrite crypto keys (#24463)
This completely rewrites how we handle key material in ext/node. Changes
in this
PR:

- **Signing**
  - RSA
  - RSA-PSS 🆕
  - DSA 🆕
  - EC
  - ED25519 🆕
- **Verifying**
  - RSA
  - RSA-PSS 🆕
  - DSA 🆕
  - EC 🆕
  - ED25519 🆕
- **Private key import**
  - Passphrase encrypted private keys 🆕
  - RSA
    - PEM
    - DER (PKCS#1) 🆕
    - DER (PKCS#8) 🆕
  - RSA-PSS
    - PEM
    - DER (PKCS#1) 🆕
    - DER (PKCS#8) 🆕
  - DSA 🆕
  - EC
    - PEM
    - DER (SEC1) 🆕
    - DER (PKCS#8) 🆕
  - X25519 🆕
  - ED25519 🆕
  - DH
- **Public key import**
  - RSA
    - PEM
    - DER (PKCS#1) 🆕
    - DER (PKCS#8) 🆕
  - RSA-PSS 🆕
  - DSA 🆕
  - EC 🆕
  - X25519 🆕
  - ED25519 🆕
  - DH 🆕
- **Private key export**
  - RSA 🆕
  - DSA 🆕
  - EC 🆕
  - X25519 🆕
  - ED25519 🆕
  - DH 🆕
- **Public key export**
  - RSA
  - DSA 🆕
  - EC 🆕
  - X25519 🆕
  - ED25519 🆕
  - DH 🆕
- **Key pair generation**
  - Overhauled, but supported APIs unchanged

This PR adds a lot of new individual functionality. But most importantly
because
of the new key material representation, it is now trivial to add new
algorithms
(as shown by this PR).

Now, when adding a new algorithm, it is also widely supported - for
example
previously we supported ED25519 key pair generation, but we could not
import,
export, sign or verify with ED25519. We can now do all of those things.
2024-08-07 08:43:58 +02:00
..
napi Revert "chore: move all node-api impl to ext (#24662)" (#24680) 2024-07-23 00:01:31 +00:00
release chore: include current versions more in release checklist (#24562) 2024-07-12 18:44:55 -04:00
build_bench.ts chore: use granular unstable flags in tools/ (#22138) 2024-01-26 22:35:43 +00:00
build_benchmark_jsons.js chore: update copyright to 2024 (#21753) 2024-01-01 19:58:21 +00:00
copyright_checker.js chore: use @std prefix for internal module specifiers (#24543) 2024-07-25 10:26:54 +10:00
core_import_map.json feat(ext/node): rewrite crypto keys (#24463) 2024-08-07 08:43:58 +02:00
cut_a_release.md docs: clarify release instructions (#24124) 2024-06-07 01:15:56 +00:00
deno.json chore: use @std prefix for internal module specifiers (#24543) 2024-07-25 10:26:54 +10:00
deno.lock.json chore: forward v1.42.2 release commit to main (#23315) 2024-04-11 13:37:24 +05:30
faster-rebuilds.md chore(build): document faster rebuilds with cargo plonk (#21823) 2024-01-06 16:27:04 +05:30
format.js chore: use @std prefix for internal module specifiers (#24543) 2024-07-25 10:26:54 +10:00
install_prebuilt.js chore: use @std prefix for internal module specifiers (#24543) 2024-07-25 10:26:54 +10:00
jsdoc_checker.js chore: use @std prefix for internal module specifiers (#24543) 2024-07-25 10:26:54 +10:00
lint.js chore: use @std prefix for internal module specifiers (#24543) 2024-07-25 10:26:54 +10:00
ops.d.ts feat(ext/node): rewrite crypto keys (#24463) 2024-08-07 08:43:58 +02:00
README.md chore: use granular unstable flags in tools/ (#22138) 2024-01-26 22:35:43 +00:00
update_typescript.md fix: update to TypeScript 4.7.4 (#15022) 2022-07-04 15:13:50 +10:00
upload_wptfyi.js chore: update copyright to 2024 (#21753) 2024-01-01 19:58:21 +00:00
util.js chore: update to std@2024.07.19 (#24715) 2024-07-25 15:30:28 +10:00
verify_pr_title.js build: fix 'deno_core' PR title lint (#24183) 2024-06-11 19:50:02 -04:00
wgpu_sync.js chore: use @std prefix for internal module specifiers (#24543) 2024-07-25 10:26:54 +10:00

Tools

Documentation for various tooling in support of Deno development.

format.js

This script will format the code (currently using dprint, rustfmt). It is a prerequisite to run this before code check in.

To run formatting:

deno run --allow-read --allow-write --allow-run ./tools/format.js

lint.js

This script will lint the code base (currently using dlint, clippy). It is a prerequisite to run this before code check in.

To run linting:

deno run --allow-read --allow-write --allow-run ./tools/lint.js

Tip: You can also use cargo to run the current or pending build of the deno executable

cargo run -- run --allow-read --allow-write --allow-run ./tools/<script>

wgpu_sync.js

wgpu_sync.js streamlines updating deno_webgpu from gfx-rs/wgpu.

It essentially vendors the deno_webgpu tree with a few minor patches applied on top, somewhat similar to git subtree.

  1. Update COMMIT or V_WGPU in ./tools/wgpu_sync.js
  2. Run ./tools/wgpu_sync.js
  3. Double check changes, possibly patch
  4. Commit & send a PR with the updates

copyright_checker.js is used to check copyright headers in the codebase.

To run the copyright checker:

deno run --allow-read --allow-run  ./tools/copyright_checker.js

Then it will check all code files in the repository and report any files that are not properly licensed.