Class: PQCrypto::Seal::DekRotator
- Inherits:
-
Object
- Object
- PQCrypto::Seal::DekRotator
- Defined in:
- lib/pq_crypto/seal/core.rb
Instance Method Summary collapse
- #call ⇒ Object
-
#initialize(envelope, credentials:, recipients:, padding:, limits:, recipient_capacity: nil, slot_size: nil) ⇒ DekRotator
constructor
A new instance of DekRotator.
Constructor Details
#initialize(envelope, credentials:, recipients:, padding:, limits:, recipient_capacity: nil, slot_size: nil) ⇒ DekRotator
Returns a new instance of DekRotator.
120 121 122 123 124 125 126 127 128 129 |
# File 'lib/pq_crypto/seal/core.rb', line 120 def initialize(envelope, credentials:, recipients:, padding:, limits:, recipient_capacity: nil, slot_size: nil) @envelope = Envelope.parse(envelope, limits: limits) @credentials = credentials @recipients = recipients @padding = padding == :preserve ? { to: @envelope.size } : padding @limits = limits @recipient_capacity = recipient_capacity @slot_size = slot_size end |
Instance Method Details
#call ⇒ Object
131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 |
# File 'lib/pq_crypto/seal/core.rb', line 131 def call dek = @envelope.unwrap_dek(@credentials) inner_bytes = @envelope.decrypt_inner(dek) inner = Format::InnerCodec.parse(inner_bytes) @limits.check_plaintext!(inner.content.bytesize) OneShotEncryptor.new( inner.content, to: @recipients, metadata: inner., public_metadata: @envelope.header., recipient_capacity: capacity_for_reencrypt, slot_size: slot_size_for_reencrypt, padding: @padding ).call ensure Secrets.wipe_each!(dek, inner_bytes) Secrets.wipe_each!(inner.content, inner.) if inner end |