func (a *archive50) parseFileEncryptionRecord(b readBuf, f *fileBlockHeader) error {
	if ver := b.uvarint(); ver != 0 {
		return errUnknownEncMethod
	}
	flags := b.uvarint()

	keys, err := a.getKeys(&b)
	if err != nil {
		return err
	}

	f.key = keys[0]
	if len(b) < 16 {
		return errCorruptEncrypt
	}
	f.iv = b.bytes(16)

	if flags&file5EncCheckPresent > 0 {
		if err := checkPassword(&b, keys); err != nil {
			return err
		}
	}
	if flags&file5EncUseMac > 0 {
		a.checksum.key = keys[1]
	}
	return nil
}
func (a *archive50) parseFileEncryptionRecord(b readBuf, f *fileBlockHeader) error {
	if ver := b.uvarint(); ver != 0 {
		return errUnknownEncMethod
	}
	flags := b.uvarint()

	keys, err := a.getKeys(&b)
	if err != nil {
		return err
	}

	f.key = keys[0]
	if len(b) < 16 {
		return errCorruptEncrypt
	}
	f.iv = b.bytes(16)

	if flags&file5EncCheckPresent > 0 {
		if err := checkPassword(&b, keys); err != nil {
			return err
		}
	}
	if flags&file5EncUseMac > 0 {
		a.checksum.key = keys[1]
	}
	return nil
}
func ( a * archive50 ) parseFileEncryptionRecord ( b readBuf , f * fileBlockHeader ) error { if ver := b . uvarint ( ) ; ver != 0 { return errUnknownEncMethod } flags := b . uvarint ( ) keys , err := a . getKeys ( & b ) if err != nil { return err } f . key = keys [ 0 ] if len ( b ) < 16 { return errCorruptEncrypt } f . iv = b . bytes ( 16 ) if flags & file5EncCheckPresent > 0 { if err := checkPassword ( & b , keys ) ; err != nil { return err } } if flags & file5EncUseMac > 0 { a . checksum . key = keys [ 1 ] } return nil }
// parseFileEncryptionRecord processes the optional file encryption record from a file header.
parseFileEncryptionRecord processes the optional file encryption record from a file header .