Giter Site home page Giter Site logo

Comments (3)

newpavlov avatar newpavlov commented on June 12, 2024

Unfortunately this will not be easy. In the case of aesni exapnsion, encryption and decryption rounds are inlined for performance reasons, and in the case of aes-soft code is somewhat convoluted. I think your best shot will be to use aesni as a reference and write your target function directly. If you'll have any questions I will be glad to answer them!

from block-ciphers.

qm3ster avatar qm3ster commented on June 12, 2024

IIRC, having it marked inline but also exporting it would still inline and fully optimize the version used internally.
Furthermore, it would export not bindings to a "compiled" version but essentially export the AST as part of the metadata, meaning it would even get inlined into consumer crates, giving great performance to unorthodox uses.
Am I totally wrong?

from block-ciphers.

newpavlov avatar newpavlov commented on June 12, 2024

One round of encryption is just one _mm_aesenc_si128 call, so I don't think it makes sense to expose wrapper around one intrinsic. As for key expansion, currently intrinsic requires const argument, so I am using macros because of it. (see this topic) I don't see how it can be cleanly exposed in public API. (especially in the case of AES-192 which has more convoluted key schedule)

from block-ciphers.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.