Bug 991689

Summary: Review Request: dislocker - Utility to access BitLocker encrypted volumes
Product: [Fedora] Fedora Reporter: Robert Scheck <redhat-bugzilla>
Component: Package ReviewAssignee: Christopher Meng <i>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: unspecified    
Version: rawhideCC: i, mads, package-review, rcoltel, redhat-bugzilla, tcallawa
Target Milestone: ---Flags: i: fedora-review+
gwync: fedora-cvs+
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: dislocker-0.3.1-2.20140423git.el6 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2014-05-03 19:56:14 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 1033989    
Bug Blocks:    

Description Robert Scheck 2013-08-03 17:11:04 UTC
Spec URL: http://labs.linuxnetz.de/bugzilla/dislocker.spec
SRPM URL: http://labs.linuxnetz.de/bugzilla/dislocker-0.2.3-1.20130131git.src.rpm
Description:
Dislocker has been designed to read BitLocker encrypted partitions ("drives")
under a Linux system. The driver used to only read volumes encrypted under a
Microsoft Windows 7 system but is now Microsoft Windows Vista capable and has
the write functionality.

The file name where the BitLocker encrypted partition will be decrypted needs
to be given. This may take a long time, depending on the size of the encrypted
partition. But afterward, once the partition is decrypted, the access to the
NTFS partition will be faster than with FUSE. Another thing to think about is
the size of the disk (same size as the volume that is tried to be decrypted).
Nevertheless, once the partition is decrypted, the file can be mounted as any
NTFS partition.


This package is planned to be imported into EPEL 5 and 6 and of course to all
active Fedora branches. Note that dislocker does not do anything illegal, you
still need to have your BitLocker key in order to access the encrypted stuff.

Comment 1 Robert Scheck 2013-08-03 17:15:35 UTC
Adding Fedora Legal on Cc: to get the legal situation also clarified...this
might be relevant in case of potential patents around BitLocker. Just to be
sure :) Thanks!

Comment 2 Tom "spot" Callaway 2013-08-05 15:01:50 UTC
As far as I can see, Bitlocker uses AES. Should not be a legal concern. Lifting FE-Legal.

Comment 3 Christopher Meng 2013-08-06 05:10:59 UTC
First question, do you have intention to support EL5 old system?

Comment 4 Robert Scheck 2013-08-11 23:13:12 UTC
Yes.

Comment 5 Mario Blättermann 2013-11-01 11:38:40 UTC
Scratch build fails for Rawhide:
http://koji.fedoraproject.org/koji/taskinfo?taskID=6122199

build.log:
gcc -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches  -m64 -mtune=generic -DPROGNAME=\"recovery_password\" -D_FILE_OFFSET_BITS=64 -I/usr/include -I../../ -L/usr/lib64 -c -o recovery_password.o recovery_password.c
recovery_password.c:28:27: fatal error: polarssl/sha2.h: No such file or directory
 #include "polarssl/sha2.h"
                           ^
compilation terminated.



Also fails for el5:
http://koji.fedoraproject.org/koji/taskinfo?taskID=6122205

build.log:
error: Group field must be present in package: fuse-dislocker
Building target platforms: ppc
Building for target ppc
Child return code was: 1
EXCEPTION: Command failed.

Comment 6 Christopher Meng 2013-11-21 12:15:05 UTC
NEWS?

Comment 7 Robert Scheck 2013-11-25 01:05:58 UTC
Regarding the build issue on Rawhide: Since the initial review submission the
newer PolarSSL 1.3 (including API changes) entered Fedora, however this is now
fixed (to support both). The building for EL-5 is fixed as well, however there
is no polarssl package for EL-5 so far; I filed bug #1033989 for that.

Spec URL: http://labs.linuxnetz.de/bugzilla/dislocker.spec
SRPM URL: http://labs.linuxnetz.de/bugzilla/dislocker-0.2.3-2.20130131git.src.rpm

I guess the missing EL-5 dependency is not a real show stopper for the overall
review so far?

Comment 8 Christopher Meng 2013-11-25 01:18:30 UTC
No. 

The blocker is that you must package the latest stable 0.3 OR checkout from git again. 

