Skip to content

Commit 13399a7

Browse files
committed
streamline aesv2 decrypt() method
1 parent 211aa24 commit 13399a7

File tree

3 files changed

+10
-12
lines changed

3 files changed

+10
-12
lines changed

lib/PDF/IO/Crypt/AESV2.rakumod

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ method !object-key(UInt $obj-num, UInt $gen-num ) {
3737
my uint8 @gen-bytes = pack-le($gen-num, 32);
3838
my uint8 @obj-key = flat $.key.list, @obj-bytes[0 .. 2], @gen-bytes[0 .. 1], 0x73, 0x41, 0x6C, 0x54; # 'sAIT'
3939

40-
md5( Buf.new(@obj-key) );
40+
md5( Buf.new: @obj-key );
4141
}
4242

4343
multi method crypt( Str $text, |c) {
@@ -53,14 +53,12 @@ multi method crypt( $bytes, Str :$mode! where 'encrypt'|'decrypt',
5353

5454
method encrypt( $key, $dec --> Buf) {
5555
my Buf $iv .= new( (^256).pick xx KeyLen );
56-
my $enc = $iv;
57-
$enc.append: self!aes-encrypt($key, $dec, :$iv );
58-
$enc;
56+
$iv.append: self!aes-encrypt($key, $dec, :$iv );
5957
}
6058

61-
method decrypt( $key, $enc-iv) {
62-
my Buf $iv .= new: $enc-iv[^KeyLen];
63-
my @enc = +$enc-iv > KeyLen ?? $enc-iv[KeyLen .. *] !! [];
64-
self!aes-decrypt($key, Buf.new(@enc), :$iv );
59+
method decrypt( $key, Blob $enc-iv) {
60+
my Blob $iv .= new: $enc-iv[^KeyLen];
61+
my $enc = +$enc-iv > KeyLen ?? $enc-iv.subbuf(KeyLen, *) !! [];
62+
self!aes-decrypt($key, $enc, :$iv );
6563
}
6664

lib/PDF/IO/Crypt/RC4.rakumod

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ method !object-key(UInt $obj-num, UInt $gen-num ) {
2222
my uint8 @obj-key = flat $.key.list, @obj-bytes[0 .. 2], @gen-bytes[0 .. 1];
2323

2424
my UInt $size = +@obj-key;
25-
my $key = md5( Buf.new(@obj-key) );
25+
my Buf $key = md5( Buf.new: @obj-key );
2626
$key.reallocate($size)
2727
if $size < OpenSSL::Digest::MD5_DIGEST_LENGTH;
2828
$key;
@@ -32,10 +32,10 @@ multi method crypt( Str $text, |c --> Str) {
3232
$.crypt( $text.encode("latin-1"), |c ).decode("latin-1");
3333
}
3434

35-
multi method crypt( $bytes, UInt :$obj-num!, UInt :$gen-num! ) {
35+
multi method crypt( Blob $bytes, UInt :$obj-num!, UInt :$gen-num! --> Buf) {
3636
# Algorithm 3.1
3737

38-
my $obj-key = self!object-key( $obj-num, $gen-num );
38+
my Buf $obj-key = self!object-key( $obj-num, $gen-num );
3939
PDF::IO::Crypt.rc4-crypt( $obj-key, $bytes );
4040
}
4141

t/update-encrypted.t

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ my $decoded = "BT /F1 16 Tf 40 250 Td (new page added to an encrypted PDF) Tj E
2424
$Parent<Count>++;
2525
}
2626

27-
$pdf.id = $id++;
27+
$pdf.id = $id;
2828
lives-ok { $pdf.update }, 'doc.update lives';
2929

3030
lives-ok {$pdf = PDF.open: "t/update-encrypted.pdf"}, 'doc re-open lives';

0 commit comments

Comments
 (0)