### Home Classes Methods

### In Files

- lib/origami/extensions/ppklite.rb
- lib/origami/parsers/ppklite.rb

### Parent

Object

### Namespace

- MODULE Origami::Adobe::PPKLite::Descriptor
- CLASS Origami::Adobe::PPKLite::AddressList
- CLASS Origami::Adobe::PPKLite::Catalog
- CLASS Origami::Adobe::PPKLite::Certificate
- CLASS Origami::Adobe::PPKLite::Header
- CLASS Origami::Adobe::PPKLite::PPK
- CLASS Origami::Adobe::PPKLite::Parser
- CLASS Origami::Adobe::PPKLite::Revision
- CLASS Origami::Adobe::PPKLite::User
- CLASS Origami::Adobe::PPKLite::UserList

### Methods

- #<<
- #Catalog
- #add_certificate
- #append_subobj
- #get_cert
- #objects
- #save
- #show_cert
- #show_certs
- #show_entries
- #show_user
- #show_users

### Class/Module Index

Quicksearch

- Origami
- Origami::Action
- Origami::Action::GoTo
- Origami::Action::GoToE
- Origami::Action::GoToE::EmbeddedTarget
- Origami::Action::GoToE::EmbeddedTarget::Relationship
- Origami::Action::GoToR
- Origami::Action::ImportData
- Origami::Action::JavaScript
- Origami::Action::Launch
- Origami::Action::Launch::WindowsLaunchParams
- Origami::Action::Named
- Origami::Action::RichMediaExecute
- Origami::Action::RichMediaExecute::Command
- Origami::Action::SubmitForm
- Origami::Action::SubmitForm::Flags
- Origami::Action::URI
- Origami::Adobe
- Origami::Adobe::PPKLite
- Origami::Adobe::PPKLite::AddressList
- Origami::Adobe::PPKLite::Catalog
- Origami::Adobe::PPKLite::Certificate
- Origami::Adobe::PPKLite::Certificate::Flags
- Origami::Adobe::PPKLite::Descriptor
- Origami::Adobe::PPKLite::Header
- Origami::Adobe::PPKLite::PPK
- Origami::Adobe::PPKLite::Parser
- Origami::Adobe::PPKLite::Revision
- Origami::Adobe::PPKLite::User
- Origami::Adobe::PPKLite::UserList
- Origami::AnimationStyle3D
- Origami::AnimationStyle3D::Styles
- Origami::Annotation
- Origami::Annotation::AdditionalActions
- Origami::Annotation::AppearanceCharacteristics
- Origami::Annotation::AppearanceCharacteristics::CaptionStyle
- Origami::Annotation::AppearanceDictionary
- Origami::Annotation::AppearanceStream
- Origami::Annotation::Artwork3D
- Origami::Annotation::Artwork3D::Activation
- Origami::Annotation::Artwork3D::Activation::Events
- Origami::Annotation::Artwork3D::Activation::State
- Origami::Annotation::BorderStyle
- Origami::Annotation::Circle
- Origami::Annotation::FileAttachment
- Origami::Annotation::FileAttachment::Icons
- Origami::Annotation::Flags
- Origami::Annotation::FreeText
- Origami::Annotation::FreeText::Intent
- Origami::Annotation::Link
- Origami::Annotation::Link::Highlight
- Origami::Annotation::Markup
- Origami::Annotation::RichMedia
- Origami::Annotation::RichMedia::Activation
- Origami::Annotation::RichMedia::Animation
- Origami::Annotation::RichMedia::Configuration
- Origami::Annotation::RichMedia::Content
- Origami::Annotation::RichMedia::CuePoint
- Origami::Annotation::RichMedia::Deactivation
- Origami::Annotation::RichMedia::Instance
- Origami::Annotation::RichMedia::Parameters
- Origami::Annotation::RichMedia::Parameters::Binding
- Origami::Annotation::RichMedia::Position
- Origami::Annotation::RichMedia::Presentation
- Origami::Annotation::RichMedia::Settings
- Origami::Annotation::RichMedia::Window
- Origami::Annotation::Screen
- Origami::Annotation::Shape
- Origami::Annotation::Sound
- Origami::Annotation::Sound::Icons
- Origami::Annotation::Square
- Origami::Annotation::Text
- Origami::Annotation::Text::TextName
- Origami::Annotation::Triggerable
- Origami::Annotation::Widget
- Origami::Annotation::Widget::Button
- Origami::Annotation::Widget::Button::Flags
- Origami::Annotation::Widget::CheckBox
- Origami::Annotation::Widget::Choice
- Origami::Annotation::Widget::Choice::Flags
- Origami::Annotation::Widget::ComboBox
- Origami::Annotation::Widget::Highlight
- Origami::Annotation::Widget::ListBox
- Origami::Annotation::Widget::PushButton
- Origami::Annotation::Widget::Radio
- Origami::Annotation::Widget::Signature
- Origami::Annotation::Widget::Text
- Origami::Annotation::Widget::Text::Flags
- Origami::Array
- Origami::Background3D
- Origami::Boolean
- Origami::ByteString
- Origami::Catalog
- Origami::CatalogAdditionalActions
- Origami::Console
- Origami::Console::Colors
- Origami::ContentStream
- Origami::CrossSection3D
- Origami::Destination
- Origami::Destination::GlobalBoundingBoxFit
- Origami::Destination::GlobalFit
- Origami::Destination::HorizontalBoudingBoxFit
- Origami::Destination::HorizontalFit
- Origami::Destination::RectangleFit
- Origami::Destination::VerticalBoundingBoxFit
- Origami::Destination::VerticalFit
- Origami::Destination::Zoom
- Origami::DeveloperExtension
- Origami::Dictionary
- Origami::EmbeddedFileParameters
- Origami::EmbeddedFileStream
- Origami::Encoding
- Origami::Encryption
- Origami::Encryption::AES
- Origami::Encryption::ARC4
- Origami::Encryption::CryptFilterDictionary
- Origami::Encryption::EncryptedDocument
- Origami::Encryption::EncryptedObject
- Origami::Encryption::EncryptedStream
- Origami::Encryption::EncryptedString
- Origami::Encryption::EncryptionDictionary
- Origami::Encryption::Identity
- Origami::Encryption::Standard
- Origami::Encryption::Standard::Dictionary
- Origami::Encryption::Standard::Permissions
- Origami::Extensions
- Origami::ExternalFile
- Origami::ExternalStream
- Origami::FDF
- Origami::FDF::Header
- Origami::FDF::Parser
- Origami::FDF::Revision
- Origami::Field
- Origami::Field::Flags
- Origami::Field::Subform
- Origami::Field::Subform::AdditionalActions
- Origami::Field::Subform::CertificateSeedValue
- Origami::Field::Subform::CertificateSeedValue::URL
- Origami::Field::Subform::SignatureLock
- Origami::Field::Subform::SignatureLock::Actions
- Origami::Field::Subform::SignatureSeedValue
- Origami::Field::Subform::SignatureSeedValue::Digest
- Origami::Field::TextAlign
- Origami::Field::Type
- Origami::FileSpec
- Origami::Filename
- Origami::Filter
- Origami::Filter::A85
- Origami::Filter::AHx
- Origami::Filter::ASCII85
- Origami::Filter::ASCIIHex
- Origami::Filter::CCF
- Origami::Filter::CCITTFax
- Origami::Filter::CCITTFax::DecodeParms
- Origami::Filter::ClassMethods
- Origami::Filter::Crypt
- Origami::Filter::Crypt::DecodeParms
- Origami::Filter::DCT
- Origami::Filter::DCT::DecodeParms
- Origami::Filter::Fl
- Origami::Filter::Flate
- Origami::Filter::Flate::DecodeParms
- Origami::Filter::InvalidFlateDataError
- Origami::Filter::JBIG2
- Origami::Filter::JBIG2::DecodeParms
- Origami::Filter::JPX
- Origami::Filter::LZW
- Origami::Filter::LZW::DecodeParms
- Origami::Filter::Predictor
- Origami::Filter::RL
- Origami::Filter::RunLength
- Origami::Filter::Utils
- Origami::Filter::Utils::BitReader
- Origami::Filter::Utils::BitWriter
- Origami::Font
- Origami::Font::TrueType
- Origami::Font::Type1
- Origami::Font::Type1::Standard
- Origami::Font::Type1::Standard::Courier
- Origami::Font::Type1::Standard::CourierBold
- Origami::Font::Type1::Standard::CourierBoldOblique
- Origami::Font::Type1::Standard::CourierOblique
- Origami::Font::Type1::Standard::Helvetica
- Origami::Font::Type1::Standard::HelveticaBold
- Origami::Font::Type1::Standard::HelveticaBoldOblique
- Origami::Font::Type1::Standard::HelveticaOblique
- Origami::Font::Type1::Standard::Symbol
- Origami::Font::Type1::Standard::TimesBold
- Origami::Font::Type1::Standard::TimesBoldItalic
- Origami::Font::Type1::Standard::TimesItalic
- Origami::Font::Type1::Standard::TimesRoman
- Origami::Font::Type1::Standard::ZapfDingbats
- Origami::Font::Type3
- Origami::FontDescriptor
- Origami::FontStream
- Origami::Function
- Origami::Function::Exponential
- Origami::Function::PostScript
- Origami::Function::Sampled
- Origami::Function::Stitching
- Origami::Function::Type
- Origami::Graphics
- Origami::Graphics::Canvas
- Origami::Graphics::Color
- Origami::Graphics::Color::BlendMode
- Origami::Graphics::Color::CMYK
- Origami::Graphics::Color::GrayScale
- Origami::Graphics::Color::ICCProfile
- Origami::Graphics::Color::Intent
- Origami::Graphics::Color::RGB
- Origami::Graphics::Color::Space
- Origami::Graphics::DashPattern
- Origami::Graphics::DummyCanvas
- Origami::Graphics::ExtGState
- Origami::Graphics::FormXObject
- Origami::Graphics::ImageXObject
- Origami::Graphics::InvalidColorError
- Origami::Graphics::InvalidPathError
- Origami::Graphics::LineCapStyle
- Origami::Graphics::LineJoinStyle
- Origami::Graphics::Path
- Origami::Graphics::Path::Line
- Origami::Graphics::Path::Segment
- Origami::Graphics::Pattern
- Origami::Graphics::Pattern::Shading
- Origami::Graphics::Pattern::Shading::Axial
- Origami::Graphics::Pattern::Shading::CoonsPathMesh
- Origami::Graphics::Pattern::Shading::FreeFormTriangleMesh
- Origami::Graphics::Pattern::Shading::FunctionBased
- Origami::Graphics::Pattern::Shading::LatticeFormTriangleMesh
- Origami::Graphics::Pattern::Shading::Radial
- Origami::Graphics::Pattern::Shading::ShadingObject
- Origami::Graphics::Pattern::Shading::TensorProductPatchMesh
- Origami::Graphics::Pattern::Shading::Type
- Origami::Graphics::Pattern::Tiling
- Origami::Graphics::Pattern::Tiling::PaintType
- Origami::Graphics::Pattern::Tiling::Type
- Origami::Graphics::Pattern::Type
- Origami::Graphics::ReferenceDictionary
- Origami::Graphics::State
- Origami::Graphics::TextCanvas
- Origami::Graphics::XObject
- Origami::HexaString
- Origami::HintStream
- Origami::HintTable
- Origami::HintTable::ClassMethods
- Origami::HintTable::PageOffsetTable
- Origami::HintTable::SharedObjectTable
- Origami::Integer
- Origami::InteractiveForm
- Origami::InteractiveForm::SigFlags
- Origami::InvalidPDFInstructionError
- Origami::InvalidXRefStreamObjectError
- Origami::LightingScheme3D
- Origami::LightingScheme3D::Styles
- Origami::Linearization
- Origami::Metadata
- Origami::MetadataStream
- Origami::Name
- Origami::NameLeaf
- Origami::NameTreeNode
- Origami::Names
- Origami::Names::Root
- Origami::NavigationNode
- Origami::Node3D
- Origami::Null
- Origami::Number
- Origami::Obfuscator
- Origami::Object
- Origami::ObjectStream
- Origami::Outline
- Origami::OutlineItem
- Origami::OutlineItem::Style
- Origami::OutputIntent
- Origami::OutputIntent::Intent
- Origami::PDF
- Origami::PDF::Header
- Origami::PDF::Instruction
- Origami::PDF::JavaScript
- Origami::PDF::JavaScript::AcroTimer
- Origami::PDF::JavaScript::AcrobatObject
- Origami::PDF::JavaScript::Acrohelp
- Origami::PDF::JavaScript::App
- Origami::PDF::JavaScript::Arg
- Origami::PDF::JavaScript::Console
- Origami::PDF::JavaScript::Data
- Origami::PDF::JavaScript::Doc
- Origami::PDF::JavaScript::Doc::Info
- Origami::PDF::JavaScript::Engine
- Origami::PDF::JavaScript::EngineError
- Origami::PDF::JavaScript::Field
- Origami::PDF::JavaScript::GeneralError
- Origami::PDF::JavaScript::Global
- Origami::PDF::JavaScript::HelpError
- Origami::PDF::JavaScript::Interval
- Origami::PDF::JavaScript::InvalidArgsError
- Origami::PDF::JavaScript::MissingArgError
- Origami::PDF::JavaScript::NotAllowedError
- Origami::PDF::JavaScript::Platforms
- Origami::PDF::JavaScript::ReadStream
- Origami::PDF::JavaScript::TimeOut
- Origami::PDF::JavaScript::TypeError
- Origami::PDF::JavaScript::Util
- Origami::PDF::JavaScript::Viewers
- Origami::PDF::LinearParser
- Origami::PDF::Parser
- Origami::PDF::Revision
- Origami::Page
- Origami::Page::Format
- Origami::PageAdditionalActions
- Origami::PageTreeNode
- Origami::Perms
- Origami::Projection3D
- Origami::Projection3D::ClippingStyles
- Origami::Projection3D::Scaling
- Origami::Real
- Origami::Rectangle
- Origami::Reference
- Origami::Reference3D
- Origami::RenderMode3D
- Origami::RenderMode3D::Modes
- Origami::Requirement
- Origami::Requirement::Handler
- Origami::Requirement::Handler::Type
- Origami::Resources
- Origami::ResourcesHolder
- Origami::Signature
- Origami::Signature::AppData
- Origami::Signature::BuildData
- Origami::Signature::BuildProperties
- Origami::Signature::DigitalSignature
- Origami::Signature::Reference
- Origami::Signature::SigQData
- Origami::Stream
- Origami::String
- Origami::String::Encoding
- Origami::String::Encoding::PDFDocEncoding
- Origami::String::Encoding::UTF16BE
- Origami::Text
- Origami::Text::Rendering
- Origami::Text::State
- Origami::Trailer
- Origami::U3DStream
- Origami::URL
- Origami::UsageRights
- Origami::UsageRights::Rights
- Origami::UsageRights::TransformParams
- Origami::V8
- Origami::V8::Object
- Origami::View3D
- Origami::ViewerPreferences
- Origami::Webcapture
- Origami::Webcapture::Command
- Origami::Webcapture::Command::Flags
- Origami::Webcapture::CommandSettings
- Origami::Webcapture::SourceInformation
- Origami::Webcapture::SourceInformation::SubmissionType
- Origami::Webcapture::SpiderInfo
- Origami::XDP
- Origami::XDP::Package
- Origami::XDP::Packet
- Origami::XDP::Packet::Config
- Origami::XDP::Packet::Config::AdjustData
- Origami::XDP::Packet::Config::Attributes
- Origami::XDP::Packet::Config::Base
- Origami::XDP::Packet::Config::Common
- Origami::XDP::Packet::Config::Data
- Origami::XDP::Packet::Config::Debug
- Origami::XDP::Packet::Config::ExcludeNS
- Origami::XDP::Packet::Config::GroupParent
- Origami::XDP::Packet::Config::IfEmpty
- Origami::XDP::Packet::Config::IncrementalLoad
- Origami::XDP::Packet::Config::Locale
- Origami::XDP::Packet::Config::LocaleSet
- Origami::XDP::Packet::Config::Log
- Origami::XDP::Packet::Config::Message
- Origami::XDP::Packet::Config::Messaging
- Origami::XDP::Packet::Config::Mode
- Origami::XDP::Packet::Config::MsgId
- Origami::XDP::Packet::Config::NameAttr
- Origami::XDP::Packet::Config::OutputXSL
- Origami::XDP::Packet::Config::Picture
- Origami::XDP::Packet::Config::Presence
- Origami::XDP::Packet::Config::Range
- Origami::XDP::Packet::Config::Record
- Origami::XDP::Packet::Config::Relevant
- Origami::XDP::Packet::Config::Rename
- Origami::XDP::Packet::Config::Severity
- Origami::XDP::Packet::Config::StartNode
- Origami::XDP::Packet::Config::StartPage
- Origami::XDP::Packet::Config::SuppressBanner
- Origami::XDP::Packet::Config::Template
- Origami::XDP::Packet::Config::Threshold
- Origami::XDP::Packet::Config::To
- Origami::XDP::Packet::Config::Transform
- Origami::XDP::Packet::Config::URI
- Origami::XDP::Packet::Config::ValidationMessaging
- Origami::XDP::Packet::Config::VersionControl
- Origami::XDP::Packet::Config::Whitespace
- Origami::XDP::Packet::Config::Window
- Origami::XDP::Packet::Config::XSL
- Origami::XDP::Packet::ConnectionSet
- Origami::XDP::Packet::ConnectionSet::EffectiveInputPolicy
- Origami::XDP::Packet::ConnectionSet::EffectiveOutputPolicy
- Origami::XDP::Packet::ConnectionSet::Operation
- Origami::XDP::Packet::ConnectionSet::RootElement
- Origami::XDP::Packet::ConnectionSet::SOAPAction
- Origami::XDP::Packet::ConnectionSet::SOAPAddress
- Origami::XDP::Packet::ConnectionSet::URI
- Origami::XDP::Packet::ConnectionSet::WSDLAddress
- Origami::XDP::Packet::ConnectionSet::WSDLConnection
- Origami::XDP::Packet::ConnectionSet::XMLConnection
- Origami::XDP::Packet::ConnectionSet::XSDConnection
- Origami::XDP::Packet::Datasets
- Origami::XDP::Packet::Datasets::Data
- Origami::XDP::Packet::LocaleSet
- Origami::XDP::Packet::PDF
- Origami::XDP::Packet::Signature
- Origami::XDP::Packet::SourceSet
- Origami::XDP::Packet::StyleSheet
- Origami::XDP::Packet::Template
- Origami::XDP::Packet::Template::AppearanceFilter
- Origami::XDP::Packet::Template::Arc
- Origami::XDP::Packet::Template::Area
- Origami::XDP::Packet::Template::Assist
- Origami::XDP::Packet::Template::Barcode
- Origami::XDP::Packet::Template::Bind
- Origami::XDP::Packet::Template::BindItems
- Origami::XDP::Packet::Template::Bookend
- Origami::XDP::Packet::Template::Boolean
- Origami::XDP::Packet::Template::Border
- Origami::XDP::Packet::Template::Break
- Origami::XDP::Packet::Template::BreakAfter
- Origami::XDP::Packet::Template::BreakBefore
- Origami::XDP::Packet::Template::Button
- Origami::XDP::Packet::Template::Calculate
- Origami::XDP::Packet::Template::Caption
- Origami::XDP::Packet::Template::Certificate
- Origami::XDP::Packet::Template::Certificates
- Origami::XDP::Packet::Template::CheckButton
- Origami::XDP::Packet::Template::ChoiceList
- Origami::XDP::Packet::Template::Color
- Origami::XDP::Packet::Template::Comb
- Origami::XDP::Packet::Template::Connect
- Origami::XDP::Packet::Template::ContentArea
- Origami::XDP::Packet::Template::Corner
- Origami::XDP::Packet::Template::Date
- Origami::XDP::Packet::Template::DateTime
- Origami::XDP::Packet::Template::DateTimeEdit
- Origami::XDP::Packet::Template::Decimal
- Origami::XDP::Packet::Template::DefaultUI
- Origami::XDP::Packet::Template::Desc
- Origami::XDP::Packet::Template::DigestMethod
- Origami::XDP::Packet::Template::DigestMethods
- Origami::XDP::Packet::Template::Draw
- Origami::XDP::Packet::Template::Edge
- Origami::XDP::Packet::Template::Encoding
- Origami::XDP::Packet::Template::Encodings
- Origami::XDP::Packet::Template::Encrypt
- Origami::XDP::Packet::Template::Event
- Origami::XDP::Packet::Template::ExData
- Origami::XDP::Packet::Template::ExObject
- Origami::XDP::Packet::Template::ExclGroup
- Origami::XDP::Packet::Template::Execute
- Origami::XDP::Packet::Template::Extras
- Origami::XDP::Packet::Template::Field
- Origami::XDP::Packet::Template::Fill
- Origami::XDP::Packet::Template::Filter
- Origami::XDP::Packet::Template::Float
- Origami::XDP::Packet::Template::Font
- Origami::XDP::Packet::Template::FormCalcScript
- Origami::XDP::Packet::Template::Format
- Origami::XDP::Packet::Template::Handler
- Origami::XDP::Packet::Template::Hyphenation
- Origami::XDP::Packet::Template::Image
- Origami::XDP::Packet::Template::ImageEdit
- Origami::XDP::Packet::Template::Integer
- Origami::XDP::Packet::Template::Issuers
- Origami::XDP::Packet::Template::Items
- Origami::XDP::Packet::Template::JavaScript
- Origami::XDP::Packet::Template::Keep
- Origami::XDP::Packet::Template::KeyUsage
- Origami::XDP::Packet::Template::Line
- Origami::XDP::Packet::Template::Linear
- Origami::XDP::Packet::Template::LockDocument
- Origami::XDP::Packet::Template::MDP
- Origami::XDP::Packet::Template::Manifest
- Origami::XDP::Packet::Template::Margin
- Origami::XDP::Packet::Template::Medium
- Origami::XDP::Packet::Template::Message
- Origami::XDP::Packet::Template::NumericEdit
- Origami::XDP::Packet::Template::OID
- Origami::XDP::Packet::Template::OIDs
- Origami::XDP::Packet::Template::Occur
- Origami::XDP::Packet::Template::Overflow
- Origami::XDP::Packet::Template::PageArea
- Origami::XDP::Packet::Template::PageSet
- Origami::XDP::Packet::Template::Para
- Origami::XDP::Packet::Template::PasswordEdit
- Origami::XDP::Packet::Template::Pattern
- Origami::XDP::Packet::Template::Picture
- Origami::XDP::Packet::Template::Proto
- Origami::XDP::Packet::Template::Radial
- Origami::XDP::Packet::Template::Reason
- Origami::XDP::Packet::Template::Reasons
- Origami::XDP::Packet::Template::Rectangle
- Origami::XDP::Packet::Template::Ref
- Origami::XDP::Packet::Template::Script
- Origami::XDP::Packet::Template::SetProperty
- Origami::XDP::Packet::Template::SignData
- Origami::XDP::Packet::Template::Signature
- Origami::XDP::Packet::Template::Signing
- Origami::XDP::Packet::Template::Solid
- Origami::XDP::Packet::Template::Speak
- Origami::XDP::Packet::Template::Stipple
- Origami::XDP::Packet::Template::Subform
- Origami::XDP::Packet::Template::SubformSet
- Origami::XDP::Packet::Template::SubjectDN
- Origami::XDP::Packet::Template::SubjectDNs
- Origami::XDP::Packet::Template::Submit
- Origami::XDP::Packet::Template::Text
- Origami::XDP::Packet::Template::TextEdit
- Origami::XDP::Packet::Template::Time
- Origami::XDP::Packet::Template::TimeStamp
- Origami::XDP::Packet::Template::ToolTip
- Origami::XDP::Packet::Template::Traversal
- Origami::XDP::Packet::Template::Traverse
- Origami::XDP::Packet::Template::UI
- Origami::XDP::Packet::Template::Validate
- Origami::XDP::Packet::Template::Value
- Origami::XDP::Packet::Template::Variables
- Origami::XDP::Packet::XDC
- Origami::XDP::Packet::XFDF
- Origami::XDP::Packet::XMPMeta
- Origami::XDP::XDP
- Origami::XFA
- Origami::XFA::ClassMethods
- Origami::XFA::Element
- Origami::XRef
- Origami::XRef::Section
- Origami::XRef::Subsection
- Origami::XRefStream
- Origami::XRefToCompressedObj
- EmptySymbol
- Fixnum
- Hash

No matching classes.

# Origami::Adobe::PPKLite

Class representing an Adobe Reader certificate store.

### Constants

Cert
Editable
ID
Size
Trust
Viewable

### Attributes

header[RW]
revisions[RW]

### Public Instance Methods

<<(object) click to toggle source

    # File lib/origami/extensions/ppklite.rb, line 142
      def <<(object)

        object.set_indirect(true)

        if object.no.zero?
        maxno = 1
          while get_object(maxno) do maxno = maxno.succ end

          object.generation = 0
          object.no = maxno
        end

        @revisions.first.body[object.reference] = object

        object.reference
      end

      def Catalog
        get_object(@trailer.Root)
      end

      def save(filename)

        bin = ""
        bin << @header.to_s

        lastno, brange = 0, 0

        xrefs = [ XRef.new(0, XRef::LASTFREE, XRef::FREE) ]
        xrefsection = XRef::Section.new

        @revisions.first.body.values.sort.each { |obj|
          if (obj.no - lastno).abs > 1
            xrefsection << XRef::Subsection.new(brange, xrefs)
            brange = obj.no
            xrefs.clear
          end

          xrefs << XRef.new(bin.size, obj.generation, XRef::USED)
          lastno = obj.no

          bin << obj.to_s
        }

        xrefsection << XRef::Subsection.new(brange, xrefs)

        @xreftable = xrefsection
        @trailer ||= Trailer.new
        @trailer.Size = rev.body.size + 1
        @trailer.startxref = bin.size

        bin << @xreftable.to_s
        bin << @trailer.to_s

        fd = File.open(filename, "w").binmode
          fd << bin
        fd.close

        show_entries
      end
      alias saveas save

      #
      # Prints registered users in the address book
      #
      def show_users

        puts "----------"
        puts "Users list"
        puts "----------"

        @revisions.first.body.values.each { |obj| if obj.is_a?(User) then obj.show; puts end }

        nil
      end

      #
      # Prints registered certificates in the addressbook
      #
      def show_certs
        puts "-----------------"
        puts "Certificates list"
        puts "-----------------"

        @revisions.first.body.values.each { |obj| if obj.is_a?(Certificate) then obj.show; puts end }

        nil
      end

      #
      # Prints certificate with the specified id
      #
      def show_cert(id)
        @revisions.first.body.values.find_all { |obj| obj.is_a?(Certificate) and obj.ID == id }.each do |cert|
          cert.show
          puts
        end

        nil
      end

      #
      # Returns a Certificate dictionary corresponding to the specified id
      #
      def get_cert(id)
        @revisions.first.body.values.find { |obj| obj.is_a?(Certificate) and obj.ID == id }
      end

      def show_user(id)
        users = @revisions.first.body.values.find_all { |obj| obj.is_a?(User) and obj.ID == id }.each do |user|
          user.show
          puts
        end

        nil
      end

      #
      # Prints users and certificates registered in the address book
      #
      def show_entries
        show_users
        show_certs

        puts "End of address book."
      end

      #
      # Add a certificate into the address book
      #
      def add_certificate(certfile, attributes, viewable = false, editable = false)

        cert = Certificate.new
        cert.Cert = OpenSSL::X509::Certificate.new(certfile).to_der
        cert.ID = self.Catalog.PPK.AddressBook.NextID
        self.Catalog.PPK.AddressBook.NextID += 1
        cert.Trust = attributes
        cert.Viewable = viewable
        cert.Editable = editable

        self.Catalog.PPK.AddressBook.Entries.push(self << cert)

        show_certs
      end

      alias to_s show_entries
      alias to_str show_entries

      class Catalog < Dictionary

        include StandardObject

        field   :Type,      :Type => Name, :Default => :Catalog, :Required => true
        field   :PPK,       :Type => Dictionary, :Required => true

        def initialize(hash = {}) #:nodoc:
          super(hash)
        end

      end

      class PPK < Dictionary

        include StandardObject

        field   :Type,        :Type => Name, :Default => :PPK, :Required => true
        field   :User,        :Type => Dictionary, :Required => true
        field   :AddressBook, :Type => Dictionary, :Required => true
        field   :V,           :Type => Integer, :Default => 0x10001, :Required => true

        def initialize(hash = {}) #:nodoc:
          super(hash)
        end

      end

      class UserList < Dictionary

        include StandardObject

        field   :Type,        :Type => Name, :Default => :User, :Required => true

        def initialize(hash = {})
          super(hash)
        end

      end

      class AddressList < Dictionary

        include StandardObject

        field   :Type,        :Type => Name, :Default => :AddressBook, :Required => true
        field   :NextID,      :Type => Integer
        field   :Entries,     :Type => Array, :Default => [], :Required => true

        def initialize(hash = {}) #:nodoc:
          super(hash)
        end

      end

      module Descriptor

        CERTIFICATE = 1
        USER = 2

        def self.included(receiver) #:nodoc:
          receiver.field    :ID,        :Type => Integer, :Required => true
          receiver.field    :ABEType,   :Type => Integer, :Default => Descriptor::CERTIFICATE, :Required => true
        end

        def initialize(hash = {}) #:nodoc:
          super(hash)
        end

      end

      class User < Dictionary

        include StandardObject
        include Descriptor

        field   :ABEType,       :Type => Integer, :Default => Descriptor::USER, :Required => true
        field   :Name,          :Type => String, :Required => true
        field   :Encrypt,       :Type => Integer
        field   :Certs,         :Type => Array, :Default => [], :Required => true

        def show
          puts "ID: #{self.ID}"
          puts "Name: #{self.Name}"
          puts "Certificates: " + self.Certs.join(", ")
        end

      end

      class Certificate < Dictionary

        include StandardObject
        include Descriptor

        module Flags

          CAN_CERTIFY = 1 << 1
          ALLOW_DYNAMIC_CONTENT = 1 << 2
          UNKNOWN_1 = 1 << 3
          ALLOW_HIGH_PRIV_JS = 1 << 4
          UNKNOWN_2 = 1 << 5
          IS_ROOT_CA = 1 << 6

          #~ FULL_TRUST = 1 << 1 | 1 << 2 | 1 << 3 | 1 << 4 | 1 << 5 | 1 << 6
          FULL_TRUST = 8190
        end

        field   :ABEType,       :Type => Integer, :Default => Descriptor::CERTIFICATE, :Required => true
        field   :Usage,         :Type => Integer, :Default => 1, :Required => true
        field   :Viewable,      :Type => Boolean, :Default => true
        field   :Editable,      :Type => Boolean, :Default => true
        field   :Cert,          :Type => String, :Required => true
        field   :Trust,         :Type => Integer, :Default => Flags::UNKNOWN_2, :Required => true

        def show
          puts "ID: #{self.ID}"
          puts "Viewable: #{self.Viewable}"
          puts "Editable: #{self.Editable}"
          puts "Trust attributes: #{self.Trust}"
        end

      end

      def get_object(no, generation = 0) #:nodoc:

        case no
        when Reference
          target = no
        when ::Integer
          target = Reference.new(no, generation)
        when Origami::Object
          return no
        end

        @revisions.first.body[target]
      end

      private

      def rebuildxrefs #:nodoc:

        startxref = @header.to_s.size

        @revisions.first.body.values.each { |object|
          startxref += object.to_s.size
        }

        @xreftable = buildxrefs(@revisions.first.body)

        @trailer ||= Trailer.new
        @trailer.Size = @revisions.first.body.size + 1
        @trailer.startxref = startxref

        self
      end

      def buildxrefs(objects) #:nodoc:

        lastno = 0
        brange = 0

        xrefs = [ XRef.new(0, XRef::LASTFREE, XRef::FREE) ]

        xrefsection = XRef::Section.new
        objects.sort.each { |object|
          if (object.no - lastno).abs > 1
            xrefsection << XRef::Subsection.new(brange, xrefs)
            brange = object.no
            xrefs.clear
          end

          xrefs << XRef.new(get_object_offset(object.no, object.generation), object.generation, XRef::USED)

          lastno = object.no
        }

        xrefsection << XRef::Subsection.new(brange, xrefs)

        xrefsection
      end

      def get_object_offset(no,generation) #:nodoc:

        bodyoffset = @header.to_s.size

        objectoffset = bodyoffset

        @revisions.first.body.values.each { |object|
          if object.no == no and object.generation == generation then return objectoffset
          else
            objectoffset += object.to_s.size
          end
        }

        nil
      end

    end

Catalog() click to toggle source

    # File lib/origami/extensions/ppklite.rb, line 159
    def Catalog
      get_object(@trailer.Root)
    end

add_certificate(certfile, attributes, viewable = false, editable = false) click to toggle source

Add a certificate into the address book

    # File lib/origami/extensions/ppklite.rb, line 272
    def add_certificate(certfile, attributes, viewable = false, editable = false)

      cert = Certificate.new
      cert.Cert = OpenSSL::X509::Certificate.new(certfile).to_der
      cert.ID = self.Catalog.PPK.AddressBook.NextID
      self.Catalog.PPK.AddressBook.NextID += 1
      cert.Trust = attributes
      cert.Viewable = viewable
      cert.Editable = editable

      self.Catalog.PPK.AddressBook.Entries.push(self << cert)

      show_certs
    end

append_subobj(root, objset) click to toggle source

    # File lib/origami/extensions/ppklite.rb, line 123
    def append_subobj(root, objset)
      if objset.find{ |o| o.object_id == root.object_id }.nil?
        objset << root
        if root.is_a?(Array) or root.is_a?(Dictionary)
          root.each { |subobj| append_subobj(subobj, objset) unless subobj.is_a?(Reference) }
        end
      end
    end

get_cert(id) click to toggle source

Returns a Certificate dictionary corresponding to the specified id

    # File lib/origami/extensions/ppklite.rb, line 246
    def get_cert(id)
      @revisions.first.body.values.find { |obj| obj.is_a?(Certificate) and obj.ID == id }
    end

