diff options
author | Taru Karttunen <taruti@taruti.net> | 2011-03-30 16:53:33 +0300 |
---|---|---|
committer | Taru Karttunen <taruti@taruti.net> | 2011-03-30 16:53:33 +0300 |
commit | e463eb40363ff4c68b1d903f4e0cdd0ac1c5977f (patch) | |
tree | d5e9f57c28f026cb21de3bd77cc10cd7f64aaa85 /sys/lib/ghostscript/type1enc.ps | |
parent | b41b9034225ab3e49980d9de55c141011b6383b0 (diff) |
Import sources from 2011-03-30 iso image - sys/lib
Diffstat (limited to 'sys/lib/ghostscript/type1enc.ps')
-rwxr-xr-x | sys/lib/ghostscript/type1enc.ps | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/sys/lib/ghostscript/type1enc.ps b/sys/lib/ghostscript/type1enc.ps new file mode 100755 index 000000000..090841f58 --- /dev/null +++ b/sys/lib/ghostscript/type1enc.ps @@ -0,0 +1,65 @@ +% Copyright (C) 1992, 1993 Aladdin Enterprises. All rights reserved. +% +% This software is provided AS-IS with no warranty, either express or +% implied. +% +% This software is distributed under license and may not be copied, +% modified or distributed except as expressly authorized under the terms +% of the license contained in the file LICENSE in this distribution. +% +% For more information about licensing, please refer to +% http://www.ghostscript.com/licensing/. For information on +% commercial licensing, go to http://www.artifex.com/licensing/ or +% contact Artifex Software, Inc., 101 Lucas Valley Road #110, +% San Rafael, CA 94903, U.S.A., +1(415)492-9861. + +% $Id: type1enc.ps,v 1.4 2002/02/21 21:49:28 giles Exp $ +% type1enc.ps +% PostScript language versions of the Type 1 encryption/decryption algorithms. + +% This file is normally not needed with Ghostscript, since Ghostscript +% implements these algorithms in C. For the specifications, see Chapter 7 of +% "Adobe Type 1 Font Format," ISBN 0-201-57044-0, published by Addison-Wesley. + +/.type1crypt % <R> <from> <to> <proc> .type1crypt <R'> <to> + % (auxiliary procedure) + { 4 1 roll + 0 2 index length getinterval + 0 1 2 index length 1 sub + { % Stack: proc R from to index + 2 index 1 index get % proc R from to index C/P + 4 index -8 bitshift xor 3 copy put % proc R from to index P/C + 5 index exec % proc R from to C + +% Compute R' = ((R + C) * 52845 + 22719) mod 65536 +% without exceeding a 31-bit integer magnitude, given that +% 0 <= R <= 65535 and 0 <= C <= 255. + + 4 -1 roll add + dup 20077 mul % 52845 - 32768 + exch 1 and 15 bitshift add % only care about 16 low-order bits + 22719 add 65535 and 3 1 roll + } + for exch pop 3 -1 roll pop + } bind def + +% <state> <fromString> <toString> .type1encrypt <newState> <toSubstring> +% Encrypts fromString according to the algorithm for Adobe +% Type 1 fonts, writing the result into toString. +% toString must be at least as long as fromString or a +% rangecheck error occurs. state is the initial state of +% the encryption algorithm (a 16-bit non-negative +% integer); newState is the new state of the algorithm. + +/.type1encrypt + { { exch pop } .type1crypt + } bind def + +% <state> <fromString> <toString> .type1decrypt <newState> <toSubstring> +% Decrypts fromString according to the algorithm for Adobe +% Type 1 fonts, writing the result into toString. Other +% specifications are as for type1encrypt. + +/.type1decrypt + { { pop 2 index exch get } .type1crypt + } bind def |