Coder Social home page Coder Social logo

bitwarden / sdk Goto Github PK

View Code? Open in Web Editor NEW
186.0 24.0 35.0 4.66 MB

Bitwarden SDK

License: Other

Rust 89.69% JavaScript 0.32% TypeScript 0.56% C# 0.42% Python 0.28% Mustache 1.79% Shell 0.24% Handlebars 0.12% Kotlin 0.96% Swift 0.77% Java 0.59% Go 0.53% CMake 0.05% C++ 1.07% Ruby 0.67% PHP 1.82% Dockerfile 0.13%

sdk's Introduction

Bitwarden SDK

This repository houses the Bitwarden SDKs. We currently provide a public Secrets Manager SDK and an internal SDK for the Bitwarden Password Manager which is used for the native mobile applications. The SDK is written in Rust and provides a Rust API, CLI and various language bindings.

Disclaimer

The password manager SDK is not intended for public use and is not supported by Bitwarden at this stage. It is solely intended to centralize the business logic and to provide a single source of truth for the internal applications. As the SDK evolves into a more stable and feature complete state we will re-evaluate the possibility of publishing stable bindings for the public. The password manager interface is unstable and will change without warning.

We're Hiring!

Interested in contributing in a big way? Consider joining our team! We're hiring for many positions. Please take a look at our Careers page to see what opportunities are currently open as well as what it's like to work at Bitwarden.

Getting Started

cargo build

Crates

The project is structured as a monorepo using cargo workspaces. Some of the more noteworthy crates are:

Schemas

To minimize the amount of work required to support additional bindings the project is structured around a json based API. With every binding only needing to implement one method, namely run_command.

To ensure type safety in the API, json schemas are generated from the rust structs in bitwarden using schemars. The json schemas are later used to generate the API bindings for each language using QuickType.

npm run schemas

API Bindings

We autogenerate the server bindings using openapi-generator. To do this we first need to build the internal swagger documentation.

Swagger generation

The first step is to generate the swagger documents from the server repository.

# src/Api
dotnet swagger tofile --output ../../api.json ./bin/Debug/net8.0/Api.dll internal

# src/Identity
ASPNETCORE_ENVIRONMENT=development dotnet swagger tofile --output ../../identity.json ./bin/Debug/net8.0/Identity.dll v1

OpenApi Generator

To generate a new version of the bindings run the following script from the root of the SDK project.

./support/build-api.sh

This project uses customized templates which lives in the support/openapi-templates directory. These templates resolves some outstanding issues we've experienced with the rust generator. But we strive towards modifying the templates as little as possible to ease future upgrades.

Note: If you don't have the nightly toolchain installed, the build-api.sh script will install it for you.

Tests

Many of the SDK tests are based on encrypted data provided by the other Bitwarden clients. In order to provide a consistent method of retrieving the data we provide a test account with user keys.

Disclaimer: The server typically encrypts and protects certain fields. In order to allow accounts to be used on other servers this protection was explicitly removed from these data dumps.

INSERT INTO vault_dev.dbo.[User] (
  Id, Name, Email, EmailVerified, MasterPassword,
  MasterPasswordHint, Culture, SecurityStamp,
  TwoFactorProviders, TwoFactorRecoveryCode,
  EquivalentDomains, ExcludedGlobalEquivalentDomains,
  AccountRevisionDate, [Key], PublicKey,
  PrivateKey, Premium, PremiumExpirationDate,
  Storage, MaxStorageGb, Gateway, GatewayCustomerId,
  GatewaySubscriptionId, LicenseKey,
  CreationDate, RevisionDate, RenewalReminderDate,
  Kdf, KdfIterations, ReferenceData,
  ApiKey, ForcePasswordReset, UsesKeyConnector,
  FailedLoginCount, LastFailedLoginDate,
  AvatarColor, KdfMemory, KdfParallelism,
  LastPasswordChangeDate, LastKdfChangeDate,
  LastKeyRotationDate, LastEmailChangeDate
)
VALUES
  (
    N 'b1fd4bf2-9643-4787-87f3-b0f00189c33b',
    N 'Test', N '[email protected]',
    0, N 'AQAAAAEAAYagAAAAEJ3ky9F/Zt5sy3/UAHVvBarMR+tBXYOM5IGgXy4/mx82uptgHgItauyCN+UZTvAqiA==',
    null, N 'en-US', N 'F3KL7SCJKEXO4LJFVLGZITPEHM7SAVSZ',
    null, null, null, null, N '2024-01-07 23:56:48.2600000',
    N '2.Q/2PhzcC7GdeiMHhWguYAQ==|GpqzVdr0go0ug5cZh1n+uixeBC3oC90CIe0hd/HWA/pTRDZ8ane4fmsEIcuc8eMKUt55Y2q/fbNzsYu41YTZzzsJUSeqVjT8/iTQtgnNdpo=|dwI+uyvZ1h/iZ03VQ+/wrGEFYVewBUUl/syYgjsNMbE=',
    N 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0Ww2chogqCpaAR7Uw448am4b7vDFXiM5kXjFlGfXBlrAdAqTTggEvTDlMNYqPlCo+mBM6iFmTTUY9rpZBvFskMnKvsvpJ47/fehAH2o2e3Ulv/5NFevaVCMCmpkBDtbMbO1A4a3btdRtCP8DsKWMefHauEpaoLxNTLWnOIZVfCMjsSgx2EvULHAZPTtbFwm4+UVKniM4ds4jvOsD85h4jn2aLs/jWJXFfxN8iVSqEqpC2TBvsPdyHb49xQoWWfF0Z6BiNqeNGKEU9Uos1pjL+kzhEzzSpH31PZT/ufJ/oo4+93wrUt57hb6f0jxiXhwd5yQ+9F6wVwpbfkq0IwhjOwIDAQAB',
    N '2.yN7l00BOlUE0Sb0M//Q53w==|EwKG/BduQRQ33Izqc/ogoBROIoI5dmgrxSo82sgzgAMIBt3A2FZ9vPRMY+GWT85JiqytDitGR3TqwnFUBhKUpRRAq4x7rA6A1arHrFp5Tp1p21O3SfjtvB3quiOKbqWk6ZaU1Np9HwqwAecddFcB0YyBEiRX3VwF2pgpAdiPbSMuvo2qIgyob0CUoC/h4Bz1be7Qa7B0Xw9/fMKkB1LpOm925lzqosyMQM62YpMGkjMsbZz0uPopu32fxzDWSPr+kekNNyLt9InGhTpxLmq1go/pXR2uw5dfpXc5yuta7DB0EGBwnQ8Vl5HPdDooqOTD9I1jE0mRyuBpWTTI3FRnu3JUh3rIyGBJhUmHqGZvw2CKdqHCIrQeQkkEYqOeJRJVdBjhv5KGJifqT3BFRwX/YFJIChAQpebNQKXe/0kPivWokHWwXlDB7S7mBZzhaAPidZvnuIhalE2qmTypDwHy22FyqV58T8MGGMchcASDi/QXI6kcdpJzPXSeU9o+NC68QDlOIrMVxKFeE7w7PvVmAaxEo0YwmuAzzKy9QpdlK0aab/xEi8V4iXj4hGepqAvHkXIQd+r3FNeiLfllkb61p6WTjr5urcmDQMR94/wYoilpG5OlybHdbhsYHvIzYoLrC7fzl630gcO6t4nM24vdB6Ymg9BVpEgKRAxSbE62Tqacxqnz9AcmgItb48NiR/He3n3ydGjPYuKk/ihZMgEwAEZvSlNxYONSbYrIGDtOY+8Nbt6KiH3l06wjZW8tcmFeVlWv+tWotnTY9IqlAfvNVTjtsobqtQnvsiDjdEVtNy/s2ci5TH+NdZluca2OVEr91Wayxh70kpM6ib4UGbfdmGgCo74gtKvKSJU0rTHakQ5L9JlaSDD5FamBRyI0qfL43Ad9qOUZ8DaffDCyuaVyuqk7cz9HwmEmvWU3VQ+5t06n/5kRDXttcw8w+3qClEEdGo1KeENcnXCB32dQe3tDTFpuAIMLqwXs6FhpawfZ5kPYvLPczGWaqftIs/RXJ/EltGc0ugw2dmTLpoQhCqrcKEBDoYVk0LDZKsnzitOGdi9mOWse7Se8798ib1UsHFUjGzISEt6upestxOeupSTOh0v4+AjXbDzRUyogHww3V+Bqg71bkcMxtB+WM+pn1XNbVTyl9NR040nhP7KEf6e9ruXAtmrBC2ah5cFEpLIot77VFZ9ilLuitSz+7T8n1yAh1IEG6xxXxninAZIzi2qGbH69O5RSpOJuJTv17zTLJQIIc781JwQ2TTwTGnx5wZLbffhCasowJKd2EVcyMJyhz6ru0PvXWJ4hUdkARJs3Xu8dus9a86N8Xk6aAPzBDqzYb1vyFIfBxP0oO8xFHgd30Cgmz8UrSE3qeWRrF8ftrI6xQnFjHBGWD/JWSvd6YMcQED0aVuQkuNW9ST/DzQThPzRfPUoiL10yAmV7Ytu4fR3x2sF0Yfi87YhHFuCMpV/DsqxmUizyiJuD938eRcH8hzR/VO53Qo3UIsqOLcyXtTv6THjSlTopQ+JOLOnHm1w8dzYbLN44OG44rRsbihMUQp+wUZ6bsI8rrOnm9WErzkbQFbrfAINdoCiNa6cimYIjvvnMTaFWNymqY1vZxGztQiMiHiHYwTfwHTXrb9j0uPM=|09J28iXv9oWzYtzK2LBT6Yht4IT4MijEkk0fwFdrVQ4=',
    0, null, null, null, null, null, null,
    null, N '2024-01-07 23:53:38.5900000',
    N '2024-01-07 23:53:38.5900000',
    null, 0, 600000, N '{"id":null}', N '7gp59kKHt9kMlks0BuNC4IjNXYkljR',
    0, 0, 0, null, null, null, null, null,
    null, null, null
  );

Developer tools

This project recommends the use of certain developer tools, and also includes configurations for them to make developers lives easier. The use of these tools is optional and they might require a separate installation step.

The list of developer tools is:

  • Visual Studio Code: We provide a recommended extension list which should show under the Extensions tab when opening this project with the editor. We also offer a few launch settings and tasks to build and run the SDK
  • bacon: This is a CLI background code checker. We provide a configuration file with some of the most common tasks to run (check, clippy, test, doc - run bacon -l to see them all). This tool needs to be installed separately by running cargo install bacon --locked.
  • nexttest: This is a new and faster test runner, capable of running tests in parallel and with a much nicer output compared to cargo test. This tool needs to be installed separately by running cargo install cargo-nextest --locked. It can be manually run using cargo nextest run --all-features

sdk's People

Contributors

audrey-jensen avatar bbujak avatar bitwarden-devops-bot avatar carnei-ro avatar coltonhurst avatar cvele avatar dani-garcia avatar dependabot[bot] avatar differsthecat avatar github-actions[bot] avatar hinton avatar jlf0dev avatar joseph-flinn avatar lukpotsym avatar malirobot avatar matt-livefront avatar mgibson1 avatar michalchecinski avatar milost77 avatar mimartin12 avatar patrick-bitwarden avatar renovate[bot] avatar slobokv83 avatar tangowithfoxtrot avatar thomas-avery avatar vgrassia avatar withinfocus avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sdk's Issues

Failed to parse IdentityTokenResponse

Steps To Reproduce

We keep getting Internal error: Failed to parse IdentityTokenResponse from the vault SDK ~17 hours ago. Seems to be an issue with deserializing the response from the Bitwarden API.

Expected Result

Attempt to retrieve secrets from the vault shouldn't fail.

Actual Result

An internal error is returned instead.

Screenshots or Videos

No response

Additional Context

No response

Operating System

Linux

Operating System Version

No response

Build Version

0.2.1

Issue Tracking Info

  • I understand that work is tracked outside of Github. A PR will be linked to this issue should one be opened to address it, but Bitwarden doesn't use fields like "assigned", "milestone", or "project" to track progress.

PanicExecption in python sdk

Steps To Reproduce

when attempting to create the api twice in the same process, getting an error.

from bitwarden_sdk import BitwardenClient
client = BitwardenClient()

client = BitwardenClient()

raises

File c:\Users\username\Miniconda3\envs\jupyer_11\Lib\site-packages\bitwarden_sdk\bitwarden_client.py:10, in BitwardenClient.__init__(self, settings)
      8 def __init__(self, settings: ClientSettings = None):
      9     if settings is None:
---> 10         self.inner = bitwarden_py.BitwardenClient(None)
     11     else:
     12         settings_json = json.dumps(settings.to_dict())

PanicException: called `Result::unwrap()` on an `Err` value: SetLoggerError(())

Expected Result

Not raise an error, or return a reference to the existing object

Actual Result

Panic error raised.

File c:\Users\username\Miniconda3\envs\jupyer_11\Lib\site-packages\bitwarden_sdk\bitwarden_client.py:10, in BitwardenClient.__init__(self, settings)
      8 def __init__(self, settings: ClientSettings = None):
      9     if settings is None:
---> 10         self.inner = bitwarden_py.BitwardenClient(None)
     11     else:
     12         settings_json = json.dumps(settings.to_dict())

PanicException: called `Result::unwrap()` on an `Err` value: SetLoggerError(())

Screenshots or Videos

No response

Additional Context

Ideally it would either create a new instance of the object, or return a reference to the existing object instead of the panic error.

The (likely) preferred approach should be to create the variable once and pass it around, but ideally i should be able to create a second reference to the object and use it the same as the first, or this would be documented if its not the anticipated behaviour.

I can't run this in a jupyter notebook as well without calling the BW client at the top scope either, otherwise subsequent calls raises the error.

Operating System

Windows

Operating System Version

10

Build Version

0.1.0

Issue Tracking Info

  • I understand that work is tracked outside of Github. A PR will be linked to this issue should one be opened to address it, but Bitwarden doesn't use fields like "assigned", "milestone", or "project" to track progress.

Expose `ClientSecrets` and `ClientProjects` in API docs.

Steps To Reproduce

  • At the moment, both the ClientSecrets and ClientProjects types aren't exposed in docs.rs.

Expected Result

Since this are types callers might often interact with, I'll expect that they should be made public.

I checked, and I saw that both client_projects and client_secrets are private, nor manually exported.

Actual Result

Docs for ClientSecrets and ClientProjects don't appear on docs.rs.

Screenshots or Videos

No response

Additional Context

No response

Operating System

macOS

Operating System Version

No response

Build Version

0.2.1

Issue Tracking Info

  • I understand that work is tracked outside of Github. A PR will be linked to this issue should one be opened to address it, but Bitwarden doesn't use fields like "assigned", "milestone", or "project" to track progress.

Bitwarden NAPI initializes logger multiple times

From #112

Steps To Reproduce

Create multiple instances of the Bitwarden SDK.

Expected Result

Multiple concurrent instances of Bitwarden Client.

Actual Result

thread '<unnamed>' panicked at 'Builder::init should not be called after logger initialized: SetLoggerError(())', C:\Users\runneradmin\.cargo\registry\src\github.com-1ecc6299db9ec823\env_logger-0.10.0\src\lib.rs:816:14

Screenshots or Videos

No response

Additional Context

We need to look into a way to iniitalize the logger once, maybe using https://doc.rust-lang.org/stable/std/sync/struct.Once.html.

Operating System

Windows, macOS, Linux

Operating System Version

No response

Build Version

0.3.0

Issue Tracking Info

  • I understand that work is tracked outside of Github. A PR will be linked to this issue should one be opened to address it, but Bitwarden doesn't use fields like "assigned", "milestone", or "project" to track progress.

Unable to create project

Steps To Reproduce

There's currently no function exposed to create a project from the SDK.

Expected Result

I'll expect that not only should a project be created, but that the service account access token should have read permission to the project automatically - unless configured otherwise.

Actual Result

No function exposed to fetch create a project.

Screenshots or Videos

No response

Additional Context

No response

Operating System

macOS

Operating System Version

No response

Build Version

0.2.1

Issue Tracking Info

  • I understand that work is tracked outside of Github. A PR will be linked to this issue should one be opened to address it, but Bitwarden doesn't use fields like "assigned", "milestone", or "project" to track progress.

Project is not marked mandatory when updating secrets in Python

Steps To Reproduce

As the title says, project_id argument is required even though it is not marked as mandatory

  1. Attempt to update a secret via client.secrets().update() without providing project_id argument
  2. 404 Error (resource not found is returned)

Expected Result

  1. If the project_id is mandatory, then it should be marked as mandatory in documentation as well
  2. If the project_id is not mandatory, then it should be fixed

Actual Result

The update only works if the project_is supplied

Screenshots or Videos

No response

Additional Context

No response

Operating System

macOS

Operating System Version

No response

Build Version

0.1.0

Issue Tracking Info

  • I understand that work is tracked outside of Github. A PR will be linked to this issue should one be opened to address it, but Bitwarden doesn't use fields like "assigned", "milestone", or "project" to track progress.

Wrong host architectures for Java bindings (darwin-x64 -> darwin-x86-64) and others as well

Steps To Reproduce

Use Java bindings for a real world project and deploy it to different host architectures

Expected Result

Java bindings allow to use the Bitwarden Secrets Manager SDK on all host architectures the bitwarden_c library was compiled for

Actual Result

Native library (darwin-x86-64/libbitwarden_c.dylib) not found in resource path for Apple Intel (darwin-x86-64)

Screenshots or Videos

No response

Additional Context

Thanks for providing the Bitwarden Secrets Manager SDK and including Java bindings a short while ago.

I used these to build a Java application, that is a plug-in for Cryptomator, to store vault passwords in Bitwarden Secrets Manager.

Cryptomator is available for Windows, Linux and Mac, both Apple Intel and Apple Silicon. So the plug-in, using the SDK, should work on these host architectures too.

It does on Apple Silicon, but fails to load on Apple Intel, see purejava/cryptomator-bitwarden#4.

The reason for that is, that libbitwarden_c.dylib cannot be found in the resource jar file, although it is contained.
Renaming the folder the libraries are stored in within the jar file from darwin-x64 to darwin-x86-64 solves the issue.

A note on Linux: this is probably a problem on other architectures too, as the libraries for Linux are stored in ubuntu-x64 instead of linux-x64, see here.

Your Node-API bindings for the different architectures.

Operating System

macOS

Operating System Version

Sonoma 14.2.1

Build Version

0.4.0-SNAPSHOT

Issue Tracking Info

  • I understand that work is tracked outside of Github. A PR will be linked to this issue should one be opened to address it, but Bitwarden doesn't use fields like "assigned", "milestone", or "project" to track progress.

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Awaiting Schedule

These updates are awaiting their schedule. Click on a checkbox to get an update now.

  • [deps]: Update Rust crate thiserror to v1.0.61
  • [deps]: Update Rust crate toml to v0.8.13
  • [deps]: Update Rust crate itertools to 0.13.0
  • [deps]: Update Rust crate zeroize to v1.8.1
  • [deps]: Update gh minor (Azure/login, PyO3/maturin-action, actions/checkout, actions/download-artifact, actions/setup-java, actions/upload-artifact, checkmarx/ast-github-action, codecov/codecov-action, github/codeql-action, gradle/actions, ncipollo/release-action, ruby/setup-ruby, sonarsource/sonarcloud-github-action)
  • [deps]: Update pyo3 non-major (pyo3, pyo3-build-config, pyo3-log)
  • [deps]: Update rust Docker tag to v1.78
  • [deps]: Update typescript to v5.4.5
  • [deps]: Update Rust crate zxcvbn to v3
  • [deps]: Update macos to v14
  • [deps]: Lock file maintenance

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Ignored or Blocked

These are blocked by an existing closed PR and will not be recreated unless you click a checkbox below.

Detected dependencies

cargo
Cargo.toml
crates/bitwarden-api-api/Cargo.toml
  • serde >=1.0.163, <2
  • serde_with >=3.8, <4
  • serde_json >=1.0.96, <2
  • serde_repr >=0.1.12, <0.2
  • url >=2.5, <3
  • uuid >=1.3.3, <2
  • reqwest >=0.12, <0.13
crates/bitwarden-api-identity/Cargo.toml
  • serde >=1.0.163, <2
  • serde_with >=3.8, <4
  • serde_json >=1.0.96, <2
  • serde_repr >=0.1.12, <0.2
  • url >=2.5, <3
  • uuid >=1.3.3, <2
  • reqwest >=0.12, <0.13
crates/bitwarden-c/Cargo.toml
  • env_logger >=0.10.0, <0.12
  • tokio >=1.28.2, <2.0
crates/bitwarden-cli/Cargo.toml
  • clap 4.5.4
  • color-eyre 0.6.3
  • inquire 0.7.0
  • supports-color 3.0.0
crates/bitwarden-crypto/Cargo.toml
  • aes >=0.8.2, <0.9
  • argon2 >=0.5.0, <0.6
  • base64 >=0.21.2, <0.23
  • cbc >=0.1.2, <0.2
  • generic-array >=0.14.7, <1.0
  • hkdf >=0.12.3, <0.13
  • hmac >=0.12.1, <0.13
  • num-bigint >=0.4, <0.5
  • num-traits >=0.2.15, <0.3
  • pbkdf2 >=0.12.1, <0.13
  • rand >=0.8.5, <0.9
  • rayon >=1.8.1, <2.0
  • rsa >=0.9.2, <0.10
  • schemars >=0.8, <0.9
  • serde >=1.0, <2.0
  • sha1 >=0.10.5, <0.11
  • sha2 >=0.10.6, <0.11
  • subtle >=2.5.0, <3.0
  • thiserror >=1.0.40, <2.0
  • uniffi =0.27.2
  • uuid >=1.3.3, <2.0
  • zeroize >=1.7.0, <2.0
  • criterion 0.5.1
  • rand_chacha 0.3.1
  • serde_json >=1.0.96, <2.0
crates/bitwarden-exporters/Cargo.toml
  • base64 >=0.21.2, <0.23
  • chrono >=0.4.26, <0.5
  • csv 1.3.0
  • itertools 0.12.1
  • serde >=1.0, <2.0
  • serde_json >=1.0.96, <2.0
  • thiserror >=1.0.40, <2.0
  • uuid >=1.3.3, <2.0
crates/bitwarden-generators/Cargo.toml
  • rand >=0.8.5, <0.9
  • reqwest >=0.12, <0.13
  • schemars >=0.8.9, <0.9
  • serde >=1.0, <2.0
  • serde_json >=1.0.96, <2.0
  • thiserror >=1.0.40, <2.0
  • uniffi =0.27.2
  • rand_chacha 0.3.1
  • tokio 1.36.0
  • wiremock 0.6.0
crates/bitwarden-json/Cargo.toml
  • async-lock >=3.3.0, <4.0
  • log >=0.4.18, <0.5
  • schemars >=0.8.12, <0.9
  • serde >=1.0, <2.0
  • serde_json >=1.0.96, <2.0
crates/bitwarden-napi/Cargo.toml
  • env_logger 0.11.1
  • log 0.4.20
  • napi 2
  • napi-derive 2
  • napi-build 2.1.0
crates/bitwarden-py/Cargo.toml
  • pyo3 0.20.2
  • pyo3-log 0.9.0
  • pyo3-build-config 0.20.2
  • tokio 1.36.0
  • pyo3-asyncio 0.20.0
crates/bitwarden-uniffi/Cargo.toml
  • async-lock 3.3.0
  • async-trait 0.1.80
  • chrono >=0.4.26, <0.5
  • log 0.4.20
  • env_logger 0.11.1
  • schemars >=0.8, <0.9
  • uniffi =0.27.2
  • uuid >=1.3.3, <2
  • uniffi =0.27.2
  • android_logger 0.13
crates/bitwarden-wasm/Cargo.toml
  • argon2 >=0.5.0, <0.6
  • console_error_panic_hook 0.1.7
  • console_log 1.0.0
  • js-sys 0.3.68
  • log 0.4.20
  • serde 1.0.196
  • wasm-bindgen 0.2.91
  • wasm-bindgen-futures 0.4.41
  • wasm-bindgen-test 0.3.41