objects() click to toggle source

    # File lib/origami/extensions/ppklite.rb, line 122
    def objects
      def append_subobj(root, objset)
        if objset.find{ |o| o.object_id == root.object_id }.nil?
          objset << root
          if root.is_a?(Array) or root.is_a?(Dictionary)
            root.each { |subobj| append_subobj(subobj, objset) unless subobj.is_a?(Reference) }
          end
        end
      end

      objset = []
      @revisions.first.body.values.each do |object|
        unless object.is_a?(Reference)
          append_subobj(object, objset)
        end
      end

      objset
    end

save(filename) click to toggle source

    # File lib/origami/extensions/ppklite.rb, line 163
    def save(filename)

      bin = ""
      bin << @header.to_s

      lastno, brange = 0, 0

      xrefs = [ XRef.new(0, XRef::LASTFREE, XRef::FREE) ]
      xrefsection = XRef::Section.new

      @revisions.first.body.values.sort.each { |obj|
        if (obj.no - lastno).abs > 1
          xrefsection << XRef::Subsection.new(brange, xrefs)
          brange = obj.no
          xrefs.clear
        end

        xrefs << XRef.new(bin.size, obj.generation, XRef::USED)
        lastno = obj.no

        bin << obj.to_s
      }

      xrefsection << XRef::Subsection.new(brange, xrefs)

      @xreftable = xrefsection
      @trailer ||= Trailer.new
      @trailer.Size = rev.body.size + 1
      @trailer.startxref = bin.size

      bin << @xreftable.to_s
      bin << @trailer.to_s

      fd = File.open(filename, "w").binmode
        fd << bin
      fd.close

      show_entries
    end

show_cert(id) click to toggle source

Prints certificate with the specified id

    # File lib/origami/extensions/ppklite.rb, line 234
    def show_cert(id)
      @revisions.first.body.values.find_all { |obj| obj.is_a?(Certificate) and obj.ID == id }.each do |cert|
        cert.show
        puts
      end

      nil
    end

show_certs() click to toggle source

Prints registered certificates in the addressbook

    # File lib/origami/extensions/ppklite.rb, line 221
    def show_certs
      puts "-----------------"
      puts "Certificates list"
      puts "-----------------"

      @revisions.first.body.values.each { |obj| if obj.is_a?(Certificate) then obj.show; puts end }

      nil
    end

show_entries() click to toggle source

Prints users and certificates registered in the address book

    # File lib/origami/extensions/ppklite.rb, line 262
    def show_entries
      show_users
      show_certs

      puts "End of address book."
    end

show_user(id) click to toggle source

    # File lib/origami/extensions/ppklite.rb, line 250
    def show_user(id)
      users = @revisions.first.body.values.find_all { |obj| obj.is_a?(User) and obj.ID == id }.each do |user|
        user.show
        puts
      end

      nil
    end

show_users() click to toggle source

Prints registered users in the address book

    # File lib/origami/extensions/ppklite.rb, line 207
    def show_users

      puts "----------"
      puts "Users list"
      puts "----------"

      @revisions.first.body.values.each { |obj| if obj.is_a?(User) then obj.show; puts end }

      nil
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.