https://github.com/Aorimn/dislocker/releases

Comment 9 Robert Scheck 2013-11-25 01:43:12 UTC
Right, so here we go with an updated package. And I obviously did not yet
run extensive tests with this new dislocker like it happened with 0.2.3 for
6+ months now. But my daily future usage will of course be done using this
updated package:

Spec URL: http://labs.linuxnetz.de/bugzilla/dislocker.spec
SRPM URL: http://labs.linuxnetz.de/bugzilla/dislocker-0.3.1-1.20131102git.src.rpm

Comment 10 Christopher Meng 2013-11-25 07:58:40 UTC
1. You can use tarball downloaded from tag and don't need to write down git in the release tag.

2. https://github.com/Aorimn/dislocker#readme

just https://github.com/Aorimn/dislocker will be fine.

I will review it formally later.

Comment 11 Robert Scheck 2013-11-25 08:12:54 UTC
(In reply to Christopher Meng from comment #10)
> 1. You can use tarball downloaded from tag and don't need to write down git
> in the release tag.

Actually, there is only a tag for 0.3, but none for 0.3.1, which is only in
master right now. As I think it makes sense to take the latest GIT, I would
prefer to stay with that instead with an older release.

> 2. https://github.com/Aorimn/dislocker#readme
> 
> just https://github.com/Aorimn/dislocker will be fine.

I will change that later (either together with other changes mentioned during
your formal review or at latest after committing into VCS thus that the change
is visible in our GIT again), if that's fine for you.

> I will review it formally later.

Thank you! :)

Comment 12 Robert Scheck 2013-12-08 13:50:50 UTC
Christopher, any news here from your side?

Comment 13 Romain Coltel 2014-04-09 18:09:33 UTC
Up!

