Branch Coverage

src/pdfmake_crypt.c
Criterion Covered Total %
branch 157 192 81.7


line true false branch
38 117 0 size_t len = passwd ? strlen(passwd) : 0;
39 0 117 if (len > 32) len = 32;
41 75 42 if (len > 0) {
53 5 37 if (state == 0) {
57 476 42 for (i = 0; i < len; i++) {
97 13 50 if (ctx->R >= 4 && !encrypt_metadata) {
0 13 if (ctx->R >= 4 && !encrypt_metadata) {
109 28 35 if (ctx->R >= 3) {
110 1400 28 for (i = 0; i < 50; i++) {
136 15 0 pw = (owner_passwd && *owner_passwd) ? owner_passwd : user_passwd;
15 0 pw = (owner_passwd && *owner_passwd) ? owner_passwd : user_passwd;
144 12 3 if (ctx->R >= 3) {
145 600 12 for (i = 0; i < 50; i++) {
155 12 3 if (ctx->R >= 3) {
156 228 12 for (i = 1; i <= 19; i++) {
157 3648 228 for (j = 0; j < key_length; j++) {
193 228 12 for (i = 1; i <= 19; i++) {
194 3648 228 for (j = 0; j < ctx->file_key_len; j++) {
237 24 25 if (user_key) {
249 3136 280 while (round < 64 || (round - 32) < last_e_byte) {
231 49 while (round < 64 || (round - 32) < last_e_byte) {
251 1633 1734 k1_single = passwd_len + hash_len + (user_key ? 48 : 0);
254 0 3367 if (!K1) return;
256 215488 3367 for (i = 0; i < 64; i++) {
260 104512 110976 if (user_key) {
269 0 3367 if (!E) { free(K1); return; }
274 1024292 3367 for (pos = 0; pos < k1_len; pos += 16) {
275 16388672 1024292 for (j = 0; j < 16; j++) {
285 53872 3367 for (i = 0; i < 16; i++) sum += E[i];
288 1100 2267 if (hash_type == 0) {
291 1052 1215 } else if (hash_type == 1) {
328 7 0 passwd_len = user_passwd ? strlen(user_passwd) : 0;
329 0 7 if (passwd_len > 127) passwd_len = 127;
351 14 7 for (i = 0; i < 32; i += 16) {
352 224 14 for (j = 0; j < 16; j++) {
373 7 0 passwd_len = owner_passwd ? strlen(owner_passwd) : 0;
374 0 7 if (passwd_len > 127) passwd_len = 127;
396 14 7 for (i = 0; i < 32; i += 16) {
397 224 14 for (j = 0; j < 16; j++) {
424 7 0 perms_data[8] = ctx->encrypt_metadata ? 'T' : 'F';
467 8 14 if (doc_id_len > 16) doc_id_len = 16;
497 15 7 if (ctx->R <= 4) {
507 3 12 if (ctx->R == 2) {
519 7 0 op = (owner_passwd && *owner_passwd) ? owner_passwd : user_passwd;
7 0 op = (owner_passwd && *owner_passwd) ? owner_passwd : user_passwd;
553 16 9 if (V == 1) {
556 2 7 } else if (V == 2) {
558 2 5 } else if (V == 4) {
561 5 0 } else if (V == 5) {
569 25 0 if (O && O_len > 0) {
25 0 if (O && O_len > 0) {
573 25 0 if (U && U_len > 0) {
25 0 if (U && U_len > 0) {
577 5 20 if (OE && OE_len == 32) {
5 0 if (OE && OE_len == 32) {
580 5 20 if (UE && UE_len == 32) {
5 0 if (UE && UE_len == 32) {
583 5 20 if (Perms && Perms_len == 16) {
5 0 if (Perms && Perms_len == 16) {
587 25 0 if (doc_id && doc_id_len > 0) {
25 0 if (doc_id && doc_id_len > 0) {
620 32 16 if (ctx->R == 2) {
634 304 16 for (i = 1; i <= 19; i++) {
635 4864 304 for (j = 0; j < ctx->file_key_len; j++) {
660 8 16 if (ctx->R >= 3) {
661 400 8 for (i = 0; i < 50; i++) {
669 16 8 if (ctx->R == 2) {
673 160 8 for (i = 19; i >= 0; i--) {
674 2560 160 for (j = 0; j < ctx->key_length; j++) {
698 8 0 passwd_len = passwd ? strlen(passwd) : 0;
699 0 8 if (passwd_len > 127) passwd_len = 127;
705 5 3 if (memcmp(hash, ctx->U, 32) != 0) {
717 6 3 for (i = 0; i < 32; i += 16) {
719 96 6 for (j = 0; j < 16; j++) {
739 9 0 passwd_len = passwd ? strlen(passwd) : 0;
740 0 9 if (passwd_len > 127) passwd_len = 127;
746 8 1 if (memcmp(hash, ctx->O, 32) != 0) {
758 2 1 for (i = 0; i < 32; i += 16) {
760 32 2 for (j = 0; j < 16; j++) {
772 0 33 if (!ctx->initialized) {
776 24 9 if (ctx->R <= 4) {
778 0 24 if (authenticate_owner_r2_r4(ctx, passwd)) {
785 20 4 if (authenticate_user_r2_r4(ctx, passwd)) {
792 1 8 if (authenticate_owner_r6(ctx, passwd)) {
799 3 5 if (authenticate_user_r6(ctx, passwd)) {
832 22 109 if (ctx->R >= 6) {
851 8 101 if (ctx->R >= 4) {
859 16 93 if (key_len > 16) key_len = 16;
877 20 5 if (ctx->R >= 4) {
896 10 96 if (ctx->R >= 4) {
916 6 1 if (ctx->R >= 4) {
924 0 7 if (!*out) return -1;
928 0 7 if (result < 0) {
946 0 103 if (!*out) return -1;
950 0 103 if (result < 0) {
967 3 0 if (ctx->is_owner) {