···11-[package]
22-name = "wharrgarbl"
33-description = "A whimsical STROBE based encryption protocol"
11+[workspace]
22+resolver = "3"
33+members = ["wharrgarbl-core", "wharrgarbl-strobe"]
44+55+[workspace.package]
46authors = ["Sachy.dev <sachymetsu@tutamail.com>"]
77+edition = "2024"
58repository = "https://tangled.org/sachy.dev/wharrgarbl"
69version = "0.1.0"
77-edition = "2024"
1010+license = "MIT OR Apache-2.0"
1111+1212+[workspace.dependencies]
1313+aead = { version = "0.6.0-rc.10" }
1414+ctutils = { version = "0.4.2", default-features = false }
1515+zeroize = { version = "1.8.2", default-features = false }
1616+hybrid-array = { version = "0.4.10" }
1717+1818+[package]
1919+name = "wharrgarbl"
2020+description = "A whimsical STROBE based encryption protocol"
2121+edition.workspace = true
2222+repository.workspace = true
2323+version.workspace = true
2424+authors.workspace = true
825926[features]
1010-parallel = ["keccak/parallel"]
2727+parallel = ["wharrgarbl-strobe/parallel"]
11281229[dependencies]
1313-keccak = "0.2"
1414-ctutils = { version = "0.4.2", default-features = false }
1515-zeroize = { version = "1.8.2", default-features = false }
3030+wharrgarbl-core = { path = "./wharrgarbl-core", version = "0.1" }
3131+wharrgarbl-strobe = { path = "./wharrgarbl-strobe", version = "0.1" }
3232+ctutils.workspace = true
3333+zeroize.workspace = true
1634ml-kem = { version = "0.3.0-rc.2", features = ["zeroize"] }
1717-hybrid-array = { version = "0.4.10", features = ["alloc"] }
3535+hybrid-array = { workspace = true, features = ["alloc"] }
1836rand_core = { version = "0.10", default-features = false }
1919-aead = { version = "0.6.0-rc.10" }
3737+aead.workspace = true
20382139[dev-dependencies]
2222-serde_json = "1"
2323-hex = "0.4"
2424-serde = { version = "1.0.210", default-features = false, features = ["derive"] }
2525-serde-big-array = { version = "0.5" }
2640getrandom = { version = "0.4.2", features = ["sys_rng"] }
2741aead = { version = "0.6.0-rc.10", features = ["alloc"] }
+201
LICENSE-APACHE
···11+Apache License
22+Version 2.0, January 2004
33+http://www.apache.org/licenses/
44+55+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
66+77+1. Definitions.
88+99+"License" shall mean the terms and conditions for use, reproduction,
1010+and distribution as defined by Sections 1 through 9 of this document.
1111+1212+"Licensor" shall mean the copyright owner or entity authorized by
1313+the copyright owner that is granting the License.
1414+1515+"Legal Entity" shall mean the union of the acting entity and all
1616+other entities that control, are controlled by, or are under common
1717+control with that entity. For the purposes of this definition,
1818+"control" means (i) the power, direct or indirect, to cause the
1919+direction or management of such entity, whether by contract or
2020+otherwise, or (ii) ownership of fifty percent (50%) or more of the
2121+outstanding shares, or (iii) beneficial ownership of such entity.
2222+2323+"You" (or "Your") shall mean an individual or Legal Entity
2424+exercising permissions granted by this License.
2525+2626+"Source" form shall mean the preferred form for making modifications,
2727+including but not limited to software source code, documentation
2828+source, and configuration files.
2929+3030+"Object" form shall mean any form resulting from mechanical
3131+transformation or translation of a Source form, including but
3232+not limited to compiled object code, generated documentation,
3333+and conversions to other media types.
3434+3535+"Work" shall mean the work of authorship, whether in Source or
3636+Object form, made available under the License, as indicated by a
3737+copyright notice that is included in or attached to the work
3838+(an example is provided in the Appendix below).
3939+4040+"Derivative Works" shall mean any work, whether in Source or Object
4141+form, that is based on (or derived from) the Work and for which the
4242+editorial revisions, annotations, elaborations, or other modifications
4343+represent, as a whole, an original work of authorship. For the purposes
4444+of this License, Derivative Works shall not include works that remain
4545+separable from, or merely link (or bind by name) to the interfaces of,
4646+the Work and Derivative Works thereof.
4747+4848+"Contribution" shall mean any work of authorship, including
4949+the original version of the Work and any modifications or additions
5050+to that Work or Derivative Works thereof, that is intentionally
5151+submitted to Licensor for inclusion in the Work by the copyright owner
5252+or by an individual or Legal Entity authorized to submit on behalf of
5353+the copyright owner. For the purposes of this definition, "submitted"
5454+means any form of electronic, verbal, or written communication sent
5555+to the Licensor or its representatives, including but not limited to
5656+communication on electronic mailing lists, source code control systems,
5757+and issue tracking systems that are managed by, or on behalf of, the
5858+Licensor for the purpose of discussing and improving the Work, but
5959+excluding communication that is conspicuously marked or otherwise
6060+designated in writing by the copyright owner as "Not a Contribution."
6161+6262+"Contributor" shall mean Licensor and any individual or Legal Entity
6363+on behalf of whom a Contribution has been received by Licensor and
6464+subsequently incorporated within the Work.
6565+6666+2. Grant of Copyright License. Subject to the terms and conditions of
6767+this License, each Contributor hereby grants to You a perpetual,
6868+worldwide, non-exclusive, no-charge, royalty-free, irrevocable
6969+copyright license to reproduce, prepare Derivative Works of,
7070+publicly display, publicly perform, sublicense, and distribute the
7171+Work and such Derivative Works in Source or Object form.
7272+7373+3. Grant of Patent License. Subject to the terms and conditions of
7474+this License, each Contributor hereby grants to You a perpetual,
7575+worldwide, non-exclusive, no-charge, royalty-free, irrevocable
7676+(except as stated in this section) patent license to make, have made,
7777+use, offer to sell, sell, import, and otherwise transfer the Work,
7878+where such license applies only to those patent claims licensable
7979+by such Contributor that are necessarily infringed by their
8080+Contribution(s) alone or by combination of their Contribution(s)
8181+with the Work to which such Contribution(s) was submitted. If You
8282+institute patent litigation against any entity (including a
8383+cross-claim or counterclaim in a lawsuit) alleging that the Work
8484+or a Contribution incorporated within the Work constitutes direct
8585+or contributory patent infringement, then any patent licenses
8686+granted to You under this License for that Work shall terminate
8787+as of the date such litigation is filed.
8888+8989+4. Redistribution. You may reproduce and distribute copies of the
9090+Work or Derivative Works thereof in any medium, with or without
9191+modifications, and in Source or Object form, provided that You
9292+meet the following conditions:
9393+9494+(a) You must give any other recipients of the Work or
9595+Derivative Works a copy of this License; and
9696+9797+(b) You must cause any modified files to carry prominent notices
9898+stating that You changed the files; and
9999+100100+(c) You must retain, in the Source form of any Derivative Works
101101+that You distribute, all copyright, patent, trademark, and
102102+attribution notices from the Source form of the Work,
103103+excluding those notices that do not pertain to any part of
104104+the Derivative Works; and
105105+106106+(d) If the Work includes a "NOTICE" text file as part of its
107107+distribution, then any Derivative Works that You distribute must
108108+include a readable copy of the attribution notices contained
109109+within such NOTICE file, excluding those notices that do not
110110+pertain to any part of the Derivative Works, in at least one
111111+of the following places: within a NOTICE text file distributed
112112+as part of the Derivative Works; within the Source form or
113113+documentation, if provided along with the Derivative Works; or,
114114+within a display generated by the Derivative Works, if and
115115+wherever such third-party notices normally appear. The contents
116116+of the NOTICE file are for informational purposes only and
117117+do not modify the License. You may add Your own attribution
118118+notices within Derivative Works that You distribute, alongside
119119+or as an addendum to the NOTICE text from the Work, provided
120120+that such additional attribution notices cannot be construed
121121+as modifying the License.
122122+123123+You may add Your own copyright statement to Your modifications and
124124+may provide additional or different license terms and conditions
125125+for use, reproduction, or distribution of Your modifications, or
126126+for any such Derivative Works as a whole, provided Your use,
127127+reproduction, and distribution of the Work otherwise complies with
128128+the conditions stated in this License.
129129+130130+5. Submission of Contributions. Unless You explicitly state otherwise,
131131+any Contribution intentionally submitted for inclusion in the Work
132132+by You to the Licensor shall be under the terms and conditions of
133133+this License, without any additional terms or conditions.
134134+Notwithstanding the above, nothing herein shall supersede or modify
135135+the terms of any separate license agreement you may have executed
136136+with Licensor regarding such Contributions.
137137+138138+6. Trademarks. This License does not grant permission to use the trade
139139+names, trademarks, service marks, or product names of the Licensor,
140140+except as required for reasonable and customary use in describing the
141141+origin of the Work and reproducing the content of the NOTICE file.
142142+143143+7. Disclaimer of Warranty. Unless required by applicable law or
144144+agreed to in writing, Licensor provides the Work (and each
145145+Contributor provides its Contributions) on an "AS IS" BASIS,
146146+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147147+implied, including, without limitation, any warranties or conditions
148148+of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149149+PARTICULAR PURPOSE. You are solely responsible for determining the
150150+appropriateness of using or redistributing the Work and assume any
151151+risks associated with Your exercise of permissions under this License.
152152+153153+8. Limitation of Liability. In no event and under no legal theory,
154154+whether in tort (including negligence), contract, or otherwise,
155155+unless required by applicable law (such as deliberate and grossly
156156+negligent acts) or agreed to in writing, shall any Contributor be
157157+liable to You for damages, including any direct, indirect, special,
158158+incidental, or consequential damages of any character arising as a
159159+result of this License or out of the use or inability to use the
160160+Work (including but not limited to damages for loss of goodwill,
161161+work stoppage, computer failure or malfunction, or any and all
162162+other commercial damages or losses), even if such Contributor
163163+has been advised of the possibility of such damages.
164164+165165+9. Accepting Warranty or Additional Liability. While redistributing
166166+the Work or Derivative Works thereof, You may choose to offer,
167167+and charge a fee for, acceptance of support, warranty, indemnity,
168168+or other liability obligations and/or rights consistent with this
169169+License. However, in accepting such obligations, You may act only
170170+on Your own behalf and on Your sole responsibility, not on behalf
171171+of any other Contributor, and only if You agree to indemnify,
172172+defend, and hold each Contributor harmless for any liability
173173+incurred by, or claims asserted against, such Contributor by reason
174174+of your accepting any such warranty or additional liability.
175175+176176+END OF TERMS AND CONDITIONS
177177+178178+APPENDIX: How to apply the Apache License to your work.
179179+180180+To apply the Apache License to your work, attach the following
181181+boilerplate notice, with the fields enclosed by brackets "[]"
182182+replaced with your own identifying information. (Don't include
183183+the brackets!) The text should be enclosed in the appropriate
184184+comment syntax for the file format. We also recommend that a
185185+file or class name and description of purpose be included on the
186186+same "printed page" as the copyright notice for easier
187187+identification within third-party archives.
188188+189189+Copyright 2026 Sachymetsu
190190+191191+Licensed under the Apache License, Version 2.0 (the "License");
192192+you may not use this file except in compliance with the License.
193193+You may obtain a copy of the License at
194194+195195+http://www.apache.org/licenses/LICENSE-2.0
196196+197197+Unless required by applicable law or agreed to in writing, software
198198+distributed under the License is distributed on an "AS IS" BASIS,
199199+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200200+See the License for the specific language governing permissions and
201201+limitations under the License.
+21
LICENSE-MIT
···11+MIT License
22+33+Copyright (c) 2026 Sachymetsu
44+55+Permission is hereby granted, free of charge, to any person obtaining a copy
66+of this software and associated documentation files (the "Software"), to deal
77+in the Software without restriction, including without limitation the rights
88+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
99+copies of the Software, and to permit persons to whom the Software is
1010+furnished to do so, subject to the following conditions:
1111+1212+The above copyright notice and this permission notice shall be included in all
1313+copies or substantial portions of the Software.
1414+1515+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1616+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1717+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1818+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1919+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
2020+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
2121+SOFTWARE.
+3-1
README.md
···2233A WIP Strobe+AKE protocol with a whimsical name. Based off the [reference rust implementation here](https://github.com/rozbb/strobe-rs), though with diverging API choices for experimentation.
4455+☢️ **WARNING: DO NOT USE IN PRODUCTION. THIS CRATE IS NOT AUDITED AND IS WIP, MAYBE EVEN NOT AS SECURE AS THOUGHT. AAAAAAAAAA** ☢️
66+57## License
6877-TBA when ready
99+Code dual-licensed under Apache 2.0 or MIT.
···4455use aead::consts::U14;
66use serde::{Deserialize, Deserializer, de};
77+use wharrgarbl_core::Role;
7888-use crate::strobe::{Role, StrobeSecurity, StrobeState};
99+use crate::{StrobeSecurity, strobe::StrobeState};
9101011/// The harness we will put on our KATs so we can herd them and make them do tests.
1112/// (This is the top-level structure of the JSON we find in the test vectors)