Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6

* git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
Revert "crypto: camellia - Use kernel-provided bitops, unaligned access helpers"

+48 -36
+48 -36
crypto/camellia.c
··· 35 35 #include <linux/init.h> 36 36 #include <linux/kernel.h> 37 37 #include <linux/module.h> 38 - #include <linux/bitops.h> 39 - #include <asm/unaligned.h> 40 38 41 39 static const u32 camellia_sp1110[256] = { 42 40 0x70707000,0x82828200,0x2c2c2c00,0xececec00, ··· 335 337 /* 336 338 * macros 337 339 */ 340 + #define GETU32(v, pt) \ 341 + do { \ 342 + /* latest breed of gcc is clever enough to use move */ \ 343 + memcpy(&(v), (pt), 4); \ 344 + (v) = be32_to_cpu(v); \ 345 + } while(0) 346 + 347 + /* rotation right shift 1byte */ 348 + #define ROR8(x) (((x) >> 8) + ((x) << 24)) 349 + /* rotation left shift 1bit */ 350 + #define ROL1(x) (((x) << 1) + ((x) >> 31)) 351 + /* rotation left shift 1byte */ 352 + #define ROL8(x) (((x) << 8) + ((x) >> 24)) 353 + 338 354 #define ROLDQ(ll, lr, rl, rr, w0, w1, bits) \ 339 355 do { \ 340 356 w0 = ll; \ ··· 383 371 ^ camellia_sp3033[(u8)(il >> 8)] \ 384 372 ^ camellia_sp4404[(u8)(il )]; \ 385 373 yl ^= yr; \ 386 - yr = ror32(yr, 8); \ 374 + yr = ROR8(yr); \ 387 375 yr ^= yl; \ 388 376 } while(0) 389 377 ··· 405 393 subL[7] ^= subL[1]; subR[7] ^= subR[1]; 406 394 subL[1] ^= subR[1] & ~subR[9]; 407 395 dw = subL[1] & subL[9], 408 - subR[1] ^= rol32(dw, 1); /* modified for FLinv(kl2) */ 396 + subR[1] ^= ROL1(dw); /* modified for FLinv(kl2) */ 409 397 /* round 8 */ 410 398 subL[11] ^= subL[1]; subR[11] ^= subR[1]; 411 399 /* round 10 */ ··· 414 402 subL[15] ^= subL[1]; subR[15] ^= subR[1]; 415 403 subL[1] ^= subR[1] & ~subR[17]; 416 404 dw = subL[1] & subL[17], 417 - subR[1] ^= rol32(dw, 1); /* modified for FLinv(kl4) */ 405 + subR[1] ^= ROL1(dw); /* modified for FLinv(kl4) */ 418 406 /* round 14 */ 419 407 subL[19] ^= subL[1]; subR[19] ^= subR[1]; 420 408 /* round 16 */ ··· 430 418 } else { 431 419 subL[1] ^= subR[1] & ~subR[25]; 432 420 dw = subL[1] & subL[25], 433 - subR[1] ^= rol32(dw, 1); /* modified for FLinv(kl6) */ 421 + subR[1] ^= ROL1(dw); /* modified for FLinv(kl6) */ 434 422 /* round 20 */ 435 423 subL[27] ^= subL[1]; subR[27] ^= subR[1]; 436 424 /* round 22 */ ··· 450 438 subL[26] ^= kw4l; subR[26] ^= kw4r; 451 439 kw4l ^= kw4r & ~subR[24]; 452 440 dw = kw4l & subL[24], 453 - kw4r ^= rol32(dw, 1); /* modified for FL(kl5) */ 441 + kw4r ^= ROL1(dw); /* modified for FL(kl5) */ 454 442 } 455 443 /* round 17 */ 456 444 subL[22] ^= kw4l; subR[22] ^= kw4r; ··· 460 448 subL[18] ^= kw4l; subR[18] ^= kw4r; 461 449 kw4l ^= kw4r & ~subR[16]; 462 450 dw = kw4l & subL[16], 463 - kw4r ^= rol32(dw, 1); /* modified for FL(kl3) */ 451 + kw4r ^= ROL1(dw); /* modified for FL(kl3) */ 464 452 /* round 11 */ 465 453 subL[14] ^= kw4l; subR[14] ^= kw4r; 466 454 /* round 9 */ ··· 469 457 subL[10] ^= kw4l; subR[10] ^= kw4r; 470 458 kw4l ^= kw4r & ~subR[8]; 471 459 dw = kw4l & subL[8], 472 - kw4r ^= rol32(dw, 1); /* modified for FL(kl1) */ 460 + kw4r ^= ROL1(dw); /* modified for FL(kl1) */ 473 461 /* round 5 */ 474 462 subL[6] ^= kw4l; subR[6] ^= kw4r; 475 463 /* round 3 */ ··· 494 482 SUBKEY_R(6) = subR[5] ^ subR[7]; 495 483 tl = subL[10] ^ (subR[10] & ~subR[8]); 496 484 dw = tl & subL[8], /* FL(kl1) */ 497 - tr = subR[10] ^ rol32(dw, 1); 485 + tr = subR[10] ^ ROL1(dw); 498 486 SUBKEY_L(7) = subL[6] ^ tl; /* round 6 */ 499 487 SUBKEY_R(7) = subR[6] ^ tr; 500 488 SUBKEY_L(8) = subL[8]; /* FL(kl1) */ ··· 503 491 SUBKEY_R(9) = subR[9]; 504 492 tl = subL[7] ^ (subR[7] & ~subR[9]); 505 493 dw = tl & subL[9], /* FLinv(kl2) */ 506 - tr = subR[7] ^ rol32(dw, 1); 494 + tr = subR[7] ^ ROL1(dw); 507 495 SUBKEY_L(10) = tl ^ subL[11]; /* round 7 */ 508 496 SUBKEY_R(10) = tr ^ subR[11]; 509 497 SUBKEY_L(11) = subL[10] ^ subL[12]; /* round 8 */ ··· 516 504 SUBKEY_R(14) = subR[13] ^ subR[15]; 517 505 tl = subL[18] ^ (subR[18] & ~subR[16]); 518 506 dw = tl & subL[16], /* FL(kl3) */ 519 - tr = subR[18] ^ rol32(dw, 1); 507 + tr = subR[18] ^ ROL1(dw); 520 508 SUBKEY_L(15) = subL[14] ^ tl; /* round 12 */ 521 509 SUBKEY_R(15) = subR[14] ^ tr; 522 510 SUBKEY_L(16) = subL[16]; /* FL(kl3) */ ··· 525 513 SUBKEY_R(17) = subR[17]; 526 514 tl = subL[15] ^ (subR[15] & ~subR[17]); 527 515 dw = tl & subL[17], /* FLinv(kl4) */ 528 - tr = subR[15] ^ rol32(dw, 1); 516 + tr = subR[15] ^ ROL1(dw); 529 517 SUBKEY_L(18) = tl ^ subL[19]; /* round 13 */ 530 518 SUBKEY_R(18) = tr ^ subR[19]; 531 519 SUBKEY_L(19) = subL[18] ^ subL[20]; /* round 14 */ ··· 544 532 } else { 545 533 tl = subL[26] ^ (subR[26] & ~subR[24]); 546 534 dw = tl & subL[24], /* FL(kl5) */ 547 - tr = subR[26] ^ rol32(dw, 1); 535 + tr = subR[26] ^ ROL1(dw); 548 536 SUBKEY_L(23) = subL[22] ^ tl; /* round 18 */ 549 537 SUBKEY_R(23) = subR[22] ^ tr; 550 538 SUBKEY_L(24) = subL[24]; /* FL(kl5) */ ··· 553 541 SUBKEY_R(25) = subR[25]; 554 542 tl = subL[23] ^ (subR[23] & ~subR[25]); 555 543 dw = tl & subL[25], /* FLinv(kl6) */ 556 - tr = subR[23] ^ rol32(dw, 1); 544 + tr = subR[23] ^ ROL1(dw); 557 545 SUBKEY_L(26) = tl ^ subL[27]; /* round 19 */ 558 546 SUBKEY_R(26) = tr ^ subR[27]; 559 547 SUBKEY_L(27) = subL[26] ^ subL[28]; /* round 20 */ ··· 573 561 /* apply the inverse of the last half of P-function */ 574 562 i = 2; 575 563 do { 576 - dw = SUBKEY_L(i + 0) ^ SUBKEY_R(i + 0); dw = rol32(dw, 8);/* round 1 */ 564 + dw = SUBKEY_L(i + 0) ^ SUBKEY_R(i + 0); dw = ROL8(dw);/* round 1 */ 577 565 SUBKEY_R(i + 0) = SUBKEY_L(i + 0) ^ dw; SUBKEY_L(i + 0) = dw; 578 - dw = SUBKEY_L(i + 1) ^ SUBKEY_R(i + 1); dw = rol32(dw, 8);/* round 2 */ 566 + dw = SUBKEY_L(i + 1) ^ SUBKEY_R(i + 1); dw = ROL8(dw);/* round 2 */ 579 567 SUBKEY_R(i + 1) = SUBKEY_L(i + 1) ^ dw; SUBKEY_L(i + 1) = dw; 580 - dw = SUBKEY_L(i + 2) ^ SUBKEY_R(i + 2); dw = rol32(dw, 8);/* round 3 */ 568 + dw = SUBKEY_L(i + 2) ^ SUBKEY_R(i + 2); dw = ROL8(dw);/* round 3 */ 581 569 SUBKEY_R(i + 2) = SUBKEY_L(i + 2) ^ dw; SUBKEY_L(i + 2) = dw; 582 - dw = SUBKEY_L(i + 3) ^ SUBKEY_R(i + 3); dw = rol32(dw, 8);/* round 4 */ 570 + dw = SUBKEY_L(i + 3) ^ SUBKEY_R(i + 3); dw = ROL8(dw);/* round 4 */ 583 571 SUBKEY_R(i + 3) = SUBKEY_L(i + 3) ^ dw; SUBKEY_L(i + 3) = dw; 584 - dw = SUBKEY_L(i + 4) ^ SUBKEY_R(i + 4); dw = rol32(dw, 9);/* round 5 */ 572 + dw = SUBKEY_L(i + 4) ^ SUBKEY_R(i + 4); dw = ROL8(dw);/* round 5 */ 585 573 SUBKEY_R(i + 4) = SUBKEY_L(i + 4) ^ dw; SUBKEY_L(i + 4) = dw; 586 - dw = SUBKEY_L(i + 5) ^ SUBKEY_R(i + 5); dw = rol32(dw, 8);/* round 6 */ 574 + dw = SUBKEY_L(i + 5) ^ SUBKEY_R(i + 5); dw = ROL8(dw);/* round 6 */ 587 575 SUBKEY_R(i + 5) = SUBKEY_L(i + 5) ^ dw; SUBKEY_L(i + 5) = dw; 588 576 i += 8; 589 577 } while (i < max); ··· 599 587 /** 600 588 * k == kll || klr || krl || krr (|| is concatenation) 601 589 */ 602 - kll = get_unaligned_be32(key); 603 - klr = get_unaligned_be32(key + 4); 604 - krl = get_unaligned_be32(key + 8); 605 - krr = get_unaligned_be32(key + 12); 590 + GETU32(kll, key ); 591 + GETU32(klr, key + 4); 592 + GETU32(krl, key + 8); 593 + GETU32(krr, key + 12); 606 594 607 595 /* generate KL dependent subkeys */ 608 596 /* kw1 */ ··· 707 695 * key = (kll || klr || krl || krr || krll || krlr || krrl || krrr) 708 696 * (|| is concatenation) 709 697 */ 710 - kll = get_unaligned_be32(key); 711 - klr = get_unaligned_be32(key + 4); 712 - krl = get_unaligned_be32(key + 8); 713 - krr = get_unaligned_be32(key + 12); 714 - krll = get_unaligned_be32(key + 16); 715 - krlr = get_unaligned_be32(key + 20); 716 - krrl = get_unaligned_be32(key + 24); 717 - krrr = get_unaligned_be32(key + 28); 698 + GETU32(kll, key ); 699 + GETU32(klr, key + 4); 700 + GETU32(krl, key + 8); 701 + GETU32(krr, key + 12); 702 + GETU32(krll, key + 16); 703 + GETU32(krlr, key + 20); 704 + GETU32(krrl, key + 24); 705 + GETU32(krrr, key + 28); 718 706 719 707 /* generate KL dependent subkeys */ 720 708 /* kw1 */ ··· 870 858 t0 &= ll; \ 871 859 t2 |= rr; \ 872 860 rl ^= t2; \ 873 - lr ^= rol32(t0, 1); \ 861 + lr ^= ROL1(t0); \ 874 862 t3 = krl; \ 875 863 t1 = klr; \ 876 864 t3 &= rl; \ 877 865 t1 |= lr; \ 878 866 ll ^= t1; \ 879 - rr ^= rol32(t3, 1); \ 867 + rr ^= ROL1(t3); \ 880 868 } while(0) 881 869 882 870 #define CAMELLIA_ROUNDSM(xl, xr, kl, kr, yl, yr, il, ir) \ ··· 892 880 il ^= kl; \ 893 881 ir ^= il ^ kr; \ 894 882 yl ^= ir; \ 895 - yr ^= ror32(il, 8) ^ ir; \ 883 + yr ^= ROR8(il) ^ ir; \ 896 884 } while(0) 897 885 898 886 /* max = 24: 128bit encrypt, max = 32: 256bit encrypt */