Merge pull request #439 from adrg/aes-bit-crypt-filter-length

Account for crypt filter length specified in bits for AESV2 and AESV3
This commit is contained in:
Gunnsteinn Hall 2019-04-22 18:19:52 +00:00 committed by GitHub
commit 3b2c788c32
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 1 deletions

View File

@ -5,7 +5,11 @@
package crypt
import "fmt"
import (
"fmt"
"github.com/unidoc/unidoc/common"
)
func init() {
registerFilter("AESV2", newFilterAESV2)
@ -21,6 +25,10 @@ func NewFilterAESV2() Filter {
}
func newFilterAESV2(d FilterDict) (Filter, error) {
if d.Length == 128 {
common.Log.Debug("AESV2 crypt filter length appears to be in bits rather than bytes - assuming bits (%d)", d.Length)
d.Length /= 8
}
if d.Length != 0 && d.Length != 16 {
return nil, fmt.Errorf("invalid AESV2 crypt filter length (%d)", d.Length)
}

View File

@ -29,6 +29,10 @@ func NewFilterAESV3() Filter {
}
func newFilterAESV3(d FilterDict) (Filter, error) {
if d.Length == 256 {
common.Log.Debug("AESV3 crypt filter length appears to be in bits rather than bytes - assuming bits (%d)", d.Length)
d.Length /= 8
}
if d.Length != 0 && d.Length != 32 {
return nil, fmt.Errorf("invalid AESV3 crypt filter length (%d)", d.Length)
}