crates/bitwarden/Cargo.toml
  • async-trait >=0.1.80, <0.2
  • base64 >=0.21.2, <0.23
  • chrono >=0.4.26, <0.5
  • getrandom >=0.2.9, <0.3
  • hmac >=0.12.1, <0.13
  • log >=0.4.18, <0.5
  • rand >=0.8.5, <0.9
  • reqwest >=0.12, <0.13
  • schemars >=0.8.9, <0.9
  • serde >=1.0, <2.0
  • serde_json >=1.0.96, <2.0
  • serde_qs >=0.12.0, <0.14
  • serde_repr >=0.1.12, <0.2
  • sha1 >=0.10.5, <0.11
  • sha2 >=0.10.6, <0.11
  • thiserror >=1.0.40, <2.0
  • uniffi =0.27.2
  • uuid >=1.3.3, <2.0
  • zxcvbn >= 2.2.2, <3.0
  • rand_chacha 0.3.1
  • tokio 1.36.0
  • wiremock 0.6.0
  • zeroize >=1.7.0, <2.0
  • reqwest >=0.12, <0.13
  • rustls-platform-verifier 0.2.0
  • reqwest >=0.12, <0.13
crates/bw/Cargo.toml
  • clap 4.5.4
  • color-eyre 0.6.3
  • env_logger 0.11.1
  • inquire 0.7.0
  • log 0.4.20
  • tokio 1.36.0
  • tempfile 3.10.0
crates/bws/Cargo.toml
  • bat 0.24.0
  • chrono 0.4.38
  • clap 4.5.4
  • clap_complete 4.5.2
  • color-eyre 0.6.3
  • comfy-table 7.1.1
  • directories 5.0.1
  • env_logger 0.11.1
  • log 0.4.20
  • regex 1.10.3
  • serde 1.0.196
  • serde_json 1.0.113
  • serde_yaml 0.9
  • supports-color 3.0.0
  • thiserror 1.0.57
  • tokio 1.36.0
  • toml 0.8.10
  • uuid 1.7.0
  • tempfile 3.10.0
  • clap 4.5.4
  • clap_complete 4.5.2
  • clap_mangen 0.2.20
  • uuid 1.7.0
crates/memory-testing/Cargo.toml
  • comfy-table 7.1.1
  • hex 0.4.3
  • serde 1.0.196
  • serde_json 1.0.113
  • zeroize 1.7.0
crates/sdk-schemas/Cargo.toml
  • anyhow 1.0.82
  • itertools 0.12.1
  • schemars 0.8.16
  • serde_json 1.0.113
crates/uniffi-bindgen/Cargo.toml
  • uniffi =0.27.2
dockerfile
crates/bws/Dockerfile
  • rust 1.76
crates/memory-testing/Dockerfile
  • rust 1.76
github-actions
.github/workflows/build-android.yml
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • dtolnay/rust-toolchain d8352f6b1d2e870bc5716e7a6d9b65c4cc244a1a
  • Swatinem/rust-cache v2.7.3@23bce251a8cd2ffc3c1075eaa2367cf899916d84
  • actions/upload-artifact v4.3.3@65462800fd760344b1a7b4382951275a0abb4808
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • dtolnay/rust-toolchain d8352f6b1d2e870bc5716e7a6d9b65c4cc244a1a
  • Swatinem/rust-cache v2.7.3@23bce251a8cd2ffc3c1075eaa2367cf899916d84
  • actions/setup-java v4.2.1@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9
  • actions/download-artifact v4.1.7@65a9edc5881444af0b9093a5e628f2fe47ea3b2e
  • gradle/actions v3.3.2@db19848a5fa7950289d3668fb053140cf3028d43
  • ubuntu 22.04
  • ubuntu 22.04
.github/workflows/build-cli-docker.yml
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • docker/setup-qemu-action v3.0.0@68827325e0b33c7199eb31dd4e31fbe9023e06e3
  • docker/setup-buildx-action v3.3.0@d70bba72b1f3fd22344832f00baa16ece964efeb
  • Azure/login v1.6.0@e15b166166a8746d1a47596803bd8c1b595455cf
  • Azure/login v1.6.0@e15b166166a8746d1a47596803bd8c1b595455cf
  • docker/build-push-action v5.3.0@2cdde995de11925a030ce8070c3d77a52ffcf1c0
  • Azure/login v1.6.0@e15b166166a8746d1a47596803bd8c1b595455cf
  • act10ns/slack v2.1.0@44541246747a30eb3102d87f7a4cc5471b0ffb7d
  • ubuntu 22.04
  • ubuntu 22.04
.github/workflows/build-cli.yml
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • dtolnay/rust-toolchain d8352f6b1d2e870bc5716e7a6d9b65c4cc244a1a
  • Swatinem/rust-cache v2.7.3@23bce251a8cd2ffc3c1075eaa2367cf899916d84
  • Azure/login v1.6.0@e15b166166a8746d1a47596803bd8c1b595455cf
  • actions/upload-artifact v4.3.3@65462800fd760344b1a7b4382951275a0abb4808
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • dtolnay/rust-toolchain d8352f6b1d2e870bc5716e7a6d9b65c4cc244a1a
  • Swatinem/rust-cache v2.7.3@23bce251a8cd2ffc3c1075eaa2367cf899916d84
  • Azure/login v1.6.0@e15b166166a8746d1a47596803bd8c1b595455cf
  • actions/upload-artifact v4.3.3@65462800fd760344b1a7b4382951275a0abb4808
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • dtolnay/rust-toolchain d8352f6b1d2e870bc5716e7a6d9b65c4cc244a1a
  • goto-bus-stop/setup-zig v2.2.0@7ab2955eb728f5440978d5824358023be3a2802d
  • Swatinem/rust-cache v2.7.3@23bce251a8cd2ffc3c1075eaa2367cf899916d84
  • actions/upload-artifact v4.3.3@65462800fd760344b1a7b4382951275a0abb4808
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • actions/download-artifact v4.1.7@65a9edc5881444af0b9093a5e628f2fe47ea3b2e
  • actions/download-artifact v4.1.7@65a9edc5881444af0b9093a5e628f2fe47ea3b2e
  • Azure/login v1.6.0@e15b166166a8746d1a47596803bd8c1b595455cf
  • actions/upload-artifact v4.3.3@65462800fd760344b1a7b4382951275a0abb4808
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • dtolnay/rust-toolchain d8352f6b1d2e870bc5716e7a6d9b65c4cc244a1a
  • Swatinem/rust-cache v2.7.3@23bce251a8cd2ffc3c1075eaa2367cf899916d84
  • actions/upload-artifact v4.3.3@65462800fd760344b1a7b4382951275a0abb4808
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • dtolnay/rust-toolchain d8352f6b1d2e870bc5716e7a6d9b65c4cc244a1a
  • Swatinem/rust-cache v2.7.3@23bce251a8cd2ffc3c1075eaa2367cf899916d84
  • actions/upload-artifact v4.3.3@65462800fd760344b1a7b4382951275a0abb4808
  • ubuntu 22.04
  • macos 12
  • ubuntu 22.04
  • ubuntu 22.04
.github/workflows/build-cpp.yml
  • actions/checkout v4.1.1@b4ffde65f46336ab88eb53be808477a3936bae11
  • actions/cache v4.0.2@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9
  • actions/github-script v7.0.1@60a0d83039c74a4aee543508d2ffcb1c3799cdea
  • actions/cache v4.0.2@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9
  • actions/download-artifact v4.1.4@c850b930e6ba138125429b7e5c93fc707a7f8427
  • actions/download-artifact v4.1.2@eaceaf801fd36c7dee90939fad912460b18a1ffe
  • actions/upload-artifact v4.3.1@5d5d22a31266ced268874388b861e4b58bb5c2f3
.github/workflows/build-dotnet.yml
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • actions/download-artifact v4.1.7@65a9edc5881444af0b9093a5e628f2fe47ea3b2e
  • actions/setup-dotnet v4.0.0@4d6c8fcf3c8f7a60068d26b594648e99df24cee3
  • actions/download-artifact v4.1.7@65a9edc5881444af0b9093a5e628f2fe47ea3b2e
  • actions/download-artifact v4.1.7@65a9edc5881444af0b9093a5e628f2fe47ea3b2e
  • actions/download-artifact v4.1.7@65a9edc5881444af0b9093a5e628f2fe47ea3b2e
  • actions/download-artifact v4.1.7@65a9edc5881444af0b9093a5e628f2fe47ea3b2e
  • actions/upload-artifact v4.3.3@65462800fd760344b1a7b4382951275a0abb4808
  • ubuntu 22.04
  • ubuntu 22.04
.github/workflows/build-go.yaml
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • actions/setup-go v5.0.1@cdcb36043654635271a94b9a6d1392de5bb323a7
  • actions/cache v4.0.2@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9
  • ubuntu 22.04
.github/workflows/build-java.yml
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • actions/download-artifact v4.1.7@65a9edc5881444af0b9093a5e628f2fe47ea3b2e
  • actions/setup-java v4.2.1@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9
  • actions/download-artifact v4.1.7@65a9edc5881444af0b9093a5e628f2fe47ea3b2e
  • actions/download-artifact v4.1.7@65a9edc5881444af0b9093a5e628f2fe47ea3b2e
  • actions/download-artifact v4.1.7@65a9edc5881444af0b9093a5e628f2fe47ea3b2e
  • actions/download-artifact v4.1.7@65a9edc5881444af0b9093a5e628f2fe47ea3b2e
  • ubuntu 22.04
.github/workflows/build-napi.yml
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • actions/setup-node v4.0.2@60edb5dd545a775178f52524783378180af0d1f8
  • dtolnay/rust-toolchain d8352f6b1d2e870bc5716e7a6d9b65c4cc244a1a
  • Swatinem/rust-cache v2.7.3@23bce251a8cd2ffc3c1075eaa2367cf899916d84
  • actions/download-artifact v4.1.7@65a9edc5881444af0b9093a5e628f2fe47ea3b2e
  • actions/upload-artifact v4.3.3@65462800fd760344b1a7b4382951275a0abb4808
.github/workflows/build-python-wheels.yml
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • actions/setup-node v4.0.2@60edb5dd545a775178f52524783378180af0d1f8
  • dtolnay/rust-toolchain d8352f6b1d2e870bc5716e7a6d9b65c4cc244a1a
  • Swatinem/rust-cache v2.7.3@23bce251a8cd2ffc3c1075eaa2367cf899916d84
  • actions/download-artifact v4.1.7@65a9edc5881444af0b9093a5e628f2fe47ea3b2e
  • PyO3/maturin-action v1.42.2@52b28abb0c6729beb388babfc348bf6ff5aaff31
  • PyO3/maturin-action v1.42.2@52b28abb0c6729beb388babfc348bf6ff5aaff31
  • actions/upload-artifact v4.3.3@65462800fd760344b1a7b4382951275a0abb4808
  • actions/upload-artifact v4.3.3@65462800fd760344b1a7b4382951275a0abb4808
  • ubuntu 22.04
.github/workflows/build-rust-crates.yml
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • dtolnay/rust-toolchain d8352f6b1d2e870bc5716e7a6d9b65c4cc244a1a
  • Swatinem/rust-cache v2.7.3@23bce251a8cd2ffc3c1075eaa2367cf899916d84
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • dtolnay/rust-toolchain d8352f6b1d2e870bc5716e7a6d9b65c4cc244a1a
  • Swatinem/rust-cache v2.7.3@23bce251a8cd2ffc3c1075eaa2367cf899916d84
.github/workflows/build-rust-cross-platform.yml
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • dtolnay/rust-toolchain d8352f6b1d2e870bc5716e7a6d9b65c4cc244a1a
  • Swatinem/rust-cache v2.7.3@23bce251a8cd2ffc3c1075eaa2367cf899916d84
  • goto-bus-stop/setup-zig v2.2.0@7ab2955eb728f5440978d5824358023be3a2802d
  • actions/upload-artifact v4.3.3@65462800fd760344b1a7b4382951275a0abb4808
.github/workflows/build-wasm.yml
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • actions/setup-node v4.0.2@60edb5dd545a775178f52524783378180af0d1f8
  • dtolnay/rust-toolchain d8352f6b1d2e870bc5716e7a6d9b65c4cc244a1a
  • Swatinem/rust-cache v2.7.3@23bce251a8cd2ffc3c1075eaa2367cf899916d84
  • actions/upload-artifact v4.3.3@65462800fd760344b1a7b4382951275a0abb4808
  • ubuntu 22.04
.github/workflows/cloc.yml
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • ubuntu 22.04
.github/workflows/delete-old-packages.yml
  • actions/delete-package-versions v5.0.0@e5bc658cc4c965c472efe991f8beea3981499c55
  • ubuntu 22.04
.github/workflows/direct-minimal-versions.yml
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • dtolnay/rust-toolchain d8352f6b1d2e870bc5716e7a6d9b65c4cc244a1a
  • Swatinem/rust-cache v2.7.3@23bce251a8cd2ffc3c1075eaa2367cf899916d84
.github/workflows/enforce-labels.yml
  • yogevbd/enforce-label-action 2.2.2@a3c219da6b8fa73f6ba62b68ff09c469b3a1c024
  • ubuntu 22.04
.github/workflows/generate_schemas.yml
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • dtolnay/rust-toolchain d8352f6b1d2e870bc5716e7a6d9b65c4cc244a1a
  • actions/setup-node v4.0.2@60edb5dd545a775178f52524783378180af0d1f8
  • Swatinem/rust-cache v2.7.3@23bce251a8cd2ffc3c1075eaa2367cf899916d84
  • actions/upload-artifact v4.3.3@65462800fd760344b1a7b4382951275a0abb4808
  • actions/upload-artifact v4.3.3@65462800fd760344b1a7b4382951275a0abb4808
  • actions/upload-artifact v4.3.3@65462800fd760344b1a7b4382951275a0abb4808
  • actions/upload-artifact v4.3.3@65462800fd760344b1a7b4382951275a0abb4808
  • actions/upload-artifact v4.3.3@65462800fd760344b1a7b4382951275a0abb4808
  • actions/upload-artifact v4.3.3@65462800fd760344b1a7b4382951275a0abb4808
  • actions/upload-artifact v4.3.3@65462800fd760344b1a7b4382951275a0abb4808
  • actions/upload-artifact v4.3.1@5d5d22a31266ced268874388b861e4b58bb5c2f3
  • ubuntu 22.04
.github/workflows/lint.yml
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • dtolnay/rust-toolchain d8352f6b1d2e870bc5716e7a6d9b65c4cc244a1a
  • Swatinem/rust-cache v2.7.3@23bce251a8cd2ffc3c1075eaa2367cf899916d84
  • github/codeql-action v3.25.3@d39d31e687223d841ef683f52467bd88e9b21c14
  • actions/setup-node v4.0.2@60edb5dd545a775178f52524783378180af0d1f8
.github/workflows/memory-testing.yml
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • dtolnay/rust-toolchain d8352f6b1d2e870bc5716e7a6d9b65c4cc244a1a
  • Swatinem/rust-cache v2.7.3@23bce251a8cd2ffc3c1075eaa2367cf899916d84
  • ubuntu 22.04
.github/workflows/minimum-rust-version.yml
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • dtolnay/rust-toolchain d8352f6b1d2e870bc5716e7a6d9b65c4cc244a1a
  • Swatinem/rust-cache v2.7.3@23bce251a8cd2ffc3c1075eaa2367cf899916d84
.github/workflows/publish-dotnet.yml
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • Azure/login v1.6.0@e15b166166a8746d1a47596803bd8c1b595455cf
  • ubuntu 22.04
  • ubuntu 22.04
.github/workflows/publish-java.yml
  • actions/checkout v4.1.1@b4ffde65f46336ab88eb53be808477a3936bae11
  • actions/checkout v4.1.1@b4ffde65f46336ab88eb53be808477a3936bae11
  • Azure/login v1.6.0@e15b166166a8746d1a47596803bd8c1b595455cf
  • actions/setup-java v4.0.0@387ac29b308b003ca37ba93a6cab5eb57c8f5f93
  • gradle/actions v3.1.0@417ae3ccd767c252f5661f1ace9f835f9654f2b5
  • ubuntu 22.04
  • ubuntu 22.04
.github/workflows/publish-php.yml
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • shivammathur/setup-php 2.30.4@c665c7a15b5295c2488ac8a87af9cb806cd72198
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • Azure/login v1.6.0@e15b166166a8746d1a47596803bd8c1b595455cf
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • Azure/login v1.6.0@e15b166166a8746d1a47596803bd8c1b595455cf
  • ncipollo/release-action v1.14.0@2c591bcc8ecdcd2db72b97d6147f871fcd833ba5
  • Azure/login v1.6.0@e15b166166a8746d1a47596803bd8c1b595455cf
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • ubuntu 22.04
  • ubuntu 22.04
  • ubuntu 22.04
  • ubuntu 22.04
  • ubuntu 22.04
