Function report

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:lib\crypto\des.c Create Date:2022-07-28 06:47:16
Last Modify:2020-03-12 14:18:49 Copyright©Brick
home page Tree
Annotation kernel can get tool activityDownload SCCTChinese

Name:Encryption key expansion* RFC2451: Weak key checks SHOULD be performed.* FIPS 74:* Keys having duals are keys which produce all zeros, all ones, or* alternating zero-one patterns in the C and D registers after Permuted* Choice 1 has operated on the key.

Proto:static unsigned long des_ekey(u32 *pe, const u8 *k)

Type:unsigned long

Parameter:

TypeParameterName
u32 *pe
const u8 *k
627  pt = pc2
629  d = k[4]
629  d &= 0x0e
629  d <<= 4
629  d |= k[0] & 0x1e
629  d = Lookup tables for key expansion [d]
630  c = k[5]
630  c &= 0x0e
630  c <<= 4
630  c |= k[1] & 0x1e
630  c = Lookup tables for key expansion [c]
631  b = k[6]
631  b &= 0x0e
631  b <<= 4
631  b |= k[2] & 0x1e
631  b = Lookup tables for key expansion [b]
632  a = k[7]
632  a &= 0x0e
632  a <<= 4
632  a |= k[3] & 0x1e
632  a = Lookup tables for key expansion [a]
634  pe[15 * 2 + 0] = DES_PC2(a, b, c, d)
634  d = rs[d]
635  pe[14 * 2 + 0] = DES_PC2(d, a, b, c)
635  c = rs[c]
635  b = rs[b]
636  pe[13 * 2 + 0] = DES_PC2(b, c, d, a)
636  a = rs[a]
636  d = rs[d]
637  pe[12 * 2 + 0] = DES_PC2(d, a, b, c)
637  c = rs[c]
637  b = rs[b]
638  pe[11 * 2 + 0] = DES_PC2(b, c, d, a)
638  a = rs[a]
638  d = rs[d]
639  pe[10 * 2 + 0] = DES_PC2(d, a, b, c)
639  c = rs[c]
639  b = rs[b]
640  pe[9 * 2 + 0] = DES_PC2(b, c, d, a)
640  a = rs[a]
640  d = rs[d]
641  pe[8 * 2 + 0] = DES_PC2(d, a, b, c)
641  c = rs[c]
642  pe[7 * 2 + 0] = DES_PC2(c, d, a, b)
642  b = rs[b]
642  a = rs[a]
643  pe[6 * 2 + 0] = DES_PC2(a, b, c, d)
643  d = rs[d]
643  c = rs[c]
644  pe[5 * 2 + 0] = DES_PC2(c, d, a, b)
644  b = rs[b]
644  a = rs[a]
645  pe[4 * 2 + 0] = DES_PC2(a, b, c, d)
645  d = rs[d]
645  c = rs[c]
646  pe[3 * 2 + 0] = DES_PC2(c, d, a, b)
646  b = rs[b]
646  a = rs[a]
647  pe[2 * 2 + 0] = DES_PC2(a, b, c, d)
647  d = rs[d]
647  c = rs[c]
648  pe[1 * 2 + 0] = DES_PC2(c, d, a, b)
648  b = rs[b]
649  pe[0 * 2 + 0] = DES_PC2(b, c, d, a)
652  w = a ^ c | b ^ d | rs[a] ^ c | b ^ rs[d]
655  pt += 512
657  d = k[0]
657  d &= 0xe0
657  d >>= 4
657  d |= k[4] & 0xf0
657  d = Lookup tables for key expansion [d + 1]
658  c = k[1]
658  c &= 0xe0
658  c >>= 4
658  c |= k[5] & 0xf0
658  c = Lookup tables for key expansion [c + 1]
659  b = k[2]
659  b &= 0xe0
659  b >>= 4
659  b |= k[6] & 0xf0
659  b = Lookup tables for key expansion [b + 1]
660  a = k[3]
660  a &= 0xe0
660  a >>= 4
660  a |= k[7] & 0xf0
660  a = Lookup tables for key expansion [a + 1]
663  w |= a ^ c | b ^ d | rs[a] ^ c | b ^ rs[d]
665  pe[15 * 2 + 1] = DES_PC2(a, b, c, d)
665  d = rs[d]
666  pe[14 * 2 + 1] = DES_PC2(d, a, b, c)
666  c = rs[c]
666  b = rs[b]
667  pe[13 * 2 + 1] = DES_PC2(b, c, d, a)
667  a = rs[a]
667  d = rs[d]
668  pe[12 * 2 + 1] = DES_PC2(d, a, b, c)
668  c = rs[c]
668  b = rs[b]
669  pe[11 * 2 + 1] = DES_PC2(b, c, d, a)
669  a = rs[a]
669  d = rs[d]
670  pe[10 * 2 + 1] = DES_PC2(d, a, b, c)
670  c = rs[c]
670  b = rs[b]
671  pe[9 * 2 + 1] = DES_PC2(b, c, d, a)
671  a = rs[a]
671  d = rs[d]
672  pe[8 * 2 + 1] = DES_PC2(d, a, b, c)
672  c = rs[c]
673  pe[7 * 2 + 1] = DES_PC2(c, d, a, b)
673  b = rs[b]
673  a = rs[a]
674  pe[6 * 2 + 1] = DES_PC2(a, b, c, d)
674  d = rs[d]
674  c = rs[c]
675  pe[5 * 2 + 1] = DES_PC2(c, d, a, b)
675  b = rs[b]
675  a = rs[a]
676  pe[4 * 2 + 1] = DES_PC2(a, b, c, d)
676  d = rs[d]
676  c = rs[c]
677  pe[3 * 2 + 1] = DES_PC2(c, d, a, b)
677  b = rs[b]
677  a = rs[a]
678  pe[2 * 2 + 1] = DES_PC2(a, b, c, d)
678  d = rs[d]
678  c = rs[c]
679  pe[1 * 2 + 1] = DES_PC2(c, d, a, b)
679  b = rs[b]
680  pe[0 * 2 + 1] = DES_PC2(b, c, d, a)
683  When d < 16 cycle
684  a = pe[2 * d]
685  b = pe[2 * d + 1]
686  c = a ^ b
687  c &= 0xffff0000
688  a ^= c
689  b ^= c
690  ROL(b, 18)
691  pe[2 * d] = a
692  pe[2 * d + 1] = b
696  Return w
Caller
NameDescribe
des_expand_key
des3_ede_expand_key