Linux polon 4.19.0-27-amd64 #1 SMP Debian 4.19.316-1 (2024-06-25) x86_64
Apache/2.4.59 (Debian)
: 10.2.73.233 | : 216.73.216.239
Cant Read [ /etc/named.conf ]
5.6.40-64+0~20230107.71+debian10~1.gbp673146
ifk
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
HASH IDENTIFIER
README
+ Create Folder
+ Create File
/
usr /
bin /
[ HOME SHELL ]
Name
Size
Permission
Action
X11
[ DIR ]
drwxr-xr-x
2to3-2.7
96
B
-rwxr-xr-x
GET
15.82
KB
-rwxr-xr-x
HEAD
15.82
KB
-rwxr-xr-x
Mail
110.24
KB
-rwxr-xr-x
POST
15.82
KB
-rwxr-xr-x
[
58.66
KB
-rwxr-xr-x
aa-enabled
30.21
KB
-rwxr-xr-x
aa-exec
30.21
KB
-rwxr-xr-x
ab
54.18
KB
-rwxr-xr-x
aclocal
35.62
KB
-rwxr-xr-x
aclocal-1.16
35.62
KB
-rwxr-xr-x
acpi
23.43
KB
-rwxr-xr-x
acpi_listen
14.27
KB
-rwxr-xr-x
add-apt-repository
6.21
KB
-rwxr-xr-x
addpart
26.08
KB
-rwxr-xr-x
addr2line
31.09
KB
-rwxr-xr-x
appletviewer
6.34
KB
-rwxr-xr-x
appres
10.23
KB
-rwxr-xr-x
apropos
54.98
KB
-rwxr-xr-x
apt
18.09
KB
-rwxr-xr-x
apt-add-repository
6.21
KB
-rwxr-xr-x
apt-cache
82.16
KB
-rwxr-xr-x
apt-cdrom
26.16
KB
-rwxr-xr-x
apt-config
26.09
KB
-rwxr-xr-x
apt-extracttemplates
22.16
KB
-rwxr-xr-x
apt-ftparchive
238.16
KB
-rwxr-xr-x
apt-get
46.16
KB
-rwxr-xr-x
apt-key
27.08
KB
-rwxr-xr-x
apt-listchanges
10.61
KB
-rwxr-xr-x
apt-mark
54.16
KB
-rwxr-xr-x
apt-sortpkgs
46.09
KB
-rwxr-xr-x
aptitude
4.18
MB
-rwxr-xr-x
aptitude-create-state-bundle
1.89
KB
-rwxr-xr-x
aptitude-curses
4.18
MB
-rwxr-xr-x
aptitude-run-state-bundle
2.78
KB
-rwxr-xr-x
ar
63.07
KB
-rwxr-xr-x
arch
38.66
KB
-rwxr-xr-x
aria_chk
4.54
MB
-rwxr-xr-x
aria_dump_log
4.35
MB
-rwxr-xr-x
aria_ftdump
4.37
MB
-rwxr-xr-x
aria_pack
4.39
MB
-rwxr-xr-x
aria_read_log
4.5
MB
-rwxr-xr-x
as
872.93
KB
-rwxr-xr-x
aspell
150.34
KB
-rwxr-xr-x
aspell-import
2
KB
-rwxr-xr-x
at
54.26
KB
-rwsr-sr-x
atq
54.26
KB
-rwsr-sr-x
atrm
54.26
KB
-rwsr-sr-x
autoconf
14.42
KB
-rwxr-xr-x
autoheader
8.34
KB
-rwxr-xr-x
autom4te
31.91
KB
-rwxr-xr-x
automake
251.9
KB
-rwxr-xr-x
automake-1.16
251.9
KB
-rwxr-xr-x
autopoint
25.97
KB
-rwxr-xr-x
autoreconf
20.67
KB
-rwxr-xr-x
autoscan
16.73
KB
-rwxr-xr-x
autoupdate
33.08
KB
-rwxr-xr-x
awk
658.81
KB
-rwxr-xr-x
b2sum
58.78
KB
-rwxr-xr-x
base32
42.69
KB
-rwxr-xr-x
base64
42.69
KB
-rwxr-xr-x
basename
38.59
KB
-rwxr-xr-x
bashbug
6.63
KB
-rwxr-xr-x
batch
152
B
-rwxr-xr-x
bc
86.7
KB
-rwxr-xr-x
bootctl
46.23
KB
-rwxr-xr-x
broadwayd
118.08
KB
-rwxr-xr-x
bsd-from
10.24
KB
-rwxr-xr-x
bsd-mailx
110.24
KB
-rwxr-xr-x
bsd-write
14.39
KB
-rwxr-sr-x
buildhash
38.38
KB
-rwxr-xr-x
busctl
78.19
KB
-rwxr-xr-x
c++
1.05
MB
-rwxr-xr-x
c++filt
30.69
KB
-rwxr-xr-x
c89
428
B
-rwxr-xr-x
c89-gcc
428
B
-rwxr-xr-x
c99
454
B
-rwxr-xr-x
c99-gcc
454
B
-rwxr-xr-x
c_rehash
6.13
KB
-rwxr-xr-x
cal
29.15
KB
-rwxr-xr-x
calendar
31.15
KB
-rwxr-xr-x
captoinfo
86.11
KB
-rwxr-xr-x
catchsegv
3.23
KB
-rwxr-xr-x
catman
38.46
KB
-rwxr-xr-x
cc
1.05
MB
-rwxr-xr-x
cd-create-profile
21.99
KB
-rwxr-xr-x
cd-fix-profile
25.99
KB
-rwxr-xr-x
cd-iccdump
13.99
KB
-rwxr-xr-x
cd-it8
21.99
KB
-rwxr-xr-x
chacl
13.99
KB
-rwxr-xr-x
chage
70.13
KB
-rwxr-sr-x
chardet
389
B
-rwxr-xr-x
chardet3
389
B
-rwxr-xr-x
chardetect
389
B
-rwxr-xr-x
chardetect3
389
B
-rwxr-xr-x
chattr
14
KB
-rwxr-xr-x
chcon
62.91
KB
-rwxr-xr-x
checkgid
13.99
KB
-rwxr-xr-x
chfn
52.83
KB
-rwsr-xr-x
choom
50.08
KB
-rwxr-xr-x
chrt
34.08
KB
-rwxr-xr-x
chsh
43.48
KB
-rwsr-xr-x
ckbcomp
146.38
KB
-rwxr-xr-x
cksum
38.63
KB
-rwxr-xr-x
clear
14
KB
-rwxr-xr-x
clear_console
14.3
KB
-rwxr-xr-x
clhsdb
6.35
KB
-rwxr-xr-x
cmp
50.64
KB
-rwxr-xr-x
codepage
14.21
KB
-rwxr-xr-x
col
10.23
KB
-rwxr-xr-x
colcrt
10.2
KB
-rwxr-xr-x
colormgr
53.99
KB
-rwxr-xr-x
colrm
10.19
KB
-rwxr-xr-x
column
10.34
KB
-rwxr-xr-x
comm
42.69
KB
-rwxr-xr-x
compose
17.74
KB
-rwxr-xr-x
corelist
14.73
KB
-rwxr-xr-x
cpan
7.96
KB
-rwxr-xr-x
cpan5.28-x86_64-linux-gnu
7.99
KB
-rwxr-xr-x
cpio-filter
1.22
KB
-rwxr-xr-x
cpp
1.05
MB
-rwxr-xr-x
cpp-4.9
814.43
KB
-rwxr-xr-x
cpp-6
930.77
KB
-rwxr-xr-x
cpp-8
1.05
MB
-rwxr-xr-x
crc32
1.04
KB
-rwxr-xr-x
crontab
42.55
KB
-rwxr-sr-x
csplit
54.84
KB
-rwxr-xr-x
ctstat
22.74
KB
-rwxr-xr-x
curl
226.07
KB
-rwxr-xr-x
cut
42.75
KB
-rwxr-xr-x
cvtsudoers
250.29
KB
-rwxr-xr-x
dbilogstrip
1.35
KB
-rwxr-xr-x
dbiprof
6.06
KB
-rwxr-xr-x
dbiproxy
5.27
KB
-rwxr-xr-x
dbus-cleanup-sockets
13.98
KB
-rwxr-xr-x
dbus-daemon
235.04
KB
-rwxr-xr-x
dbus-monitor
25.99
KB
-rwxr-xr-x
dbus-run-session
13.98
KB
-rwxr-xr-x
dbus-send
29.98
KB
-rwxr-xr-x
dbus-update-activation-environ...
13.98
KB
-rwxr-xr-x
dbus-uuidgen
13.98
KB
-rwxr-xr-x
dc
46.09
KB
-rwxr-xr-x
deallocvt
14.31
KB
-rwxr-xr-x
deb-systemd-helper
20.83
KB
-rwxr-xr-x
deb-systemd-invoke
4.33
KB
-rwxr-xr-x
debconf
2.79
KB
-rwxr-xr-x
debconf-apt-progress
11.27
KB
-rwxr-xr-x
debconf-communicate
608
B
-rwxr-xr-x
debconf-copydb
1.68
KB
-rwxr-xr-x
debconf-escape
647
B
-rwxr-xr-x
debconf-gettextize
15.97
KB
-rwxr-xr-x
debconf-set-selections
2.87
KB
-rwxr-xr-x
debconf-show
1.78
KB
-rwxr-xr-x
debconf-updatepo
4.46
KB
-rwxr-xr-x
debianbts
413
B
-rwxr-xr-x
defmt-c
5.99
KB
-rwxr-xr-x
defmt-sh
5.99
KB
-rwxr-xr-x
delpart
26.08
KB
-rwxr-xr-x
delv
44.83
KB
-rwxr-xr-x
dh
30.77
KB
-rwxr-xr-x
dh_auto_build
1.37
KB
-rwxr-xr-x
dh_auto_clean
1.51
KB
-rwxr-xr-x
dh_auto_configure
1.63
KB
-rwxr-xr-x
dh_auto_install
2.8
KB
-rwxr-xr-x
dh_auto_test
1.65
KB
-rwxr-xr-x
dh_autoreconf
6.46
KB
-rwxr-xr-x
dh_autoreconf_clean
2.1
KB
-rwxr-xr-x
dh_autotools-dev_restoreconfig
1.79
KB
-rwxr-xr-x
dh_autotools-dev_updateconfig
1.81
KB
-rwxr-xr-x
dh_bash-completion
2.39
KB
-rwxr-xr-x
dh_bugfiles
3.58
KB
-rwxr-xr-x
dh_builddeb
4.96
KB
-rwxr-xr-x
dh_clean
4.91
KB
-rwxr-xr-x
dh_compress
7.58
KB
-rwxr-xr-x
dh_dkms
4.2
KB
-rwxr-xr-x
dh_dwz
3.84
KB
-rwxr-xr-x
dh_fixperms
5.28
KB
-rwxr-xr-x
dh_gconf
2.78
KB
-rwxr-xr-x
dh_gencontrol
5.85
KB
-rwxr-xr-x
dh_icons
2.04
KB
-rwxr-xr-x
dh_install
11.24
KB
-rwxr-xr-x
dh_installcatalogs
3.25
KB
-rwxr-xr-x
dh_installchangelogs
9
KB
-rwxr-xr-x
dh_installcron
1.6
KB
-rwxr-xr-x
dh_installdeb
7.8
KB
-rwxr-xr-x
dh_installdebconf
3.21
KB
-rwxr-xr-x
dh_installdirs
3
KB
-rwxr-xr-x
dh_installdocs
14.67
KB
-rwxr-xr-x
dh_installemacsen
3.74
KB
-rwxr-xr-x
dh_installexamples
5.33
KB
-rwxr-xr-x
dh_installgsettings
2.24
KB
-rwxr-xr-x
dh_installifupdown
1.47
KB
-rwxr-xr-x
dh_installinfo
2.87
KB
-rwxr-xr-x
dh_installinit
14.31
KB
-rwxr-xr-x
dh_installinitramfs
2.18
KB
-rwxr-xr-x
dh_installlogcheck
1.94
KB
-rwxr-xr-x
dh_installlogrotate
1.14
KB
-rwxr-xr-x
dh_installman
11.07
KB
-rwxr-xr-x
dh_installmanpages
4.89
KB
-rwxr-xr-x
dh_installmenu
2.15
KB
-rwxr-xr-x
dh_installmime
1.3
KB
-rwxr-xr-x
dh_installmodules
2.63
KB
-rwxr-xr-x
dh_installpam
1.13
KB
-rwxr-xr-x
dh_installppp
1.38
KB
-rwxr-xr-x
dh_installsystemd
13.06
KB
-rwxr-xr-x
dh_installsystemduser
7.41
KB
-rwxr-xr-x
dh_installtex
17.95
KB
-rwxr-xr-x
dh_installudev
2.1
KB
-rwxr-xr-x
dh_installwm
3.25
KB
-rwxr-xr-x
dh_installxfonts
2.91
KB
-rwxr-xr-x
dh_link
4.24
KB
-rwxr-xr-x
dh_lintian
1.29
KB
-rwxr-xr-x
dh_listpackages
824
B
-rwxr-xr-x
dh_makeshlibs
10.87
KB
-rwxr-xr-x
dh_md5sums
3.4
KB
-rwxr-xr-x
dh_missing
6.32
KB
-rwxr-xr-x
dh_movefiles
4.69
KB
-rwxr-xr-x
dh_perl
4.23
KB
-rwxr-xr-x
dh_perl_dbi
1.04
KB
-rwxr-xr-x
dh_perl_openssl
1.36
KB
-rwxr-xr-x
dh_phpcomposer
3.01
KB
-rwxr-xr-x
dh_phppear
5.63
KB
-rwxr-xr-x
dh_prep
1.87
KB
-rwxr-xr-x
dh_pysupport
11.95
KB
-rwxr-xr-x
dh_python2
1.03
KB
-rwxr-xr-x
dh_shlibdeps
6.13
KB
-rwxr-xr-x
dh_strip
14.45
KB
-rwxr-xr-x
dh_strip_nondeterminism
2.68
KB
-rwxr-xr-x
dh_systemd_enable
8.97
KB
-rwxr-xr-x
dh_systemd_start
8.57
KB
-rwxr-xr-x
dh_testdir
1.3
KB
-rwxr-xr-x
dh_testroot
2.86
KB
-rwxr-xr-x
dh_ucf
2.29
KB
-rwxr-xr-x
dh_update_autotools_config
1.84
KB
-rwxr-xr-x
dh_usrlocal
4.2
KB
-rwxr-xr-x
diff
215.28
KB
-rwxr-xr-x
diff3
66.84
KB
-rwxr-xr-x
dig
146.51
KB
-rwxr-xr-x
dircolors
46.66
KB
-rwxr-xr-x
dirmngr
553.55
KB
-rwxr-xr-x
dirmngr-client
114.76
KB
-rwxr-xr-x
dirname
34.59
KB
-rwxr-xr-x
discover-config
2.86
KB
-rwxr-xr-x
dnstap-read
18.01
KB
-rwxr-xr-x
dos2unix
50.02
KB
-rwxr-xr-x
dotlockfile
18.5
KB
-rwxr-sr-x
dpkg
298.53
KB
-rwxr-xr-x
dpkg-architecture
12.55
KB
-rwxr-xr-x
dpkg-buildflags
7.39
KB
-rwxr-xr-x
dpkg-buildpackage
29.89
KB
-rwxr-xr-x
dpkg-checkbuilddeps
7.45
KB
-rwxr-xr-x
dpkg-deb
162.38
KB
-rwxr-xr-x
dpkg-distaddfile
2.72
KB
-rwxr-xr-x
dpkg-divert
150.44
KB
-rwxr-xr-x
dpkg-genbuildinfo
16.4
KB
-rwxr-xr-x
dpkg-genchanges
17.08
KB
-rwxr-xr-x
dpkg-gencontrol
13.82
KB
-rwxr-xr-x
dpkg-gensymbols
10.65
KB
-rwxr-xr-x
dpkg-maintscript-helper
20.03
KB
-rwxr-xr-x
dpkg-mergechangelogs
8.35
KB
-rwxr-xr-x
dpkg-name
6.63
KB
-rwxr-xr-x
dpkg-parsechangelog
4.46
KB
-rwxr-xr-x
dpkg-query
158.43
KB
-rwxr-xr-x
dpkg-scanpackages
8.49
KB
-rwxr-xr-x
dpkg-scansources
8.95
KB
-rwxr-xr-x
dpkg-shlibdeps
30.68
KB
-rwxr-xr-x
dpkg-source
22.48
KB
-rwxr-xr-x
dpkg-split
122.34
KB
-rwxr-xr-x
dpkg-statoverride
62.12
KB
-rwxr-xr-x
dpkg-trigger
78.34
KB
-rwxr-xr-x
dpkg-vendor
3.19
KB
-rwxr-xr-x
du
107.09
KB
-rwxr-xr-x
dumpkeys
174.91
KB
-rwxr-xr-x
dvipdf
1023
B
-rwxr-xr-x
dwp
2.74
MB
-rwxr-xr-x
dwz
164.09
KB
-rwxr-xr-x
edit
17.74
KB
-rwxr-xr-x
editor
240.39
KB
-rwxr-xr-x
editres
69.38
KB
-rwxr-xr-x
eject
30.69
KB
-rwxr-xr-x
elfedit
38.84
KB
-rwxr-xr-x
enc2xs
41.12
KB
-rwxr-xr-x
encguess
2.99
KB
-rwxr-xr-x
enchant
22.07
KB
-rwxr-xr-x
enchant-lsmod
13.99
KB
-rwxr-xr-x
env
42.66
KB
-rwxr-xr-x
envsubst
42.64
KB
-rwxr-xr-x
eps2eps
639
B
-rwxr-xr-x
eqn
201.19
KB
-rwxr-xr-x
ex
2.58
MB
-rwxr-xr-x
expand
42.69
KB
-rwxr-xr-x
expiry
30.27
KB
-rwxr-sr-x
expr
50.72
KB
-rwxr-xr-x
extcheck
6.34
KB
-rwxr-xr-x
factor
74.75
KB
-rwxr-xr-x
faillog
22.29
KB
-rwxr-xr-x
faked-sysv
26.56
KB
-rwxr-xr-x
faked-tcp
30.58
KB
-rwxr-xr-x
fakeroot
3.76
KB
-rwxr-xr-x
fakeroot-sysv
3.76
KB
-rwxr-xr-x
fakeroot-tcp
3.76
KB
-rwxr-xr-x
fallocate
30.08
KB
-rwxr-xr-x
fc-cache
18.51
KB
-rwxr-xr-x
fc-cat
18.46
KB
-rwxr-xr-x
fc-conflist
14.27
KB
-rwxr-xr-x
fc-list
14.34
KB
-rwxr-xr-x
fc-match
14.4
KB
-rwxr-xr-x
fc-pattern
14.33
KB
-rwxr-xr-x
fc-query
14.3
KB
-rwxr-xr-x
fc-scan
14.34
KB
-rwxr-xr-x
fc-validate
14.34
KB
-rwxr-xr-x
fcgistarter
13.99
KB
-rwxr-xr-x
filan
83.78
KB
-rwxr-xr-x
file
26.31
KB
-rwxr-xr-x
fincore
30.13
KB
-rwxr-xr-x
find
308.5
KB
-rwxr-xr-x
findaffix
11.74
KB
-rwxr-xr-x
finger
27.08
KB
-rwxr-xr-x
firewall-cmd
113.47
KB
-rwxr-xr-x
firewall-offline-cmd
101.17
KB
-rwxr-xr-x
flock
34.16
KB
-rwxr-xr-x
fmt
42.66
KB
-rwxr-xr-x
fold
38.66
KB
-rwxr-xr-x
formail
46.59
KB
-rwxr-xr-x
free
18.08
KB
-rwxr-xr-x
from
10.24
KB
-rwxr-xr-x
ftp
99.62
KB
-rwxr-xr-x
funzip
22.26
KB
-rwxr-xr-x
g++
1.05
MB
-rwxr-xr-x
g++-8
1.05
MB
-rwxr-xr-x
galera_new_cluster
917
B
-rwxr-xr-x
galera_recovery
3.28
KB
-rwxr-xr-x
gamma4scanimage
13.99
KB
-rwxr-xr-x
gapplication
22.07
KB
-rwxr-xr-x
gawk
658.81
KB
-rwxr-xr-x
gcc
1.05
MB
-rwxr-xr-x
gcc-4.9
813.49
KB
-rwxr-xr-x
gcc-6
926.77
KB
-rwxr-xr-x
gcc-8
1.05
MB
-rwxr-xr-x
gcc-ar
34.47
KB
-rwxr-xr-x
gcc-ar-4.9
24.25
KB
-rwxr-xr-x
gcc-ar-6
26.53
KB
-rwxr-xr-x
gcc-ar-8
34.47
KB
-rwxr-xr-x
gcc-nm
34.47
KB
-rwxr-xr-x
gcc-nm-4.9
24.19
KB
-rwxr-xr-x
gcc-nm-6
26.53
KB
-rwxr-xr-x
gcc-nm-8
34.47
KB
-rwxr-xr-x
gcc-ranlib
34.47
KB
-rwxr-xr-x
gcc-ranlib-4.9
24.19
KB
-rwxr-xr-x
gcc-ranlib-6
26.53
KB
-rwxr-xr-x
gcc-ranlib-8
34.47
KB
-rwxr-xr-x
gcov
672.09
KB
-rwxr-xr-x
gcov-4.9
440.43
KB
-rwxr-xr-x
gcov-6
507.93
KB
-rwxr-xr-x
gcov-8
672.09
KB
-rwxr-xr-x
gcov-dump
511.95
KB
-rwxr-xr-x
gcov-dump-6
439.86
KB
-rwxr-xr-x
gcov-dump-8
511.95
KB
-rwxr-xr-x
gcov-tool
548.02
KB
-rwxr-xr-x
gcov-tool-6
463.92
KB
-rwxr-xr-x
gcov-tool-8
548.02
KB
-rwxr-xr-x
gdbus
50.08
KB
-rwxr-xr-x
gdk-pixbuf-csource
14.01
KB
-rwxr-xr-x
gdk-pixbuf-pixdata
13.99
KB
-rwxr-xr-x
gdk-pixbuf-thumbnailer
18.08
KB
-rwxr-xr-x
gencat
26.6
KB
-rwxr-xr-x
geqn
201.19
KB
-rwxr-xr-x
getconf
34.37
KB
-rwxr-xr-x
getent
35.34
KB
-rwxr-xr-x
getfacl
30.62
KB
-rwxr-xr-x
getkeycodes
14.3
KB
-rwxr-xr-x
getopt
22.07
KB
-rwxr-xr-x
gettext
42.62
KB
-rwxr-xr-x
gettext.sh
4.52
KB
-rwxr-xr-x
gettextize
42.73
KB
-rwxr-xr-x
ghostscript
14.18
KB
-rwxr-xr-x
ginstall-info
47.73
KB
-rwxr-xr-x
gio
86.09
KB
-rwxr-xr-x
gio-querymodules
13.99
KB
-rwxr-xr-x
glib-compile-schemas
46.07
KB
-rwxr-xr-x
gold
2.97
MB
-rwxr-xr-x
gpasswd
82.05
KB
-rwsr-xr-x
gpg
1021.73
KB
-rwxr-xr-x
gpg-agent
396.73
KB
-rwxr-xr-x
gpg-connect-agent
158.85
KB
-rwxr-xr-x
gpg-wks-server
199.05
KB
-rwxr-xr-x
gpg-zip
3.43
KB
-rwxr-xr-x
gpg2
1021.73
KB
-rwxr-xr-x
gpgcompose
853.98
KB
-rwxr-xr-x
gpgconf
166.32
KB
-rwxr-xr-x
gpgparsemail
30.07
KB
-rwxr-xr-x
gpgsm
495.09
KB
-rwxr-xr-x
gpgsplit
82.45
KB
-rwxr-xr-x
gpgtar
151.32
KB
-rwxr-xr-x
gpgv
434.99
KB
-rwxr-xr-x
gpic
208.03
KB
-rwxr-xr-x
gprof
96.39
KB
-rwxr-xr-x
gresource
21.99
KB
-rwxr-xr-x
groff
117.22
KB
-rwxr-xr-x
grog
2.71
KB
-rwxr-xr-x
grops
177.63
KB
-rwxr-xr-x
grotty
129.25
KB
-rwxr-xr-x
groups
38.66
KB
-rwxr-xr-x
grub-editenv
369.96
KB
-rwxr-xr-x
grub-file
801.21
KB
-rwxr-xr-x
grub-fstest
922.9
KB
-rwxr-xr-x
grub-glue-efi
244.77
KB
-rwxr-xr-x
grub-kbdcomp
1.64
KB
-rwxr-xr-x
grub-menulst2cfg
228.85
KB
-rwxr-xr-x
grub-mkfont
269.46
KB
-rwxr-xr-x
grub-mkimage
349.96
KB
-rwxr-xr-x
grub-mklayout
249.09
KB
-rwxr-xr-x
grub-mknetdir
402.76
KB
-rwxr-xr-x
grub-mkpasswd-pbkdf2
249.15
KB
-rwxr-xr-x
grub-mkrelpath
240.49
KB
-rwxr-xr-x
grub-mkrescue
979.63
KB
-rwxr-xr-x
grub-mkstandalone
487.09
KB
-rwxr-xr-x
grub-mount
745.85
KB
-rwxr-xr-x
grub-ntldr-img
38.38
KB
-rwxr-xr-x
grub-render-label
817.77
KB
-rwxr-xr-x
grub-script-check
264.62
KB
-rwxr-xr-x
grub-syslinux2cfg
766.29
KB
-rwxr-xr-x
gs
14.18
KB
-rwxr-xr-x
gsbj
350
B
-rwxr-xr-x
gsdj
352
B
-rwxr-xr-x
gsdj500
352
B
-rwxr-xr-x
gsettings
30.07
KB
-rwxr-xr-x
gslj
353
B
-rwxr-xr-x
gslp
350
B
-rwxr-xr-x
gsnd
277
B
-rwxr-xr-x
gtbl
138.2
KB
-rwxr-xr-x
gtk-builder-tool
34.42
KB
-rwxr-xr-x
gtk-launch
18.15
KB
-rwxr-xr-x
gtk-query-settings
13.99
KB
-rwxr-xr-x
gtk-update-icon-cache
38.47
KB
-rwxr-xr-x
h2ph
28.54
KB
-rwxr-xr-x
h2xs
59.44
KB
-rwxr-xr-x
hd
26.55
KB
-rwxr-xr-x
head
46.72
KB
-rwxr-xr-x
helpztags
2.46
KB
-rwxr-xr-x
hexdump
26.55
KB
-rwxr-xr-x
host
126.63
KB
-rwxr-xr-x
hostid
34.59
KB
-rwxr-xr-x
hostnamectl
26.07
KB
-rwxr-xr-x
hsdb
6.35
KB
-rwxr-xr-x
htcacheclean
34
KB
-rwxr-xr-x
htdbm
25.99
KB
-rwxr-xr-x
htdigest
13.99
KB
-rwxr-xr-x
htpasswd
25.99
KB
-rwxr-xr-x
i386
22.34
KB
-rwxr-xr-x
icombine
34.38
KB
-rwxr-xr-x
iconv
59.01
KB
-rwxr-xr-x
id
42.78
KB
-rwxr-xr-x
idlj
6.34
KB
-rwxr-xr-x
ifnames
4.03
KB
-rwxr-xr-x
ijoin
14.03
KB
-rwxr-xr-x
info
242.79
KB
-rwxr-xr-x
infobrowser
242.79
KB
-rwxr-xr-x
infocmp
62.07
KB
-rwxr-xr-x
infotocap
86.11
KB
-rwxr-xr-x
innochecksum
3.46
MB
-rwxr-xr-x
innotop
445.81
KB
-rwxr-xr-x
install
151.6
KB
-rwxr-xr-x
install-info
47.73
KB
-rwxr-xr-x
instmodsh
4.27
KB
-rwxr-xr-x
ionice
30.08
KB
-rwxr-xr-x
ipcmk
30.14
KB
-rwxr-xr-x
ipcrm
30.08
KB
-rwxr-xr-x
ipcs
66.08
KB
-rwxr-xr-x
iptables-xml
100.68
KB
-rwxr-xr-x
ischroot
14.23
KB
-rwxr-xr-x
ispell
94.46
KB
-rwxr-xr-x
ispell-wrapper
7.05
KB
-rwxr-xr-x
jar
6.34
KB
-rwxr-xr-x
jarsigner
6.34
KB
-rwxr-xr-x
java
6.3
KB
-rwxr-xr-x
javac
6.34
KB
-rwxr-xr-x
javadoc
6.34
KB
-rwxr-xr-x
javah
6.34
KB
-rwxr-xr-x
javap
6.34
KB
-rwxr-xr-x
jcmd
6.34
KB
-rwxr-xr-x
jconsole
6.36
KB
-rwxr-xr-x
jdb
6.35
KB
-rwxr-xr-x
jdeps
6.34
KB
-rwxr-xr-x
jexec
10.33
KB
-rwxr-xr-x
jfr
6.34
KB
-rwxr-xr-x
jhat
6.34
KB
-rwxr-xr-x
jinfo
6.38
KB
-rwxr-xr-x
jjs
6.34
KB
-rwxr-xr-x
jmap
6.38
KB
-rwxr-xr-x
join
50.75
KB
-rwxr-xr-x
jps
6.34
KB
-rwxr-xr-x
jrunscript
6.34
KB
-rwxr-xr-x
jsadebugd
6.35
KB
-rwxr-xr-x
json_pp
4.28
KB
-rwxr-xr-x
jstack
6.38
KB
-rwxr-xr-x
jstat
6.34
KB
-rwxr-xr-x
jstatd
6.34
KB
-rwxr-xr-x
kbdinfo
14.31
KB
-rwxr-xr-x
kbxutil
162.66
KB
-rwxr-xr-x
kernel-install
4.53
KB
-rwxr-xr-x
keytool
6.34
KB
-rwxr-xr-x
killall
31.72
KB
-rwxr-xr-x
laptop-detect
3.73
KB
-rwxr-xr-x
last
46.08
KB
-rwxr-xr-x
lastb
46.08
KB
-rwxr-xr-x
lastlog
22.07
KB
-rwxr-xr-x
lcf
7.6
KB
-rwxr-xr-x
ld
1.7
MB
-rwxr-xr-x
ld.bfd
1.7
MB
-rwxr-xr-x
ld.gold
2.97
MB
-rwxr-xr-x
ldd
5.27
KB
-rwxr-xr-x
less
166.76
KB
-rwxr-xr-x
lessecho
14.02
KB
-rwxr-xr-x
lessfile
8.36
KB
-rwxr-xr-x
lesskey
23.39
KB
-rwxr-xr-x
lesspipe
8.36
KB
-rwxr-xr-x
lexgrog
94.57
KB
-rwxr-xr-x
lft
2.43
KB
-rwxr-xr-x
lft.db
2.43
KB
-rwxr-xr-x
libnetcfg
15.41
KB
-rwxr-xr-x
libtoolize
128.26
KB
-rwxr-xr-x
link
34.59
KB
-rwxr-xr-x
linux-boot-prober
1.54
KB
-rwxr-xr-x
linux-check-removal
4.56
KB
-rwxr-xr-x
linux-update-symlinks
6.17
KB
-rwxr-xr-x
linux-version
2.63
KB
-rwxr-xr-x
linux32
22.34
KB
-rwxr-xr-x
linux64
22.34
KB
-rwxr-xr-x
listres
10.62
KB
-rwxr-xr-x
lnstat
22.74
KB
-rwxr-xr-x
loadkeys
207.14
KB
-rwxr-xr-x
loadunimap
34.61
KB
-rwxr-xr-x
locale
54.04
KB
-rwxr-xr-x
localectl
26.07
KB
-rwxr-xr-x
localedef
299.75
KB
-rwxr-xr-x
locate
38.68
KB
-rwxr-sr-x
lockfile
18.25
KB
-rwxr-sr-x
logger
46.67
KB
-rwxr-xr-x
logname
34.59
KB
-rwxr-xr-x
logresolve
14
KB
-rwxr-xr-x
look
10.49
KB
-rwxr-xr-x
lorder
2.82
KB
-rwxr-xr-x
lsattr
14
KB
-rwxr-xr-x
lsb_release
3.55
KB
-rwxr-xr-x
lscpu
86.08
KB
-rwxr-xr-x
lsinitramfs
706
B
-rwxr-xr-x
lsipc
90.08
KB
-rwxr-xr-x
lslocks
34.41
KB
-rwxr-xr-x
lslogins
66.08
KB
-rwxr-xr-x
lsmem
62.08
KB
-rwxr-xr-x
lsns
50.08
KB
-rwxr-xr-x
lsof
171.47
KB
-rwxr-xr-x
lspci
80.31
KB
-rwxr-xr-x
lspgpot
1.06
KB
-rwxr-xr-x
luit
48.72
KB
-rwxr-xr-x
lwp-download
10.05
KB
-rwxr-xr-x
lwp-dump
2.65
KB
-rwxr-xr-x
lwp-mirror
2.36
KB
-rwxr-xr-x
lwp-request
15.82
KB
-rwxr-xr-x
lzcat
79.29
KB
-rwxr-xr-x
lzcmp
6.48
KB
-rwxr-xr-x
lzdiff
6.48
KB
-rwxr-xr-x
lzegrep
5.76
KB
-rwxr-xr-x
lzfgrep
5.76
KB
-rwxr-xr-x
lzgrep
5.76
KB
-rwxr-xr-x
lzless
1.76
KB
-rwxr-xr-x
lzma
79.29
KB
-rwxr-xr-x
lzmainfo
14.31
KB
-rwxr-xr-x
lzmore
2.11
KB
-rwxr-xr-x
m-a
57.17
KB
-rwxr-xr-x
m4
159.18
KB
-rwxr-xr-x
mac2unix
50.02
KB
-rwxr-xr-x
mail
110.24
KB
-rwxr-xr-x
mailq
1.13
MB
-rwsr-xr-x
mailstat
5.72
KB
-rwxr-xr-x
mailx
110.24
KB
-rwxr-xr-x
make
226.59
KB
-rwxr-xr-x
make-first-existing-target
4.79
KB
-rwxr-xr-x
makeinfo
52.78
KB
-rwxr-xr-x
man
112.5
KB
-rwxr-xr-x
mandb
134.72
KB
-rwxr-xr-x
manpath
34.47
KB
-rwxr-xr-x
mapscrn
26.58
KB
-rwxr-xr-x
mariadb
3.91
MB
-rwxr-xr-x
mariadb-check
3.67
MB
-rwxr-xr-x
mariadb-service-convert
2.45
KB
-rwxr-xr-x
mawk
119.12
KB
-rwxr-xr-x
mc
1011.96
KB
-rwxr-xr-x
mcdiff
1011.96
KB
-rwxr-xr-x
mcedit
1011.96
KB
-rwxr-xr-x
mcookie
34.14
KB
-rwxr-xr-x
mcview
1011.96
KB
-rwxr-xr-x
md5sum
46.72
KB
-rwxr-xr-x
md5sum.textutils
46.72
KB
-rwxr-xr-x
mdig
46.09
KB
-rwxr-xr-x
mesg
14.07
KB
-rwxr-xr-x
migrate-pubring-from-classic-g...
2.99
KB
-rwxr-xr-x
mk_modmap
15.78
KB
-rwxr-xr-x
mkfifo
62.91
KB
-rwxr-xr-x
mkpasswd
26.47
KB
-rwxr-xr-x
mlocate
38.68
KB
-rwxr-sr-x
mlock
14.3
KB
-rwxr-sr-x
module-assistant
57.17
KB
-rwxr-xr-x
msgattrib
26.45
KB
-rwxr-xr-x
msgcat
22.45
KB
-rwxr-xr-x
msgcmp
26.56
KB
-rwxr-xr-x
msgcomm
22.43
KB
-rwxr-xr-x
msgconv
22.41
KB
-rwxr-xr-x
msgen
22.41
KB
-rwxr-xr-x
msgexec
18.45
KB
-rwxr-xr-x
msgfilter
34.54
KB
-rwxr-xr-x
msgfmt
83.37
KB
-rwxr-xr-x
msggrep
42.79
KB
-rwxr-xr-x
msginit
67.17
KB
-rwxr-xr-x
msgmerge
71.39
KB
-rwxr-xr-x
msgunfmt
30.64
KB
-rwxr-xr-x
msguniq
22.42
KB
-rwxr-xr-x
msql2mysql
1.41
KB
-rwxr-xr-x
mtrace
6.32
KB
-rwxr-xr-x
munchlist
31.23
KB
-rwxr-xr-x
mutt
1.02
MB
-rwxr-xr-x
mutt_dotlock
14.01
KB
-rwxr-sr-x
my_print_defaults
3.37
MB
-rwxr-xr-x
myisam_ftdump
3.64
MB
-rwxr-xr-x
myisamchk
3.75
MB
-rwxr-xr-x
myisamlog
3.62
MB
-rwxr-xr-x
myisampack
3.65
MB
-rwxr-xr-x
mysql
3.91
MB
-rwxr-xr-x
mysql_convert_table_format
4.12
KB
-rwxr-xr-x
mysql_embedded
18.94
MB
-rwxr-xr-x
mysql_find_rows
3.21
KB
-rwxr-xr-x
mysql_fix_extensions
1.22
KB
-rwxr-xr-x
mysql_install_db
19.74
KB
-rwxr-xr-x
mysql_plugin
3.37
MB
-rwxr-xr-x
mysql_secure_installation
12.23
KB
-rwxr-xr-x
mysql_setpermission
17.13
KB
-rwxr-xr-x
mysql_tzinfo_to_sql
3.37
MB
-rwxr-xr-x
mysql_upgrade
3.46
MB
-rwxr-xr-x
mysql_waitpid
3.36
MB
-rwxr-xr-x
mysqlaccess
109.3
KB
-rwxr-xr-x
mysqladmin
3.7
MB
-rwxr-xr-x
mysqlanalyze
3.67
MB
-rwxr-xr-x
mysqlbinlog
3.92
MB
-rwxr-xr-x
mysqlcheck
3.67
MB
-rwxr-xr-x
mysqld_multi
26.67
KB
-rwxr-xr-x
mysqld_safe
30.08
KB
-rwxr-xr-x
mysqld_safe_helper
3.33
MB
-rwxr-xr-x
mysqldump
3.75
MB
-rwxr-xr-x
mysqldumpslow
8.05
KB
-rwxr-xr-x
mysqlhotcopy
34.14
KB
-rwxr-xr-x
mysqlimport
3.66
MB
-rwxr-xr-x
mysqloptimize
3.67
MB
-rwxr-xr-x
mysqlrepair
3.67
MB
-rwxr-xr-x
mysqlreport
50.03
KB
-rwxr-xr-x
mysqlshow
3.66
MB
-rwxr-xr-x
mysqlslap
3.68
MB
-rwxr-xr-x
mytop
63.3
KB
-rwxr-xr-x
namei
34.08
KB
-rwxr-xr-x
native2ascii
6.34
KB
-rwxr-xr-x
nawk
658.81
KB
-rwxr-xr-x
ncal
29.15
KB
-rwxr-xr-x
neqn
913
B
-rwxr-xr-x
netkit-ftp
99.62
KB
-rwxr-xr-x
newaliases
1.13
MB
-rwsr-xr-x
newgrp
43.4
KB
-rwsr-xr-x
ngettext
42.63
KB
-rwxr-xr-x
nice
38.63
KB
-rwxr-xr-x
nl
42.78
KB
-rwxr-xr-x
nload
138.03
KB
-rwxr-xr-x
nm
47.91
KB
-rwxr-xr-x
nohup
38.66
KB
-rwxr-xr-x
nproc
38.66
KB
-rwxr-xr-x
nroff
3.22
KB
-rwxr-xr-x
nsenter
34.28
KB
-rwxr-xr-x
nslookup
134.51
KB
-rwxr-xr-x
nstat
79.14
KB
-rwxr-xr-x
nsupdate
70.02
KB
-rwxr-xr-x
numfmt
62.81
KB
-rwxr-xr-x
objcopy
175.42
KB
-rwxr-xr-x
objdump
345.55
KB
-rwxr-xr-x
od
70.78
KB
-rwxr-xr-x
openssl
719.52
KB
-rwxr-xr-x
orbd
6.39
KB
-rwxr-xr-x
os-prober
4.44
KB
-rwxr-xr-x
pack200
6.34
KB
-rwxr-xr-x
pager
166.76
KB
-rwxr-xr-x
paperconf
14.29
KB
-rwxr-xr-x
parsechangelog
8.63
KB
-rwxr-xr-x
partx
106.08
KB
-rwxr-xr-x
passwd
62.24
KB
-rwsr-xr-x
paste
38.66
KB
-rwxr-xr-x
patch
183.44
KB
-rwxr-xr-x
pathchk
38.63
KB
-rwxr-xr-x
pcimodules
14.59
KB
-rwxr-xr-x
pcre-config
2.29
KB
-rwxr-xr-x
pcre2-config
1.93
KB
-rwxr-xr-x
pdb
45.02
KB
-rwxr-xr-x
pdb2
45.02
KB
-rwxr-xr-x
pdb2.7
45.02
KB
-rwxr-xr-x
pdb3
61.08
KB
-rwxr-xr-x
pdb3.7
61.08
KB
-rwxr-xr-x
pdf2dsc
698
B
-rwxr-xr-x
pdf2ps
909
B
-rwxr-xr-x
pdftexi2dvi
1.27
KB
-rwxr-xr-x
pear
793
B
-rwxr-xr-x
peardev
814
B
-rwxr-xr-x
pecl
727
B
-rwxr-xr-x
peekfd
14.28
KB
-rwxr-xr-x
perf
528
B
-rwxr-xr-x
perl
3.05
MB
-rwxr-xr-x
perl5.28-x86_64-linux-gnu
14.17
KB
-rwxr-xr-x
perl5.28.1
3.05
MB
-rwxr-xr-x
perlbug
45.28
KB
-rwxr-xr-x
perldoc
125
B
-rwxr-xr-x
perlivp
10.61
KB
-rwxr-xr-x
perlthanks
45.28
KB
-rwxr-xr-x
perror
3.55
MB
-rwxr-xr-x
pf2afm
498
B
-rwxr-xr-x
pfbtopfa
516
B
-rwxr-xr-x
pftp
99.62
KB
-rwxr-xr-x
pgrep
26.09
KB
-rwxr-xr-x
phar
14.88
KB
-rwxr-xr-x
phar.phar
14.88
KB
-rwxr-xr-x
phar.phar5.6
14.48
KB
-rwxr-xr-x
phar.phar7.0
14.48
KB
-rwxr-xr-x
phar.phar7.2
14.47
KB
-rwxr-xr-x
phar.phar7.3
14.47
KB
-rwxr-xr-x
phar.phar7.4
14.54
KB
-rwxr-xr-x
phar.phar8.2
14.88
KB
-rwxr-xr-x
phar5
14.48
KB
-rwxr-xr-x
phar5.6
14.48
KB
-rwxr-xr-x
phar7.0
14.48
KB
-rwxr-xr-x
phar7.2
14.47
KB
-rwxr-xr-x
phar7.3
14.47
KB
-rwxr-xr-x
phar7.4
14.54
KB
-rwxr-xr-x
phar7.4.phar
14.54
KB
-rwxr-xr-x
phar8.2
14.88
KB
-rwxr-xr-x
phar8.2.phar
14.88
KB
-rwxr-xr-x
php
4.53
MB
-rwxr-xr-x
php-cgi
4.43
MB
-rwxr-xr-x
php-cgi7.2
4.68
MB
-rwxr-xr-x
php-cgi7.3
4.47
MB
-rwxr-xr-x
php-cgi7.4
4.43
MB
-rwxr-xr-x
php-config
4.24
KB
-rwxr-xr-x
php-config7.2
4.14
KB
-rwxr-xr-x
php-config7.3
4.11
KB
-rwxr-xr-x
php-config7.4
4.24
KB
-rwxr-xr-x
php5
8.66
MB
-rwxr-xr-x
php5.6
4.3
MB
-rwxr-xr-x
php7.0
4.3
MB
-rwxr-xr-x
php7.2
4.79
MB
-rwxr-xr-x
php7.3
4.57
MB
-rwxr-xr-x
php7.4
4.53
MB
-rwxr-xr-x
php8.2
5.37
MB
-rwxr-xr-x
phpdbg
4.65
MB
-rwxr-xr-x
phpdbg7.2
4.91
MB
-rwxr-xr-x
phpdbg7.3
4.69
MB
-rwxr-xr-x
phpdbg7.4
4.65
MB
-rwxr-xr-x
phpize
4.81
KB
-rwxr-xr-x
phpize7.2
4.84
KB
-rwxr-xr-x
phpize7.3
4.87
KB
-rwxr-xr-x
phpize7.4
4.81
KB
-rwxr-xr-x
pic
208.03
KB
-rwxr-xr-x
pico
240.39
KB
-rwxr-xr-x
piconv
8.16
KB
-rwxr-xr-x
pigz
114.2
KB
-rwxr-xr-x
pinentry
86.49
KB
-rwxr-xr-x
pinentry-gtk-2
86.49
KB
-rwxr-xr-x
pinentry-x11
86.49
KB
-rwxr-xr-x
pinky
42.81
KB
-rwxr-xr-x
pkaction
14.31
KB
-rwxr-xr-x
pkcheck
22.66
KB
-rwxr-xr-x
pkcon
71.71
KB
-rwxr-xr-x
pkg-config
54.83
KB
-rwxr-xr-x
pkgtools
1.34
KB
-rwxr-xr-x
pkill
26.09
KB
-rwxr-xr-x
pkmon
22.49
KB
-rwxr-xr-x
pkttyagent
18.37
KB
-rwxr-xr-x
pl2pm
4.43
KB
-rwxr-xr-x
pldd
22.57
KB
-rwxr-xr-x
pmap
30.09
KB
-rwxr-xr-x
po2debconf
8.47
KB
-rwxr-xr-x
pod2html
4.04
KB
-rwxr-xr-x
pod2man
14.86
KB
-rwxr-xr-x
pod2texi
19.65
KB
-rwxr-xr-x
pod2text
10.85
KB
-rwxr-xr-x
pod2usage
3.86
KB
-rwxr-xr-x
podchecker
3.57
KB
-rwxr-xr-x
podebconf-display-po
12.67
KB
-rwxr-xr-x
podebconf-report-po
31.76
KB
-rwxr-xr-x
podselect
2.47
KB
-rwxr-xr-x
policytool
6.34
KB
-rwxr-xr-x
pphs
404
B
-rwxr-xr-x
pr
74.94
KB
-rwxr-xr-x
precat
5.52
KB
-rwxr-xr-x
preconv
66.2
KB
-rwxr-xr-x
preunzip
5.52
KB
-rwxr-xr-x
prezip
5.52
KB
-rwxr-xr-x
prezip-bin
13.99
KB
-rwxr-xr-x
print
17.74
KB
-rwxr-xr-x
printafm
395
B
-rwxr-xr-x
printenv
34.59
KB
-rwxr-xr-x
printerbanner
22.23
KB
-rwxr-xr-x
printf
54.69
KB
-rwxr-xr-x
prlimit
38.59
KB
-rwxr-xr-x
procan
71.68
KB
-rwxr-xr-x
procmail
95.2
KB
-rwsr-sr-x
prove
13.33
KB
-rwxr-xr-x
prtstat
18.36
KB
-rwxr-xr-x
ps2ascii
631
B
-rwxr-xr-x
ps2epsi
2.69
KB
-rwxr-xr-x
ps2pdf
272
B
-rwxr-xr-x
ps2pdf12
215
B
-rwxr-xr-x
ps2pdf13
215
B
-rwxr-xr-x
ps2pdf14
215
B
-rwxr-xr-x
ps2pdfwr
1.07
KB
-rwxr-xr-x
ps2ps
647
B
-rwxr-xr-x
ps2ps2
669
B
-rwxr-xr-x
ps2txt
631
B
-rwxr-xr-x
psfaddtable
22.31
KB
-rwxr-xr-x
psfgettable
22.31
KB
-rwxr-xr-x
psfstriptable
22.31
KB
-rwxr-xr-x
psfxtable
22.31
KB
-rwxr-xr-x
pslog
14.23
KB
-rwxr-xr-x
pstree
31.48
KB
-rwxr-xr-x
pstree.x11
31.48
KB
-rwxr-xr-x
ptar
3.47
KB
-rwxr-xr-x
ptardiff
2.57
KB
-rwxr-xr-x
ptargrep
4.29
KB
-rwxr-xr-x
ptx
74.91
KB
-rwxr-xr-x
pwdx
10.07
KB
-rwxr-xr-x
py3clean
7.62
KB
-rwxr-xr-x
py3compile
11.83
KB
-rwxr-xr-x
py3versions
11.44
KB
-rwxr-xr-x
pyclean
4.03
KB
-rwxr-xr-x
pycompile
11.62
KB
-rwxr-xr-x
pydoc
79
B
-rwxr-xr-x
pydoc2
79
B
-rwxr-xr-x
pydoc2.7
79
B
-rwxr-xr-x
pydoc3
79
B
-rwxr-xr-x
pydoc3.7
79
B
-rwxr-xr-x
pygettext
21.56
KB
-rwxr-xr-x
pygettext2
21.56
KB
-rwxr-xr-x
pygettext2.7
21.56
KB
-rwxr-xr-x
pygettext3
21.04
KB
-rwxr-xr-x
pygettext3.7
21.04
KB
-rwxr-xr-x
python
3.51
MB
-rwxr-xr-x
python2
3.51
MB
-rwxr-xr-x
python2.7
3.51
MB
-rwxr-xr-x
python3
4.65
MB
-rwxr-xr-x
python3.7
4.65
MB
-rwxr-xr-x
python3.7m
4.65
MB
-rwxr-xr-x
python3m
4.65
MB
-rwxr-xr-x
pyversions
14.76
KB
-rwxr-xr-x
querybts
10.75
KB
-rwxr-xr-x
ranlib
63.1
KB
-rwxr-xr-x
rcp
98.14
KB
-rwxr-xr-x
rdma
107.16
KB
-rwxr-xr-x
readelf
583.06
KB
-rwxr-xr-x
realpath
46.69
KB
-rwxr-xr-x
recode-sr-latin
14.4
KB
-rwxr-xr-x
rename.ul
22.07
KB
-rwxr-xr-x
renice
14.07
KB
-rwxr-xr-x
replace
3.34
MB
-rwxr-xr-x
report-hw
2.05
KB
-rwxr-xr-x
reportbug
105.14
KB
-rwxr-xr-x
reset
30
KB
-rwxr-xr-x
resizecons
22.58
KB
-rwxr-xr-x
resizepart
58.08
KB
-rwxr-xr-x
resolve_stack_dump
3.37
MB
-rwxr-xr-x
resolvectl
114.22
KB
-rwxr-xr-x
resolveip
3.36
MB
-rwxr-xr-x
rev
14.07
KB
-rwxr-xr-x
rgrep
30
B
-rwxr-xr-x
rlogin
714.79
KB
-rwxr-xr-x
rmic
6.34
KB
-rwxr-xr-x
rmid
6.34
KB
-rwxr-xr-x
rmiregistry
6.34
KB
-rwxr-xr-x
rotatelogs
26.07
KB
-rwxr-xr-x
routef
208
B
-rwxr-xr-x
routel
1.62
KB
-rwxr-xr-x
rpcgen
90.98
KB
-rwxr-xr-x
rpcinfo
34.16
KB
-rwxr-xr-x
rsh
714.79
KB
-rwxr-xr-x
rsync
488.37
KB
-rwxr-xr-x
rtstat
22.74
KB
-rwxr-xr-x
run-mailcap
17.74
KB
-rwxr-xr-x
run-with-aspell
57
B
-rwxr-xr-x
runcon
38.72
KB
-rwxr-xr-x
rview
2.58
MB
-rwxr-xr-x
rvim
2.58
MB
-rwxr-xr-x
sane-find-scanner
114.7
KB
-rwxr-xr-x
savelog
10.22
KB
-rwxr-xr-x
scanimage
50.77
KB
-rwxr-xr-x
schemagen
6.34
KB
-rwxr-xr-x
scp
98.14
KB
-rwxr-xr-x
screendump
14.29
KB
-rwxr-xr-x
script
50.08
KB
-rwxr-xr-x
scriptreplay
30.08
KB
-rwxr-xr-x
sdiff
50.77
KB
-rwxr-xr-x
see
17.74
KB
-rwxr-xr-x
select-default-iwrap
474
B
-rwxr-xr-x
select-editor
2.38
KB
-rwxr-xr-x
sensible-browser
1.18
KB
-rwxr-xr-x
sensible-editor
1.08
KB
-rwxr-xr-x
sensible-pager
433
B
-rwxr-xr-x
seq
50.69
KB
-rwxr-xr-x
serialver
6.34
KB
-rwxr-xr-x
servertool
6.34
KB
-rwxr-xr-x
setarch
22.34
KB
-rwxr-xr-x
setfacl
38.68
KB
-rwxr-xr-x
setkeycodes
14.3
KB
-rwxr-xr-x
setleds
14.29
KB
-rwxr-xr-x
setlogcons
14.3
KB
-rwxr-xr-x
setmetamode
14.34
KB
-rwxr-xr-x
setpci
22.54
KB
-rwxr-xr-x
setpriv
42.08
KB
-rwxr-xr-x
setsid
14.07
KB
-rwxr-xr-x
setterm
42.08
KB
-rwxr-xr-x
setvtrgb
14.42
KB
-rwxr-xr-x
sftp
150.35
KB
-rwxr-xr-x
sg
43.4
KB
-rwsr-xr-x
sha1sum
50.72
KB
-rwxr-xr-x
sha224sum
54.72
KB
-rwxr-xr-x
sha256sum
54.72
KB
-rwxr-xr-x
sha384sum
62.72
KB
-rwxr-xr-x
sha512sum
62.72
KB
-rwxr-xr-x
shasum
9.74
KB
-rwxr-xr-x
showconsolefont
18.38
KB
-rwxr-xr-x
showkey
18.34
KB
-rwxr-xr-x
shred
58.94
KB
-rwxr-xr-x
shtool
138.76
KB
-rwxr-xr-x
shtoolize
15.16
KB
-rwxr-xr-x
shuf
58.81
KB
-rwxr-xr-x
size
34.97
KB
-rwxr-xr-x
skill
26.08
KB
-rwxr-xr-x
slabtop
18.08
KB
-rwxr-xr-x
slogin
714.79
KB
-rwxr-xr-x
smime_keys
30.08
KB
-rwxr-xr-x
snice
26.08
KB
-rwxr-xr-x
socat
369.43
KB
-rwxr-xr-x
soelim
42.2
KB
-rwxr-xr-x
sort
111.45
KB
-rwxr-xr-x
sotruss
4.18
KB
-rwxr-xr-x
splain
18.7
KB
-rwxr-xr-x
split
59.32
KB
-rwxr-xr-x
splitfont
14.19
KB
-rwxr-xr-x
sprof
26.69
KB
-rwxr-xr-x
sq
5.99
KB
-rwxr-xr-x
ssh
714.79
KB
-rwxr-xr-x
ssh-add
334.13
KB
-rwxr-xr-x
ssh-agent
314.13
KB
-rwxr-sr-x
ssh-argv0
1.42
KB
-rwxr-xr-x
ssh-copy-id
10.41
KB
-rwxr-xr-x
ssh-keygen
406.15
KB
-rwxr-xr-x
ssh-keyscan
410.15
KB
-rwxr-xr-x
stat
79.03
KB
-rwxr-xr-x
stdbuf
50.69
KB
-rwxr-xr-x
strings
31.13
KB
-rwxr-xr-x
strip
175.43
KB
-rwxr-xr-x
sudo
153.51
KB
-rwsr-xr-x
sudoedit
153.51
KB
-rwsr-xr-x
sudoreplay
62.84
KB
-rwxr-xr-x
sum
42.73
KB
-rwxr-xr-x
symcryptrun
118.73
KB
-rwxr-xr-x
systemd-analyze
1.38
MB
-rwxr-xr-x
systemd-cat
14.08
KB
-rwxr-xr-x
systemd-cgls
18.17
KB
-rwxr-xr-x
systemd-cgtop
38.09
KB
-rwxr-xr-x
systemd-delta
26.07
KB
-rwxr-xr-x
systemd-detect-virt
14.06
KB
-rwxr-xr-x
systemd-id128
14.06
KB
-rwxr-xr-x
systemd-mount
46.29
KB
-rwxr-xr-x
systemd-path
18.06
KB
-rwxr-xr-x
systemd-resolve
114.22
KB
-rwxr-xr-x
systemd-run
50.27
KB
-rwxr-xr-x
systemd-socket-activate
26.07
KB
-rwxr-xr-x
systemd-stdio-bridge
18.07
KB
-rwxr-xr-x
systemd-umount
46.29
KB
-rwxr-xr-x
tabs
17.99
KB
-rwxr-xr-x
tac
42.72
KB
-rwxr-xr-x
tail
70.91
KB
-rwxr-xr-x
tasksel
16.1
KB
-rwxr-xr-x
taskset
34.08
KB
-rwxr-xr-x
tbl
138.2
KB
-rwxr-xr-x
tee
38.72
KB
-rwxr-xr-x
telnet
113.37
KB
-rwxr-xr-x
telnet.netkit
113.37
KB
-rwxr-xr-x
test
50.66
KB
-rwxr-xr-x
texi2any
52.78
KB
-rwxr-xr-x
texi2dvi
60.31
KB
-rwxr-xr-x
texi2pdf
1.27
KB
-rwxr-xr-x
texindex
3.96
KB
-rwxr-xr-x
tic
86.11
KB
-rwxr-xr-x
time
14.73
KB
-rwxr-xr-x
timedatectl
38.07
KB
-rwxr-xr-x
timeout
43.26
KB
-rwxr-xr-x
tload
14.09
KB
-rwxr-xr-x
tnameserv
6.39
KB
-rwxr-xr-x
toe
21.99
KB
-rwxr-xr-x
top
113.89
KB
-rwxr-xr-x
touch
94.88
KB
-rwxr-xr-x
tput
22.02
KB
-rwxr-xr-x
tr
50.69
KB
-rwxr-xr-x
traceproto
2.82
KB
-rwxr-xr-x
traceproto.db
2.82
KB
-rwxr-xr-x
traceroute
67.16
KB
-rwxr-xr-x
traceroute-nanog
1.58
KB
-rwxr-xr-x
traceroute.db
67.16
KB
-rwxr-xr-x
traceroute6
67.16
KB
-rwxr-xr-x
traceroute6.db
67.16
KB
-rwxr-xr-x
troff
723.59
KB
-rwxr-xr-x
truncate
42.66
KB
-rwxr-xr-x
tryaffix
4.8
KB
-rwxr-xr-x
tset
30
KB
-rwxr-xr-x
tsort
42.66
KB
-rwxr-xr-x
tty
34.63
KB
-rwxr-xr-x
txixml2texi
14.67
KB
-rwxr-xr-x
tzselect
15.01
KB
-rwxr-xr-x
ucf
39.73
KB
-rwxr-xr-x
ucfq
18.91
KB
-rwxr-xr-x
ucfr
10.47
KB
-rwxr-xr-x
ul
14.3
KB
-rwxr-xr-x
umax_pp
179.07
KB
-rwxr-xr-x
unattended-upgrade
83.83
KB
-rwxr-xr-x
unattended-upgrades
83.83
KB
-rwxr-xr-x
unexpand
42.69
KB
-rwxr-xr-x
unicode_stop
530
B
-rwxr-xr-x
uniq
50.75
KB
-rwxr-xr-x
unix2dos
50.02
KB
-rwxr-xr-x
unix2mac
50.02
KB
-rwxr-xr-x
unlink
34.59
KB
-rwxr-xr-x
unlzma
79.29
KB
-rwxr-xr-x
unmkinitramfs
3.51
KB
-rwxr-xr-x
unpack200
101.48
KB
-rwxr-xr-x
unpigz
114.2
KB
-rwxr-xr-x
unshare
26.27
KB
-rwxr-xr-x
unsq
5.99
KB
-rwxr-xr-x
unxz
79.29
KB
-rwxr-xr-x
unzip
178.84
KB
-rwxr-xr-x
unzipsfx
82.66
KB
-rwxr-xr-x
update-alternatives
54.25
KB
-rwxr-xr-x
update-mime-database
55.19
KB
-rwxr-xr-x
update-perl-sax-parsers
6.03
KB
-rwxr-xr-x
updatedb
46.82
KB
-rwxr-xr-x
updatedb.mlocate
46.82
KB
-rwxr-xr-x
uptime
10.07
KB
-rwxr-xr-x
users
34.66
KB
-rwxr-xr-x
utmpdump
30.07
KB
-rwxr-xr-x
vi
2.58
MB
-rwxr-xr-x
view
2.58
MB
-rwxr-xr-x
viewres
27.38
KB
-rwxr-xr-x
vim
2.58
MB
-rwxr-xr-x
vim.basic
2.58
MB
-rwxr-xr-x
vim.tiny
1.15
MB
-rwxr-xr-x
vimdiff
2.58
MB
-rwxr-xr-x
vimtutor
2.07
KB
-rwxr-xr-x
vmstat
34.09
KB
-rwxr-xr-x
volname
5.99
KB
-rwxr-xr-x
w
18.07
KB
-rwxr-xr-x
w.procps
18.07
KB
-rwxr-xr-x
w3m
1.4
MB
-rwxr-xr-x
w3mman
1.18
KB
-rwxr-xr-x
wall
34.08
KB
-rwxr-xr-x
watch
26.41
KB
-rwxr-xr-x
watchgnupg
17.99
KB
-rwxr-xr-x
wc
46.76
KB
-rwxr-xr-x
wget
455.56
KB
-rwxr-xr-x
whatis
54.98
KB
-rwxr-xr-x
whereis
30.51
KB
-rwxr-xr-x
which
946
B
-rwxr-xr-x
whiptail
26.7
KB
-rwxr-xr-x
who
54.81
KB
-rwxr-xr-x
whoami
34.63
KB
-rwxr-xr-x
whois
153.27
KB
-rwxr-xr-x
word-list-compress
13.99
KB
-rwxr-xr-x
write
14.39
KB
-rwxr-sr-x
wsgen
6.34
KB
-rwxr-xr-x
wsimport
6.34
KB
-rwxr-xr-x
wsrep_sst_common
54.05
KB
-rwxr-xr-x
wsrep_sst_mariabackup
50.87
KB
-rwxr-xr-x
wsrep_sst_mysqldump
7.67
KB
-rwxr-xr-x
wsrep_sst_rsync
32.17
KB
-rwxr-xr-x
wsrep_sst_rsync_wan
32.17
KB
-rwxr-xr-x
www-browser
1.4
MB
-rwxr-xr-x
x86_64
22.34
KB
-rwxr-xr-x
x86_64-linux-gnu-addr2line
31.09
KB
-rwxr-xr-x
x86_64-linux-gnu-ar
63.07
KB
-rwxr-xr-x
x86_64-linux-gnu-as
872.93
KB
-rwxr-xr-x
x86_64-linux-gnu-c++filt
30.69
KB
-rwxr-xr-x
x86_64-linux-gnu-cpp
1.05
MB
-rwxr-xr-x
x86_64-linux-gnu-cpp-4.9
814.43
KB
-rwxr-xr-x
x86_64-linux-gnu-cpp-6
930.77
KB
-rwxr-xr-x
x86_64-linux-gnu-cpp-8
1.05
MB
-rwxr-xr-x
x86_64-linux-gnu-dwp
2.74
MB
-rwxr-xr-x
x86_64-linux-gnu-elfedit
38.84
KB
-rwxr-xr-x
x86_64-linux-gnu-g++
1.05
MB
-rwxr-xr-x
x86_64-linux-gnu-g++-8
1.05
MB
-rwxr-xr-x
x86_64-linux-gnu-gcc
1.05
MB
-rwxr-xr-x
x86_64-linux-gnu-gcc-4.9
813.49
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-6
926.77
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-8
1.05
MB
-rwxr-xr-x
x86_64-linux-gnu-gcc-ar
34.47
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-ar-4.9
24.25
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-ar-6
26.53
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-ar-8
34.47
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-nm
34.47
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-nm-4.9
24.19
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-nm-6
26.53
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-nm-8
34.47
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-ranlib
34.47
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-ranlib-4....
24.19
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-ranlib-6
26.53
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-ranlib-8
34.47
KB
-rwxr-xr-x
x86_64-linux-gnu-gcov
672.09
KB
-rwxr-xr-x
x86_64-linux-gnu-gcov-4.9
440.43
KB
-rwxr-xr-x
x86_64-linux-gnu-gcov-6
507.93
KB
-rwxr-xr-x
x86_64-linux-gnu-gcov-8
672.09
KB
-rwxr-xr-x
x86_64-linux-gnu-gcov-dump
511.95
KB
-rwxr-xr-x
x86_64-linux-gnu-gcov-dump-6
439.86
KB
-rwxr-xr-x
x86_64-linux-gnu-gcov-dump-8
511.95
KB
-rwxr-xr-x
x86_64-linux-gnu-gcov-tool
548.02
KB
-rwxr-xr-x
x86_64-linux-gnu-gcov-tool-6
463.92
KB
-rwxr-xr-x
x86_64-linux-gnu-gcov-tool-8
548.02
KB
-rwxr-xr-x
x86_64-linux-gnu-gold
2.97
MB
-rwxr-xr-x
x86_64-linux-gnu-gprof
96.39
KB
-rwxr-xr-x
x86_64-linux-gnu-ld
1.7
MB
-rwxr-xr-x
x86_64-linux-gnu-ld.bfd
1.7
MB
-rwxr-xr-x
x86_64-linux-gnu-ld.gold
2.97
MB
-rwxr-xr-x
x86_64-linux-gnu-nm
47.91
KB
-rwxr-xr-x
x86_64-linux-gnu-objcopy
175.42
KB
-rwxr-xr-x
x86_64-linux-gnu-objdump
345.55
KB
-rwxr-xr-x
x86_64-linux-gnu-pkg-config
2
KB
-rwxr-xr-x
x86_64-linux-gnu-ranlib
63.1
KB
-rwxr-xr-x
x86_64-linux-gnu-readelf
583.06
KB
-rwxr-xr-x
x86_64-linux-gnu-size
34.97
KB
-rwxr-xr-x
x86_64-linux-gnu-strings
31.13
KB
-rwxr-xr-x
x86_64-linux-gnu-strip
175.43
KB
-rwxr-xr-x
x86_64-pc-linux-gnu-pkg-config
54.83
KB
-rwxr-xr-x
xargs
70.21
KB
-rwxr-xr-x
xauth
47.45
KB
-rwxr-xr-x
xdg-user-dir
234
B
-rwxr-xr-x
xdg-user-dirs-update
26.07
KB
-rwxr-xr-x
xdpyinfo
31.49
KB
-rwxr-xr-x
xdriinfo
10.19
KB
-rwxr-xr-x
xev
30.96
KB
-rwxr-xr-x
xfd
32.33
KB
-rwxr-xr-x
xfontsel
40.33
KB
-rwxr-xr-x
xgettext
269.8
KB
-rwxr-xr-x
xjc
6.34
KB
-rwxr-xr-x
xkill
14.32
KB
-rwxr-xr-x
xlsatoms
10.26
KB
-rwxr-xr-x
xlsclients
14.34
KB
-rwxr-xr-x
xlsfonts
18.44
KB
-rwxr-xr-x
xmessage
23.33
KB
-rwxr-xr-x
xprop
40.9
KB
-rwxr-xr-x
xsubpp
5.04
KB
-rwxr-xr-x
xvinfo
14.26
KB
-rwxr-xr-x
xwininfo
42.78
KB
-rwxr-xr-x
xxd
18.12
KB
-rwxr-xr-x
xz
79.29
KB
-rwxr-xr-x
xzcat
79.29
KB
-rwxr-xr-x
xzcmp
6.48
KB
-rwxr-xr-x
xzdiff
6.48
KB
-rwxr-xr-x
xzegrep
5.76
KB
-rwxr-xr-x
xzfgrep
5.76
KB
-rwxr-xr-x
xzgrep
5.76
KB
-rwxr-xr-x
xzless
1.76
KB
-rwxr-xr-x
xzmore
2.11
KB
-rwxr-xr-x
yes
34.59
KB
-rwxr-xr-x
zdump
18.4
KB
-rwxr-xr-x
zipdetails
47.36
KB
-rwxr-xr-x
zipgrep
2.88
KB
-rwxr-xr-x
zipinfo
178.84
KB
-rwxr-xr-x
Delete
Unzip
Zip
${this.title}
Close
Code Editor : smime_keys
#! /usr/bin/perl -w # Copyright (C) 2001-2002 Oliver Ehli <elmy@acm.org> # Copyright (C) 2001 Mike Schiraldi <raldi@research.netsol.com> # Copyright (C) 2003 Bjoern Jacke <bjoern@j3e.de> # Copyright (C) 2015 Kevin J. McCarthy <kevin@8t8.us> # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. use strict; use File::Copy; use File::Glob ':glob'; use File::Temp qw(tempfile tempdir); umask 077; use Time::Local; # helper routines sub usage (); sub mutt_Q ($); sub mycopy ($$); sub query_label (); sub mkdir_recursive ($); sub verify_files_exist (@); sub create_tempfile (;$); sub new_cert_structure (); sub create_cert_chains (@); # openssl helpers sub openssl_exec (@); sub openssl_format ($); sub openssl_x509_query ($@); sub openssl_hash ($); sub openssl_fingerprint ($); sub openssl_emails ($); sub openssl_p12_to_pem ($$); sub openssl_verify ($$); sub openssl_crl_text($); sub openssl_trust_flag ($$;$); sub openssl_parse_pem ($$); sub openssl_dump_cert ($); sub openssl_purpose_flag ($); # key/certificate management methods sub cm_list_certs (); sub cm_add_entry ($$$$$$;$); sub cm_add_cert ($); sub cm_add_indexed_cert ($$$); sub cm_add_key ($$$$$$); sub cm_modify_entry ($$$;$); sub cm_find_entry ($$); sub cm_refresh_index (); # op handlers sub handle_init_paths (); sub handle_change_label ($); sub handle_add_cert ($); sub handle_add_pem ($); sub handle_add_p12 ($); sub handle_add_chain ($$$); sub handle_verify_cert($$); sub handle_remove_pair ($); sub handle_add_root_cert ($); my $mutt = $ENV{MUTT_CMDLINE} || 'mutt'; my $opensslbin = "/usr/bin/openssl"; my $tmpdir; # Get the directories mutt uses for certificate/key storage. my $private_keys_path = mutt_Q 'smime_keys'; die "smime_keys is not set in mutt's configuration file" if length $private_keys_path == 0; my $certificates_path = mutt_Q 'smime_certificates'; die "smime_certificates is not set in mutt's configuration file" if length $certificates_path == 0; my $root_certs_path = mutt_Q 'smime_ca_location'; die "smime_ca_location is not set in mutt's configuration file" if length $root_certs_path == 0; my $root_certs_switch; if ( -d $root_certs_path) { $root_certs_switch = -CApath; } else { $root_certs_switch = -CAfile; } ###### # OPS ###### if (@ARGV == 1 and $ARGV[0] eq "init") { handle_init_paths(); } elsif (@ARGV == 1 and $ARGV[0] eq "refresh") { cm_refresh_index(); } elsif (@ARGV == 1 and $ARGV[0] eq "list") { cm_list_certs(); } elsif (@ARGV == 2 and $ARGV[0] eq "label") { handle_change_label($ARGV[1]); } elsif (@ARGV == 2 and $ARGV[0] eq "add_cert") { verify_files_exist($ARGV[1]); handle_add_cert($ARGV[1]); } elsif (@ARGV == 2 and $ARGV[0] eq "add_pem") { verify_files_exist($ARGV[1]); handle_add_pem($ARGV[1]); } elsif ( @ARGV == 2 and $ARGV[0] eq "add_p12") { verify_files_exist($ARGV[1]); handle_add_p12($ARGV[1]); } elsif (@ARGV == 4 and $ARGV[0] eq "add_chain") { verify_files_exist($ARGV[1], $ARGV[2], $ARGV[3]); handle_add_chain($ARGV[1], $ARGV[2], $ARGV[3]); } elsif ((@ARGV == 2 or @ARGV == 3) and $ARGV[0] eq "verify") { verify_files_exist($ARGV[2]) if (@ARGV == 3); handle_verify_cert($ARGV[1], $ARGV[2]); } elsif (@ARGV == 2 and $ARGV[0] eq "remove") { handle_remove_pair($ARGV[1]); } elsif (@ARGV == 2 and $ARGV[0] eq "add_root") { verify_files_exist($ARGV[1]); handle_add_root_cert($ARGV[1]); } else { usage(); exit(1); } exit(0); ############## sub-routines ######################## ################### # helper routines ################### sub usage () { print <<EOF; Usage: smime_keys <operation> [file(s) | keyID [file(s)]] with operation being one of: init : no files needed, inits directory structure. refresh : refreshes certificate and key index files. Updates trust flag (expiration). Adds purpose flag if missing. list : lists the certificates stored in database. label : keyID required. changes/removes/adds label. remove : keyID required. verify : 1=keyID and optionally 2=CRL Verifies the certificate chain, and optionally wether this certificate is included in supplied CRL (PEM format). Note: to verify all certificates at the same time, replace keyID with "all" add_cert : certificate required. add_chain : three files reqd: 1=Key, 2=certificate plus 3=intermediate certificate(s). add_p12 : one file reqd. Adds keypair to database. file is PKCS12 (e.g. export from netscape). add_pem : one file reqd. Adds keypair to database. (file was converted from e.g. PKCS12). add_root : one file reqd. Adds PEM root certificate to the location specified within muttrc (smime_verify_* command) EOF } sub mutt_Q ($) { my ($var) = @_; my $cmd = "$mutt -v >/dev/null 2>/dev/null"; system ($cmd) == 0 or die<<EOF; Couldn't launch mutt. I attempted to do so by running the command "$mutt". If that's not the right command, you can override it by setting the environment variable \$MUTT_CMDLINE EOF $cmd = "$mutt -Q $var 2>/dev/null"; my $answer = `$cmd`; $? and die<<EOF; Couldn't look up the value of the mutt variable "$var". You must set this in your mutt config file. See contrib/smime.rc for an example. EOF $answer =~ /\"(.*?)\"/ and return bsd_glob($1, GLOB_TILDE | GLOB_NOCHECK); $answer =~ /^Mutt (.*?) / and die<<EOF; This script requires mutt 1.5.0 or later. You are using mutt $1. EOF die "Value of $var is weird\n"; } sub mycopy ($$) { my ($source, $dest) = @_; copy $source, $dest or die "Problem copying $source to $dest: $!\n"; } sub query_label () { my $input; my $label; my $junk; print "\nYou may assign a label to this key, so you don't have to remember\n"; print "the key ID. This has to be _one_ word (no whitespaces).\n\n"; print "Enter label: "; $input = <STDIN>; if (defined($input) && ($input !~ /^\s*$/)) { chomp($input); $input =~ s/^\s+//; ($label, $junk) = split(/\s/, $input, 2); if (defined($junk)) { print "\nUsing '$label' as label; ignoring '$junk'\n"; } } if ((! defined($label)) || ($label =~ /^\s*$/)) { $label = "-"; } return $label; } sub mkdir_recursive ($) { my ($path) = @_; my $tmp_path; for my $dir (split /\//, $path) { $tmp_path .= "$dir/"; -d $tmp_path or mkdir $tmp_path, 0700 or die "Can't mkdir $tmp_path: $!"; } } sub verify_files_exist (@) { my (@files) = @_; foreach my $file (@files) { if ((! -e $file) || (! -s $file)) { die("$file is nonexistent or empty."); } } } # Returns a list ($fh, $filename) sub create_tempfile (;$) { my ($directory) = @_; if (! defined($directory)) { if (! defined($tmpdir)) { $tmpdir = tempdir(CLEANUP => 1); } $directory = $tmpdir; } return tempfile(DIR => $directory); } # Creates a cert data structure used by openssl_parse_pem sub new_cert_structure () { my $cert_data = {}; $cert_data->{datafile} = ""; $cert_data->{type} = ""; $cert_data->{localKeyID} = ""; $cert_data->{subject} = ""; $cert_data->{issuer} = ""; return $cert_data; } sub create_cert_chains (@) { my (@certs) = @_; my (%subject_hash, @leaves, @chains); foreach my $cert (@certs) { $cert->{children} = 0; if ($cert->{subject}) { $subject_hash{$cert->{subject}} = $cert; } } foreach my $cert (@certs) { my $parent = $subject_hash{$cert->{issuer}}; if (defined($parent)) { $parent->{children} += 1; } } @leaves = grep { $_->{children} == 0 } @certs; foreach my $leaf (@leaves) { my $chain = []; my $cert = $leaf; while (defined($cert)) { push @$chain, $cert; $cert = $subject_hash{$cert->{issuer}}; if (defined($cert) && (scalar(grep {$_ == $cert} @$chain) != 0)) { $cert = undef; } } push @chains, $chain; } return @chains; } ################## # openssl helpers ################## sub openssl_exec (@) { my (@args) = @_; my $fh; open($fh, "-|", $opensslbin, @args) or die "Failed to run '$opensslbin @args': $!"; my @output = <$fh>; if (! close($fh)) { # NOTE: Callers should check the value of $? for the exit status. if ($!) { die "Syserr closing '$opensslbin @args' pipe: $!"; } } return @output; } sub openssl_format ($) { my ($filename) = @_; return -B $filename ? 'DER' : 'PEM'; } sub openssl_x509_query ($@) { my ($filename, @query) = @_; my $format = openssl_format($filename); my @args = ("x509", "-in", $filename, "-inform", $format, "-noout", @query); return openssl_exec(@args); } sub openssl_hash ($) { my ($filename) = @_; my $cert_hash = join("", openssl_x509_query($filename, "-hash")); $? and die "openssl -hash '$filename' returned $?"; chomp($cert_hash); return $cert_hash; } sub openssl_fingerprint ($) { my ($filename) = @_; my $fingerprint = join("", openssl_x509_query($filename, "-fingerprint")); $? and die "openssl -fingerprint '$filename' returned $?"; chomp($fingerprint); return $fingerprint; } sub openssl_emails ($) { my ($filename) = @_; my @mailboxes = openssl_x509_query($filename, "-email"); $? and die "openssl -email '$filename' returned $?"; chomp(@mailboxes); return @mailboxes; } sub openssl_p12_to_pem ($$) { my ($p12_file, $pem_file) = @_; my @args = ("pkcs12", "-in", $p12_file, "-out", $pem_file); openssl_exec(@args); $? and die "openssl pkcs12 conversion returned $?"; } sub openssl_verify ($$) { my ($issuer_path, $cert_path) = @_; my @args = ("verify", $root_certs_switch, $root_certs_path, "-purpose", "smimesign", "-purpose", "smimeencrypt", "-untrusted", $issuer_path, $cert_path); my $output = join("", openssl_exec(@args)); chomp($output); return $output; } sub openssl_crl_text($) { my ($crl) = @_; my @args = ("crl", "-text", "-noout", "-in", $crl); my @output = openssl_exec(@args); $? and die "openssl crl -text '$crl' returned $?"; return @output; } sub openssl_trust_flag ($$;$) { my ($cert, $issuerid, $crl) = @_; print "==> about to verify certificate of $cert\n"; my $result = 't'; my $issuer_path; my $cert_path = "$certificates_path/$cert"; if ($issuerid eq '?') { $issuer_path = "$certificates_path/$cert"; } else { $issuer_path = "$certificates_path/$issuerid"; } my $output = openssl_verify($issuer_path, $cert_path); if ($?) { print "openssl verify returned exit code " . ($? >> 8) . " with output:\n"; print "$output\n\n"; print "Marking certificate as invalid\n"; return 'i'; } print "\n$output\n"; if ($output !~ /OK/) { return 'i'; } my ($not_before, $not_after, $serial_in) = openssl_x509_query($cert_path, "-dates", "-serial"); $? and die "openssl -dates -serial '$cert_path' returned $?"; if ( defined $not_before and defined $not_after ) { my %months = ('Jan', '00', 'Feb', '01', 'Mar', '02', 'Apr', '03', 'May', '04', 'Jun', '05', 'Jul', '06', 'Aug', '07', 'Sep', '08', 'Oct', '09', 'Nov', '10', 'Dec', '11'); my @tmp = split (/\=/, $not_before); my $not_before_date = $tmp[1]; my @fields = $not_before_date =~ /(\w+)\s*(\d+)\s*(\d+):(\d+):(\d+)\s*(\d+)\s*GMT/; if ($#fields == 5) { if (timegm($fields[4], $fields[3], $fields[2], $fields[1], $months{$fields[0]}, $fields[5]) > time) { print "Certificate is not yet valid.\n"; return 'e'; } } else { print "Expiration Date: Parse Error : $not_before_date\n\n"; } @tmp = split (/\=/, $not_after); my $not_after_date = $tmp[1]; @fields = $not_after_date =~ /(\w+)\s*(\d+)\s*(\d+):(\d+):(\d+)\s*(\d+)\s*GMT/; if ($#fields == 5) { if (timegm($fields[4], $fields[3], $fields[2], $fields[1], $months{$fields[0]}, $fields[5]) < time) { print "Certificate has expired.\n"; return 'e'; } } else { print "Expiration Date: Parse Error : $not_after_date\n\n"; } } if ( defined $crl ) { chomp($serial_in); my @serial = split (/\=/, $serial_in); my $match_line = undef; my @crl_lines = openssl_crl_text($crl); for (my $index = 0; $index <= $#crl_lines; $index++) { if ($crl_lines[$index] =~ /Serial Number:\s*\Q$serial[1]\E\b/) { $match_line = $crl_lines[$index + 1]; last; } } if ( defined $match_line ) { my @revoke_date = split (/:\s/, $match_line); print "FAILURE: Certificate $cert has been revoked on $revoke_date[1]\n"; $result = 'r'; } } print "\n"; return $result; } sub openssl_parse_pem ($$) { my ($filename, $attrs_required) = @_; my $state = 0; my $cert_data; my @certs; my $cert_count = 0; my $bag_count = 0; my $cert_tmp_fh; my $cert_tmp_filename; $cert_data = new_cert_structure(); ($cert_tmp_fh, $cert_data->{datafile}) = create_tempfile(); open(PEM_FILE, "<$filename") or die("Can't open $filename: $!"); while (<PEM_FILE>) { if (/^Bag Attributes/) { $bag_count++; $state == 0 or die("PEM-parse error at: $."); $state = 1; } # Allow attributes without the "Bag Attributes" header if ($state != 2) { if (/localKeyID:\s*(.*)/) { $cert_data->{localKeyID} = $1; } if (/subject=\s*(.*)/) { $cert_data->{subject} = $1; } if (/issuer=\s*(.*)/) { $cert_data->{issuer} = $1; } } if (/^-----/) { if (/BEGIN/) { print $cert_tmp_fh $_; $state = 2; if (/PRIVATE/) { $cert_data->{type} = "K"; next; } if (/CERTIFICATE/) { $cert_data->{type} = "C"; next; } die("What's this: $_"); } if (/END/) { $state = 0; print $cert_tmp_fh $_; close($cert_tmp_fh); $cert_count++; push (@certs, $cert_data); $cert_data = new_cert_structure(); ($cert_tmp_fh, $cert_data->{datafile}) = create_tempfile(); next; } } print $cert_tmp_fh $_; } close($cert_tmp_fh); close(PEM_FILE); if ($attrs_required && ($bag_count != $cert_count)) { die("Not all contents were bagged. can't continue."); } return @certs; } sub openssl_dump_cert ($) { my ($filename) = @_; my $format = openssl_format($filename); my @args = ("x509", "-in", $filename, "-inform", $format); my $output = join("", openssl_exec(@args)); $? and die "openssl x509 certicate dump returned $?"; return $output; } sub openssl_purpose_flag ($) { my ($filename) = @_; my $purpose = ""; my @output = openssl_x509_query($filename, "-purpose"); $? and die "openssl -purpose '$filename' returned $?"; foreach my $line (@output) { if ($line =~ /^S\/MIME signing\s*:\s*Yes/) { $purpose .= "s"; } elsif ($line =~ /^S\/MIME encryption\s*:\s*Yes/) { $purpose .= "e"; } } if (! $purpose) { $purpose = "-"; } return $purpose; } ################################# # certificate management methods ################################# sub cm_list_certs () { my %keyflags = ( 'i', '(Invalid)', 'r', '(Revoked)', 'e', '(Expired)', 'u', '(Unverified)', 'v', '(Valid)', 't', '(Trusted)'); open(INDEX, "<$certificates_path/.index") or die "Couldn't open $certificates_path/.index: $!"; print "\n"; while (<INDEX>) { my $tmp; my @tmp; my $tab = " "; my @fields = split; if ($fields[2] eq '-') { print "$fields[1]: Issued for: $fields[0] $keyflags{$fields[4]}\n"; } else { print "$fields[1]: Issued for: $fields[0] \"$fields[2]\" $keyflags{$fields[4]}\n"; } my $certfile = "$certificates_path/$fields[1]"; my $cert; { open F, $certfile or die "Couldn't open $certfile: $!"; local $/; $cert = <F>; close F; } my ($subject_in, $issuer_in, $date1_in, $date2_in) = openssl_x509_query($certfile, "-subject", "-issuer", "-dates"); $? and print "ERROR: openssl -subject -issuer -dates '$certfile' returned $?\n\n" and next; my @subject = split(/\//, $subject_in); while (@subject) { $tmp = shift @subject; ($tmp =~ /^CN\=/) and last; undef $tmp; } defined $tmp and @tmp = split (/\=/, $tmp) and print $tab."Subject: $tmp[1]\n"; my @issuer = split(/\//, $issuer_in); while (@issuer) { $tmp = shift @issuer; ($tmp =~ /^CN\=/) and last; undef $tmp; } defined $tmp and @tmp = split (/\=/, $tmp) and print $tab."Issued by: $tmp[1]"; if ( defined $date1_in and defined $date2_in ) { @tmp = split (/\=/, $date1_in); $tmp = $tmp[1]; @tmp = split (/\=/, $date2_in); print $tab."Certificate is not valid before $tmp". $tab." or after ".$tmp[1]; } -e "$private_keys_path/$fields[1]" and print "$tab - Matching private key installed -\n"; my @purpose = openssl_x509_query($certfile, "-purpose"); $? and die "openssl -purpose '$certfile' returned $?"; chomp(@purpose); print "$tab$purpose[0] (displays S/MIME options only)\n"; while (@purpose) { $tmp = shift @purpose; ($tmp =~ /^S\/MIME/ and $tmp =~ /Yes/) or next; my @tmptmp = split (/:/, $tmp); print "$tab $tmptmp[0]\n"; } print "\n"; } close(INDEX); } sub cm_add_entry ($$$$$$;$) { my ($mailbox, $hashvalue, $use_cert, $label, $trust, $purpose, $issuer_hash) = @_; if (! defined($issuer_hash) ) { $issuer_hash = "?"; } if ($use_cert) { open(INDEX, "+<$certificates_path/.index") or die "Couldn't open $certificates_path/.index: $!"; } else { open(INDEX, "+<$private_keys_path/.index") or die "Couldn't open $private_keys_path/.index: $!"; } while (<INDEX>) { my @fields = split; if (($fields[0] eq $mailbox) && ($fields[1] eq $hashvalue)) { close(INDEX); return; } } print INDEX "$mailbox $hashvalue $label $issuer_hash $trust $purpose\n"; close(INDEX); } # Returns the hashvalue.index of the stored cert sub cm_add_cert ($) { my ($filename) = @_; my $iter = 0; my $hashvalue = openssl_hash($filename); my $fp1 = openssl_fingerprint($filename); while (-e "$certificates_path/$hashvalue.$iter") { my $fp2 = openssl_fingerprint("$certificates_path/$hashvalue.$iter"); last if $fp1 eq $fp2; $iter++; } $hashvalue .= ".$iter"; if (-e "$certificates_path/$hashvalue") { print "\nCertificate: $certificates_path/$hashvalue already installed.\n"; } else { mycopy $filename, "$certificates_path/$hashvalue"; } return $hashvalue; } # Returns a reference containing the hashvalue, mailboxes, trust flag, and purpose # flag of the stored cert. sub cm_add_indexed_cert ($$$) { my ($filename, $label, $issuer_hash) = @_; my $cert_data = {}; $cert_data->{hashvalue} = cm_add_cert($filename); $cert_data->{mailboxes} = [ openssl_emails($filename) ]; $cert_data->{trust} = openssl_trust_flag($cert_data->{hashvalue}, $issuer_hash); $cert_data->{purpose} = openssl_purpose_flag($filename); foreach my $mailbox (@{$cert_data->{mailboxes}}) { cm_add_entry($mailbox, $cert_data->{hashvalue}, 1, $label, $cert_data->{trust}, $cert_data->{purpose}, $issuer_hash); print "\ncertificate ", $cert_data->{hashvalue}, " ($label) for $mailbox added.\n"; } return $cert_data; } sub cm_add_key ($$$$$$) { my ($file, $hashvalue, $mailbox, $label, $trust, $purpose) = @_; unless (-e "$private_keys_path/$hashvalue") { mycopy $file, "$private_keys_path/$hashvalue"; } cm_add_entry($mailbox, $hashvalue, 0, $label, $trust, $purpose); print "added private key: " . "$private_keys_path/$hashvalue for $mailbox\n"; } sub cm_modify_entry ($$$;$) { my ($op, $hashvalue, $use_cert, $opt_param) = @_; my $label; my $trust; my $purpose; my $path; my @fields; $op eq 'L' and ($label = $opt_param); $op eq 'T' and ($trust = $opt_param); $op eq 'P' and ($purpose = $opt_param); if ($use_cert) { $path = $certificates_path; } else { $path = $private_keys_path; } open(INDEX, "<$path/.index") or die "Couldn't open $path/.index: $!"; my ($newindex_fh, $newindex) = create_tempfile(); while (<INDEX>) { chomp; # fields: mailbox hash label issuer_hash trust purpose @fields = split; if ($fields[1] eq $hashvalue or $hashvalue eq 'all') { $op eq 'R' and next; if ($op eq 'L') { $fields[2] = $label; } if ($op eq 'T') { $fields[3] = "?" if ($#fields < 3); $fields[4] = $trust; } if ($op eq 'P') { $fields[3] = "?" if ($#fields < 3); $fields[4] = "u" if ($#fields < 4); $fields[5] = $purpose; } print $newindex_fh join(" ", @fields), "\n"; } else { print $newindex_fh $_, "\n"; } } close(INDEX); close($newindex_fh); move $newindex, "$path/.index" or die "Couldn't move $newindex to $path/.index: $!\n"; } # This returns the first matching entry. sub cm_find_entry ($$) { my ($hashvalue, $use_cert) = @_; my ($path, $index_fh); if ($use_cert) { $path = $certificates_path; } else { $path = $private_keys_path; } open($index_fh, "<$path/.index") or die "Couldn't open $path/.index: $!"; while (<$index_fh>) { chomp; my @fields = split; if ($fields[1] eq $hashvalue) { close($index_fh); return @fields; } } close($index_fh); return; } # Refreshes trust flags, and adds purpose if missing # (e.g. from an older index format) sub cm_refresh_index () { my $index_fh; my ($last_hash, $last_trust, $last_purpose) = ("", "", ""); open($index_fh, "<$certificates_path/.index") or die "Couldn't open $certificates_path/.index: $!"; my ($newindex_fh, $newindex) = create_tempfile(); while (<$index_fh>) { chomp; # fields: mailbox hash label issuer_hash trust purpose my @fields = split; if ($fields[1] eq $last_hash) { $fields[4] = $last_trust; $fields[5] = $last_purpose; } else { # Don't overwrite a revoked flag, because we don't have the CRL if ($fields[4] ne "r") { $fields[4] = openssl_trust_flag($fields[1], $fields[3]); } if ($#fields < 5) { $fields[5] = openssl_purpose_flag("$certificates_path/$fields[1]"); } # To update an old private keys index format, always push the trust # and purpose out. if (-e "$private_keys_path/$fields[1]") { cm_modify_entry ("T", $fields[1], 0, $fields[4]); cm_modify_entry ("P", $fields[1], 0, $fields[5]); } $last_hash = $fields[1]; $last_trust = $fields[4]; $last_purpose = $fields[5]; } print $newindex_fh join(" ", @fields), "\n"; } close($index_fh); close($newindex_fh); move $newindex, "$certificates_path/.index" or die "Couldn't move $newindex to $certificates_path/.index: $!\n"; } ############## # Op handlers ############## sub handle_init_paths () { mkdir_recursive($certificates_path); mkdir_recursive($private_keys_path); my $file; $file = $certificates_path . "/.index"; -f $file or open(TMP_FILE, ">$file") and close(TMP_FILE) or die "Can't touch $file: $!"; $file = $private_keys_path . "/.index"; -f $file or open(TMP_FILE, ">$file") and close(TMP_FILE) or die "Can't touch $file: $!"; } sub handle_change_label ($) { my ($keyid) = @_; my $label = query_label(); if (-e "$certificates_path/$keyid") { cm_modify_entry('L', $keyid, 1, $label); print "Changed label for certificate $keyid.\n"; } else { die "No such certificate: $keyid"; } if (-e "$private_keys_path/$keyid") { cm_modify_entry('L', $keyid, 0, $label); print "Changed label for private key $keyid.\n"; } } sub handle_add_cert($) { my ($filename) = @_; my $label = query_label(); my @cert_contents = openssl_parse_pem($filename, 0); @cert_contents = grep { $_->{type} eq "C" } @cert_contents; my @cert_chains = create_cert_chains(@cert_contents); print "Found " . scalar(@cert_chains) . " certificate chains\n"; foreach my $chain (@cert_chains) { my $leaf = shift(@$chain); my $issuer_chain_hash = "?"; print "Processing chain:\n"; if ($leaf->{subject}) { print "subject=" . $leaf->{subject} . "\n"; } if (scalar(@$chain) > 0) { my ($issuer_chain_fh, $issuer_chain_file) = create_tempfile(); foreach my $issuer (@$chain) { my $issuer_datafile = $issuer->{datafile}; open(my $issuer_fh, "< $issuer_datafile") or die "can't open $issuer_datafile: $?"; print $issuer_chain_fh $_ while (<$issuer_fh>); close($issuer_fh); } close($issuer_chain_fh); $issuer_chain_hash = cm_add_cert($issuer_chain_file); } cm_add_indexed_cert($leaf->{datafile}, $label, $issuer_chain_hash); } } sub handle_add_pem ($) { my ($filename) = @_; my @pem_contents; my $iter; my $key; my $certificate; my $root_cert; my $issuer_cert_file; @pem_contents = openssl_parse_pem($filename, 1); # look for key $iter = 0; while ($iter <= $#pem_contents) { if ($pem_contents[$iter]->{type} eq "K") { $key = $pem_contents[$iter]; splice(@pem_contents, $iter, 1); last; } $iter++; } defined($key) or die("Couldn't find private key!"); $key->{localKeyID} or die("Attribute 'localKeyID' wasn't set."); # private key and certificate use the same 'localKeyID' $iter = 0; while ($iter <= $#pem_contents) { if (($pem_contents[$iter]->{type} eq "C") && ($pem_contents[$iter]->{localKeyID} eq $key->{localKeyID})) { $certificate = $pem_contents[$iter]; splice(@pem_contents, $iter, 1); last; } $iter++; } defined($certificate) or die("Couldn't find matching certificate!"); if ($#pem_contents < 0) { die("No root and no intermediate certificates. Can't continue."); } # Look for a self signed root certificate $iter = 0; while ($iter <= $#pem_contents) { if ($pem_contents[$iter]->{subject} eq $pem_contents[$iter]->{issuer}) { $root_cert = $pem_contents[$iter]; splice(@pem_contents, $iter, 1); last; } $iter++; } if (defined($root_cert)) { $issuer_cert_file = $root_cert->{datafile}; } else { print "Couldn't identify root certificate!\n"; } # what's left are intermediate certificates. if ($#pem_contents >= 0) { my ($tmp_issuer_cert_fh, $tmp_issuer_cert) = create_tempfile(); $issuer_cert_file = $tmp_issuer_cert; $iter = 0; while ($iter <= $#pem_contents) { my $cert_datafile = $pem_contents[$iter]->{datafile}; open (CERT, "< $cert_datafile") or die "can't open $cert_datafile: $?"; print $tmp_issuer_cert_fh $_ while (<CERT>); close CERT; $iter++; } close $tmp_issuer_cert_fh; } handle_add_chain($key->{datafile}, $certificate->{datafile}, $issuer_cert_file); } sub handle_add_p12 ($) { my ($filename) = @_; print "\nNOTE: This will ask you for two passphrases:\n"; print " 1. The passphrase you used for exporting\n"; print " 2. The passphrase you wish to secure your private key with.\n\n"; my ($pem_fh, $pem_file) = create_tempfile(); close($pem_fh); openssl_p12_to_pem($filename, $pem_file); -e $pem_file and -s $pem_file or die("Conversion of $filename failed."); handle_add_pem($pem_file); } sub handle_add_chain ($$$) { my ($key_file, $cert_file, $issuer_file) = @_; my $label = query_label(); my $issuer_hash = cm_add_cert($issuer_file); my $cert_data = cm_add_indexed_cert($cert_file, $label, $issuer_hash); foreach my $mailbox (@{$cert_data->{mailboxes}}) { cm_add_key($key_file, $cert_data->{hashvalue}, $mailbox, $label, $cert_data->{trust}, $cert_data->{purpose}); } } sub handle_verify_cert ($$) { my ($keyid, $crl) = @_; -e "$certificates_path/$keyid" or $keyid eq 'all' or die "No such certificate: $keyid"; my @fields = cm_find_entry($keyid, 1); if (scalar(@fields)) { my $issuer_hash = $fields[3]; my $trust = openssl_trust_flag($keyid, $issuer_hash, $crl); cm_modify_entry('T', $keyid, 0, $trust); cm_modify_entry('T', $keyid, 1, $trust); } } sub handle_remove_pair ($) { my ($keyid) = @_; if (-e "$certificates_path/$keyid") { unlink "$certificates_path/$keyid"; cm_modify_entry('R', $keyid, 1); print "Removed certificate $keyid.\n"; } else { die "No such certificate: $keyid"; } if (-e "$private_keys_path/$keyid") { unlink "$private_keys_path/$keyid"; cm_modify_entry('R', $keyid, 0); print "Removed private key $keyid.\n"; } } sub handle_add_root_cert ($) { my ($root_cert) = @_; my $root_hash = openssl_hash($root_cert); if (-d $root_certs_path) { -e "$root_certs_path/$root_hash" or mycopy $root_cert, "$root_certs_path/$root_hash"; } else { open(ROOT_CERTS, ">>$root_certs_path") or die ("Couldn't open $root_certs_path for writing"); my $md5fp = openssl_fingerprint($root_cert); my @cert_text = openssl_x509_query($root_cert, "-text"); $? and die "openssl -text '$root_cert' returned $?"; print "Enter a label, name or description for this certificate: "; my $input = <STDIN>; my $line = "=======================================\n"; print ROOT_CERTS "\n$input$line$md5fp\nPEM-Data:\n"; my $cert = openssl_dump_cert($root_cert); print ROOT_CERTS $cert; print ROOT_CERTS @cert_text; close (ROOT_CERTS); } }
Close