[package] name = "airdrop" version = "0.1.0" edition = "2024" # The AirDrop protocol between two devices on a link (AWDL, or any IPv6 link): # the sender and receiver HTTPS exchanges (/Discover, /Ask, /Upload), the # DVZip + cpio payload, the Apple ID validation record, and the Contacts Only # policy. It does no I/O of its own beyond the sockets it is handed, runs no # helper programs, and verifies Apple's CMS records with RustCrypto only (the # records are signed with SHA-1, which system OpenSSL builds refuse). # # Wire details were recovered from macOS sharingd and checked against the # omdrop-plugin implementations (MIT) and captures of real transfers. [dependencies] # safeplist reads plists as an event stream, to bound untrusted input. plist = { workspace = true, features = ["enable_unstable_features_that_may_break_with_minor_version_bumps"] } thiserror.workspace = true base64 = "0.22" flate2 = { version = "1", default-features = false, features = ["rust_backend"] } hex = "0.4" log = "0.4" rustls = { version = "0.23", default-features = false, features = ["ring", "std", "tls12"] } rustls-pki-types = { version = "1", features = ["std"] } webpki = { package = "rustls-webpki", version = "0.103", default-features = false, features = ["ring", "std"] } socket2 = { version = "0.6", features = ["all"] } rand_core = { version = "0.6", features = ["getrandom"] } unicode-normalization = "0.1" zeroize = "1" libc = "0.2" httparse = "1" tempfile = "3" # Apple's validation records and certificates. cms = { version = "0.2.3", features = ["std", "builder"] } der = { version = "0.7.10", features = ["alloc", "std", "oid"] } rsa = { version = "0.9.10", features = ["sha2"] } sha1 = { version = "0.10", features = ["oid"] } sha2 = "0.10" x509-cert = { version = "0.2.5", features = ["pem", "builder", "hazmat"] } const-oid = "0.9" pkcs8 = { version = "0.10", features = ["pem", "std"] } signature = "2" # The Ask's thumbnail: pure-Rust decoders only, on the user's own files. image = { version = "0.25", default-features = false, features = ["jpeg", "png", "gif", "webp", "bmp"] } [dev-dependencies] spki = "0.7" der = { version = "0.7.10", features = ["alloc", "std", "oid"] }