| line |
true |
false |
branch |
|
12
|
0 |
136 |
if (!RETVAL) croak("FATAL: Newz failed"); |
|
18
|
0 |
136 |
if (RETVAL->cipher_id == -1) { |
|
45
|
330 |
0 |
if (!SvPOK_spec(key)) croak("FATAL: key must be string/buffer scalar"); |
|
|
0 |
330 |
if (!SvPOK_spec(key)) croak("FATAL: key must be string/buffer scalar"); |
|
|
0 |
0 |
if (!SvPOK_spec(key)) croak("FATAL: key must be string/buffer scalar"); |
|
|
0 |
0 |
if (!SvPOK_spec(key)) croak("FATAL: key must be string/buffer scalar"); |
|
|
0 |
0 |
if (!SvPOK_spec(key)) croak("FATAL: key must be string/buffer scalar"); |
|
49
|
0 |
330 |
if (rv != CRYPT_OK) { |
|
53
|
165 |
165 |
self->direction = ix == 1 ? 1 : -1; |
|
55
|
0 |
330 |
XPUSHs(ST(0)); /* return self */ |
|
68
|
3487 |
3486 |
for (j = 1; j < items; j++) { |
|
73
|
3485 |
2 |
if (in_data_len > 0) { |
|
74
|
1682 |
1803 |
if (self->direction == 1) { |
|
76
|
1356 |
326 |
if (self->padlen > 0) { |
|
78
|
585 |
771 |
if (in_data_len >= i) { /* enough data to fill pad */ |
|
83
|
0 |
585 |
if (rv != CRYPT_OK) { |
|
98
|
741 |
941 |
if (in_data_len > 0 && i > 0) { /* save tail of data into pad */ |
|
|
628 |
113 |
if (in_data_len > 0 && i > 0) { /* save tail of data into pad */ |
|
104
|
257 |
1425 |
if (in_data_len > 0) { |
|
105
|
96 |
161 |
i = (unsigned long)(has_tmp_block ? in_data_len + blen : in_data_len); |
|
106
|
257 |
0 |
out_data = (unsigned char*)SvGROW(RETVAL, out_len + i + 1) + out_len; |
|
|
250 |
7 |
out_data = (unsigned char*)SvGROW(RETVAL, out_len + i + 1) + out_len; |
|
108
|
96 |
161 |
if (has_tmp_block) { |
|
113
|
0 |
257 |
if (rv != CRYPT_OK) { |
|
118
|
489 |
936 |
else if (has_tmp_block) { |
|
119
|
489 |
0 |
out_data = (unsigned char*)SvGROW(RETVAL, out_len + blen + 1) + out_len; |
|
|
489 |
0 |
out_data = (unsigned char*)SvGROW(RETVAL, out_len + blen + 1) + out_len; |
|
124
|
1802 |
1 |
else if (self->direction == -1) { |
|
125
|
116 |
1686 |
if (self->padlen == blen) { |
|
127
|
0 |
116 |
if (rv != CRYPT_OK) { |
|
134
|
1470 |
216 |
else if (self->padlen > 0) { |
|
136
|
633 |
837 |
if (in_data_len >= i) { /* enough data to fill pad */ |
|
141
|
196 |
437 |
if (in_data_len>0 || self->padding_mode == 0) { |
|
|
64 |
132 |
if (in_data_len>0 || self->padding_mode == 0) { |
|
143
|
0 |
501 |
if (rv != CRYPT_OK) { |
|
159
|
769 |
1033 |
if (in_data_len>0) { |
|
161
|
633 |
136 |
if (i>0) { /* save tail of data into pad */ |
|
168
|
275 |
1527 |
if (in_data_len>0) { |
|
169
|
136 |
139 |
if (self->padlen == 0 && self->padding_mode !=0) { |
|
|
62 |
74 |
if (self->padlen == 0 && self->padding_mode !=0) { |
|
175
|
142 |
133 |
i = (unsigned long)(has_tmp_block ? in_data_len + blen : in_data_len); |
|
176
|
273 |
2 |
if (i > 0) { |
|
177
|
273 |
0 |
out_data = (unsigned char*)SvGROW(RETVAL, out_len + i + 1) + out_len; |
|
|
266 |
7 |
out_data = (unsigned char*)SvGROW(RETVAL, out_len + i + 1) + out_len; |
|
179
|
142 |
131 |
if (has_tmp_block) { |
|
184
|
0 |
273 |
if (rv != CRYPT_OK) { |
|
190
|
475 |
1052 |
else if (has_tmp_block) { |
|
191
|
475 |
0 |
out_data = (unsigned char*)SvGROW(RETVAL, out_len + blen + 1) + out_len; |
|
|
475 |
0 |
out_data = (unsigned char*)SvGROW(RETVAL, out_len + blen + 1) + out_len; |
|
202
|
1494 |
1992 |
if (out_len > 0) SvCUR_set(RETVAL, out_len); |
|
216
|
165 |
166 |
if (self->direction == 1) { |
|
217
|
165 |
0 |
if (self->padlen < 0 || self->padlen >= (int)blen) croak("FATAL: invalid padlen"); |
|
|
0 |
165 |
if (self->padlen < 0 || self->padlen >= (int)blen) croak("FATAL: invalid padlen"); |
|
218
|
79 |
86 |
if (self->padding_mode != 0) { |
|
219
|
79 |
0 |
if (self->padding_mode == 1) { padmode = LTC_PAD_PKCS7 | (&self->state)->blocklen; } |
|
220
|
0 |
0 |
else if (self->padding_mode == 2) { padmode = LTC_PAD_ONE_AND_ZERO | (&self->state)->blocklen; } |
|
221
|
0 |
0 |
else if (self->padding_mode == 3) { padmode = LTC_PAD_ANSI_X923 | (&self->state)->blocklen; } |
|
222
|
0 |
0 |
else if (self->padding_mode == 4) { padmode = LTC_PAD_ZERO | (&self->state)->blocklen; } |
|
223
|
0 |
0 |
else if (self->padding_mode == 5) { padmode = LTC_PAD_ZERO_ALWAYS | (&self->state)->blocklen; } |
|
227
|
0 |
79 |
if (rv != CRYPT_OK) croak("FATAL: padding_pad failed: %s", error_to_string(rv)); |
|
229
|
0 |
79 |
if (rv != CRYPT_OK) croak("FATAL: ecb_encrypt failed: %s", error_to_string(rv)); |
|
232
|
0 |
86 |
if (self->padlen > 0) croak("FATAL: ecb_encrypt, input data length not multiple of %d", (int)blen); |
|
236
|
165 |
1 |
else if (self->direction == -1) { |
|
237
|
78 |
87 |
if (self->padlen > 0) { |
|
238
|
0 |
78 |
if (self->padlen != (int)blen) croak("FATAL: cipher text length has to be multiple of %d (%d)", (int)blen, self->padlen); |
|
240
|
0 |
78 |
if (rv != CRYPT_OK) croak("FATAL: ecb_decrypt failed: %s", error_to_string(rv)); |
|
241
|
78 |
0 |
if (self->padding_mode != 0) { |
|
242
|
78 |
0 |
if (self->padding_mode == 1) { padmode = LTC_PAD_PKCS7 | (&self->state)->blocklen; } |
|
243
|
0 |
0 |
else if (self->padding_mode == 2) { padmode = LTC_PAD_ONE_AND_ZERO | (&self->state)->blocklen; } |
|
244
|
0 |
0 |
else if (self->padding_mode == 3) { padmode = LTC_PAD_ANSI_X923 | (&self->state)->blocklen; } |
|
245
|
0 |
0 |
else if (self->padding_mode == 4) { padmode = LTC_PAD_ZERO | (&self->state)->blocklen; } |
|
246
|
0 |
0 |
else if (self->padding_mode == 5) { padmode = LTC_PAD_ZERO_ALWAYS | (&self->state)->blocklen; } |
|
249
|
0 |
78 |
if (rv != CRYPT_OK) croak("FATAL: padding_depad failed: %s", error_to_string(rv)); |