Changeset 4037
- Timestamp:
- 12/03/10 18:40:38 (13 years ago)
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/cscrypt/rc6.c
r4036 r4037 64 64 } 65 65 66 void rc6_block_encrypt(unsigned int *pt, unsigned int *ct, RC6KEY S)66 void rc6_block_encrypt(unsigned int *pt, unsigned int *ct, int block_count, RC6KEY S) 67 67 { 68 68 unsigned int A, B, C, D, t, u, x; 69 69 int i; 70 70 71 A = pt[0]; 72 B = pt[1]; 73 C = pt[2]; 74 D = pt[3]; 75 B += S[0]; 76 D += S[1]; 77 for (i = 2; i <= 2 * r; i += 2) 78 { 79 t = ROTL(B * (2 * B + 1), lgw); 80 u = ROTL(D * (2 * D + 1), lgw); 81 A = ROTL(A ^ t, u) + S[i]; 82 C = ROTL(C ^ u, t) + S[i + 1]; 83 x = A; 84 A = B; 85 B = C; 86 C = D; 87 D = x; 88 } 89 A += S[2 * r + 2]; 90 C += S[2 * r + 3]; 91 ct[0] = A; 92 ct[1] = B; 93 ct[2] = C; 94 ct[3] = D; 95 } 96 97 void rc6_block_decrypt(unsigned int *ct, unsigned int *pt, RC6KEY S) 71 while (block_count>0) { 72 A = pt[0]; 73 B = pt[1]; 74 C = pt[2]; 75 D = pt[3]; 76 B += S[0]; 77 D += S[1]; 78 for (i = 2; i <= 2 * r; i += 2) 79 { 80 t = ROTL(B * (2 * B + 1), lgw); 81 u = ROTL(D * (2 * D + 1), lgw); 82 A = ROTL(A ^ t, u) + S[i]; 83 C = ROTL(C ^ u, t) + S[i + 1]; 84 x = A; 85 A = B; 86 B = C; 87 C = D; 88 D = x; 89 } 90 A += S[2 * r + 2]; 91 C += S[2 * r + 3]; 92 ct[0] = A; 93 ct[1] = B; 94 ct[2] = C; 95 ct[3] = D; 96 97 block_count--; 98 pt++; 99 ct++; 100 } 101 } 102 103 void rc6_block_decrypt(unsigned int *ct, unsigned int *pt, int block_count, RC6KEY S) 98 104 { 99 105 unsigned int A, B, C, D, t, u, x; 100 106 int i; 101 107 102 A = ct[0]; 103 B = ct[1]; 104 C = ct[2]; 105 D = ct[3]; 106 C -= S[2 * r + 3]; 107 A -= S[2 * r + 2]; 108 for (i = 2 * r; i >= 2; i -= 2) 109 { 110 x = D; 111 D = C; 112 C = B; 113 B = A; 114 A = x; 115 u = ROTL(D * (2 * D + 1), lgw); 116 t = ROTL(B * (2 * B + 1), lgw); 117 C = ROTR(C - S[i + 1], t) ^ u; 118 A = ROTR(A - S[i], u) ^ t; 119 } 120 D -= S[1]; 121 B -= S[0]; 122 pt[0] = A; 123 pt[1] = B; 124 pt[2] = C; 125 pt[3] = D; 108 while (block_count>0) { 109 A = ct[0]; 110 B = ct[1]; 111 C = ct[2]; 112 D = ct[3]; 113 C -= S[2 * r + 3]; 114 A -= S[2 * r + 2]; 115 for (i = 2 * r; i >= 2; i -= 2) 116 { 117 x = D; 118 D = C; 119 C = B; 120 B = A; 121 A = x; 122 u = ROTL(D * (2 * D + 1), lgw); 123 t = ROTL(B * (2 * B + 1), lgw); 124 C = ROTR(C - S[i + 1], t) ^ u; 125 A = ROTR(A - S[i], u) ^ t; 126 } 127 D -= S[1]; 128 B -= S[0]; 129 pt[0] = A; 130 pt[1] = B; 131 pt[2] = C; 132 pt[3] = D; 133 134 block_count--; 135 ct++; 136 pt++; 137 } 126 138 } 127 139 -
trunk/cscrypt/rc6.h
r4036 r4037 35 35 */ 36 36 void rc6_key_setup(unsigned char *K, int b, RC6KEY S); 37 void rc6_block_encrypt(unsigned int *pt, unsigned int *ct, RC6KEY S);38 void rc6_block_decrypt(unsigned int *ct, unsigned int *pt, RC6KEY S);37 void rc6_block_encrypt(unsigned int *pt, unsigned int *ct, int block_count, RC6KEY S); 38 void rc6_block_decrypt(unsigned int *ct, unsigned int *pt, int block_count, RC6KEY S); -
trunk/module-cccam.c
r4036 r4037 118 118 } 119 119 case MODE_CMD_0x0C_RC6 : { //RC6 120 rc6_block_decrypt((unsigned int*)buf, (unsigned int*)out, cc->cmd0c_RC6_cryptkey); // TODO RC6120 rc6_block_decrypt((unsigned int*)buf, (unsigned int*)out, len/4, cc->cmd0c_RC6_cryptkey); 121 121 break; 122 122 }
Note:
See TracChangeset
for help on using the changeset viewer.