Skip to content

lms version 0.0.1 failure to compile #1039

@gram-signal

Description

@gram-signal

Use of the lms-signature package at the current public version (https://docs.rs/lms-signature/0.0.1/lms_signature/) fails to compile, with the following:

To reproduce:

cd $(mktemp -d /tmp/tmp_XXXXXXXX)
cargo init
echo 'lms-signature = "0.0.1"' >> Cargo.toml  # adds to dependencies
cargo build

This yields the following compilation errors:

    Creating binary (application) package
warning: the name `tmp_NPtfc1D2` is not snake_case or kebab-case which is recommended for package names, consider `tmp_nptfc1d2`
note: see more `Cargo.toml` keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
    Updating crates.io index
     Locking 35 packages to latest Rust 1.87.0 compatible versions
      Adding digest v0.11.0-pre.10 (available: v0.11.0-rc.0)
   Compiling typenum v1.18.0
   Compiling version_check v0.9.5
   Compiling libc v0.2.175
   Compiling zerocopy v0.8.26
   Compiling generic-array v0.14.7
   Compiling cfg-if v1.0.1
   Compiling zeroize v1.8.1
   Compiling cpufeatures v0.2.17
   Compiling rand_core v0.9.3
   Compiling static_assertions v1.1.0
   Compiling getrandom v0.2.16
   Compiling hybrid-array v0.3.1
   Compiling rand_core v0.6.4
   Compiling crypto-common v0.2.0-rc.3
   Compiling block-buffer v0.10.4
   Compiling crypto-common v0.1.6
   Compiling digest v0.10.7
   Compiling sha2 v0.10.9
   Compiling ppv-lite86 v0.2.21
   Compiling rand_chacha v0.3.1
   Compiling rand v0.8.5
   Compiling digest v0.11.0-pre.10
   Compiling signature v2.3.0-pre.7
   Compiling lms-signature v0.0.1
error[E0643]: method `try_sign_with_rng` has incompatible signature for trait
   --> /home/gram/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/lms-signature-0.0.1/src/lms/private.rs:110:19
    |
110 |         rng: &mut impl rand_core::CryptoRngCore,
    |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected generic parameter, found `impl Trait`
    |
   ::: /home/gram/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/signature-2.3.0-pre.7/src/signer.rs:143:26
    |
143 |     fn try_sign_with_rng<R: TryCryptoRng + ?Sized>(
    |                          - declaration in trait here

error[E0643]: method `try_sign_with_rng` has incompatible signature for trait
   --> /home/gram/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/lms-signature-0.0.1/src/ots/private.rs:102:19
    |
102 |         rng: &mut impl CryptoRngCore,
    |                   ^^^^^^^^^^^^^^^^^^ expected generic parameter, found `impl Trait`
    |
   ::: /home/gram/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/signature-2.3.0-pre.7/src/signer.rs:143:26
    |
143 |     fn try_sign_with_rng<R: TryCryptoRng + ?Sized>(
    |                          - declaration in trait here

error[E0277]: the trait bound `impl rand_core::CryptoRngCore: TryCryptoRng` is not satisfied
   --> /home/gram/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/lms-signature-0.0.1/src/lms/private.rs:119:54
    |
119 |         let ots_sig = ots_priv_key.try_sign_with_rng(rng, msg)?;
    |                                    ----------------- ^^^ the trait `DerefMut` is not implemented for `impl rand_core::CryptoRngCore`
    |                                    |
    |                                    required by a bound introduced by this call
    |
    = note: required for `impl rand_core::CryptoRngCore` to implement `signature::rand_core::CryptoRng`
    = note: required for `impl rand_core::CryptoRngCore` to implement `TryCryptoRng`
note: required by a bound in `signature::RandomizedSignerMut::try_sign_with_rng`
   --> /home/gram/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/signature-2.3.0-pre.7/src/signer.rs:143:29
    |
143 |     fn try_sign_with_rng<R: TryCryptoRng + ?Sized>(
    |                             ^^^^^^^^^^^^ required by this bound in `RandomizedSignerMut::try_sign_with_rng`
help: consider restricting opaque type `impl rand_core::CryptoRngCore` with trait `DerefMut`
    |
110 |         rng: &mut impl rand_core::CryptoRngCore + std::ops::DerefMut,
    |                                                 ++++++++++++++++++++

Some errors have detailed explanations: E0277, E0643.
For more information about an error, try `rustc --explain E0277`.
error: could not compile `lms-signature` (lib) due to 3 previous errors

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions