origami 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. data/COPYING.LESSER +165 -0
  2. data/README +77 -0
  3. data/VERSION +1 -0
  4. data/bin/config/pdfcop.conf.yml +237 -0
  5. data/bin/gui/about.rb +46 -0
  6. data/bin/gui/config.rb +132 -0
  7. data/bin/gui/file.rb +385 -0
  8. data/bin/gui/hexdump.rb +74 -0
  9. data/bin/gui/hexview.rb +91 -0
  10. data/bin/gui/imgview.rb +72 -0
  11. data/bin/gui/menu.rb +392 -0
  12. data/bin/gui/properties.rb +132 -0
  13. data/bin/gui/signing.rb +635 -0
  14. data/bin/gui/textview.rb +107 -0
  15. data/bin/gui/treeview.rb +409 -0
  16. data/bin/gui/walker.rb +282 -0
  17. data/bin/gui/xrefs.rb +79 -0
  18. data/bin/pdf2graph +121 -0
  19. data/bin/pdf2ruby +353 -0
  20. data/bin/pdfcocoon +104 -0
  21. data/bin/pdfcop +455 -0
  22. data/bin/pdfdecompress +104 -0
  23. data/bin/pdfdecrypt +95 -0
  24. data/bin/pdfencrypt +112 -0
  25. data/bin/pdfextract +221 -0
  26. data/bin/pdfmetadata +123 -0
  27. data/bin/pdfsh +13 -0
  28. data/bin/pdfwalker +7 -0
  29. data/bin/shell/.irbrc +104 -0
  30. data/bin/shell/console.rb +136 -0
  31. data/bin/shell/hexdump.rb +83 -0
  32. data/origami.rb +36 -0
  33. data/origami/3d.rb +239 -0
  34. data/origami/acroform.rb +321 -0
  35. data/origami/actions.rb +299 -0
  36. data/origami/adobe/fdf.rb +259 -0
  37. data/origami/adobe/ppklite.rb +489 -0
  38. data/origami/annotations.rb +775 -0
  39. data/origami/array.rb +187 -0
  40. data/origami/boolean.rb +101 -0
  41. data/origami/catalog.rb +486 -0
  42. data/origami/destinations.rb +213 -0
  43. data/origami/dictionary.rb +188 -0
  44. data/origami/docmdp.rb +96 -0
  45. data/origami/encryption.rb +1293 -0
  46. data/origami/export.rb +283 -0
  47. data/origami/file.rb +222 -0
  48. data/origami/filters.rb +250 -0
  49. data/origami/filters/ascii.rb +189 -0
  50. data/origami/filters/ccitt.rb +515 -0
  51. data/origami/filters/crypt.rb +47 -0
  52. data/origami/filters/dct.rb +61 -0
  53. data/origami/filters/flate.rb +112 -0
  54. data/origami/filters/jbig2.rb +63 -0
  55. data/origami/filters/jpx.rb +53 -0
  56. data/origami/filters/lzw.rb +195 -0
  57. data/origami/filters/predictors.rb +276 -0
  58. data/origami/filters/runlength.rb +117 -0
  59. data/origami/font.rb +209 -0
  60. data/origami/functions.rb +93 -0
  61. data/origami/graphics.rb +33 -0
  62. data/origami/graphics/colors.rb +191 -0
  63. data/origami/graphics/instruction.rb +126 -0
  64. data/origami/graphics/path.rb +154 -0
  65. data/origami/graphics/patterns.rb +180 -0
  66. data/origami/graphics/state.rb +164 -0
  67. data/origami/graphics/text.rb +224 -0
  68. data/origami/graphics/xobject.rb +493 -0
  69. data/origami/header.rb +90 -0
  70. data/origami/linearization.rb +318 -0
  71. data/origami/metadata.rb +114 -0
  72. data/origami/name.rb +170 -0
  73. data/origami/null.rb +75 -0
  74. data/origami/numeric.rb +188 -0
  75. data/origami/obfuscation.rb +233 -0
  76. data/origami/object.rb +527 -0
  77. data/origami/outline.rb +59 -0
  78. data/origami/page.rb +559 -0
  79. data/origami/parser.rb +268 -0
  80. data/origami/parsers/fdf.rb +45 -0
  81. data/origami/parsers/pdf.rb +27 -0
  82. data/origami/parsers/pdf/linear.rb +113 -0
  83. data/origami/parsers/ppklite.rb +86 -0
  84. data/origami/pdf.rb +1144 -0
  85. data/origami/reference.rb +113 -0
  86. data/origami/signature.rb +474 -0
  87. data/origami/stream.rb +575 -0
  88. data/origami/string.rb +416 -0
  89. data/origami/trailer.rb +173 -0
  90. data/origami/webcapture.rb +87 -0
  91. data/origami/xfa.rb +3027 -0
  92. data/origami/xreftable.rb +447 -0
  93. data/templates/patterns.rb +66 -0
  94. data/templates/widgets.rb +173 -0
  95. data/templates/xdp.rb +92 -0
  96. data/tests/dataset/test.dummycrt +28 -0
  97. data/tests/dataset/test.dummykey +27 -0
  98. data/tests/tc_actions.rb +32 -0
  99. data/tests/tc_annotations.rb +85 -0
  100. data/tests/tc_pages.rb +37 -0
  101. data/tests/tc_pdfattach.rb +24 -0
  102. data/tests/tc_pdfencrypt.rb +110 -0
  103. data/tests/tc_pdfnew.rb +32 -0
  104. data/tests/tc_pdfparse.rb +98 -0
  105. data/tests/tc_pdfsig.rb +37 -0
  106. data/tests/tc_streams.rb +129 -0
  107. data/tests/ts_pdf.rb +45 -0
  108. metadata +193 -0
@@ -0,0 +1,36 @@
1
+ =begin
2
+
3
+ = File
4
+ origami.rb
5
+
6
+ = Info
7
+ Origami is free software: you can redistribute it and/or modify
8
+ it under the terms of the GNU Lesser General Public License as published by
9
+ the Free Software Foundation, either version 3 of the License, or
10
+ (at your option) any later version.
11
+
12
+ Origami is distributed in the hope that it will be useful,
13
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ GNU Lesser General Public License for more details.
16
+
17
+ You should have received a copy of the GNU Lesser General Public License
18
+ along with Origami. If not, see <http://www.gnu.org/licenses/>.
19
+
20
+ =end
21
+
22
+
23
+ if RUBY_VERSION < '1.9'
24
+ class Fixnum
25
+ def ord; self; end
26
+ end
27
+
28
+ class Hash
29
+ alias key index
30
+ end
31
+ end
32
+
33
+ require 'origami/parsers/pdf'
34
+ require 'origami/parsers/fdf'
35
+ require 'origami/parsers/ppklite'
36
+
@@ -0,0 +1,239 @@
1
+ =begin
2
+
3
+ = File
4
+ 3d.rb
5
+
6
+ = Info
7
+ This file is part of Origami, PDF manipulation framework for Ruby
8
+ Copyright (C) 2010 Guillaume Delugr� <guillaume@security-labs.org>
9
+ All right reserved.
10
+
11
+ Origami is free software: you can redistribute it and/or modify
12
+ it under the terms of the GNU Lesser General Public License as published by
13
+ the Free Software Foundation, either version 3 of the License, or
14
+ (at your option) any later version.
15
+
16
+ Origami is distributed in the hope that it will be useful,
17
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
18
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
+ GNU Lesser General Public License for more details.
20
+
21
+ You should have received a copy of the GNU Lesser General Public License
22
+ along with Origami. If not, see <http://www.gnu.org/licenses/>.
23
+
24
+ =end
25
+
26
+ module Origami
27
+
28
+ class Annotation
29
+
30
+ #
31
+ # 3D Artwork annotation.
32
+ #
33
+ class Artwork3D < Annotation
34
+ field :Subtype, :Type => Name, :Default => :"3D", :Version => "1.6", :Required => true
35
+ field :"3DD", :Type => [ Dictionary, Stream ], :Required => true
36
+ field :"3DV", :Type => Object
37
+ field :"3DA", :Type => Dictionary
38
+ field :"3DI", :Type => Boolean, :Default => true
39
+ field :"3DB", :Type => Array
40
+
41
+ class Activation < Dictionary
42
+ include StandardObject
43
+
44
+ module Events
45
+ PAGE_OPEN = :PO
46
+ PAGE_CLOSE = :PC
47
+ PAGE_VISIBLE = :PV
48
+ PAGE_INVISIBLE = :PI
49
+ USER_ACTIVATE = :XA
50
+ USER_DEACTIVATE = :XD
51
+ end
52
+
53
+ module State
54
+ UNINSTANCIATED = :U
55
+ INSTANCIATED = :I
56
+ LIVE = :L
57
+ end
58
+
59
+ field :A, :Type => Name, :Default => Events::USER_ACTIVATE
60
+ field :AIS, :Type => Name, :Default => State::LIVE
61
+ field :D, :Type => Name, :Default => Events::PAGE_INVISIBLE
62
+ field :DIS, :Type => Name, :Default => State::UNINSTANCIATED
63
+ field :TB, :Type => Boolean, :Version => "1.7", :Default => true
64
+ field :NP, :Type => Boolean, :Version => "1.7", :Default => false
65
+ end
66
+ end
67
+
68
+ end
69
+
70
+ class U3DStream < Stream
71
+ include StandardObject
72
+
73
+ field :Type, :Type => Name, :Default => :"3D"
74
+ field :Subtype, :Type => Name, :Default => :U3D, :Required => true
75
+ field :VA, :Type => Dictionary
76
+ field :DV, :Type => Object
77
+ field :Resources, :Type => Dictionary
78
+ field :OnInstantiate, :Type => Stream
79
+ field :AN, :Type => Dictionary
80
+
81
+ def onInstantiate(action)
82
+ self[:OnInstantiate] = action
83
+ end
84
+ end
85
+
86
+ class AnimationStyle3D < Dictionary
87
+ include StandardObject
88
+
89
+ module Styles
90
+ NONE = :None
91
+ LINEAR = :Linear
92
+ OSCILLATING = :Oscillating
93
+ end
94
+
95
+ field :Type, :Type => Name, :Default => "3DAnimationStyle"
96
+ field :Subtype, :Type => Name, :Default => Styles::NONE
97
+ field :PC, :Type => Integer, :Default => 0
98
+ field :TM, :Type => Number, :Default => 1
99
+ end
100
+
101
+ class Reference3D < Dictionary
102
+ include StandardObject
103
+
104
+ field :Type, :Type => Name, :Default => :"3DRef"
105
+ field :"3DD", :Type => Stream
106
+ end
107
+
108
+ class View3D < Dictionary
109
+ include StandardObject
110
+
111
+ field :Type, :Type => Name, :Default => :"3DView"
112
+ field :XN, :Type => ByteString, :Required => true
113
+ field :IN, :Type => ByteString
114
+ field :MS, :Type => Name
115
+ field :C2W, :Type => Array
116
+ field :U3DPath, :Type => [ ByteString, Array ]
117
+ field :CO, :Type => Number
118
+ field :P, :Type => Dictionary
119
+ field :O, :Type => Stream
120
+ field :BG, :Type => Dictionary
121
+ field :RM, :Type => Dictionary, :Version => "1.7"
122
+ field :LS, :Type => Dictionary, :Version => "1.7"
123
+ field :SA, :Type => Array, :Version => "1.7"
124
+ field :NA, :Type => Array, :Version => "1.7"
125
+ field :NR, :Type => Boolean, :Version => "1.7", :Default => false
126
+ end
127
+
128
+ class Projection3D < Dictionary
129
+ include StandardObject
130
+
131
+ ORTHOGRAPHIC = :O
132
+ PERSPECTIVE = :P
133
+
134
+ module ClippingStyles
135
+ EXPLICIT_NEARFAR = :XNF
136
+ AUTOMATIC_NEARFAR = :ANF
137
+ end
138
+
139
+ module Scaling
140
+ WIDTH = :W
141
+ HEIGHT = :H
142
+ MINIMUM = :Min
143
+ MAXIMUM = :Max
144
+ ABSOLUTE = :Absolute
145
+ end
146
+
147
+ field :Subtype, :Type => Name, :Default => ORTHOGRAPHIC
148
+ field :CS, :Type => Name, :Default => ClippingStyles::AUTOMATIC_NEARFAR
149
+ field :F, :Type => Number
150
+ field :N, :Type => Number
151
+ field :FOV, :Type => Number
152
+ field :PS, :Type => [ Number, Name ], :Default => Scaling::WIDTH
153
+ field :OS, :Type => Number, :Default => 1
154
+ field :OB, :Type => Name, :Version => "1.7", :Default => Scaling::ABSOLUTE
155
+ end
156
+
157
+ class Background3D < Dictionary
158
+ include StandardObject
159
+
160
+ field :Type, :Type => Name, :Default => :"3DBG"
161
+ field :Subtype, :Type => Name, :Default => :SC
162
+ field :CS, :Type => [ Name, Array ], :Default => Graphics::Color::Space::DEVICE_RGB
163
+ field :C, :Type => Object, :Default => [ 1, 1, 1 ]
164
+ field :EA, :Type => Boolean, :Default => false
165
+ end
166
+
167
+ class RenderMode3D < Dictionary
168
+ include StandardObject
169
+
170
+ module Modes
171
+ SOLID = :Solid
172
+ SOLID_WIREFRAME = :SolidWireFrame
173
+ TRANSPARENT = :Transparent
174
+ TRANSPARENT_WIREFRAME = :TransparentWireFrame
175
+ BOUNDINGBOX = :BoundingBox
176
+ TRANSPARENT_BOUNDINGBOX = :TransparentBoundingBox
177
+ TRANSPARENT_BOUNDINGBOX_OUTLINE = :TransparentBoundingBoxOutline
178
+ WIREFRAME = :WireFrame
179
+ SHADED_WIREFRAME = :ShadedWireFrame
180
+ HIDDEN_WIREFRAME = :HiddenWireFrame
181
+ VERTICES = :Vertices
182
+ SHADED_VERTICES = :ShadedVertices
183
+ ILLUSTRATION = :Illustration
184
+ SOLID_OUTLINE = :SolidOutline
185
+ SHADED_ILLUSTRATION = :ShadedIllustration
186
+ end
187
+
188
+ field :Type, :Type => Name, :Default => :"3DRenderMode"
189
+ field :Subtype, :Type => Name, :Required => true, :Version => "1.7"
190
+ field :AC, :Type => Array, :Default => [ Graphics::Color::Space::DEVICE_RGB, 0, 0, 0]
191
+ field :BG, :Type => [ Name, Array ], :Default => :BG
192
+ field :O, :Type => Number, :Default => 0.5
193
+ field :CV, :Type => Number, :Default => 45
194
+ end
195
+
196
+ class LightingScheme3D < Dictionary
197
+ include StandardObject
198
+
199
+ module Styles
200
+ ARTWORK = :Artwork
201
+ NONE = :None
202
+ WHITE = :White
203
+ DAY = :Day
204
+ NIGHT = :Night
205
+ HARD = :Hard
206
+ PRIMARY = :Primary
207
+ BLUE = :Blue
208
+ RED = :Red
209
+ CUBE = :Cube
210
+ CAD = :CAD
211
+ HEADLAMP = :HeadLamp
212
+ end
213
+
214
+ field :Type, :Type => Name, :Default => :"3DLightingScheme"
215
+ field :Subtype, :Type => Name, :Version => "1.7", :Required => true
216
+ end
217
+
218
+ class CrossSection3D < Dictionary
219
+ include StandardObject
220
+
221
+ field :Type, :Type => Name, :Default => :"3DCrossSection"
222
+ field :C, :Type => Array, :Default => [ 0, 0, 0 ]
223
+ field :O, :Type => Array, :Version => "1.7", :Default => [ Null.new, 0, 0 ], :Required => true
224
+ field :PO, :Type => Number, :Default => 0.5
225
+ field :PC, :Type => Array, :Default => [ Graphics::Color::Space::DEVICE_RGB, 1, 1, 1 ]
226
+ field :IV, :Type => Boolean, :Default => false
227
+ field :IC, :Type => Array, :Default => [ Graphics::Color::Space::DEVICE_RGB, 0, 1 ,0]
228
+ end
229
+
230
+ class Node3D < Dictionary
231
+ include StandardObject
232
+
233
+ field :Type, :Type => Name, :Default => :"3DNode"
234
+ field :N, :Type => ByteString, :Version => "1.7", :Required => true
235
+ field :O, :Type => Number
236
+ field :V, :Type => Boolean
237
+ field :M, :Type => Array
238
+ end
239
+ end
@@ -0,0 +1,321 @@
1
+ =begin
2
+
3
+ = File
4
+ acroform.rb
5
+
6
+ = Info
7
+ This file is part of Origami, PDF manipulation framework for Ruby
8
+ Copyright (C) 2010 Guillaume Delugr� <guillaume@security-labs.org>
9
+ All right reserved.
10
+
11
+ Origami is free software: you can redistribute it and/or modify
12
+ it under the terms of the GNU Lesser General Public License as published by
13
+ the Free Software Foundation, either version 3 of the License, or
14
+ (at your option) any later version.
15
+
16
+ Origami is distributed in the hope that it will be useful,
17
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
18
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
+ GNU Lesser General Public License for more details.
20
+
21
+ You should have received a copy of the GNU Lesser General Public License
22
+ along with Origami. If not, see <http://www.gnu.org/licenses/>.
23
+
24
+ =end
25
+
26
+ module Origami
27
+
28
+ class PDF
29
+
30
+ #
31
+ # Returns true if the document contains an acrobat form.
32
+ #
33
+ def has_form?
34
+ (not self.Catalog.nil?) and self.Catalog.has_key? :AcroForm
35
+ end
36
+
37
+ #
38
+ # Creates a new AcroForm with specified fields.
39
+ #
40
+ def create_acroform(*fields)
41
+ acroform = self.Catalog.AcroForm ||= InteractiveForm.new.set_indirect(true)
42
+ self.add_fields(*fields)
43
+
44
+ acroform
45
+ end
46
+
47
+ #
48
+ # Add a field to the Acrobat form.
49
+ # _field_:: The Field to add.
50
+ #
51
+ def add_fields(*fields)
52
+ raise TypeError, "Expected Field arguments" unless fields.all? { |f| f.is_a?(Field) }
53
+
54
+ self.Catalog.AcroForm ||= InteractiveForm.new.set_indirect(true)
55
+ self.Catalog.AcroForm.Fields ||= []
56
+
57
+ self.Catalog.AcroForm.Fields.concat(fields)
58
+ fields.each do |field| field.set_indirect(true) end
59
+
60
+ self
61
+ end
62
+
63
+ #
64
+ # Returns an array of Acroform fields.
65
+ #
66
+ def fields
67
+ if self.has_form?
68
+ if self.Catalog.AcroForm.has_key?(:Fields)
69
+ self.Catalog.AcroForm[:Fields].map {|field| field.solve}
70
+ end
71
+ end
72
+ end
73
+
74
+ #
75
+ # Iterates over each Acroform Field.
76
+ #
77
+ def each_field(&b)
78
+ if self.has_form?
79
+ if self.Catalog.AcroForm.has_key?(:Fields)
80
+ self.Catalog.AcroForm[:Fields].each {|field| b.call(field.solve)}
81
+ end
82
+ end
83
+ end
84
+
85
+ #
86
+ # Returns the corresponding named Field.
87
+ #
88
+ def get_field(name)
89
+ self.each_field do |field|
90
+ return field if field[:T].solve == name
91
+ end
92
+ end
93
+ end
94
+
95
+ #
96
+ # Class representing a interactive form Dictionary.
97
+ #
98
+ class InteractiveForm < Dictionary
99
+
100
+ include StandardObject
101
+
102
+ #
103
+ # Flags relative to signature fields.
104
+ #
105
+ module SigFlags
106
+ SIGNATURESEXIST = 1 << 0
107
+ APPENDONLY = 1 << 1
108
+ end
109
+
110
+ field :Fields, :Type => Array, :Required => true, :Default => []
111
+ field :NeedAppearances, :Type => Boolean, :Default => false
112
+ field :SigFlags, :Type => Integer, :Default => 0
113
+ field :CO, :Type => Array, :Version => "1.3"
114
+ field :DR, :Type => Dictionary
115
+ field :DA, :Type => String
116
+ field :Q, :Type => Integer
117
+ field :XFA, :Type => [ Stream, Array ]
118
+
119
+ end
120
+
121
+ module Field
122
+
123
+ #
124
+ # Types of fields.
125
+ #
126
+ module Type
127
+ BUTTON = :Btn
128
+ TEXT = :Tx
129
+ CHOICE = :Ch
130
+ SIGNATURE = :Sig
131
+ end
132
+
133
+ #
134
+ # Flags relative to fields.
135
+ #
136
+ module Flags
137
+ READONLY = 1 << 0
138
+ REQUIRED = 1 << 1
139
+ NOEXPORT = 1 << 2
140
+ end
141
+
142
+ module TextAlign
143
+ LEFT = 0
144
+ CENTER = 1
145
+ RIGHT = 2
146
+ end
147
+
148
+ def self.included(receiver)
149
+
150
+ receiver.field :FT, :Type => Name, :Default => Type::TEXT, :Required => true
151
+ receiver.field :Parent, :Type => Dictionary
152
+ receiver.field :Kids, :Type => Array
153
+ receiver.field :T, :Type => String
154
+ receiver.field :TU, :Type => String, :Version => "1.3"
155
+ receiver.field :TM, :Type => String, :Version => "1.3"
156
+ receiver.field :Ff, :Type => Integer, :Default => 0
157
+ receiver.field :V, :Type => Object
158
+ receiver.field :DV, :Type => Object
159
+ receiver.field :AA, :Type => Dictionary, :Version => "1.2"
160
+
161
+ # Variable text fields
162
+ receiver.field :DA, :Type => String, :Default => "/F1 10 Tf 0 g", :Required => true
163
+ receiver.field :Q, :Type => Integer, :Default => TextAlign::LEFT
164
+ receiver.field :DS, :Type => ByteString, :Version => "1.5"
165
+ receiver.field :RV, :Type => [ String, Stream ], :Version => "1.5"
166
+
167
+ end
168
+
169
+ def pre_build
170
+
171
+ if not self.T
172
+ self.T = "undef#{::Array.new(5) {(0x30 + rand(10)).chr}.join}"
173
+ end
174
+
175
+ super
176
+ end
177
+
178
+ def onKeyStroke(action)
179
+
180
+ unless action.is_a?(Action)
181
+ raise TypeError, "An Action object must be passed."
182
+ end
183
+
184
+ self.AA ||= AdditionalActions.new
185
+ self.AA.K = action
186
+
187
+ end
188
+
189
+ def onFormat(action)
190
+
191
+ unless action.is_a?(Action)
192
+ raise TypeError, "An Action object must be passed."
193
+ end
194
+
195
+ self.AA ||= AdditionalActions.new
196
+ self.AA.F = action
197
+
198
+ end
199
+
200
+ def onValidate(action)
201
+
202
+ unless action.is_a?(Action)
203
+ raise TypeError, "An Action object must be passed."
204
+ end
205
+
206
+ self.AA ||= AdditionalActions.new
207
+ self.AA.V = action
208
+
209
+ end
210
+
211
+ def onCalculate(action)
212
+
213
+ unless action.is_a?(Action)
214
+ raise TypeError, "An Action object must be passed."
215
+ end
216
+
217
+ self.AA ||= AdditionalActions.new
218
+ self.AA.C = action
219
+
220
+ end
221
+
222
+ class Subform < Dictionary
223
+ include StandardObject
224
+ include Field
225
+
226
+ def add_fields(*fields)
227
+ self.Kids ||= []
228
+ self.Kids.concat(fields)
229
+
230
+ fields.each do |field| field.Parent = self end
231
+
232
+ self
233
+ end
234
+ end
235
+
236
+ class AdditionalActions < Dictionary
237
+
238
+ include StandardObject
239
+
240
+ field :K, :Type => Dictionary, :Version => "1.3"
241
+ field :F, :Type => Dictionary, :Version => "1.3"
242
+ field :V, :Type => Dictionary, :Version => "1.3"
243
+ field :C, :Type => Dictionary, :Version => "1.3"
244
+ end
245
+
246
+ class SignatureLock < Dictionary
247
+
248
+ include StandardObject
249
+
250
+ module Actions
251
+ ALL = :All
252
+ INCLUDE = :Include
253
+ EXCLUDE = :Exclude
254
+ end
255
+
256
+ field :Type, :Type => Name, :Default => :SigFieldLock
257
+ field :Action, :Type => Name, :Default => Actions::ALL, :Required => true
258
+ field :Fields, :Type => Array
259
+
260
+ def pre_build
261
+
262
+ if self.Action and self.Action != Actions::ALL
263
+ self.Fields ||= []
264
+ end
265
+
266
+ super
267
+ end
268
+
269
+ end
270
+
271
+ class SignatureSeedValue < Dictionary
272
+
273
+ include StandardObject
274
+
275
+ module Digest
276
+ SHA1 = :SHA1
277
+ SHA256 = :SHA256
278
+ SHA384 = :SHA384
279
+ SHA512 = :SHA512
280
+ RIPEMD160 = :RIPEMD160
281
+ end
282
+
283
+ field :Type, :Type => Name, :Default => :SV
284
+ field :Filter, :Type => Name
285
+ field :SubFilter, :Type => Array
286
+ field :DigestMethod, :Type => Array, :Default => Digest::SHA1, :Version => "1.7"
287
+ field :V, :Type => Real, :Default => 1.0
288
+ field :Cert, :Type => Dictionary
289
+ field :Reasons, :Type => Array
290
+ field :MDP, :Type => Dictionary, :Version => "1.6"
291
+ field :TimeStamp, :Type => Dictionary, :Version => "1.6"
292
+ field :LegalAttestation, :Type => Array, :Version => "1.6"
293
+ field :AddRevInfo, :Type => Boolean, :Default => false, :Version => "1.7"
294
+ field :Ff, :Type => Integer, :Default => 0
295
+
296
+ end
297
+
298
+ class CertificateSeedValue < Dictionary
299
+
300
+ include StandardObject
301
+
302
+ module URL
303
+ BROWSER = :Browser
304
+ ASSP = :ASSP
305
+ end
306
+
307
+ field :Type, :Type => Name, :Default => :SVCert
308
+ field :Subject, :Type => Array
309
+ field :SubjectDN, :Type => Array, :Version => "1.7"
310
+ field :KeyUsage, :Type => Array, :Version => "1.7"
311
+ field :Issuer, :Type => Array
312
+ field :OID, :Type => Array
313
+ field :URL, :Type => ByteString
314
+ field :URLType, :Type => Name, :Default => URL::BROWSER, :Version => "1.7"
315
+ field :Ff, :Type => Integer, :Default => 0
316
+
317
+ end
318
+
319
+ end
320
+
321
+ end