Lines Matching +full:- +full:y
2 * FIPS-46-3 compliant Triple-DES implementation
5 * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
11 * http://csrc.nist.gov/publications/fips/fips46-3/fips46-3.pdf
29 * Expanded DES S-boxes
192 * PC1: left and right halves bit-swap
213 #define DES_IP(X, Y) \ argument
216 T = (((X) >> 4) ^ (Y)) & 0x0F0F0F0F; (Y) ^= T; (X) ^= (T << 4); \
217 T = (((X) >> 16) ^ (Y)) & 0x0000FFFF; (Y) ^= T; (X) ^= (T << 16); \
218 T = (((Y) >> 2) ^ (X)) & 0x33333333; (X) ^= T; (Y) ^= (T << 2); \
219 T = (((Y) >> 8) ^ (X)) & 0x00FF00FF; (X) ^= T; (Y) ^= (T << 8); \
220 (Y) = (((Y) << 1) | ((Y) >> 31)) & 0xFFFFFFFF; \
221 T = ((X) ^ (Y)) & 0xAAAAAAAA; (Y) ^= T; (X) ^= T; \
228 #define DES_FP(X, Y) \ argument
232 T = ((X) ^ (Y)) & 0xAAAAAAAA; (X) ^= T; (Y) ^= T; \
233 (Y) = (((Y) << 31) | ((Y) >> 1)) & 0xFFFFFFFF; \
234 T = (((Y) >> 8) ^ (X)) & 0x00FF00FF; (X) ^= T; (Y) ^= (T << 8); \
235 T = (((Y) >> 2) ^ (X)) & 0x33333333; (X) ^= T; (Y) ^= (T << 2); \
236 T = (((X) >> 16) ^ (Y)) & 0x0000FFFF; (Y) ^= T; (X) ^= (T << 16); \
237 T = (((X) >> 4) ^ (Y)) & 0x0F0F0F0F; (Y) ^= T; (X) ^= (T << 4); \
243 #define DES_ROUND(X, Y) \ argument
247 (Y) ^= SB8[(T) & 0x3F] ^ \
253 (Y) ^= SB7[(T) & 0x3F] ^ \
338 * Table of weak and semi-weak keys
348 * Semi-weak:
398 uint32_t X, Y, T; in mbedtls_des_setkey() local
401 Y = MBEDTLS_GET_UINT32_BE(key, 4); in mbedtls_des_setkey()
406 T = ((Y >> 4) ^ X) & 0x0F0F0F0F; X ^= T; Y ^= (T << 4); in mbedtls_des_setkey()
407 T = ((Y) ^ X) & 0x10101010; X ^= T; Y ^= (T); in mbedtls_des_setkey()
414 Y = (RHs[(Y >> 1) & 0xF] << 3) | (RHs[(Y >> 9) & 0xF] << 2) in mbedtls_des_setkey()
415 | (RHs[(Y >> 17) & 0xF] << 1) | (RHs[(Y >> 25) & 0xF]) in mbedtls_des_setkey()
416 | (RHs[(Y >> 4) & 0xF] << 7) | (RHs[(Y >> 12) & 0xF] << 6) in mbedtls_des_setkey()
417 | (RHs[(Y >> 20) & 0xF] << 5) | (RHs[(Y >> 28) & 0xF] << 4); in mbedtls_des_setkey()
420 Y &= 0x0FFFFFFF; in mbedtls_des_setkey()
428 Y = ((Y << 1) | (Y >> 27)) & 0x0FFFFFFF; in mbedtls_des_setkey()
431 Y = ((Y << 2) | (Y >> 26)) & 0x0FFFFFFF; in mbedtls_des_setkey()
439 | ((Y >> 13) & 0x00002000) | ((Y >> 4) & 0x00001000) in mbedtls_des_setkey()
440 | ((Y << 6) & 0x00000800) | ((Y >> 1) & 0x00000400) in mbedtls_des_setkey()
441 | ((Y >> 14) & 0x00000200) | ((Y) & 0x00000100) in mbedtls_des_setkey()
442 | ((Y >> 5) & 0x00000020) | ((Y >> 10) & 0x00000010) in mbedtls_des_setkey()
443 | ((Y >> 3) & 0x00000008) | ((Y >> 18) & 0x00000004) in mbedtls_des_setkey()
444 | ((Y >> 26) & 0x00000002) | ((Y >> 24) & 0x00000001); in mbedtls_des_setkey()
452 | ((Y >> 2) & 0x00002000) | ((Y << 8) & 0x00001000) in mbedtls_des_setkey()
453 | ((Y >> 14) & 0x00000808) | ((Y >> 9) & 0x00000400) in mbedtls_des_setkey()
454 | ((Y) & 0x00000200) | ((Y << 7) & 0x00000100) in mbedtls_des_setkey()
455 | ((Y >> 7) & 0x00000020) | ((Y >> 3) & 0x00000011) in mbedtls_des_setkey()
456 | ((Y << 2) & 0x00000004) | ((Y >> 21) & 0x00000002); in mbedtls_des_setkey()
462 * DES key schedule (56-bit, encryption)
466 mbedtls_des_setkey(ctx->sk, key); in mbedtls_des_setkey_enc()
472 * DES key schedule (56-bit, decryption)
478 mbedtls_des_setkey(ctx->sk, key); in mbedtls_des_setkey_dec()
481 SWAP(ctx->sk[i], ctx->sk[30 - i]); in mbedtls_des_setkey_dec()
482 SWAP(ctx->sk[i + 1], ctx->sk[31 - i]); in mbedtls_des_setkey_dec()
498 dsk[i] = esk[30 - i]; in des3_set2key()
499 dsk[i + 1] = esk[31 - i]; in des3_set2key()
501 esk[i + 32] = dsk[62 - i]; in des3_set2key()
502 esk[i + 33] = dsk[63 - i]; in des3_set2key()
513 * Triple-DES key schedule (112-bit, encryption)
520 des3_set2key(ctx->sk, sk, key); in mbedtls_des3_set2key_enc()
527 * Triple-DES key schedule (112-bit, decryption)
534 des3_set2key(sk, ctx->sk, key); in mbedtls_des3_set2key_dec()
551 dsk[i] = esk[94 - i]; in des3_set3key()
552 dsk[i + 1] = esk[95 - i]; in des3_set3key()
554 esk[i + 32] = dsk[62 - i]; in des3_set3key()
555 esk[i + 33] = dsk[63 - i]; in des3_set3key()
557 dsk[i + 64] = esk[30 - i]; in des3_set3key()
558 dsk[i + 65] = esk[31 - i]; in des3_set3key()
563 * Triple-DES key schedule (168-bit, encryption)
570 des3_set3key(ctx->sk, sk, key); in mbedtls_des3_set3key_enc()
577 * Triple-DES key schedule (168-bit, decryption)
584 des3_set3key(sk, ctx->sk, key); in mbedtls_des3_set3key_dec()
591 * DES-ECB block encryption/decryption
599 uint32_t X, Y, T, *SK; in mbedtls_des_crypt_ecb() local
601 SK = ctx->sk; in mbedtls_des_crypt_ecb()
604 Y = MBEDTLS_GET_UINT32_BE(input, 4); in mbedtls_des_crypt_ecb()
606 DES_IP(X, Y); in mbedtls_des_crypt_ecb()
609 DES_ROUND(Y, X); in mbedtls_des_crypt_ecb()
610 DES_ROUND(X, Y); in mbedtls_des_crypt_ecb()
613 DES_FP(Y, X); in mbedtls_des_crypt_ecb()
615 MBEDTLS_PUT_UINT32_BE(Y, output, 0); in mbedtls_des_crypt_ecb()
624 * DES-CBC buffer encryption/decryption
652 length -= 8; in mbedtls_des_crypt_cbc()
668 length -= 8; in mbedtls_des_crypt_cbc()
679 * 3DES-ECB block encryption/decryption
687 uint32_t X, Y, T, *SK; in mbedtls_des3_crypt_ecb() local
689 SK = ctx->sk; in mbedtls_des3_crypt_ecb()
692 Y = MBEDTLS_GET_UINT32_BE(input, 4); in mbedtls_des3_crypt_ecb()
694 DES_IP(X, Y); in mbedtls_des3_crypt_ecb()
697 DES_ROUND(Y, X); in mbedtls_des3_crypt_ecb()
698 DES_ROUND(X, Y); in mbedtls_des3_crypt_ecb()
702 DES_ROUND(X, Y); in mbedtls_des3_crypt_ecb()
703 DES_ROUND(Y, X); in mbedtls_des3_crypt_ecb()
707 DES_ROUND(Y, X); in mbedtls_des3_crypt_ecb()
708 DES_ROUND(X, Y); in mbedtls_des3_crypt_ecb()
711 DES_FP(Y, X); in mbedtls_des3_crypt_ecb()
713 MBEDTLS_PUT_UINT32_BE(Y, output, 0); in mbedtls_des3_crypt_ecb()
722 * 3DES-CBC buffer encryption/decryption
750 length -= 8; in mbedtls_des3_crypt_cbc()
766 length -= 8; in mbedtls_des3_crypt_cbc()
782 * http://csrc.nist.gov/groups/STM/cavp/documents/des/tripledes-vectors.zip
855 mbedtls_printf(" DES%c-ECB-%3d (%s): ", in mbedtls_des_self_test()
935 mbedtls_printf(" DES%c-CBC-%3d (%s): ", in mbedtls_des_self_test()