Comments (5)
Yeah, if/when we decide to ship executables, making precompiled ones for windows is probably the right way to go. I've got appveyor building similar things for Tahoe-LAFS, so I'd follow that model.
from magic-wormhole.rs.
Excellent point.
My hope would be for a native Rust implementation of the pieces of libsodium that we need. That'd be better in one sense: native Rust means memory safety.
But it'd be worse in another sense: part of the appeal of libsodium is that it uses DJB's original code, which is very fast and very carefully written (constant-time operation), but that code is in C, and both the speed and the constant-time properties depend intimately on the details of how C gets compiled, so porting those aspects won't be an easy task.
We don't especially need the speed. The constant-time-ness would be nice, though.
For reference, we use libsodium for the SecretBox
authenticated-encryption function, which is used to protect all messages sent after the PAKE exchange emits a shared key. We don't use the asymmetric Box
function, nor any of the key-agreement tools. So we might be able to get by with a less-than-complete port.
I haven't looked at crates.io to see what else is out there. I have to imagine that somebody's made a stab at a pure-Rust implementation, but I've no idea how far along such a port might be, nor any idea about it's quality.
I guess one option is to use different crates on windows vs unix, maybe sacrificing some speed/quality properties on the platform that can't use the C libsodium.
from magic-wormhole.rs.
I was checking sodiumoxide code and from readme it should work on Windows if properly compiled libsodium is available on target machine. I also checked git2-rs code which is crate which even cargo depends on, there they embed source and compile it in place if its not found on target machine.
Even if sodiumoxide can put original source in the crate, it should still need native or cygwin compiler at its disposal to work. So we will probably back to square one :).
May be we should consider shipping prebuilt binary?. May be using appveyor help?.
from magic-wormhole.rs.
Is this issue still relevant? I managed to compile Wormhole using MinGW and it works fine, I don't fully understand what the original issue was and what exactly has changed since then so that it works.
from magic-wormhole.rs.
Closed with #121
from magic-wormhole.rs.
Related Issues (20)
- Detect broken TCP connection to peer HOT 1
- Port forwarding crashes HOT 4
- AddrNotAvailable error for IPv4 on Windows HOT 1
- RUSTSEC-2022-0048: xml-rs is Unmaintained HOT 1
- Using tcp relay with tcp:hostname syntax will panic
- Feature Request: cli installable using cargo-install HOT 2
- feature request: support ssh invite/ssh accept modes HOT 5
- Add function to get claimed nameplates
- Flaky tests
- rand >= 0.8 break WASM support HOT 3
- Feature suggestion: show bitrate in progress bar HOT 5
- Progress bar bitrate intermittently drops on the sending side HOT 10
- `send --code` does not verify that a nameplate was provided and uses the entire code as the nameplate instead HOT 2
- RUSTSEC-2023-0037: crate has been renamed to `crypto_secretbox` HOT 1
- Release mac binaries HOT 1
- RUSTSEC-2023-0052: webpki: CPU denial of service in certificate path building
- [Feature request] Drop xsalsa20poly1305 dependency HOT 3
- Adapt help message for renamed binary
- Windows binary for v0.6.1 HOT 2
- Enable transfers over link scoped addresses
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from magic-wormhole.rs.