Coverage Report

Created: 2025-08-28 07:06

/src/ghostpdl/base/gscrypt1.c
Line
Count
Source
1
/* Copyright (C) 2001-2023 Artifex Software, Inc.
2
   All Rights Reserved.
3
4
   This software is provided AS-IS with no warranty, either express or
5
   implied.
6
7
   This software is distributed under license and may not be copied,
8
   modified or distributed except as expressly authorized under the terms
9
   of the license contained in the file LICENSE in this distribution.
10
11
   Refer to licensing information at http://www.artifex.com or contact
12
   Artifex Software, Inc.,  39 Mesa Street, Suite 108A, San Francisco,
13
   CA 94129, USA, for further information.
14
*/
15
16
17
/* Adobe Type 1 encryption/decryption. */
18
#include "stdpre.h"
19
#include "gstypes.h"
20
#include "gscrypt1.h"
21
22
/* Encrypt a string. */
23
int
24
gs_type1_encrypt(byte * dest, const byte * src, uint len, crypt_state * pstate)
25
568k
{
26
568k
    crypt_state state = *pstate;
27
568k
    const byte *from = src;
28
568k
    byte *to = dest;
29
568k
    uint count = len;
30
31
39.0M
    while (count) {
32
38.4M
        encrypt_next(*from, state, *to);
33
38.4M
        from++, to++, count--;
34
38.4M
    }
35
568k
    *pstate = state;
36
568k
    return 0;
37
568k
}
38
/* Decrypt a string. */
39
int
40
gs_type1_decrypt(byte * dest, const byte * src, uint len, crypt_state * pstate)
41
218M
{
42
218M
    crypt_state state = *pstate;
43
218M
    const byte *from = src;
44
218M
    byte *to = dest;
45
218M
    uint count = len;
46
47
8.90G
    while (count) {
48
        /* If from == to, we can't use the obvious */
49
        /*      decrypt_next(*from, state, *to);        */
50
8.68G
        byte ch = *from++;
51
52
8.68G
        decrypt_next(ch, state, *to);
53
8.68G
        to++, count--;
54
8.68G
    }
55
218M
    *pstate = state;
56
218M
    return 0;
57
218M
}