.github/workflows/publish-python.yml
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • actions/setup-python v5.1.0@82c7e631bb3cdc910f68e0081d67478d79c6982d
  • dawidd6/action-download-artifact v3.1.4@09f2f74827fd3a8607589e5ad7f9398816f540fe
  • Azure/login v1.6.0@e15b166166a8746d1a47596803bd8c1b595455cf
  • ubuntu 22.04
  • ubuntu 22.04
.github/workflows/publish-ruby.yml
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • ruby/setup-ruby v1.176.0@cacc9f1c0b3f4eb8a16a6bb0ed10897b43b9de49
  • Azure/login v1.6.0@e15b166166a8746d1a47596803bd8c1b595455cf
  • ubuntu 22.04
  • ubuntu 22.04
.github/workflows/publish-rust-crates.yml
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • Azure/login v1.6.0@e15b166166a8746d1a47596803bd8c1b595455cf
  • dtolnay/rust-toolchain d8352f6b1d2e870bc5716e7a6d9b65c4cc244a1a
  • Swatinem/rust-cache v2.7.3@23bce251a8cd2ffc3c1075eaa2367cf899916d84
  • chrnorm/deployment-action v2.0.7@55729fcebec3d284f60f5bcabbd8376437d696b1
  • chrnorm/deployment-status v2.0.3@9a72af4586197112e0491ea843682b5dc280d806
  • chrnorm/deployment-status v2.0.3@9a72af4586197112e0491ea843682b5dc280d806
  • ubuntu 22.04
.github/workflows/release-cli.yml
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • chrnorm/deployment-action v2.0.7@55729fcebec3d284f60f5bcabbd8376437d696b1
  • ncipollo/release-action v1.14.0@2c591bcc8ecdcd2db72b97d6147f871fcd833ba5
  • chrnorm/deployment-status v2.0.3@9a72af4586197112e0491ea843682b5dc280d806
  • chrnorm/deployment-status v2.0.3@9a72af4586197112e0491ea843682b5dc280d806
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • Azure/login v1.6.0@e15b166166a8746d1a47596803bd8c1b595455cf
  • dtolnay/rust-toolchain d8352f6b1d2e870bc5716e7a6d9b65c4cc244a1a
  • Swatinem/rust-cache v2.7.3@23bce251a8cd2ffc3c1075eaa2367cf899916d84
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • docker/setup-qemu-action v3.0.0@68827325e0b33c7199eb31dd4e31fbe9023e06e3
  • docker/setup-buildx-action v3.3.0@d70bba72b1f3fd22344832f00baa16ece964efeb
  • Azure/login v1.6.0@e15b166166a8746d1a47596803bd8c1b595455cf
  • Azure/login v1.6.0@e15b166166a8746d1a47596803bd8c1b595455cf
  • docker/build-push-action v5.3.0@2cdde995de11925a030ce8070c3d77a52ffcf1c0
  • ubuntu 22.04
  • ubuntu 22.04
  • ubuntu 22.04
.github/workflows/release-cpp.yml
  • actions/checkout v4.1.1@b4ffde65f46336ab88eb53be808477a3936bae11
  • Azure/login v1.4.7@92a5484dfaf04ca78a94597f4f19fea633851fa2
  • ncipollo/release-action v1.13.0@6c75be85e571768fa31b40abf38de58ba0397db5
  • ubuntu 22.04
  • ubuntu 22.04
.github/workflows/release-go.yml
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • Azure/login v1.6.0@e15b166166a8746d1a47596803bd8c1b595455cf
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • Azure/login v1.6.0@e15b166166a8746d1a47596803bd8c1b595455cf
  • ncipollo/release-action v1.14.0@2c591bcc8ecdcd2db72b97d6147f871fcd833ba5
  • ubuntu 22.04
  • ubuntu 22.04
  • ubuntu 22.04
.github/workflows/release-napi.yml
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • chrnorm/deployment-action v2.0.7@55729fcebec3d284f60f5bcabbd8376437d696b1
  • chrnorm/deployment-status v2.0.3@9a72af4586197112e0491ea843682b5dc280d806
  • chrnorm/deployment-status v2.0.3@9a72af4586197112e0491ea843682b5dc280d806
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • actions/setup-node v4.0.2@60edb5dd545a775178f52524783378180af0d1f8
  • Azure/login v1.6.0@e15b166166a8746d1a47596803bd8c1b595455cf
  • ubuntu 22.04
  • ubuntu 22.04
.github/workflows/release-wasm.yml
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • chrnorm/deployment-action v2.0.7@55729fcebec3d284f60f5bcabbd8376437d696b1
  • chrnorm/deployment-status v2.0.3@9a72af4586197112e0491ea843682b5dc280d806
  • chrnorm/deployment-status v2.0.3@9a72af4586197112e0491ea843682b5dc280d806
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • actions/setup-node v4.0.2@60edb5dd545a775178f52524783378180af0d1f8
  • Azure/login v1.6.0@e15b166166a8746d1a47596803bd8c1b595455cf
  • ubuntu 22.04
  • ubuntu 22.04
.github/workflows/rust-test.yml
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • dtolnay/rust-toolchain d8352f6b1d2e870bc5716e7a6d9b65c4cc244a1a
  • Swatinem/rust-cache v2.7.3@23bce251a8cd2ffc3c1075eaa2367cf899916d84
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • dtolnay/rust-toolchain d8352f6b1d2e870bc5716e7a6d9b65c4cc244a1a
  • Swatinem/rust-cache v2.7.3@23bce251a8cd2ffc3c1075eaa2367cf899916d84
  • codecov/codecov-action v4.3.1@5ecb98a3c6b747ed38dc09f787459979aebb39be
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • dtolnay/rust-toolchain d8352f6b1d2e870bc5716e7a6d9b65c4cc244a1a
  • Swatinem/rust-cache v2.7.3@23bce251a8cd2ffc3c1075eaa2367cf899916d84
  • ubuntu 22.04
  • ubuntu 22.04
  • ubuntu 22.04
.github/workflows/scan.yml
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • checkmarx/ast-github-action 2.0.25@dd0f9365942f29a99c3be5bdb308958ede8f906b
  • github/codeql-action v3.25.3@d39d31e687223d841ef683f52467bd88e9b21c14
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • sonarsource/sonarcloud-github-action v2.1.1@49e6cd3b187936a73b8280d59ffd9da69df63ec9
  • ubuntu 22.04
  • ubuntu 22.04
.github/workflows/version-bump.yml
  • dtolnay/rust-toolchain d8352f6b1d2e870bc5716e7a6d9b65c4cc244a1a
  • Swatinem/rust-cache v2.7.3@23bce251a8cd2ffc3c1075eaa2367cf899916d84
  • Azure/login v1.6.0@e15b166166a8746d1a47596803bd8c1b595455cf
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • crazy-max/ghaction-import-gpg v6.1.0@01dd5d3ca463c7f10f7f4f7b4f177225ac661ee4
  • actions/checkout v4.1.4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • ubuntu 22.04
  • ubuntu 22.04
.github/workflows/workflow-linter.yml
npm
crates/bitwarden-napi/npm/darwin-arm64/package.json
  • node >= 10
crates/bitwarden-napi/npm/darwin-x64/package.json
  • node >= 10
crates/bitwarden-napi/npm/linux-x64-gnu/package.json
  • node >= 10
crates/bitwarden-napi/npm/win32-x64-msvc/package.json
  • node >= 10
crates/bitwarden-napi/package.json
  • @napi-rs/cli ^2.13.2
  • ts-node 10.9.2
  • typescript ^5.0.0
  • node >= 10
languages/js/example/package.json
languages/js/sdk-client/package.json
  • @types/node ^18.15.11
  • rimraf ^5.0.0
  • typescript ^5.0.3
languages/js/wasm/package.json
package.json
  • @openapitools/openapi-generator-cli 2.13.4
  • handlebars ^4.7.8
  • prettier 3.2.5
  • quicktype-core 23.0.81
  • rimraf 5.0.7
  • ts-node 10.9.2
  • typescript 5.3.3
nuget
languages/csharp/Bitwarden.Sdk/Bitwarden.Sdk.csproj
  • System.Text.Json 7.0.4
languages/csharp/global.json

  • Check this box to trigger a request for Renovate to run again on this repository

--output env outputs double quoted values

Steps To Reproduce

  1. bws secret list --output env

Expected Result

SECRET=value

Actual Result

SECRET="value"

Screenshots or Videos

No response

