Module: Origami::Encryption::EncryptedStream
- Includes:
- EncryptedObject
- Defined in:
- lib/origami/encryption.rb
Overview
Module for encrypted Stream.
Instance Attribute Summary
Attributes included from EncryptedObject
Class Method Summary collapse
Instance Method Summary collapse
Methods included from EncryptedObject
Class Method Details
.extended(obj) ⇒ Object
506 507 508 |
# File 'lib/origami/encryption.rb', line 506 def self.extended(obj) obj.decrypted = false end |
Instance Method Details
#decrypt! ⇒ Object
548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 |
# File 'lib/origami/encryption.rb', line 548 def decrypt! return self if @decrypted if self.filters.first == :Crypt params = decode_params.first if params.is_a?(Dictionary) and params.Name.is_a?(Name) crypt_filter = params.Name.value else crypt_filter = :Identity end cipher = self.document.encryption_cipher(crypt_filter) else cipher = self.document.stream_encryption_cipher end raise EncryptionError, "Cannot find stream encryption filter" if cipher.nil? key = compute_object_key(cipher) self.encoded_data = cipher.decrypt(key, @encoded_data) @decrypted = true self end |
#encrypt! ⇒ Object
510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 |
# File 'lib/origami/encryption.rb', line 510 def encrypt! return self unless @decrypted encode! if self.filters.first == :Crypt params = decode_params.first if params.is_a?(Dictionary) and params.Name.is_a?(Name) crypt_filter = params.Name.value else crypt_filter = :Identity end cipher = self.document.encryption_cipher(crypt_filter) else cipher = self.document.stream_encryption_cipher end raise EncryptionError, "Cannot find stream encryption filter" if cipher.nil? key = compute_object_key(cipher) @encoded_data = if cipher == RC4 or cipher == Identity cipher.encrypt(key, self.encoded_data) else iv = Encryption.rand_bytes(AES::BLOCKSIZE) cipher.encrypt(key, iv, @encoded_data) end @decrypted = false @encoded_data.freeze self.freeze self end |