class PDF::Reader::SecurityHandlerFactory

def self.build_standard_handler(encrypt, doc_id, password)

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