Sha512 doesn't work under Miri on macOS

Ouverte Adaptée aux débutants
#941 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
66/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
Active
Stack technique
rust
Domaine
cryptography

Piste de recherche

Commencez par lire l’implémentation SHA-512 pour AArch64 dans la dépendance sha2 indiquée dans la trace, ainsi que la configuration des tests Miri du dépôt. Reproduisez le problème avec cargo miri test sur macOS ; l’échec se produit lorsque Miri appelle l’intrinsic matériel SHA-512. Le travail est terminé lorsque les tests Miri peuvent s’exécuter sur macOS sans cette erreur d’opération non prise en charge.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

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
Langage dominant
Rust
Étoiles
2.3k
Forks
350
Merge moyen
18 h 14 min
PR mergées (30 j)
11

Préparer son environnement

Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de RustCrypto/hashes

Toutes les issues de RustCrypto/hashes

Issues similaires

Plus d'issues Rust

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.