Comment 14 Christopher Meng 2014-04-10 01:02:16 UTC
(In reply to rcoltel from comment #13)
> Up!

Will review no longer than 2 weeks.

Comment 15 Christopher Meng 2014-04-23 11:56:15 UTC
Please update to develop branch, OK?

polarssl is unbundled in upstream.

You also need to set LDFLAGS via %?__global_ldflags

Comment 16 Robert Scheck 2014-04-23 12:16:24 UTC
(In reply to Christopher Meng from comment #15)
> Please update to develop branch, OK?
>
> polarssl is unbundled in upstream.

Christopher, may I kindly ask you this time to first review the package rather
just request me to perform yet another update of the package? Thank you :)

> You also need to set LDFLAGS via %?__global_ldflags

Why?

Comment 17 Robert Scheck 2014-04-23 12:18:57 UTC
According to https://github.com/Aorimn/dislocker/commits/master there had been
no changes since my last GIT checkout. And comment #11 is still valid IMHO.

Comment 18 Christopher Meng 2014-04-23 15:42:09 UTC
(In reply to Robert Scheck from comment #17)
> According to https://github.com/Aorimn/dislocker/commits/master there had
> been
> no changes since my last GIT checkout. And comment #11 is still valid IMHO.

Try here:

https://github.com/Aorimn/dislocker/commits/develop


(In reply to Robert Scheck from comment #16)
> > You also need to set LDFLAGS via %?__global_ldflags
> 
> Why?


https://lists.fedoraproject.org/pipermail/devel/2013-October/190520.html

Comment 20 Christopher Meng 2014-04-24 02:53:18 UTC
Package Review
==============

Legend:
[x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated




===== MUST items =====

C/C++:
[x]: Package does not contain kernel modules.
[x]: Package contains no static executables.
[x]: Package does not contain any libtool archives (.la)
[x]: Rpath absent or only used for internal libs.

Generic:
[x]: Package is licensed with an open-source compatible license and meets
     other legal requirements as defined in the legal section of Packaging
     Guidelines.
[x]: License field in the package spec file matches the actual license.
     Note: Checking patched sources after %prep for licenses. Licenses found:
     "GPL (v2 or later)", "Unknown or generated". 5 files have unknown
     license. Detailed output of licensecheck:

GPL (v2 or later)
-----------------
dislocker-0.3.1/src/accesses/bek/main.c
dislocker-0.3.1/src/accesses/bek/read_bekfile.c
dislocker-0.3.1/src/accesses/bek/read_bekfile.h
dislocker-0.3.1/src/accesses/rp/main.c
dislocker-0.3.1/src/accesses/rp/recovery_password.c
dislocker-0.3.1/src/accesses/rp/recovery_password.h
dislocker-0.3.1/src/accesses/stretch_key.c
dislocker-0.3.1/src/accesses/stretch_key.h
dislocker-0.3.1/src/accesses/user_pass/main.c
dislocker-0.3.1/src/accesses/user_pass/user_pass.c
dislocker-0.3.1/src/accesses/user_pass/user_pass.h
dislocker-0.3.1/src/common.c
dislocker-0.3.1/src/common.h
dislocker-0.3.1/src/config.c
dislocker-0.3.1/src/config.h
dislocker-0.3.1/src/dislocker.c
dislocker-0.3.1/src/dislocker.h
dislocker-0.3.1/src/encommon.h
dislocker-0.3.1/src/encryption/decrypt.c
dislocker-0.3.1/src/encryption/decrypt.h
dislocker-0.3.1/src/encryption/diffuser.c
dislocker-0.3.1/src/encryption/diffuser.h
dislocker-0.3.1/src/encryption/encrypt.c
dislocker-0.3.1/src/encryption/encrypt.h
dislocker-0.3.1/src/logs/event_descriptors.c
dislocker-0.3.1/src/logs/event_descriptors.h
dislocker-0.3.1/src/metadata/datums.c
dislocker-0.3.1/src/metadata/datums.h
dislocker-0.3.1/src/metadata/extended_info.c
dislocker-0.3.1/src/metadata/extended_info.h
dislocker-0.3.1/src/metadata/fvek.c
dislocker-0.3.1/src/metadata/fvek.h
dislocker-0.3.1/src/metadata/main.c
dislocker-0.3.1/src/metadata/metadata.c
dislocker-0.3.1/src/metadata/metadata.h
dislocker-0.3.1/src/metadata/vmk.c
dislocker-0.3.1/src/metadata/vmk.h
dislocker-0.3.1/src/ntfs/clock.c
dislocker-0.3.1/src/ntfs/clock.h
dislocker-0.3.1/src/ntfs/encoding.c
dislocker-0.3.1/src/ntfs/encoding.h
dislocker-0.3.1/src/ntfs/guid.c
dislocker-0.3.1/src/ntfs/guid.h
dislocker-0.3.1/src/outputs/file/file.c
dislocker-0.3.1/src/outputs/file/file.h
dislocker-0.3.1/src/outputs/fuse/fuse.c
dislocker-0.3.1/src/outputs/fuse/fuse.h
dislocker-0.3.1/src/sectors.c
dislocker-0.3.1/src/sectors.h
dislocker-0.3.1/src/ssl_bindings.h
dislocker-0.3.1/src/xstd/xstdio.c
dislocker-0.3.1/src/xstd/xstdio.h
dislocker-0.3.1/src/xstd/xstdlib.c
dislocker-0.3.1/src/xstd/xstdlib.h

Unknown or generated
--------------------
dislocker-0.3.1/src/accesses/user_pass/check_user_pass.c
dislocker-0.3.1/src/brew_install_dislocker.rb
dislocker-0.3.1/src/encryption/crc32.c
dislocker-0.3.1/src/encryption/crc32.h
dislocker-0.3.1/src/outputs/fuse/main.c

[x]: License file installed when any subpackage combination is installed.
[x]: %build honors applicable compiler flags or justifies otherwise.
[x]: Package contains no bundled libraries without FPC exception.
[x]: Changelog in prescribed format.
[x]: Sources contain only permissible code or content.
[-]: Each %files section contains %defattr if rpm < 4.4
     Note: %defattr present but not needed
[-]: Package contains desktop file if it is a GUI application.
[-]: Development files must be in a -devel package
[x]: Package uses nothing in %doc for runtime.
[x]: Package consistently uses macros (instead of hard-coded directory names).
[x]: Package is named according to the Package Naming Guidelines.
[x]: Package does not generate any conflict.
[x]: Package obeys FHS, except libexecdir and /usr/target.
[-]: If the package is a rename of another package, proper Obsoletes and
     Provides are present.
[x]: Requires correct, justified where necessary.
[x]: Spec file is legible and written in American English.
[-]: Package contains systemd file(s) if in need.
[x]: Useful -debuginfo package or justification otherwise.
[x]: Package is not known to require an ExcludeArch tag.
[-]: Large documentation must go in a -doc subpackage. Large could be size
     (~1MB) or number of files.
     Note: Documentation size is 61440 bytes in 6 files.
[x]: Package complies to the Packaging Guidelines
[x]: Package successfully compiles and builds into binary rpms on at least one
     supported primary architecture.
[x]: Package installs properly.
[x]: Rpmlint is run on all rpms the build produces.
     Note: There are rpmlint messages (see attachment).
[x]: If (and only if) the source package includes the text of the license(s)
     in its own file, then that file, containing the text of the license(s)
     for the package is included in %doc.
[x]: Package requires other packages for directories it uses.
[x]: Package must own all directories that it creates.
[x]: Package does not own files or directories owned by other packages.
[x]: All build dependencies are listed in BuildRequires, except for any that
     are listed in the exceptions section of Packaging Guidelines.
[x]: Package uses either %{buildroot} or $RPM_BUILD_ROOT
[x]: Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the
     beginning of %install.
[x]: Macros in Summary, %description expandable at SRPM build time.
[x]: Package does not contain duplicates in %files.
[x]: Permissions on files are set properly.
[x]: Package use %makeinstall only when make install' ' DESTDIR=... doesn't
     work.
[x]: Package is named using only allowed ASCII characters.
[x]: Package do not use a name that already exist
[x]: Package is not relocatable.
[x]: Sources used to build the package match the upstream source, as provided
     in the spec URL.
[x]: Spec file name must match the spec package %{name}, in the format
     %{name}.spec.
[x]: File names are valid UTF-8.
[x]: Packages must not store files under /srv, /opt or /usr/local

===== SHOULD items =====

Generic:
[-]: Buildroot is not present
     Note: Buildroot: present but not needed
[-]: Package has no %clean section with rm -rf %{buildroot} (or
     $RPM_BUILD_ROOT)
     Note: %clean present but not required
[x]: If the source package does not include license text(s) as a separate file
     from upstream, the packager SHOULD query upstream to include it.
[x]: Final provides and requires are sane (see attachments).
[-]: Fully versioned dependency in subpackages if applicable.
     Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in fuse-
     dislocker
[x]: Package functions as described.
[x]: Latest version is packaged.
[x]: Package does not include license text files separate from upstream.
[x]: SourceX tarball generation or download is documented.
     Note: Package contains tarball without URL, check comments
[x]: Description and summary sections in the package spec file contains
     translations for supported Non-English languages, if available.
[x]: Package should compile and build into binary rpms on all supported
     architectures.
[-]: %check is present and all tests pass.
[x]: Packages should try to preserve timestamps of original installed files.
[x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file
[x]: Reviewer should test that the package builds in mock.
[x]: Dist tag is present (not strictly required in GL).
[x]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin.
[x]: Uses parallel make %{?_smp_mflags} macro.
[x]: SourceX is a working URL.
[x]: Spec use %global instead of %define unless justified.

===== EXTRA items =====

Generic:
[x]: Rpmlint is run on all installed packages.
     Note: There are rpmlint messages (see attachment).
[x]: Large data in /usr/share should live in a noarch subpackage if package is
     arched.


Rpmlint
-------
Checking: dislocker-0.3.1-2.20140423git.fc21.i686.rpm
          fuse-dislocker-0.3.1-2.20140423git.fc21.i686.rpm
          dislocker-0.3.1-2.20140423git.fc21.src.rpm
dislocker.i686: W: spelling-error %description -l en_US decrypted -> encrypted
fuse-dislocker.i686: W: spelling-error %description -l en_US decrypted -> encrypted
dislocker.src: W: spelling-error %description -l en_US decrypted -> encrypted
dislocker.src:15: W: macro-in-comment %{release}
dislocker.src: W: invalid-url Source0: dislocker-0.3.1.tar.bz2
3 packages and 0 specfiles checked; 0 errors, 5 warnings.




Rpmlint (installed packages)
----------------------------
# rpmlint dislocker fuse-dislocker
dislocker.i686: W: spelling-error %description -l en_US decrypted -> encrypted
fuse-dislocker.i686: W: spelling-error %description -l en_US decrypted -> encrypted
2 packages and 0 specfiles checked; 0 errors, 2 warnings.
# echo 'rpmlint-done:'



Requires
--------
dislocker (rpmlib, GLIBC filtered):
    libc.so.6
    libpolarssl.so.5
    libpthread.so.0
    rtld(GNU_HASH)

fuse-dislocker (rpmlib, GLIBC filtered):
    libc.so.6
    libfuse.so.2
    libfuse.so.2(FUSE_2.6)
    libpolarssl.so.5
    libpthread.so.0
    rtld(GNU_HASH)



Provides
--------
dislocker:
    dislocker
    dislocker(x86-32)

fuse-dislocker:
    fuse-dislocker
    fuse-dislocker(x86-32)



Generated by fedora-review 0.5.1 (bb9bf27) last change: 2013-12-13
Command line :/bin/fedora-review -rvn dislocker-0.3.1-2.20140423git.src.rpm
Buildroot used: fedora-rawhide-i386
Active plugins: Generic, Shell-api, C/C++
Disabled plugins: Java, Python, fonts, SugarActivity, Ocaml, Perl, Haskell, R, PHP, Ruby
Disabled flags: EXARCH, EPEL5, BATCH, DISTTAG

-----------------------------------------------
PACKAGE APPROVED.

Comment 21 Robert Scheck 2014-04-24 13:12:40 UTC
Christopher, thank you very much for the review!


New Package SCM Request
=======================
Package Name: dislocker
Short Description: Utility to access BitLocker encrypted volumes
Owners: robert
Branches: f20 f19 epel7 el6 el5
InitialCC:

Comment 22 Gwyn Ciesla 2014-04-24 14:01:36 UTC
Git done (by process-git-requests).

Comment 23 Fedora Update System 2014-04-24 18:37:01 UTC
dislocker-0.3.1-2.20140423git.fc20 has been submitted as an update for Fedora 20.
https://admin.fedoraproject.org/updates/dislocker-0.3.1-2.20140423git.fc20

Comment 24 Fedora Update System 2014-04-24 18:37:20 UTC
dislocker-0.3.1-2.20140423git.fc19 has been submitted as an update for Fedora 19.
https://admin.fedoraproject.org/updates/dislocker-0.3.1-2.20140423git.fc19

Comment 25 Fedora Update System 2014-04-24 18:37:45 UTC
dislocker-0.3.1-2.20140423git.el6 has been submitted as an update for Fedora EPEL 6.
https://admin.fedoraproject.org/updates/dislocker-0.3.1-2.20140423git.el6

Comment 26 Fedora Update System 2014-04-24 18:38:04 UTC
dislocker-0.3.1-2.20140423git.el5 has been submitted as an update for Fedora EPEL 5.
https://admin.fedoraproject.org/updates/dislocker-0.3.1-2.20140423git.el5

Comment 27 Fedora Update System 2014-04-25 21:57:03 UTC
dislocker-0.3.1-2.20140423git.el6 has been pushed to the Fedora EPEL 6 testing repository.

Comment 28 Fedora Update System 2014-05-03 19:56:14 UTC
dislocker-0.3.1-2.20140423git.fc20 has been pushed to the Fedora 20 stable repository.

Comment 29 Fedora Update System 2014-05-03 19:56:22 UTC
dislocker-0.3.1-2.20140423git.fc19 has been pushed to the Fedora 19 stable repository.

Comment 30 Fedora Update System 2014-05-12 02:05:10 UTC
dislocker-0.3.1-2.20140423git.el5 has been pushed to the Fedora EPEL 5 stable repository.

Comment 31 Fedora Update System 2014-05-12 02:06:11 UTC
dislocker-0.3.1-2.20140423git.el6 has been pushed to the Fedora EPEL 6 stable repository.