diff --git a/Cargo.lock b/Cargo.lock index b73ca6026..0ef114cb9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3092,6 +3092,26 @@ dependencies = [ "bitflags 2.9.1", ] +[[package]] +name = "ref-cast" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "regex" version = "1.11.1" @@ -3407,12 +3427,13 @@ dependencies = [ [[package]] name = "schemars" -version = "0.8.22" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" +checksum = "febc07c7e70b5db4f023485653c754d76e1bbe8d9dbfa20193ce13da9f9633f4" dependencies = [ "chrono", "dyn-clone", + "ref-cast", "schemars_derive", "serde", "serde_json", @@ -3421,9 +3442,9 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.22" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" +checksum = "c1eeedaab7b1e1d09b5b4661121f4d27f9e7487089b0117833ccd7a882ee1ecc" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index bbda3dd09..5fb035b18 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -53,7 +53,7 @@ reqwest = { version = ">=0.12.5, <0.13", features = [ "multipart", "http2", ], default-features = false } -schemars = { version = ">=0.8.9, <0.9", features = ["uuid1", "chrono"] } +schemars = { version = ">=1.0.0, <2.0", features = ["uuid1", "chrono04"] } serde = { version = ">=1.0, <2.0", features = ["derive"] } serde_json = ">=1.0.96, <2.0" serde_qs = ">=0.12.0, <0.16" diff --git a/crates/bitwarden-crypto/src/enc_string/asymmetric.rs b/crates/bitwarden-crypto/src/enc_string/asymmetric.rs index 4ce4b0252..5f5bea43e 100644 --- a/crates/bitwarden-crypto/src/enc_string/asymmetric.rs +++ b/crates/bitwarden-crypto/src/enc_string/asymmetric.rs @@ -1,4 +1,4 @@ -use std::{fmt::Display, str::FromStr}; +use std::{borrow::Cow, fmt::Display, str::FromStr}; use base64::{engine::general_purpose::STANDARD, Engine}; pub use internal::UnsignedSharedKey; @@ -227,11 +227,11 @@ impl UnsignedSharedKey { /// But during the transition phase we will expose endpoints using the UnsignedSharedKey /// type. impl schemars::JsonSchema for UnsignedSharedKey { - fn schema_name() -> String { - "UnsignedSharedKey".to_string() + fn schema_name() -> Cow<'static, str> { + "UnsignedSharedKey".into() } - fn json_schema(generator: &mut schemars::r#gen::SchemaGenerator) -> schemars::schema::Schema { + fn json_schema(generator: &mut schemars::generate::SchemaGenerator) -> schemars::Schema { generator.subschema_for::() } } @@ -355,7 +355,7 @@ XKZBokBGnjFnTnKcs7nv/O8= assert_eq!( serde_json::to_string(&schema).unwrap(), - r#"{"$schema":"http://json-schema.org/draft-07/schema#","title":"UnsignedSharedKey","type":"string"}"# + r#"{"$schema":"https://json-schema.org/draft/2020-12/schema","title":"UnsignedSharedKey","type":"string"}"# ); } } diff --git a/crates/bitwarden-crypto/src/enc_string/symmetric.rs b/crates/bitwarden-crypto/src/enc_string/symmetric.rs index 010fb1a9e..a9297ba0c 100644 --- a/crates/bitwarden-crypto/src/enc_string/symmetric.rs +++ b/crates/bitwarden-crypto/src/enc_string/symmetric.rs @@ -1,4 +1,4 @@ -use std::str::FromStr; +use std::{borrow::Cow, str::FromStr}; use base64::{engine::general_purpose::STANDARD, Engine}; use coset::CborSerializable; @@ -336,11 +336,11 @@ impl KeyDecryptable for EncString { /// Usually we wouldn't want to expose EncStrings in the API or the schemas. /// But during the transition phase we will expose endpoints using the EncString type. impl schemars::JsonSchema for EncString { - fn schema_name() -> String { - "EncString".to_string() + fn schema_name() -> Cow<'static, str> { + "EncString".into() } - fn json_schema(generator: &mut schemars::r#gen::SchemaGenerator) -> schemars::schema::Schema { + fn json_schema(generator: &mut schemars::generate::SchemaGenerator) -> schemars::Schema { generator.subschema_for::() } } @@ -508,7 +508,7 @@ mod tests { assert_eq!( serde_json::to_string(&schema).unwrap(), - r#"{"$schema":"http://json-schema.org/draft-07/schema#","title":"EncString","type":"string"}"# + r#"{"$schema":"https://json-schema.org/draft/2020-12/schema","title":"EncString","type":"string"}"# ); } } diff --git a/crates/bitwarden-crypto/src/keys/signed_public_key.rs b/crates/bitwarden-crypto/src/keys/signed_public_key.rs index ad2597b95..83060f2e7 100644 --- a/crates/bitwarden-crypto/src/keys/signed_public_key.rs +++ b/crates/bitwarden-crypto/src/keys/signed_public_key.rs @@ -2,7 +2,7 @@ //! identity, which is provided by a signature keypair. This is done by signing the public key, and //! requiring consumers to verify the public key before consumption by using unwrap_and_verify. -use std::str::FromStr; +use std::{borrow::Cow, str::FromStr}; use base64::{engine::general_purpose::STANDARD, Engine}; use serde::{Deserialize, Serialize}; @@ -150,11 +150,11 @@ impl serde::Serialize for SignedPublicKey { } impl schemars::JsonSchema for SignedPublicKey { - fn schema_name() -> String { - "SignedPublicKey".to_string() + fn schema_name() -> Cow<'static, str> { + "SignedPublicKey".into() } - fn json_schema(generator: &mut schemars::r#gen::SchemaGenerator) -> schemars::schema::Schema { + fn json_schema(generator: &mut schemars::generate::SchemaGenerator) -> schemars::Schema { generator.subschema_for::() } }