# -*- coding: utf-8 -*- # # (c) Copyright 2015 HP Development Company, L.P. # # 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # Author: Amarnath Chitumalla, Sanjay Kumar # #Global imports import os import stat import datetime #Local imports from base.codes import * from base.strings import * from base import utils from base import os_utils from base.g import * from subprocess import Popen, PIPE class DigiSign_Verification(object): def __init__(self): pass def validate(self): pass class GPG_Verification(DigiSign_Verification): def __init__(self): self.__gpg = utils.which('gpg',True) sts, self.__hplipdir = os_utils.getHPLIPDir() self.__gpg_dir = os.path.join(self.__hplipdir, ".gnupg") #Make sure gpg directory is present. GPG keys will be retrieved here from the key server if not os.path.exists(self.__gpg_dir): try: os.mkdir(self.__gpg_dir, 0o755) except OSError: log.error("Failed to create %s" % self.__gpg_dir) self.__change_owner() def __change_owner(self, Recursive = False): try: os.umask(0) s = os.stat(self.__hplipdir) os_utils.changeOwner(self.__gpg_dir, s[stat.ST_UID], s[stat.ST_GID], Recursive) except OSError: log.error("Failed to Change ownership of %s" %self.__gpg_dir) def __gpg_check(self, hplip_package, hplip_digsig): cmd = '%s --homedir %s -no-permission-warning --verify %s %s' % (self.__gpg, self.__gpg_dir, hplip_digsig, hplip_package) log.debug("Verifying file %s : cmd = [%s]" % (hplip_package,cmd)) status, output = utils.run(cmd) log.debug("%s status: %d output:%s" % (self.__gpg, status,output)) return status def __acquire_gpg_key(self): cmd = '%s --homedir %s --no-permission-warning --import %s' \ % (self.__gpg, self.__gpg_dir, "/usr/share/hplip/signing-key.asc") log.info("Importing digital key") status, output = utils.run(cmd) log.debug(output) self.__change_owner(True) return status def validate(self, hplip_package, hplip_digsig): log.debug("Validating %s with %s signature file" %(hplip_package, hplip_digsig)) if not self.__gpg: return ERROR_GPG_CMD_NOT_FOUND, queryString(ERROR_GPG_CMD_NOT_FOUND) if not os.path.exists(hplip_package): return ERROR_FILE_NOT_FOUND, queryString(ERROR_FILE_NOT_FOUND, 0, hplip_package) if not os.path.exists(hplip_digsig): return ERROR_DIGITAL_SIGN_NOT_FOUND, queryString(ERROR_DIGITAL_SIGN_NOT_FOUND, 0, hplip_digsig) status = self.__acquire_gpg_key() if status != 0: return ERROR_UNABLE_TO_RECV_KEYS, queryString(ERROR_UNABLE_TO_RECV_KEYS) status = self.__gpg_check(hplip_package, hplip_digsig) if status != 0: return ERROR_DIGITAL_SIGN_BAD, queryString(ERROR_DIGITAL_SIGN_BAD, 0, hplip_package) else: return ERROR_SUCCESS, ""
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
__pycache__ | Folder | 0755 |
|
|
pexpect | Folder | 0755 |
|
|
LedmWifi.py | File | 29.18 KB | 0644 |
|
__init__.py | File | 785 B | 0644 |
|
avahi.py | File | 3.01 KB | 0644 |
|
codes.py | File | 30.55 KB | 0644 |
|
device.py | File | 95.38 KB | 0644 |
|
dime.py | File | 3.3 KB | 0644 |
|
exif.py | File | 35.08 KB | 0644 |
|
g.py | File | 14.19 KB | 0644 |
|
imageprocessing.py | File | 33.14 KB | 0644 |
|
imagesize.py | File | 5.75 KB | 0644 |
|
ldif.py | File | 16.33 KB | 0644 |
|
logger.py | File | 18.06 KB | 0644 |
|
magic.py | File | 63.2 KB | 0644 |
|
maint.py | File | 58.36 KB | 0644 |
|
mdns.py | File | 10.04 KB | 0644 |
|
mfpdtf.py | File | 17.34 KB | 0644 |
|
models.py | File | 19.04 KB | 0644 |
|
module.py | File | 28.32 KB | 0644 |
|
os_utils.py | File | 2.28 KB | 0644 |
|
password.py | File | 12.73 KB | 0644 |
|
pkit.py | File | 11.45 KB | 0644 |
|
pml.py | File | 26.46 KB | 0644 |
|
queues.py | File | 16.35 KB | 0644 |
|
services.py | File | 9.74 KB | 0644 |
|
six.py | File | 22.32 KB | 0644 |
|
sixext.py | File | 5.78 KB | 0644 |
|
slp.py | File | 5.8 KB | 0644 |
|
smart_install.py | File | 11.37 KB | 0644 |
|
status.py | File | 76.35 KB | 0644 |
|
strings.py | File | 28.21 KB | 0644 |
|
tui.py | File | 13.79 KB | 0644 |
|
utils.py | File | 75.97 KB | 0644 |
|
validation.py | File | 3.68 KB | 0644 |
|
vcard.py | File | 43.66 KB | 0644 |
|
wifi.py | File | 22.25 KB | 0644 |
|