Sha512 doesn't work under Miri on macOS

Abierto Apto para principiantes
#941 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
66/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
rust
Área
cryptography

Línea de trabajo

Empieza por leer la implementación de SHA-512 para AArch64 en la dependencia sha2 que aparece en el trace y la configuración de pruebas de Miri del repositorio. Reproduce el fallo con cargo miri test en macOS; ocurre cuando Miri llama al intrinsic de hardware SHA-512. El objetivo se cumple cuando las pruebas de Miri pueden ejecutarse en macOS sin ese error de operación no compatible.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

This is similar to https://github.com/RustCrypto/block-ciphers/issues/585. Sha3 is enabled on macOS by default, but not actually implemented under Miri, so users can't just cargo miri test:

error: unsupported operation: can't call LLVM intrinsic `llvm.aarch64.crypto.sha512h` on architecture `aarch64`
     --> /Users/runner/.rustup/toolchains/nightly-2026-11-06-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/aarch64/neon/generated.rs:23153:14
      |
test tests::seal_for_another_pre_seal_hash_is_ignored ... 
23153 |     unsafe { _vsha512hq_u64(a, b, c) }
      |              ^^^^^^^^^^^^^^^^^^^^^^^ unsupported operation occurred here
      |
      = help: this means the program tried to do something Miri does not support; it does not indicate a bug in the program
      = note: this is on thread `tests::seal_for_another_pre_seal_hash_is_ignored`
      = note: stack backtrace:
              0: std::arch::aarch64::vsha512hq_u64
                  at /Users/runner/.rustup/toolchains/nightly-2026-11-06-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/../../stdarch/crates/core_arch/src/aarch64/neon/generated.rs:23153:14: 23153:37
              1: sha2::sha512::aarch64_sha3::compress
                  at /Users/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sha2-0.11.1/src/sha512/aarch64_sha3.rs:35:28: 35:90
              2: sha2::sha512::compress
                  at /Users/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sha2-0.11.1/src/sha512.rs:64:41: 64:78
              3: sha2::sha512::compress512
                  at /Users/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sha2-0.11.1/src/sha512.rs:79:5: 79:28
              4: <sha2::block_api::Sha512VarCore as digest::block_api::VariableOutputCore>::finalize_variable_core::{closure#0}
                  at /Users/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sha2-0.11.1/src/block_api.rs:192:47: 192:83
              5: block_buffer::BlockBuffer::<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UTerm, typenum::bit::B1>, typenum::bit::B0>, typenum::bit::B0>, typenum::bit::B0>, typenum::bit::B0>, typenum::bit::B0>, typenum::bit::B0>, typenum::bit::B0>, block_buffer::Eager>::digest_pad::<{closure@<sha2::block_api::Sha512VarCore as digest::block_api::VariableOutputCore>::finalize_variable_core::{closure#0}}>
                  at /Users/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/block-buffer-0.12.1/src/lib.rs:399:9: 399:22
              6: block_buffer::BlockBuffer::<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UTerm, typenum::bit::B1>, typenum::bit::B0>, typenum::bit::B0>, typenum::bit::B0>, typenum::bit::B0>, typenum::bit::B0>, typenum::bit::B0>, typenum::bit::B0>, block_buffer::Eager>::len128_padding_be::<{closure@<sha2::block_api::Sha512VarCore as digest::block_api::VariableOutputCore>::finalize_variable_core::{closure#0}}>
                  at /Users/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/block-buffer-0.12.1/src/lib.rs:420:9: 420:65
              7: <sha2::block_api::Sha512VarCore as digest::block_api::VariableOutputCore>::finalize_variable_core
                  at /Users/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sha2-0.11.1/src/block_api.rs:192:9: 192:84
              8: <digest::block_api::ct_variable::CtOutWrapper<sha2::block_api::Sha512VarCore, typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UTerm, typenum::bit::B1>, typenum::bit::B0>, typenum::bit::B0>, typenum::bit::B0>, typenum::bit::B0>, typenum::bit::B0>, typenum::bit::B0>> as digest::block_api::FixedOutputCore>::finalize_fixed_core
                  at /Users/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/digest-0.11.3/src/block_api/ct_variable.rs:109:9: 109:65
              9: <sha2::Sha512 as digest::FixedOutput>::finalize_into
                  at /Users/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/digest-0.11.3/src/buffer_macros/fixed.rs:224:17: 224:91
              10: <sha2::Sha512 as digest::FixedOutput>::finalize_fixed
                  at /Users/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/digest-0.11.3/src/lib.rs:104:9: 104:37
              11: <sha2::Sha512 as digest::digest::Digest>::finalize
                  at /Users/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/digest-0.11.3/src/digest.rs:88:9: 88:42
              12: ed25519_dalek::signing::<impl std::convert::From<&[u8; ed25519_dalek::::signing::SecretKey::{constant#0}]> for ed25519_dalek::hazmat::ExpandedSecretKey>::from
                  at /Users/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ed25519-dalek-3.0.0/src/signing.rs:866:20: 866:73
              13: ed25519_dalek::SigningKey::from_bytes
                  at /Users/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ed25519-dalek-3.0.0/src/signing.rs:116:49: 116:84
              14: <ed25519_dalek::SigningKey as std::convert::From<[u8; ed25519_dalek::::signing::SecretKey::{constant#0}]>>::from
                  at /Users/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ed25519-dalek-3.0.0/src/signing.rs:677:9: 677:34
              15: tests::seal_for_another_pre_seal_hash_is_ignored
                  at crates/node/ab-node-rpc-server/src/tests.rs:121:23: 121:47
              16: tests::seal_for_another_pre_seal_hash_is_ignored::{closure#0}
                  at crates/node/ab-node-rpc-server/src/tests.rs:120:47: 120:47
Lenguaje dominante
Rust
Estrellas
2.3k
Forks
350
Merge medio
18 h 14 min
PR fusionados (30 d)
11

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de RustCrypto/hashes

Todos los issues de RustCrypto/hashes

Issues similares

Más issues de Rust

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.