Additional Context

I believe it should be value by default, if the env requires the quotes such as "value" it should be saved with the double quotes originally.

Operating System

Linux

Operating System Version

No response

Shell

Zsh

Build Version

bws 0.4.0

Issue Tracking Info

  • I understand that work is tracked outside of Github. A PR will be linked to this issue should one be opened to address it, but Bitwarden doesn't use fields like "assigned", "milestone", or "project" to track progress.

bitwarden/bws is not verified by Apple and cannot run without special permissions

Steps To Reproduce

On MacOS 13.2.1:

  1. Download the pre-built binary for Mac: bws-macos-universal-0.3.1.zip
  2. Unpack it
  3. Run the CLI tool in the terminal $: bws

Expected Result

After unpacking the executable I expect to be able to run it. Ideally instead of downloading it, it would be available through a package manager like Homebrew.

Actual Result

The MacOS system shows an alert saying "bws cannot be opened because the developer cannot be verified." and gives the option to either close the pop-up or move the executable to the Trash.

I think you need to notarize and sign the executable as part of your release pipeline. Not doing it is likely preventing a lot of your MacOS users from adopting your tools. There is a way to let the OS trust the app anyway, but it is hidden away in the settings.

Screenshots or Videos

No response

Additional Context

No response

Operating System

macOS

Operating System Version

13.2.1

Shell

Zsh

Build Version

0.3.1

Issue Tracking Info

  • I understand that work is tracked outside of Github. A PR will be linked to this issue should one be opened to address it, but Bitwarden doesn't use fields like "assigned", "milestone", or "project" to track progress.

`--color no` not respected for errors

Steps To Reproduce

Run bws --color no --access-token whatever get secret whatever with bws CLI 0.2.1

Expected Result

The output should not contain terminal escape sequences / color.

Actual Result

The output contains terminal escape sequences and color text.

Screenshots or Videos

grafik

Additional Context

This behavior is unexpected and makes it unneccessarily difficult to capture a "clean" output of the command for logging purposes, or for output to a non-terminal.

Operating System

Linux

Operating System Version

Ubuntu 22.04 WSL

Shell

Bash

Build Version

0.2.1

Issue Tracking Info

  • I understand that work is tracked outside of Github. A PR will be linked to this issue should one be opened to address it, but Bitwarden doesn't use fields like "assigned", "milestone", or "project" to track progress.

Unable to get project by name

Steps To Reproduce

Very similar to #34, except that this is for projects. A projects can only be fetched by its id.

Expected Result

I should be able to get a project by its name. Maybe something like .projects().get_by_name(...);

Actual Result

No function exposed to get the project by name. Current workaround is to fetch all projects and filter.

Screenshots or Videos

No response

Additional Context

No response

Operating System

macOS

Operating System Version

No response

Build Version

0.2.1

Issue Tracking Info

  • I understand that work is tracked outside of Github. A PR will be linked to this issue should one be opened to address it, but Bitwarden doesn't use fields like "assigned", "milestone", or "project" to track progress.

Unable to create credentials

Steps To Reproduce

I keep getting a Resource not found whenever I attempt to make a request to create a credential.

let request = SecretCreateRequest {
    organization_id: "...",
    key: "some_key".to_owned(),
    value: "some value".to_owned(),
    note: "".to_string(),
};

self.client.secrets().create(&request).await?;

One significant thing I noticed is this line which is always provided as None instead of expecting the project id from the caller.

Expected Result

I should be able to able to create credentials.

Actual Result

{
    "message": "Resource not found.",
    "validationErrors": null,
    "exceptionMessage": null,
    "exceptionStackTrace": null,
    "innerExceptionMessage": null,
    "object": "error"
}

Screenshots or Videos

No response

Additional Context

No response

Operating System

macOS

Operating System Version

No response

Build Version

0.2.1

Issue Tracking Info

  • I understand that work is tracked outside of Github. A PR will be linked to this issue should one be opened to address it, but Bitwarden doesn't use fields like "assigned", "milestone", or "project" to track progress.

Make available for Raspberry Pi arm64

Steps To Reproduce

  1. No available binary

Tried downloading the Apple aarch64 and get cannot execute binary file: Exec format error

Expected Result

Expect a arch64 or armhf binary and be able to use bws commands

Actual Result

no aarch64 / armhf binary

Screenshots or Videos

No response

Additional Context

Linux raspberrypi 5.15.84-v8+ #1613 SMP PREEMPT aarch64 GNU/Linux

Operating System

Linux

Operating System Version

rapperypi OS

Shell

Bash

Build Version

na

Issue Tracking Info

  • I understand that work is tracked outside of Github. A PR will be linked to this issue should one be opened to address it, but Bitwarden doesn't use fields like "assigned", "milestone", or "project" to track progress.

Webpack unable to load binary "sdk-napi.win32-x64-msvc.node" when using "@bitwarden/sdk-napi" in a NextJS 13 App Dir API route ( Edge runtime & Node.js runtimes )

Steps To Reproduce

  • Step 1: Clone a Next JS 13 App Dir project using create-next-app
    npx create-next-app@latest
  • Step 2: Install the SDK and project deps using your package manager of choice, in my case pnpm add @bitwarden/sdk-napi, this should also install the package-lock.json deps.
  • Step 3: Create an api route by creating a new api folder in the src/app directory and a subsequent bitwarden folder containing a route.ts file such that our API can be hit at http://localhost:3000/api/bitwarden with a GET request
  • Use the following boilerplate code taken from the SDK docs to instantiate our API route with a GET handler that returns a JSON response of our secrets ( created and saved ahead of time in the Secrets Manager dashboard ).
import { BitwardenClient, ClientSettings, DeviceType, LogLevel } from "@bitwarden/sdk-napi";
import { NextResponse, type NextRequest } from 'next/server'

// Note this error will occur if you omit this config to run the API route in a NodeJs runtime
export const config = {
    runtime: 'edge',
}

export default async function GET(req: NextRequest) {

    // Optional settings
    const settings: ClientSettings = {
        apiUrl: "https://api.bitwarden.com",
        identityUrl: "https://identity.bitwarden.com",
        userAgent: "Bitwarden SDK",
        deviceType: DeviceType.SDK,
    };

    const accessToken = process.env.BW_ACCESS_TOKEN;

    const client = new BitwardenClient(settings, LogLevel.Info);

    // Authenticating using a service accounts access token
    const result = await client.loginWithAccessToken(accessToken);
        if (!result.success) {
            throw Error("Authentication failed");
    }

    // List secrets
    const secrets = await client.secrets().list();

    return NextResponse.json(secrets, { status: 200 });

}
  • Step 4: Run the dev server by running pnpm run dev ( or npm / yarn, etc depending on your local environment )
  • Step 5: Open a web browser and navigate to http://localhost:3000/api/bitwarden thus sending the GET request to the server we've just created to be greeted by the error I am receiving on my local reproduction which pasted below:
./node_modules/.pnpm/@bitwarden+sdk-napi-win32-x64-msvc@0.2.1/node_modules/@bitwarden/sdk-napi-win32-x64-msvc/sdk-napi.win32-x64-msvc.node
Module parse failed: Unexpected character '�' (1:2)
You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
(Source code omitted for this binary file)

Expected Result

So obviously the secrets manager is in beta and I was excited to test it out in a production environment, in this case a NextJs 13 web app, I wanted to created an API route ( which would obviously be behind authentication in production, however is not in this reproduction for brevity ) that would return a JSON serialized list of the secrets in my BW Secrets Manager project.

Curious to hear what you have to say about this, I am aware I might be using the SDK out of its intended environment, though NextJS api routes are NodeJS runtime and I would expect this to work, though obviously my webpack bundler is having some trouble with the SDK module.

Thanks for taking the time, and I appreciate any feedback!

Actual Result

Again, I am getting this build error when pulling that SDK into my NextJS application.

./node_modules/.pnpm/@bitwarden+sdk-napi-win32-x64-msvc@0.2.1/node_modules/@bitwarden/sdk-napi-win32-x64-msvc/sdk-napi.win32-x64-msvc.node
Module parse failed: Unexpected character '�' (1:2)
You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
(Source code omitted for this binary file)

Screenshots or Videos

image

Additional Context

No response

Operating System

Windows

Operating System Version

No response

Build Version

@bitwarden/[email protected]

