MCPcopy Create free account
hub / github.com/MegEngine/MegEngine / mbedtls_internal_aes_decrypt

Function mbedtls_internal_aes_decrypt

lite/src/decryption/mbedtls/aes.cc:762–812  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

760 */
761#if !defined(MBEDTLS_AES_DECRYPT_ALT)
762int mbedtls_internal_aes_decrypt(mbedtls_aes_context *ctx,
763 const unsigned char input[16],
764 unsigned char output[16]) {
765 int i;
766 uint32_t *RK, X0, X1, X2, X3, Y0, Y1, Y2, Y3;
767
768 RK = ctx->rk;
769
770 GET_UINT32_LE(X0, input, 0);
771 X0 ^= *RK++;
772 GET_UINT32_LE(X1, input, 4);
773 X1 ^= *RK++;
774 GET_UINT32_LE(X2, input, 8);
775 X2 ^= *RK++;
776 GET_UINT32_LE(X3, input, 12);
777 X3 ^= *RK++;
778
779 for (i = (ctx->nr >> 1) - 1; i > 0; i--) {
780 AES_RROUND(Y0, Y1, Y2, Y3, X0, X1, X2, X3);
781 AES_RROUND(X0, X1, X2, X3, Y0, Y1, Y2, Y3);
782 }
783
784 AES_RROUND(Y0, Y1, Y2, Y3, X0, X1, X2, X3);
785
786 X0 = *RK++ ^ ((uint32_t)RSb[(Y0)&0xFF]) ^
787 ((uint32_t)RSb[(Y3 >> 8) & 0xFF] << 8) ^
788 ((uint32_t)RSb[(Y2 >> 16) & 0xFF] << 16) ^
789 ((uint32_t)RSb[(Y1 >> 24) & 0xFF] << 24);
790
791 X1 = *RK++ ^ ((uint32_t)RSb[(Y1)&0xFF]) ^
792 ((uint32_t)RSb[(Y0 >> 8) & 0xFF] << 8) ^
793 ((uint32_t)RSb[(Y3 >> 16) & 0xFF] << 16) ^
794 ((uint32_t)RSb[(Y2 >> 24) & 0xFF] << 24);
795
796 X2 = *RK++ ^ ((uint32_t)RSb[(Y2)&0xFF]) ^
797 ((uint32_t)RSb[(Y1 >> 8) & 0xFF] << 8) ^
798 ((uint32_t)RSb[(Y0 >> 16) & 0xFF] << 16) ^
799 ((uint32_t)RSb[(Y3 >> 24) & 0xFF] << 24);
800
801 X3 = *RK++ ^ ((uint32_t)RSb[(Y3)&0xFF]) ^
802 ((uint32_t)RSb[(Y2 >> 8) & 0xFF] << 8) ^
803 ((uint32_t)RSb[(Y1 >> 16) & 0xFF] << 16) ^
804 ((uint32_t)RSb[(Y0 >> 24) & 0xFF] << 24);
805
806 PUT_UINT32_LE(X0, output, 0);
807 PUT_UINT32_LE(X1, output, 4);
808 PUT_UINT32_LE(X2, output, 8);
809 PUT_UINT32_LE(X3, output, 12);
810
811 return (0);
812}
813#endif /* !MBEDTLS_AES_DECRYPT_ALT */
814
815/*

Callers 2

mbedtls_aes_decryptFunction · 0.85
mbedtls_aes_crypt_ecbFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected