Hashavatar 0.12.0 #13
Closed
eldryoth
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
hashavatar 0.12.0
0.12.0expands the built-in avatar catalog while keepinghashavataras asingle, asset-free image-generation crate.
Added
AvatarKindvalues:bearpenguindragonninjaastronautdiamondcoffee-cupshieldbear,penguin,dragon,ninja, andastronaut.Compatibility Notes
AvatarOptionsselections remain deterministic for the selectedkind, background, dimensions, seed, namespace, crate identity hash mode, and
identity.
AvatarKind::ALL, so adding new familyvariants changes the automatic family distribution. Services that need old
automatic output should keep their existing namespace
style_versionuntilthey intentionally migrate.
AvatarIdentity::seed()andAvatarIdentity::as_digest()are removed fromthe public API, and the internal 256-bit RNG seed helper is private.
Rendering callers should not handle raw identity digest bytes.
docs/SECURITY_CONTROLS.mdnow states that identity preimage allocation doesnot hide input length at the allocator level. High-assurance callers should
pad or normalize sensitive identifiers before passing them to the crate.
AvatarSpec::default()is documented and tested as a fixed deterministic256x256seed-1convenience spec, not as a random or production policydefault.
String::replaceminification. The testsuite and fuzz harness now parse generated SVG with
roxmltreeto verifyXML well-formedness across families, layers, and representative identities.
AvatarRenderResourceBudgetandAvatarSpec::render_resource_budget(...)make raw RGBA memory estimates explicit for service-level render concurrency
limits without adding an async runtime or semaphore dependency to the crate.
and the fuzz harness includes a dedicated polygon rasterizer target for
degenerate, negative-coordinate, and extreme-point inputs.
SHA-512 by default, BLAKE3 when built with
blake3, and XXH3-128 when builtwith
xxh3. Theblake3andxxh3features are mutually exclusive, andXXH3-128 remains documented as non-cryptographic and unsuitable for
adversarial, user-controlled, or sensitive identifiers.
AvatarIdentitydebug formatting is now redacted, preventing accidental{:?}logging from exposing the raw 64-byte identity digest.AvatarIdentityrustdoc and security controls now state that clones arezeroized independently on drop, and that high-assurance callers should keep
clone lifetimes short to avoid unnecessary live digest copies.
zeroizesupport so its block buffer usesZeroizeOnDrop. BLAKE3 is built with upstreamzeroizesupport, and theBLAKE3 hasher plus XOF reader are explicitly zeroized after digest
derivation.
zeroize::Zeroizing, so the temporary mixed seed is scrubbed immediatelyafter RNG initialization. The security controls also document
StdRng'snon-zeroized expanded internal state as a known residual.
zeroization guards, so temporary pixel data is scrubbed during normal
returns, encoder errors, and unwinding panics.
images, keeping the fuzz-only polygon harness from reporting artificial
zero-sized-image crashes.
png,jpeg, andgifCargo features, leaving WebP as the only default raster encoder. The
AvatarOutputFormat::Gifrustdoc and security controls call out that theimagecrate's internal GIF quantization buffers are not zeroized byhashavatar, so high-assurance deployments should prefer WebP or PNG.extreme internal coordinate ranges.
fuzzingfeature now has a compile-time guard that rejectsordinary non-fuzzing release builds, reducing the chance that internal fuzz
harness entry points are accidentally exposed in production.
diamond,coffee-cup, andshieldare object/symbol families. They donot have face anchors, so accessories and expressions are deterministic
no-ops for those families. Accent palettes and frame shapes still apply.
Deferred
release. They need their own bounded raster/SVG texture path and visual
contrast review before becoming public API.
This discussion was created from the release Hashavatar 0.12.0.
Beta Was this translation helpful? Give feedback.
All reactions