mirror of
https://gitlab.gnome.org/World/Authenticator.git
synced 2025-03-04 00:34:40 +01:00
Replace zbar-rust with rqrr
This commit is contained in:
parent
8d9fde4662
commit
f9aaae6863
5 changed files with 13 additions and 84 deletions
34
Cargo.lock
generated
34
Cargo.lock
generated
|
@ -290,6 +290,7 @@ dependencies = [
|
||||||
"qrencode",
|
"qrencode",
|
||||||
"rand",
|
"rand",
|
||||||
"ring",
|
"ring",
|
||||||
|
"rqrr",
|
||||||
"rust-argon2",
|
"rust-argon2",
|
||||||
"scrypt",
|
"scrypt",
|
||||||
"search-provider",
|
"search-provider",
|
||||||
|
@ -300,7 +301,6 @@ dependencies = [
|
||||||
"tracing-subscriber",
|
"tracing-subscriber",
|
||||||
"url",
|
"url",
|
||||||
"uuid",
|
"uuid",
|
||||||
"zbar-rust",
|
|
||||||
"zeroize",
|
"zeroize",
|
||||||
"zip",
|
"zip",
|
||||||
]
|
]
|
||||||
|
@ -802,26 +802,6 @@ version = "1.1.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf"
|
checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "enum-ordinalize"
|
|
||||||
version = "4.3.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "fea0dcfa4e54eeb516fe454635a95753ddd39acda650ce703031c6973e315dd5"
|
|
||||||
dependencies = [
|
|
||||||
"enum-ordinalize-derive",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "enum-ordinalize-derive"
|
|
||||||
version = "4.3.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff"
|
|
||||||
dependencies = [
|
|
||||||
"proc-macro2",
|
|
||||||
"quote",
|
|
||||||
"syn",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "enumflags2"
|
name = "enumflags2"
|
||||||
version = "0.7.10"
|
version = "0.7.10"
|
||||||
|
@ -2730,6 +2710,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f126a9b02152815d84315316e7a759ee18a216d057095d56d19cec68a428b385"
|
checksum = "f126a9b02152815d84315316e7a759ee18a216d057095d56d19cec68a428b385"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"g2p",
|
"g2p",
|
||||||
|
"image 0.25.4",
|
||||||
"lru",
|
"lru",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -3723,17 +3704,6 @@ dependencies = [
|
||||||
"windows-sys 0.59.0",
|
"windows-sys 0.59.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "zbar-rust"
|
|
||||||
version = "0.0.24"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "f8f7bacc14b37fba9a631a76a5c87ba243ea31eebff12d592d320516472c4626"
|
|
||||||
dependencies = [
|
|
||||||
"enum-ordinalize",
|
|
||||||
"libc",
|
|
||||||
"pkg-config",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "zbus"
|
name = "zbus"
|
||||||
version = "4.4.0"
|
version = "4.4.0"
|
||||||
|
|
|
@ -35,6 +35,7 @@ prost = "0.13"
|
||||||
qrencode = {version = "0.14", features = ["image"]}
|
qrencode = {version = "0.14", features = ["image"]}
|
||||||
rand = "0.8"
|
rand = "0.8"
|
||||||
ring = "0.17"
|
ring = "0.17"
|
||||||
|
rqrr = { version = "0.9", default-features = false, features = ["img"] }
|
||||||
rust-argon2 = {version = "2.0", default-features = false}
|
rust-argon2 = {version = "2.0", default-features = false}
|
||||||
scrypt = {version = "0.11", default-features = false}
|
scrypt = {version = "0.11", default-features = false}
|
||||||
search-provider = {version = "0.10", default-features = false, features = ["tokio"]}
|
search-provider = {version = "0.10", default-features = false, features = ["tokio"]}
|
||||||
|
@ -45,7 +46,6 @@ tracing = {version = "0.1", default-features = false}
|
||||||
tracing-subscriber = {version = "0.3", default-features = false, features = ["fmt"]}
|
tracing-subscriber = {version = "0.3", default-features = false, features = ["fmt"]}
|
||||||
url = "2.2"
|
url = "2.2"
|
||||||
uuid = {version = "1.0", features = ["v4"]}
|
uuid = {version = "1.0", features = ["v4"]}
|
||||||
zbar-rust = "0.0"
|
|
||||||
zeroize = {version = "1", features = ["zeroize_derive"]}
|
zeroize = {version = "1", features = ["zeroize_derive"]}
|
||||||
zip = { version = "2.1", features = ["aes-crypto"] }
|
zip = { version = "2.1", features = ["aes-crypto"] }
|
||||||
|
|
||||||
|
|
|
@ -39,42 +39,6 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"modules": [
|
"modules": [
|
||||||
{
|
|
||||||
"name": "zbar",
|
|
||||||
"config-opts": [
|
|
||||||
"--disable-doc",
|
|
||||||
"--disable-video",
|
|
||||||
"--enable-codes=qrcode",
|
|
||||||
"--without-dbus",
|
|
||||||
"--without-directshow",
|
|
||||||
"--without-gir",
|
|
||||||
"--without-graphicsmagick",
|
|
||||||
"--without-gtk",
|
|
||||||
"--without-imagemagick",
|
|
||||||
"--without-jpeg",
|
|
||||||
"--without-java",
|
|
||||||
"--without-npapi",
|
|
||||||
"--without-python",
|
|
||||||
"--without-qt",
|
|
||||||
"--without-qt5",
|
|
||||||
"--without-xshm",
|
|
||||||
"--without-xv"
|
|
||||||
],
|
|
||||||
"sources": [
|
|
||||||
{
|
|
||||||
"type": "archive",
|
|
||||||
"url": "https://linuxtv.org/downloads/zbar/zbar-0.23.1.tar.gz",
|
|
||||||
"sha256": "c72b19eb63f48781ae5ff1830236f4e753f4bd6418cd781aea1cd85d625b119e"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "script",
|
|
||||||
"dest-filename": "autogen.sh",
|
|
||||||
"commands": [
|
|
||||||
"autoreconf -vfi -W none"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "authenticator",
|
"name": "authenticator",
|
||||||
"buildsystem": "meson",
|
"buildsystem": "meson",
|
||||||
|
|
|
@ -8,7 +8,6 @@ dependency('glib-2.0', version: '>= 2.56')
|
||||||
dependency('gio-2.0', version: '>= 2.56')
|
dependency('gio-2.0', version: '>= 2.56')
|
||||||
dependency('gtk4', version: '>= 4.10')
|
dependency('gtk4', version: '>= 4.10')
|
||||||
dependency('libadwaita-1', version: '>=1.5.beta')
|
dependency('libadwaita-1', version: '>=1.5.beta')
|
||||||
dependency('zbar', version: '>= 0.20')
|
|
||||||
dependency('gstreamer-1.0', version: '>= 1.18')
|
dependency('gstreamer-1.0', version: '>= 1.18')
|
||||||
dependency('gstreamer-base-1.0', version: '>= 1.18')
|
dependency('gstreamer-base-1.0', version: '>= 1.18')
|
||||||
dependency('gstreamer-plugins-base-1.0', version: '>= 1.18')
|
dependency('gstreamer-plugins-base-1.0', version: '>= 1.18')
|
||||||
|
|
|
@ -12,7 +12,6 @@ use gtk::{
|
||||||
glib::{self, clone},
|
glib::{self, clone},
|
||||||
prelude::*,
|
prelude::*,
|
||||||
};
|
};
|
||||||
use image::GenericImageView;
|
|
||||||
|
|
||||||
use super::CameraRow;
|
use super::CameraRow;
|
||||||
use crate::utils::spawn_tokio;
|
use crate::utils::spawn_tokio;
|
||||||
|
@ -23,21 +22,18 @@ pub mod screenshot {
|
||||||
pub fn scan(data: &[u8]) -> Result<String> {
|
pub fn scan(data: &[u8]) -> Result<String> {
|
||||||
// remove the file after reading the data
|
// remove the file after reading the data
|
||||||
let img = image::load_from_memory(data)?;
|
let img = image::load_from_memory(data)?;
|
||||||
|
let img_data = img.to_luma8();
|
||||||
|
let mut prepared_img = rqrr::PreparedImage::prepare(img_data);
|
||||||
|
let grids = prepared_img.detect_grids();
|
||||||
|
let mut decoded = Vec::new();
|
||||||
|
|
||||||
let (width, height) = img.dimensions();
|
if let Some(grid) = grids.first() {
|
||||||
let img_data: Vec<u8> = img.to_luma8().to_vec();
|
grid.decode_to(&mut decoded)?;
|
||||||
|
} else {
|
||||||
let mut scanner = zbar_rust::ZBarImageScanner::new();
|
anyhow::bail!("Invalid QR code")
|
||||||
|
|
||||||
let results = scanner
|
|
||||||
.scan_y800(&img_data, width, height)
|
|
||||||
.map_err(|e| anyhow::format_err!(e))?;
|
|
||||||
|
|
||||||
if let Some(result) = results.first() {
|
|
||||||
let content = String::from_utf8(result.data.clone())?;
|
|
||||||
return Ok(content);
|
|
||||||
}
|
}
|
||||||
anyhow::bail!("Invalid QR code")
|
|
||||||
|
Ok(String::from_utf8(decoded)?)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn capture(window: Option<gtk::Window>) -> Result<gio::File> {
|
pub async fn capture(window: Option<gtk::Window>) -> Result<gio::File> {
|
||||||
|
|
Loading…
Add table
Reference in a new issue