summaryrefslogtreecommitdiff
path: root/crates
diff options
context:
space:
mode:
authorLLLL Colonq <llll@colonq>2026-04-30 21:36:17 -0400
committerLLLL Colonq <llll@colonq>2026-04-30 21:36:17 -0400
commitf171d500036e4d08244d02308ba3f62afdd87162 (patch)
tree400a352797aa62a27b33d1623657d611e583155f /crates
parentd943ba194b3cfab18354e96f7be2c1e434d6c073 (diff)
Remove digest
Diffstat (limited to 'crates')
-rw-r--r--crates/renderer/src/overlay.rs1
-rw-r--r--crates/renderer/src/overlay/tcg.rs99
2 files changed, 3 insertions, 97 deletions
diff --git a/crates/renderer/src/overlay.rs b/crates/renderer/src/overlay.rs
index 5abeb04..90c2016 100644
--- a/crates/renderer/src/overlay.rs
+++ b/crates/renderer/src/overlay.rs
@@ -12,7 +12,6 @@ use teleia::*;
use std::f32::consts::PI;
use byteorder::{LE, ReadBytesExt};
-use sha2::Digest;
use crate::{assets, background, input, net::fig, texture_server, toggle};
diff --git a/crates/renderer/src/overlay/tcg.rs b/crates/renderer/src/overlay/tcg.rs
index ece01e8..c3e6a38 100644
--- a/crates/renderer/src/overlay/tcg.rs
+++ b/crates/renderer/src/overlay/tcg.rs
@@ -290,20 +290,11 @@ impl Marquee {
fn upload_card(ctx: &context::Context, st: &mut state::State, ost: &mut overlay::State,
c: &Card, buf: &[u8], hashes: &[u8],
) -> Erm<()> {
- let mut signed = Vec::from(c.encoded.as_bytes());
- signed.extend(hashes);
- let signature = sign(&mut ost.redis_conn, &signed)?;
- let mut res = "+SIGNED+".to_owned();
- for s in signature {
- write!(res, "{:02x}", s)?;
- }
- res.push_str("+");
- res.push_str(&c.encoded);
- let with_signature = web_image_meta::png::add_text_chunk(
- buf, "lcolonqtcg", &res,
+ let with_meta = web_image_meta::png::add_text_chunk(
+ buf, "lcolonqtcg", &c.encoded,
)?;
let uuid = uuid::Uuid::new_v4();
- let () = ost.redis_conn.hset("tcg:cards", uuid.to_string(), &with_signature)?;
+ let () = ost.redis_conn.hset("tcg:cards", uuid.to_string(), &with_meta)?;
let inventory_key = format!("tcg-inventory:{}", c.owner_id);
let () = ost.redis_conn.lpush(inventory_key, uuid.to_string())?;
Ok(())
@@ -635,87 +626,3 @@ impl overlay::Overlay for Overlay {
Ok(())
}
}
-
-pub fn sign(conn: &mut redis::Connection, data: &[u8]) -> Erm<Vec<u8>> {
- let mut secret: Vec<u8> = conn.get("tcg:secret")?;
- secret.extend_from_slice(data);
- Ok(Vec::from(sha2::Sha256::digest(&secret).as_slice()))
-}
-
-pub fn validate_card(png: &[u8]) -> Erm<bool> {
- let decoder = png::Decoder::new(png);
- let mut reader = decoder.read_info()?;
- let mut buf = vec![0; reader.output_buffer_size()];
- let mut frame_hashes = Vec::new();
- while let Ok(f) = reader.next_frame(&mut buf) {
- frame_hashes.extend_from_slice(sha2::Sha256::digest(&buf).as_slice());
- }
- reader.finish()?;
- for tc in reader.info().uncompressed_latin1_text.iter() {
- if tc.keyword == "lcolonqtcg" {
- eprintln!("{}", tc.text);
- let (sig, meta) = if let Some(suffix) = tc.text.strip_prefix("+SIGNED+") {
- suffix.split_once("+").unwrap_or(("", suffix))
- } else {
- ("", &*tc.text)
- };
- let mut to_sign = Vec::from(meta);
- to_sign.extend_from_slice(&frame_hashes);
- eprintln!("to_sign: {:?}", to_sign);
- let signed = {
- let redis = redis::Client::open("redis://shiro").unwrap();
- let mut redis_conn = redis.get_connection().unwrap();
- sign(&mut redis_conn, &to_sign)?
- };
- let mut computed_sig = String::new();
- for s in signed {
- write!(computed_sig, "{:02x}", s)?;
- }
- eprintln!("attached signature: {}", sig);
- eprintln!("computed signature: {}", computed_sig);
- return Ok(sig == computed_sig);
- }
- }
- Ok(false)
-}
-
-pub fn repair_card(png: &[u8]) -> Erm<Vec<u8>> {
- let decoder = png::Decoder::new(png);
- let mut reader = decoder.read_info()?;
- let mut buf = vec![0; reader.output_buffer_size()];
- let mut frame_hashes = Vec::new();
- while let Ok(f) = reader.next_frame(&mut buf) {
- frame_hashes.extend_from_slice(sha2::Sha256::digest(&buf).as_slice());
- }
- reader.finish()?;
- for tc in reader.info().uncompressed_latin1_text.iter() {
- if tc.keyword == "lcolonqtcg" {
- let (sig, meta) = if let Some(suffix) = tc.text.strip_prefix("+SIGNED+") {
- suffix.split_once("+").unwrap_or(("", suffix))
- } else {
- ("", &*tc.text)
- };
- let mut to_sign = Vec::from(meta);
- to_sign.extend_from_slice(&frame_hashes);
- eprintln!("to_sign: {:?}", to_sign);
- let signed = {
- let redis = redis::Client::open("redis://shiro").unwrap();
- let mut redis_conn = redis.get_connection().unwrap();
- sign(&mut redis_conn, &to_sign)?
- };
- let mut computed_sig = String::new();
- for s in signed {
- write!(computed_sig, "{:02x}", s)?;
- }
- if sig != computed_sig {
- eprintln!("repairing, new signature: {}", computed_sig);
- eprintln!("old signature: {}", sig);
- let clean = web_image_meta::png::clean_chunks(png)?;
- return Ok(web_image_meta::png::add_text_chunk(
- &clean, "lcolonqtcg", &format!("+SIGNED+{}+{}", computed_sig, meta),
- )?);
- }
- }
- }
- Ok(Vec::from(png))
-}