Branch Coverage

inc/CryptX_Mode_CBC.xs.inc
Criterion Covered Total %
branch 104 160 65.0


line true false branch
12 0 130 if (!RETVAL) croak("FATAL: Newz failed");
18 0 130 if (RETVAL->cipher_id == -1) {
47 324 0 if (!SvPOK_spec(key)) croak("FATAL: key must be string/buffer scalar");
0 324 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");
50 324 0 if (!SvPOK_spec(iv)) croak("FATAL: iv must be string/buffer scalar");
0 324 if (!SvPOK_spec(iv)) croak("FATAL: iv must be string/buffer scalar");
0 0 if (!SvPOK_spec(iv)) croak("FATAL: iv must be string/buffer scalar");
0 0 if (!SvPOK_spec(iv)) croak("FATAL: iv must be string/buffer scalar");
0 0 if (!SvPOK_spec(iv)) croak("FATAL: iv must be string/buffer scalar");
52 0 324 if (i_len != (STRLEN)cipher_descriptor[self->cipher_id].block_length) {
56 0 324 if (rv != CRYPT_OK) {
60 161 163 self->direction = ix == 1 ? 1 : -1;
62 0 324 XPUSHs(ST(0)); /* return self */
75 3491 3490 for (j = 1; j < items; j++) {
80 3488 3 if (in_data_len > 0) {
81 1688 1800 if (self->direction == 1) {
83 1360 328 if (self->padlen > 0) {
85 585 775 if (in_data_len >= i) { /* enough data to fill pad */
90 0 585 if (rv != CRYPT_OK) {
105 765 923 if (in_data_len > 0 && i > 0) { /* save tail of data into pad */
678 87 if (in_data_len > 0 && i > 0) { /* save tail of data into pad */
111 246 1442 if (in_data_len > 0) {
112 96 150 i = (unsigned long)(has_tmp_block ? in_data_len + blen : in_data_len);
113 246 0 out_data = (unsigned char*)SvGROW(RETVAL, out_len + i + 1) + out_len;
246 0 out_data = (unsigned char*)SvGROW(RETVAL, out_len + i + 1) + out_len;
115 96 150 if (has_tmp_block) {
120 0 246 if (rv != CRYPT_OK) {
125 489 953 else if (has_tmp_block) {
126 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;
131 1799 1 else if (self->direction == -1) {
132 116 1683 if (self->padlen == blen) {
134 0 116 if (rv != CRYPT_OK) {
141 1470 213 else if (self->padlen > 0) {
143 633 837 if (in_data_len >= i) { /* enough data to fill pad */
148 196 437 if (in_data_len>0 || self->padding_mode == 0) {
64 132 if (in_data_len>0 || self->padding_mode == 0) {
150 0 501 if (rv != CRYPT_OK) {
166 766 1033 if (in_data_len>0) {
168 633 133 if (i>0) { /* save tail of data into pad */
175 272 1527 if (in_data_len>0) {
176 133 139 if (self->padlen == 0 && self->padding_mode !=0) {
82 51 if (self->padlen == 0 && self->padding_mode !=0) {
182 142 130 i = (unsigned long)(has_tmp_block ? in_data_len + blen : in_data_len);
183 263 9 if (i > 0) {
184 263 0 out_data = (unsigned char*)SvGROW(RETVAL, out_len + i + 1) + out_len;
263 0 out_data = (unsigned char*)SvGROW(RETVAL, out_len + i + 1) + out_len;
186 142 121 if (has_tmp_block) {
191 0 263 if (rv != CRYPT_OK) {
197 475 1052 else if (has_tmp_block) {
198 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;
209 1473 2017 if (out_len > 0) SvCUR_set(RETVAL, out_len);
223 161 164 if (self->direction == 1) {
224 161 0 if (self->padlen < 0 || self->padlen >= (int)blen) croak("FATAL: invalid padlen");
0 161 if (self->padlen < 0 || self->padlen >= (int)blen) croak("FATAL: invalid padlen");
225 98 63 if (self->padding_mode != 0) {
226 53 45 if (self->padding_mode == 1) { padmode = LTC_PAD_PKCS7 | (&self->state)->ecb.blocklen; }
227 45 0 else if (self->padding_mode == 2) { padmode = LTC_PAD_ONE_AND_ZERO | (&self->state)->ecb.blocklen; }
228 0 0 else if (self->padding_mode == 3) { padmode = LTC_PAD_ANSI_X923 | (&self->state)->ecb.blocklen; }
229 0 0 else if (self->padding_mode == 4) { padmode = LTC_PAD_ZERO | (&self->state)->ecb.blocklen; }
230 0 0 else if (self->padding_mode == 5) { padmode = LTC_PAD_ZERO_ALWAYS | (&self->state)->ecb.blocklen; }
234 0 98 if (rv != CRYPT_OK) croak("FATAL: padding_pad failed: %s", error_to_string(rv));
236 0 98 if (rv != CRYPT_OK) croak("FATAL: cbc_encrypt failed: %s", error_to_string(rv));
239 0 63 if (self->padlen > 0) croak("FATAL: cbc_encrypt, input data length not multiple of %d", (int)blen);
243 163 1 else if (self->direction == -1) {
244 98 65 if (self->padlen > 0) {
245 0 98 if (self->padlen != (int)blen) croak("FATAL: cipher text length has to be multiple of %d (%d)", (int)blen, self->padlen);
247 0 98 if (rv != CRYPT_OK) croak("FATAL: cbc_decrypt failed: %s", error_to_string(rv));
248 98 0 if (self->padding_mode != 0) {
249 53 45 if (self->padding_mode == 1) { padmode = LTC_PAD_PKCS7 | (&self->state)->ecb.blocklen; }
250 45 0 else if (self->padding_mode == 2) { padmode = LTC_PAD_ONE_AND_ZERO | (&self->state)->ecb.blocklen; }
251 0 0 else if (self->padding_mode == 3) { padmode = LTC_PAD_ANSI_X923 | (&self->state)->ecb.blocklen; }
252 0 0 else if (self->padding_mode == 4) { padmode = LTC_PAD_ZERO | (&self->state)->ecb.blocklen; }
253 0 0 else if (self->padding_mode == 5) { padmode = LTC_PAD_ZERO_ALWAYS | (&self->state)->ecb.blocklen; }
256 1 97 if (rv != CRYPT_OK) croak("FATAL: padding_depad failed: %s", error_to_string(rv));
263 1 64 if (self->padding_mode != 0) croak("FATAL: cipher text length has to be at least one block with padding");