Make PyCryptodome an optional dependency

This commit is contained in:
RunasSudo 2022-10-18 17:58:48 +11:00
parent 3626d3037f
commit 7730ce476a
Signed by: RunasSudo
GPG Key ID: 7234E476BF21C61A
2 changed files with 8 additions and 4 deletions

View File

@ -46,6 +46,7 @@ The mandatory dependencies of this library are:
Optional dependencies are:
* [mpmath](https://mpmath.org/), for *beta_ratio* and *beta_oddsratio*
* [PyCryptodome](https://www.pycryptodome.org/), for *pickle_write_encrypted* and *pickle_read_encrypted*
* [rpy2](https://rpy2.github.io/), with R packages:
* [BFpack](https://cran.r-project.org/web/packages/BFpack/index.html), for *bayesfactor_afbf* (*RegressionResult.bayesfactor_beta_zero*)
* [logistf](https://cran.r-project.org/web/packages/logistf/index.html), for *PenalisedLogit*

View File

@ -14,10 +14,6 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
from Crypto.Cipher import AES
from Crypto.Protocol.KDF import scrypt
from Crypto.Random import get_random_bytes
import getpass
import io
import lzma
@ -32,6 +28,10 @@ def pickle_write_encrypted(df, fname):
Password is derived using scrypt KDF
"""
from Crypto.Cipher import AES
from Crypto.Protocol.KDF import scrypt
from Crypto.Random import get_random_bytes
# Get random salt
salt = get_random_bytes(16)
@ -69,6 +69,9 @@ def pickle_read_encrypted(fname):
Read a DataFrame from an encrypted file
"""
from Crypto.Cipher import AES
from Crypto.Protocol.KDF import scrypt
# Read ciphertext data
with open(fname, 'rb') as f:
salt, nonce, ct_bytes = pickle.load(f)