232 breaking releases

Uses new Rust 2024

new 0.235.0 Oct 30, 2025
0.233.0 Oct 9, 2025
0.226.0 Jul 31, 2025
0.211.0 Mar 28, 2025
0.3.0 Nov 23, 2020

#523 in Cryptography

Download history 1949/week @ 2025-07-16 1585/week @ 2025-07-23 1708/week @ 2025-07-30 1853/week @ 2025-08-06 2163/week @ 2025-08-13 2420/week @ 2025-08-20 2754/week @ 2025-08-27 2419/week @ 2025-09-03 2717/week @ 2025-09-10 2636/week @ 2025-09-17 2993/week @ 2025-09-24 3260/week @ 2025-10-01 2104/week @ 2025-10-08 3089/week @ 2025-10-15 3319/week @ 2025-10-22 2941/week @ 2025-10-29

11,908 downloads per month
Used in 64 crates (23 directly)

MIT license

750KB
22K SLoC

JavaScript 17K SLoC // 0.1% comments Rust 5K SLoC // 0.0% comments TypeScript 161 SLoC // 0.1% comments

deno_crypto

This crate implements the Web Cryptography API.

Spec: https://www.w3.org/TR/WebCryptoAPI/

Usage Example

From javascript, include the extension's source, and assign CryptoKey, crypto, Crypto, and SubtleCrypto to the global scope:

import * as crypto from "ext:deno_crypto/00_crypto.js";

Object.defineProperty(globalThis, "CryptoKey", {
  value: crypto.CryptoKey,
  enumerable: false,
  configurable: true,
  writable: true,
});

Object.defineProperty(globalThis, "crypto", {
  value: crypto.crypto,
  enumerable: false,
  configurable: true,
  writable: false,
});

Object.defineProperty(globalThis, "Crypto", {
  value: crypto.Crypto,
  enumerable: false,
  configurable: true,
  writable: true,
});

Object.defineProperty(globalThis, "SubtleCrypto", {
  value: crypto.SubtleCrypto,
  enumerable: false,
  configurable: true,
  writable: true,
});

Then from rust, provide: deno_crypto::deno_crypto::init(Option<u64>) in the extensions field of your RuntimeOptions

Where the Option<u64> represents an optional seed for initialization.

Dependencies

  • deno_webidl: Provided by the deno_webidl crate
  • deno_web: Provided by the deno_web crate

Provided ops

Following ops are provided, which can be accessed through Deno.ops:

  • op_crypto_get_random_values
  • op_crypto_generate_key
  • op_crypto_sign_key
  • op_crypto_verify_key
  • op_crypto_derive_bits
  • op_crypto_import_key
  • op_crypto_export_key
  • op_crypto_encrypt
  • op_crypto_decrypt
  • op_crypto_subtle_digest
  • op_crypto_random_uuid
  • op_crypto_wrap_key
  • op_crypto_unwrap_key
  • op_crypto_base64url_decode
  • op_crypto_base64url_encode
  • x25519::op_crypto_generate_x25519_keypair
  • x25519::op_crypto_derive_bits_x25519
  • x25519::op_crypto_import_spki_x25519
  • x25519::op_crypto_import_pkcs8_x25519
  • ed25519::op_crypto_generate_ed25519_keypair
  • ed25519::op_crypto_import_spki_ed25519
  • ed25519::op_crypto_import_pkcs8_ed25519
  • ed25519::op_crypto_sign_ed25519
  • ed25519::op_crypto_verify_ed25519
  • ed25519::op_crypto_export_spki_ed25519
  • ed25519::op_crypto_export_pkcs8_ed25519
  • ed25519::op_crypto_jwk_x_ed25519
  • x25519::op_crypto_export_spki_x25519
  • x25519::op_crypto_export_pkcs8_x25519

Dependencies

~178MB
~4M SLoC