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