summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/oberdiek/pdfcrypt.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/generic/oberdiek/pdfcrypt.sty')
-rw-r--r--Master/texmf-dist/tex/generic/oberdiek/pdfcrypt.sty555
1 files changed, 555 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/generic/oberdiek/pdfcrypt.sty b/Master/texmf-dist/tex/generic/oberdiek/pdfcrypt.sty
new file mode 100644
index 00000000000..0f4f4102146
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/oberdiek/pdfcrypt.sty
@@ -0,0 +1,555 @@
+%%
+%% This is file `pdfcrypt.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% pdfcrypt.dtx (with options: `package')
+%%
+%% This is a generated file.
+%%
+%% Copyright (C) 2001, 2006 by Heiko Oberdiek <oberdiek@uni-freiburg.de>
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% This Current Maintainer of this work is Heiko Oberdiek.
+%%
+%% This work consists of the main source file pdfcrypt.dtx
+%% and the derived files
+%% pdfcrypt.sty, pdfcrypt.pdf, pdfcrypt.ins, pdfcrypt.drv.
+%%
+\expandafter\edef\csname pc@endinput\endcsname{%
+ \catcode`\noexpand\@=\the\catcode`\@\relax
+ \noexpand\endinput
+}
+\catcode`\@=11 %
+
+\expandafter\ifx\csname @firstoftwo\endcsname\relax
+ \long\def\@firstoftwo#1#2{#1}%
+\fi
+
+\expandafter\ifx\csname @secondoftwo\endcsname\relax
+ \long\def\@secondoftwo#1#2{#2}%
+\fi
+
+\expandafter\ifx\csname @ifundefined\endcsname\relax
+ \def\@ifundefined#1{%
+ \expandafter\ifx\csname #1\endcsname\relax
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ }%
+\fi
+
+\@ifundefined{@ifnextchar}{%
+ \long\def\@ifnextchar#1#2#3{%
+ \let\reserved@d=#1%
+ \def\reserved@a{#2}%
+ \def\reserved@b{#3}%
+ \futurelet\@let@token\@ifnch
+ }%
+ \def\@ifnch{%
+ \ifx\@let@token\@sptoken
+ \let\reserved@c\@xifnch
+ \else
+ \ifx\@let@token\reserved@d
+ \let\reserved@c\reserved@a
+ \else
+ \let\reserved@c\reserved@b
+ \fi
+ \fi
+ \reserved@c
+ }%
+ \begingroup
+ \def\:{\global\let\@sptoken= }%
+ \: %
+ \def\:{\@xifnch}%
+ \expandafter\gdef\: {\futurelet\@let@token\@ifnch}%
+ \endgroup
+}{}
+
+\@ifundefined{ProvidesPackage}{%
+ \def\ProvidesPackage#1{%
+ \@ifnextchar[{\pc@ProvidesPackage{#1}}
+ {\pc@ProvidesPackage{#1}[]}%
+ }%
+ \def\pc@ProvidesPackage#1[#2]{%
+ \immediate\write-1{Package: #1 #2}%
+ }%
+}{}
+
+\@ifundefined{PackageError}{%
+ \def\PackageError#1#2#3{%
+ \begingroup
+ \newlinechar=10 %
+ \errhelp{#3}%
+ \errmessage{%
+ \MessageBreak
+ Package #1 Error: #2.\MessageBreak
+ \MessageBreak
+ See the #1 package documentation for explanation.\MessageBreak
+ Type \space H <return> \space for immediate help%
+ }%
+ \endgroup
+ }%
+}{}
+
+\@ifundefined{PackageWarning}{%
+ \def\PackageWarning#1#2{%
+ \begingroup
+ \newlinechar=10 %
+ \def\MessageBreak{%
+ ^^J(#1)\@spaces\@spaces\@spaces\@spaces
+ }%
+ \immediate\write16{^^JPackage #1 Warning: #2\on@line.^^J}%
+ \endgroup
+ }%
+}{}
+
+\@ifundefined{PackageWarningNoLine}{%
+ \def\PackageWarningNoLine#1#2{%
+ \PackageWarning{#1}{#2\@gobble}%
+ }%
+}{}
+
+\@ifundefined{@gobble}{%
+ \long\def\@gobble#1{}%
+}{}
+
+\@ifundefined{on@line}{%
+ \def\on@line{ on input line \the\inputlineno}%
+}{}
+
+\@ifundefined{@empty}{%
+ \def\@empty{}%
+}{}
+\ProvidesPackage{pdfcrypt}%
+ [2006/02/20 v0.8 Setting pdf encryption (HO)]
+\@ifundefined{pdfcryptsetup}{%
+ \let\pdfcryptsetup\@gobble
+}{%
+ \PackageWarningNoLine{pdfcrypt}{Package pdfcrypt is already loaded}%
+ \pc@endinput
+}
+\newif\ifpc@nopdfcrypt
+\ifx Y\nopdfcrypt
+ \PackageWarningNoLine{pdfcrypt}{%
+ Encryption disabled by \string \nopdfcrypt\space request%
+ }%
+ \global\pc@nopdfcrypttrue
+\fi
+\let\pc@driver\@empty
+\begingroup
+ % pdfTeX detection
+ \@ifundefined{pdfoutput}{%
+ }{%
+ \ifcase\pdfoutput
+ \else
+ \@ifundefined{pdfcrypt}{%
+ \PackageError{pdfcrypt}{%
+ PDF encryption is not supported with this pdfTeX%
+ }{%
+ Encryption support was added in 0.14h (2001/03/10)\MessageBreak
+ and removed in 1.10a (2003/01/16).%
+ }%
+ \endgroup
+ \pc@endinput
+ }{%
+ \gdef\pc@driver{pdftex}%
+ }
+ \fi
+ }%
+ % VTeX detection
+ \@ifundefined{OpMode}{%
+ }{%
+ \ifnum\OpMode=1 %
+ \ifnum\@ifundefined{VTeXversion}0\VTeXversion<735 %
+ \PackageError{pdfcrypt}{%
+ PDF encryption is not supported with this VTeX%
+ }{%
+ You need VTeX 7.35 or higher.%
+ }%
+ \endgroup
+ \pc@endinput
+ \else
+ \gdef\pc@driver{vtex}%
+ \fi
+ \fi
+ }%
+\endgroup
+\@ifundefined{@makeother}{%
+ \def\@makeother#1{\catcode`#1=12\relax}%
+}{}
+
+\@ifundefined{g@addto@macro}{%
+ \long\def\g@addto@macro#1#2{%
+ \begingroup
+ \toks@\expandafter{#1#2}%
+ \xdef#1{\the\toks@}%
+ \endgroup
+ }%
+}{}
+
+\@ifundefined{@namedef}{%
+ \def\@namedef#1{\expandafter\def\csname#1\endcsname}
+}{}
+
+\@ifundefined{@nameuse}{%
+ \def\@nameuse#1{\csname #1\endcsname}%
+}{}
+
+\@ifundefined{MessageBreak}{%
+ \def\MessageBreak{^^J}%
+}{}
+
+\@ifundefined{@ehc}{%
+ \def\@ehc{%
+ Try typing \space <return> \space to proceed.\MessageBreak
+ If that doesn't work, type \space X <return> \space
+ to quit.%
+ }%
+}{}
+
+\@ifundefined{PackageInfo}{%
+ \def\PackageInfo#1#2{%
+ \begingroup
+ \newlinechar=10 %
+ \def\MessageBreak{%
+ ^^J(#1) \space\@spaces\@spaces\@spaces
+ }%
+ \wlog{Package #1 Info: #2}%
+ \endgroup
+ }%
+}{}
+
+\@ifundefined{@spaces}{%
+ \def\@spaces{\space\space\space\space}%
+}{}
+
+\def\pc@KeyvalRestore{%
+ \let\pc@KeyvalRestore\@undefined
+}
+
+\let\pcOrg@NeedsTeXFormat\NeedsTeXFormat
+\@ifundefined{NeedsTeXFormat}{%
+ \def\NeedsTeXFormat#1{}%
+ \g@addto@macro\pc@KeyvalRestore{%
+ \let\NeedsTeXFormat\pcOrg@NeedsTeXFormat
+ }%
+}{}
+
+\let\pcOrg@DeclareOption\DeclareOption
+\@ifundefined{DeclareOption}{%
+ \def\DeclareOption#1#2{#2}%
+ \g@addto@macro\pc@KeyvalRestore{%
+ \let\DeclareOption\pcOrg@DeclareOption
+ }%
+}{}
+
+\let\pcOrg@ExecuteOptions\ExecuteOptions
+\@ifundefined{ExecuteOptions}{%
+ \def\ExecuteOptions#1{}%
+ \g@addto@macro\pc@KeyvalRestore{%
+ \let\ExecuteOptions\pcOrg@ExecuteOptions
+ }%
+}{}
+
+\let\pcOrg@ProcessOptions\ProcessOptions
+\@ifundefined{ProcessOptions}{%
+ \def\ProcessOptions{}%
+ \g@addto@macro\pc@KeyvalRestore{%
+ \let\ProcessOptions\pcOrg@ProcessOptions
+ }%
+}{}%
+
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname RequirePackage\endcsname\relax
+ \input keyval.sty
+\else
+ \RequirePackage{keyval}
+\fi
+\pc@KeyvalRestore
+\@ifundefined{@dblarg}{%
+ \long\def\@dblarg#1{\@ifnextchar[{#1}{\@xdblarg{#1}}}
+ \long\def\@xdblarg#1#2{#1[{#2}]{#2}}
+}{}
+
+\newif\ifpc@set
+\newif\ifpc@print
+\newif\ifpc@copy
+\newif\ifpc@edit
+\newif\ifpc@annotate
+\newif\ifpc@debug
+\let\pc@owner\@empty
+\let\pc@user\@empty
+
+\pc@printtrue
+\pc@copytrue
+\pc@edittrue
+\pc@annotatetrue
+
+\edef\pc@temp{\catcode`\noexpand\"=\the\catcode`\"\relax}
+\@makeother\"
+\def\pc@set{%
+ \PackageInfo{pdfcrypt}{%
+ \ifpc@debug
+ \ifx\pc@owner\@empty
+ No owner password%
+ \else
+ Owner password: `\pc@owner'%
+ \fi
+ \MessageBreak
+ \ifx\pc@user\@empty
+ No user password%
+ \else
+ User password: `\pc@user'%
+ \fi
+ \MessageBreak
+ Flags: %
+ \ifpc@print \else no\fi print, %
+ \ifpc@copy \else no\fi copy, %
+ \ifpc@edit \else no\fi edit, %
+ \ifpc@annotate\else no\fi annotate%
+ \MessageBreak
+ \fi
+ \ifpc@nopdfcrypt
+ Encryption is disabled by `\string\nopdfcrypt'%
+ \else
+ Encryption is set for `\pc@driver'%
+ \fi
+ }
+ \ifpc@nopdfcrypt
+ \else
+ \@ifundefined{pc@set@\pc@driver}{%
+ \ifx\pc@driver\@empty
+ \PackageError{pdfcrypt}{No driver for encryption %
+ support found}\@ehc
+ \else
+ \PackageError{pdfcrypt}{Cannot set encryption for %
+ unknown driver `\pc@driver'}\@ehc
+ \fi
+ }{%
+ \@nameuse{pc@set@\pc@driver}%
+ }%
+ \fi
+}
+\def\pc@set@pdftex{%
+ \ifnum\pdftexversion<100 %
+ \pc@set@pdftexold
+ \else
+ \pc@set@pdftexnew
+ \fi
+}
+\def\pc@set@pdftexold{%
+ \pdfcrypt{%
+ owner "\pc@owner"
+ user "\pc@user"
+ \ifpc@print \else no\fi print
+ \ifpc@copy \else no\fi copy
+ \ifpc@edit \else no\fi edit
+ \ifpc@annotate\else no\fi annotate%
+ }%
+}
+\def\pc@set@pdftexnew{%
+ \pdfcrypt
+ owner{\pc@owner}%
+ user{\pc@user}%
+ \ifpc@print \else no\fi print
+ \ifpc@copy \else no\fi copy
+ \ifpc@edit \else no\fi edit
+ \ifpc@annotate\else no\fi annotate%
+ \relax
+}
+\def\pc@set@vtex{%
+ \immediate\special{!security %
+ O=\pc@MakeVTeXString\pc@owner,%
+ U=\pc@MakeVTeXString\pc@user,%
+ P\ifpc@print +\else -\fi,%
+ C\ifpc@copy +\else -\fi,%
+ M\ifpc@edit +\else -\fi,%
+ A\ifpc@annotate +\else -\fi
+ }%
+}
+\def\pc@MakeVTeXString#1{%
+ "\expandafter\pc@@MakeVTeXString#1"\@nil"%
+}
+\def\pc@@MakeVTeXString#1"#2\@nil{%
+ #1%
+ \ifx\\#2\\%
+ \else
+ ""%
+ \@ReturnAfterFi{%
+ \pc@@MakeVTeXString#2\@nil
+ }%
+ \fi
+}
+\long\def\@ReturnAfterFi#1\fi{\fi#1}
+\pc@temp
+
+\begingroup
+ \catcode`\ =12 \gdef\pc@spaceother{ }\catcode`\ =10\relax
+ \catcode`\|=0 %
+ \catcode`\\=12 %
+ |gdef|pc@DefString#1#2{%
+ |def#1{#2}%
+ |edef#1{|expandafter|strip@prefix|meaning#1}%
+ |edef#1{|expandafter|pc@SpaceToOther#1 |@nil}%
+ |edef#1{|expandafter|pc@EscapeRemove#1|@empty\|@empty|@nil}%
+ }
+ |gdef|pc@EscapeRemove#1\#2#3|@nil{%
+ #1#2%
+ |ifx|\#3|\%
+ |else
+ |@ReturnAfterFi{%
+ |pc@EscapeRemove#3|@nil
+ }%
+ |fi
+ }
+|endgroup
+\def\pc@SpaceToOther#1 #2\@nil{%
+ #1%
+ \ifx\\#2\\%
+ \else
+ \pc@spaceother
+ \@ReturnAfterFi{%
+ \pc@SpaceToOther#2\@nil
+ }%
+ \fi
+}
+
+\def\pc@boolkey{\@dblarg\pc@@boolkey}
+\def\pc@@boolkey[#1]#2#3{%
+ \lowercase{\def\pc@temp{#3}}%
+ \ifx\pc@temp\@empty
+ \let\pc@temp\pc@true
+ \fi
+ \ifx\pc@temp\pc@true
+ \else
+ \ifx\pc@temp\pc@false
+ \else
+ \let\pc@temp\relax
+ \fi
+ \fi
+ \ifx\pc@temp\relax
+ \PackageWarning{pdfcrypt}{%
+ Unexpected value \string`#3\string' of
+ option \string`#2\string'\MessageBreak
+ instead of
+ \string`true\string' or \string`false\string'%
+ }%
+ \else
+ \csname pc@#2\pc@temp\endcsname
+ \fi
+}
+\def\pc@true{true}
+\def\pc@false{false}
+
+\define@key{pc}{set}[true]{%
+ \pc@boolkey{set}{#1}%
+}
+\define@key{pc}{pdftex}[]{%
+ \def\pc@driver{pdftex}%
+}
+\define@key{pc}{vtex}[]{%
+ \def\pc@driver{vtex}%
+}
+\define@key{pc}{print}[true]{%
+ \pc@boolkey{print}{#1}%
+}
+\define@key{pc}{copy}[true]{%
+ \pc@boolkey{copy}{#1}%
+}
+\define@key{pc}{edit}[true]{%
+ \pc@boolkey{edit}{#1}%
+}
+\define@key{pc}{annotate}[true]{%
+ \pc@boolkey{annotate}{#1}%
+}
+\define@key{pc}{all}[]{%
+ \pc@boolkey{print}{true}%
+ \pc@boolkey{copy}{true}%
+ \pc@boolkey{edit}{true}%
+ \pc@boolkey{annotate}{true}%
+}
+\define@key{pc}{none}[]{%
+ \pc@boolkey{print}{false}%
+ \pc@boolkey{copy}{false}%
+ \pc@boolkey{edit}{false}%
+ \pc@boolkey{annotate}{false}%
+}
+
+\define@key{pc}{owner}{%
+ \pc@DefString\pc@owner{#1}%
+}
+\define@key{pc}{user}{%
+ \pc@DefString\pc@user{#1}%
+}
+\define@key{pc}{debug}[true]{%
+ \pc@boolkey{debug}{#1}%
+}
+
+\def\pdfcryptsetup#1{%
+ \setkeys{pc}{#1}%
+ \ifpc@set
+ \pc@set
+ \global\let\pc@set\relax
+ \gdef\pdfcryptsetup##1{%
+ \PackageWarning{pdfcrypt}{%
+ Encryption options are already set\MessageBreak
+ new values are ignored%
+ }%
+ }%
+ \fi
+}
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname @onlypreamble\endcsname\relax
+\else
+ \@onlypreamble\pdfcryptsetup
+\fi
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname InputIfFileExists\endcsname\relax
+ \PackageInfo{pdfcrypt}{%
+ Configuration file pdfcrypt.cfg not supported.%
+ }%
+\else
+ \let\pc@ExecuteOptions\ExecuteOptions
+ \InputIfFileExists{pdfcrypt.cfg}{}{}
+ \let\ExecuteOptions\pc@ExecuteOptions
+\fi
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname @classoptionslist\endcsname\relax
+ \expandafter\pc@endinput
+\fi
+\def\pc@ProcessOptionsWithKV{%
+ \let\pc@temp\@empty
+ \@for\CurrentOption:=\@classoptionslist\do{%
+ \@ifundefined{KV@pc@\CurrentOption}{}{%
+ \edef\pc@temp{\pc@temp,\CurrentOption,}%
+ \@expandtwoargs\@removeelement\CurrentOption
+ \@unusedoptionlist\@unusedoptionlist
+ }%
+ }%
+ \edef\pc@temp{%
+ \noexpand\pdfcryptsetup{%
+ \pc@temp\@ptionlist{\@currname.\@currext}%
+ }%
+ }%
+ \pc@temp
+}
+\pc@ProcessOptionsWithKV
+\AtEndOfPackage{\let\@unprocessedoptions\relax}
+\AtBeginDocument{\pc@set}
+
+\pc@endinput
+\endinput
+%%
+%% End of file `pdfcrypt.sty'.