Method: PDF::Reader::SecurityHandlerFactory.build_standard_handler

Defined in:
lib/pdf/reader/security_handler_factory.rb

.build_standard_handler(encrypt, doc_id, password) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/pdf/reader/security_handler_factory.rb', line 25

def self.build_standard_handler(encrypt, doc_id, password)
  encmeta = !encrypt.has_key?(:EncryptMetadata) || encrypt[:EncryptMetadata].to_s == "true"
  key_builder = StandardKeyBuilder.new(
    key_length: (encrypt[:Length] || 40).to_i,
    revision: encrypt[:R],
    owner_key: encrypt[:O],
    user_key: encrypt[:U],
    permissions: encrypt[:P].to_i,
    encrypted_metadata: encmeta,
    file_id: doc_id.first,
  )
  cfm = encrypt.fetch(:CF, {}).fetch(encrypt[:StmF], {}).fetch(:CFM, nil)
  if cfm == :AESV2
    AesV2SecurityHandler.new(key_builder.key(password))
  else
    Rc4SecurityHandler.new(key_builder.key(password))
  end
end