Skip to content

Re-export crypto_common as common#2237

Merged
tarcieri merged 1 commit intomasterfrom
re-export-crypto_common-as-common
Jan 25, 2026
Merged

Re-export crypto_common as common#2237
tarcieri merged 1 commit intomasterfrom
re-export-crypto_common-as-common

Conversation

@tarcieri
Copy link
Member

Or rather, this imports crypto-common as common using the package = crypto-common syntax in Cargo.toml, then re-exports it, which should hopefully make for better diagnostics.

This is shorter and more convenient for imports.

Where crates were previously exporting crypto_common, this adds an alias with a deprecation. Adding such an alias to digest was necessary to even get anything to compile.

Or rather, this imports `crypto-common` as `common` using the
`package = crypto-common` syntax in Cargo.toml, then re-exports it,
which should hopefully make for better diagnostics.

This is shorter and more convenient for imports.

Where crates were previously exporting `crypto_common`, this adds an
alias with a deprecation. Adding such an alias to `digest` was necessary
to even get anything to compile.
@tarcieri tarcieri force-pushed the re-export-crypto_common-as-common branch from 6c52097 to 1f077f4 Compare January 25, 2026 01:34
@tarcieri tarcieri changed the title [WIP] Re-export crypto_common as common Re-export crypto_common as common Jan 25, 2026
@tarcieri tarcieri marked this pull request as ready for review January 25, 2026 01:34
@tarcieri tarcieri requested a review from newpavlov January 25, 2026 01:34
Comment on lines +9 to +10
### Added
- Re-export `crypto_common` as `common` ([#2237])
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note: aead didn't previously re-export crypto-common itself, only select things from it

@tarcieri tarcieri merged commit e101c8d into master Jan 25, 2026
46 checks passed
@tarcieri tarcieri deleted the re-export-crypto_common-as-common branch January 25, 2026 01:47
tarcieri added a commit that referenced this pull request Feb 2, 2026
It was re-exported as `common` from `aead`, `cipher`, and
`universal-hash` in #2237, with the old name re-exported and
"deprecated".

Unfortuntaely, those deprecations don't work as expected, e.g.

    #![allow(unused_imports)]
    use digest::core_api::EagerHash;
    use digest::crypto_common::OutputSizeUser;

This compiles without warnings:

   Compiling crypto-common v0.2.0-rc.15
   Compiling digest v0.11.0-rc.10
   Compiling foobar v0.1.0 (/private/tmp/foobar)
    Finished `test` profile [unoptimized + debuginfo] target(s) in 2.05s

Even if we change the re-export to use a deprecated module, ala:

    #[deprecated(...)
    pub mod crypto_common {
        pub use ::common::*;
    }

...that still doesn't work. Unfortunately deprecations only seem to
apply to the individual items, and not their imports or the modules
they're imported through.
tarcieri added a commit that referenced this pull request Feb 2, 2026
It was re-exported as `common` from `aead`, `cipher`, and
`universal-hash` in #2237, with the old name re-exported and
"deprecated".

Unfortuntaely, those deprecations don't work as expected, e.g.

        #![allow(unused_imports)]
        use digest::core_api::EagerHash;
        use digest::crypto_common::OutputSizeUser;

This compiles without warnings:

       Compiling crypto-common v0.2.0-rc.15
       Compiling digest v0.11.0-rc.10
       Compiling foobar v0.1.0 (/private/tmp/foobar)
        Finished `test` profile [unoptimized + debuginfo] target(s) in 2.05s

Even if we change the re-export to use a deprecated module, ala:

        #[deprecated(...)
        pub mod crypto_common {
            pub use ::common::*;
        }

...that still doesn't work. Unfortunately deprecations only seem to
apply to the individual items, and not their imports or the modules
they're imported through.

This removes the "deprecated" re-exports (including `digest::core_api`)
since the deprecations don't work, so we might as well migrate to the
new names wholesale.
@tarcieri tarcieri mentioned this pull request Feb 4, 2026
tarcieri added a commit that referenced this pull request Feb 4, 2026
### Added
- Traits for tweakable block ciphers (#1721)
- Methods for writing keystream (#1907)

### Changed
- Replaced `generic-array` with `hybrid-array` (#1358)
- Rename `BlockCipher*`/`BlockMode*` (#1482)
  - `BlockEncrypt` => `BlockCipherEncrypt`
  - `BlockDecrypt` => `BlockCipherDecrypt`
  - `BlockEncryptMut` => `BlockModeEncrypt`
  - `BlockDecryptMut` => `BlockModeDecrypt`
- Split `BlockBackend` traits into 4 specific traits: (#1636)
  - `BlockCipherEncBackend`
  - `BlockCipherDecBackend`
  - `BlockModeEncBackend`
  - `BlockModeDecBackend`
- Edition changed to 2024 and MSRV bumped to 1.85 (#1759)
- Use `block_buffer::ReadBuffer` in `StreamCipherCoreWrapper` (#1959)
- Re-export of `crypto-common` moved to `cipher::common` (#2237, #2260)
- `crypto-common` dependency bumped to v0.2 (#2276)
- `blobby` requirement bumped to v0.4 (#2147)
- `inout` dependency bumped to v0.2.2 (#2149)

### Fixed
- Bugs in `StreamCipherCoreWrapper` trait implementations (#1421)
- Seeking implementation in the stream cipher wrapper (#2052)

### Removed
- `std` feature (#1691)
- `BlockCipherEncrypt::encrypt_padded*` and
`BlockCipherDecrypt::decrypt_padded*` methods.
Users of the ECB mode should use the `ecb-mode` crate instead. (#2245)
- `AsyncStreamCipher` trait (#2280)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants