From b9742e122aa5478796c0988df4bab30ba44ceced Mon Sep 17 00:00:00 2001 From: Nils Pukropp Date: Sun, 28 Jun 2026 10:33:59 +0200 Subject: [PATCH] added license, author, metadata --- Cargo.toml | 10 +++++++--- LICENSE | 28 ++++++++++++++++++++++++++++ README.md | 21 ++++++++++++++++++++- crates/proton-drive-sdk/Cargo.toml | 8 +++++++- crates/proton-drive-sdk/LICENSE | 28 ++++++++++++++++++++++++++++ crates/proton-sdk/Cargo.toml | 6 ++++++ crates/proton-sdk/LICENSE | 28 ++++++++++++++++++++++++++++ 7 files changed, 124 insertions(+), 5 deletions(-) create mode 100644 LICENSE create mode 100644 crates/proton-drive-sdk/LICENSE create mode 100644 crates/proton-sdk/LICENSE diff --git a/Cargo.toml b/Cargo.toml index 7a63da8..1a01690 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,10 +4,14 @@ members = ["crates/proton-sdk", "crates/proton-drive-sdk"] [workspace.package] version = "0.1.0" -edition = "2021" +edition = "2024" license = "MIT" -repository = "https://github.com/ProtonDriveApps/sdk" -rust-version = "1.80" +repository = "https://github.com/narrrl/proton-sdk-rs" +homepage = "https://github.com/narrrl/proton-sdk-rs" +rust-version = "1.96" +authors = ["Nils Pukropp "] +keywords = ["proton", "drive", "openpgp", "encryption", "sdk"] +categories = ["api-bindings", "cryptography", "filesystem"] [workspace.dependencies] tokio = { version = "1", features = ["rt-multi-thread", "macros", "sync", "fs", "io-util", "time"] } diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..c7b5e88 --- /dev/null +++ b/LICENSE @@ -0,0 +1,28 @@ +The MIT License + +This project (proton-sdk-rs) is an independent, unofficial pure-Rust port of the +Proton Drive SDK (https://github.com/ProtonDriveApps/sdk). It is a derivative +work: the protocol behavior and cryptographic design are reimplemented from the +upstream MIT-licensed C# reference. It is not affiliated with or endorsed by +Proton AG. + +Copyright (c) 2025-2026 Proton AG (original Proton Drive SDK) +Copyright (c) 2026 Nils Pukropp (Rust port) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/README.md b/README.md index 6ac9cc4..a3b9b7a 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,11 @@ and does the OpenPGP crypto directly. The canonical reference is the upstream Not yet implemented: cross-volume move (needs `NewShareID` + re-signing), sharing, signature-verification *enforcement* (it is non-fatal metadata). -Crypto paths have offline round-trip tests +All crypto paths have offline round-trip tests, and the read/write surface +(upload/download round-trips, AEAD + streaming + thumbnails, enumeration, +folder/node ops, move, and the event feed) is covered by a **live integration +test suite** validated against a real Proton account — see +`crates/proton-drive-sdk/tests/live_*.rs`. ## Workspace @@ -110,6 +114,21 @@ cargo build # 0 warnings / 0 errors cargo test # offline crypto + derivation round-trip tests ``` +The `crates/proton-drive-sdk/tests/live_*.rs` suite runs the read/write surface +against a real account. These tests are `#[ignore]`d by default (they need +credentials) and each cleans up after itself. With `.env` (`username` / +`password`) and `PROTON_TOTP_SECRET` set: + +```bash +# all live tests, single-threaded (shared test account) +PROTON_TOTP_SECRET=... cargo test -p proton-drive-sdk --test 'live_*' \ + -- --ignored --nocapture --test-threads=1 +``` + +Note: AEAD upload (SEIPDv2) is **server-gated** behind the +`DriveCryptoEncryptBlocksWithPgpAead` feature flag; that test no-ops when the +flag is off for the account. + ## License MIT, matching upstream. The MIT license covers this source only; use of Proton's diff --git a/crates/proton-drive-sdk/Cargo.toml b/crates/proton-drive-sdk/Cargo.toml index f266053..b92abb4 100644 --- a/crates/proton-drive-sdk/Cargo.toml +++ b/crates/proton-drive-sdk/Cargo.toml @@ -5,10 +5,16 @@ version.workspace = true edition.workspace = true license.workspace = true repository.workspace = true +homepage.workspace = true +authors.workspace = true +keywords.workspace = true +categories.workspace = true rust-version.workspace = true +readme = "../../README.md" +documentation = "https://docs.rs/proton-drive-sdk" [dependencies] -proton-sdk = { path = "../proton-sdk" } +proton-sdk = { path = "../proton-sdk", version = "0.1.0" } tokio.workspace = true reqwest.workspace = true serde.workspace = true diff --git a/crates/proton-drive-sdk/LICENSE b/crates/proton-drive-sdk/LICENSE new file mode 100644 index 0000000..c7b5e88 --- /dev/null +++ b/crates/proton-drive-sdk/LICENSE @@ -0,0 +1,28 @@ +The MIT License + +This project (proton-sdk-rs) is an independent, unofficial pure-Rust port of the +Proton Drive SDK (https://github.com/ProtonDriveApps/sdk). It is a derivative +work: the protocol behavior and cryptographic design are reimplemented from the +upstream MIT-licensed C# reference. It is not affiliated with or endorsed by +Proton AG. + +Copyright (c) 2025-2026 Proton AG (original Proton Drive SDK) +Copyright (c) 2026 Nils Pukropp (Rust port) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/crates/proton-sdk/Cargo.toml b/crates/proton-sdk/Cargo.toml index df2235d..72efedf 100644 --- a/crates/proton-sdk/Cargo.toml +++ b/crates/proton-sdk/Cargo.toml @@ -5,7 +5,13 @@ version.workspace = true edition.workspace = true license.workspace = true repository.workspace = true +homepage.workspace = true +authors.workspace = true +keywords.workspace = true +categories.workspace = true rust-version.workspace = true +readme = "../../README.md" +documentation = "https://docs.rs/proton-sdk" [dependencies] tokio.workspace = true diff --git a/crates/proton-sdk/LICENSE b/crates/proton-sdk/LICENSE new file mode 100644 index 0000000..c7b5e88 --- /dev/null +++ b/crates/proton-sdk/LICENSE @@ -0,0 +1,28 @@ +The MIT License + +This project (proton-sdk-rs) is an independent, unofficial pure-Rust port of the +Proton Drive SDK (https://github.com/ProtonDriveApps/sdk). It is a derivative +work: the protocol behavior and cryptographic design are reimplemented from the +upstream MIT-licensed C# reference. It is not affiliated with or endorsed by +Proton AG. + +Copyright (c) 2025-2026 Proton AG (original Proton Drive SDK) +Copyright (c) 2026 Nils Pukropp (Rust port) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE.