diff options
Diffstat (limited to 'Master/xemtex/gslib/type1enc.ps')
-rw-r--r-- | Master/xemtex/gslib/type1enc.ps | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/Master/xemtex/gslib/type1enc.ps b/Master/xemtex/gslib/type1enc.ps new file mode 100644 index 00000000000..02573c42f01 --- /dev/null +++ b/Master/xemtex/gslib/type1enc.ps @@ -0,0 +1,66 @@ +% Copyright (C) 1992, 1993 Aladdin Enterprises. All rights reserved. +% +% This program is free software; you can redistribute it and/or modify it +% under the terms of the GNU General Public License as published by the +% Free Software Foundation; either version 2 of the License, or (at your +% option) any later version. +% +% This program is distributed in the hope that it will be useful, but +% WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +% Public License for more details. +% +% You should have received a copy of the GNU General Public License along +% with this program; if not, write to the Free Software Foundation, Inc., +% 59 Temple Place, Suite 330, Boston, MA, 02111-1307. + +% $Id: type1enc.ps,v 1.2.6.1.2.1 2003/04/12 14:02:39 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 |