Issue Tracking Info

  • I understand that work is tracked outside of Github. A PR will be linked to this issue should one be opened to address it, but Bitwarden doesn't use fields like "assigned", "milestone", or "project" to track progress.

exe file is not installing

Steps To Reproduce

  1. Go to releases
  2. Click on 0.5.0
  3. Install bws.exe
  4. Click on bws.exe
    Nothing happens

Expected Result

It should normally compile and install the CLI into usage.

Actual Result

I try to install the CLI on my Windows machine but nothing happens

Screenshots or Videos

No response

Additional Context

No response

Operating System

Windows

Operating System Version

No response

Shell

Bash

Build Version

0.5.0

Issue Tracking Info

  • I understand that work is tracked outside of Github. A PR will be linked to this issue should one be opened to address it, but Bitwarden doesn't use fields like "assigned", "milestone", or "project" to track progress.

Unable to get secret by key

Steps To Reproduce

At the moment, getting a secret is only possible by the id:

client.secrets().get(&SecretGetRequest { id: "some uuid".to_owned() }).await;

Expected Result

I should be able to retrieve secrets by the key I provided at creation. I feel the key should be honored as a means of retrieval since that’s what’ll be known to the caller and not necessarily the secret id.

Actual Result

At the moment, a work around is to:

  • Fetch all the secrets,
  • Filter by the key, and
  • Refetch the clear secret.

Not having to filter manually by the secrets will be a huge improvement.

Screenshots or Videos

No response

Additional Context

No response

Operating System

macOS

Operating System Version

No response

Build Version

0.2.1

Issue Tracking Info

  • I understand that work is tracked outside of Github. A PR will be linked to this issue should one be opened to address it, but Bitwarden doesn't use fields like "assigned", "milestone", or "project" to track progress.

@bitwarden/sdk-napi: Unsupported OS: aix, architecture: ppc64

Steps To Reproduce

  1. Access a secret via nodejs binding from @bitwarden/sdk-napi on an AIX platform device.

Expected Result

Successful access of a secrete stored in the secretes manager.

Actual Result

/home/colem/secrets-manager-tests/node_modules/@bitwarden/sdk-napi/binding.js:211
    throw new Error(`Unsupported OS: ${platform}, architecture: ${arch}`);
          ^

Error: Unsupported OS: aix, architecture: ppc64
    at Object.<anonymous> (/home/colem/secrets-manager-tests/node_modules/@bitwarden/sdk-napi/binding.js:211:11)
    at Module._compile (node:internal/modules/cjs/loader:1198:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1252:10)
    at Module.load (node:internal/modules/cjs/loader:1076:32)
    at Function.Module._load (node:internal/modules/cjs/loader:911:12)
    at Module.require (node:internal/modules/cjs/loader:1100:19)
    at require (node:internal/modules/cjs/helpers:119:18)
    at Object.<anonymous> (/home/colem/secrets-manager-tests/node_modules/@bitwarden/sdk-napi/dist/bitwarden_client/index.js:36:27)
    at Module._compile (node:internal/modules/cjs/loader:1198:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1252:10)

Screenshots or Videos

No response

Additional Context

Hi, I was evaluating the SDK for usage at work and wanted to draw your attention to this. We run a number of nodejs applications on IBMi systems in the AIX portion of the OS. I would really like to bring this solution into our environment, but this is a show-stopper for us.

Rust does provide Tier 3 support for powerpc64-ibm-aix but I understand that this might be a difficult platform to support. I would be willing to help test any solution.

Operating System

Linux

Operating System Version

IBMi 7.4 (AIX)

Build Version

0.2.1

Issue Tracking Info

  • I understand that work is tracked outside of Github. A PR will be linked to this issue should one be opened to address it, but Bitwarden doesn't use fields like "assigned", "milestone", or "project" to track progress.

404 when trying to access my secrets or projects in EU

Steps To Reproduce

  1. Install bws CLI 0.3.0 for Linux from the release download section
  2. Create a project with a secret, a service account on an account at bitwarden.eu
  3. Give read access to the project for the service account
  4. Generate a token for the service account
  5. Run bws project list -u https://api.bitwarden.eu -t <my-token>

Expected Result

See the created project to which the service account has access.

Actual Result

Error:
   0: Received error message from server: [404 Not Found]

Location:
   crates/bws/src/main.rs:307

Backtrace omitted. Run with RUST_BACKTRACE=1 environment variable to display it.
Run with RUST_BACKTRACE=full to include source snippets.

Screenshots or Videos

No response

Additional Context

The same happens with secret listing or accessing a concrete secret.
If I provide an invalid token I get an authentication error, so I assume the token is valid.

Operating System

Linux

Operating System Version

Debian 12.1

Shell

Zsh

Build Version

Bitwarden Secrets CLI 0.3.0

Issue Tracking Info

  • I understand that work is tracked outside of Github. A PR will be linked to this issue should one be opened to address it, but Bitwarden doesn't use fields like "assigned", "milestone", or "project" to track progress.

Unable to find libssl.so.3

Steps To Reproduce

  1. Download latest linux release on Ubuntu 20.04
  2. Execute bws

Expected Result

No error

Actual Result

bws: error while loading shared libraries: libssl.so.3: cannot open shared object file: No such file or directory

Screenshots or Videos

No response

Additional Context

openssl and libssl-dev system packages are installed

Operating System

Linux

Operating System Version

Ubuntu 20.04

Shell

Bash

Build Version

N/A (latest release build)

Issue Tracking Info

  • I understand that work is tracked outside of Github. A PR will be linked to this issue should one be opened to address it, but Bitwarden doesn't use fields like "assigned", "milestone", or "project" to track progress.

bitwarden/sm-sdk-go isn't public

Steps To Reproduce

  1. Access the go sdk README and follow Initialisation step : https://github.com/bitwarden/sdk/blob/main/languages/go/README.md#initialization

  2. Try to get the sdk "go get github.com/bitwarden/sm-sdk-go"

  3. https://github.com/bitwarden/sm-sdk-go returns a 404

Expected Result

SDK should be accessible

Actual Result

https://github.com/bitwarden/sm-sdk-go returns a 404

Screenshots or Videos

No response

Additional Context

Looks like the go-sdk is a private repo.

We can see in github action the go sdk release which checkout the repo https://github.com/bitwarden/sdk/actions/runs/9192915122/job/25282753536.

I wonder if there is any reason for this repo to be private, or should the README be updated ?

Thank you

Operating System

Linux

Operating System Version

No response

Build Version

NA

Issue Tracking Info

  • I understand that work is tracked outside of Github. A PR will be linked to this issue should one be opened to address it, but Bitwarden doesn't use fields like "assigned", "milestone", or "project" to track progress.

Using bws cli on Windows Server 2012 failing with os error code -2146893018.

Steps To Reproduce

  • Download latest bws onto a Windows Server 2012 R2 machine.
  • Create BWS_ACCESS_TOKEN env variable
  • Run bws list projects

Expected Result

[
{
"id": "my-id",
"organizationId": "my-org-id",
"name": "my-prpject-name",
"creationDate": "2023-05-26T09:04:22.914031600Z",
"revisionDate": "2023-05-26T09:04:22.914031700Z"
}
]

Actual Result

C:\dev>bws list projects
Error:
0: ←[91merror sending request for url (https://identity.bitwarden.com/connect/token): error trying to connect: The message received was u
nexpected or badly formatted. (os error -2146893018)←[0m
1: ←[91merror trying to connect: The message received was unexpected or badly formatted. (os error -2146893018)←[0m
2: ←[91mThe message received was unexpected or badly formatted. (os error -2146893018)←[0m

Location:
←[35mcrates\bws\src\main.rs←[0m:←[35m334←[0m

Backtrace omitted. Run with RUST_BACKTRACE=1 environment variable to display it.
Run with RUST_BACKTRACE=full to include source snippets.

Screenshots or Videos

No response

Additional Context

The error code -2146893018 typically indicates a problem related to cryptographic operations on Windows systems. Specifically, it often corresponds to errors with cryptographic functions like those used for SSL/TLS connections or certificate operations.

I've tested on a Mac, and Windows 11, and Windows Server 2019, and it works fine.

Operating System

Windows

Operating System Version

2012 R2

Build Version

0.4.0

Issue Tracking Info

  • I understand that work is tracked outside of Github. A PR will be linked to this issue should one be opened to address it, but Bitwarden doesn't use fields like "assigned", "milestone", or "project" to track progress.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.