mirror of
https://gitlab.com/cryptsetup/cryptsetup.git
synced 2025-12-08 09:20:11 +01:00
128 lines
3.7 KiB
Python
Executable File
128 lines
3.7 KiB
Python
Executable File
#!/usr/bin/python
|
|
#
|
|
# Python bindings to libcryptsetup test
|
|
#
|
|
# Copyright (C) 2011-2018, Red Hat, Inc. All rights reserved.
|
|
#
|
|
# This file is free software; you can redistribute it and/or
|
|
# modify it under the terms of the GNU Lesser General Public
|
|
# License as published by the Free Software Foundation; either
|
|
# version 2.1 of the License, or (at your option) any later version.
|
|
#
|
|
# This file 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
|
|
# Lesser General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU Lesser General Public
|
|
# License along with this file; if not, write to the Free Software
|
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
|
|
from __future__ import print_function
|
|
|
|
import sys
|
|
import os
|
|
|
|
sys.path.insert(0, ".libs")
|
|
import pycryptsetup
|
|
|
|
IMG = "test.img"
|
|
PASSWORD = "password"
|
|
PASSWORD2 = "password2"
|
|
DEVICE = "pycryptsetup_test_dev"
|
|
|
|
def log(level, txt):
|
|
if level == pycryptsetup.CRYPT_LOG_ERROR:
|
|
print(txt,end="")
|
|
return
|
|
|
|
def askyes(txt):
|
|
print("Question:", txt)
|
|
return 1
|
|
|
|
def print_status(c):
|
|
r = c.status()
|
|
print("status :",end="")
|
|
if r == pycryptsetup.CRYPT_ACTIVE:
|
|
print("ACTIVE")
|
|
elif r == pycryptsetup.CRYPT_INACTIVE:
|
|
print("INACTIVE")
|
|
else:
|
|
print("ERROR")
|
|
return
|
|
|
|
if os.geteuid() != 0:
|
|
print("WARNING: You must be root to run this test, test skipped.")
|
|
sys.exit(77)
|
|
|
|
os.system("dd if=/dev/zero of=" + IMG + " bs=1M count=32 >/dev/null 2>&1")
|
|
|
|
c = pycryptsetup.CryptSetup(
|
|
device = IMG,
|
|
name = DEVICE,
|
|
yesDialog = askyes,
|
|
logFunc = log)
|
|
|
|
#c.debugLevel(pycryptsetup.CRYPT_DEBUG_ALL);
|
|
c.debugLevel(pycryptsetup.CRYPT_DEBUG_NONE);
|
|
c.iterationTime(1)
|
|
r = c.isLuks()
|
|
print("isLuks :", r)
|
|
c.askyes(message = "Is there anybody out there?")
|
|
c.log(priority = pycryptsetup.CRYPT_LOG_ERROR, message = "Nobody there...\n")
|
|
c.luksFormat(cipher = "aes", cipherMode= "xts-plain64", keysize = 512, hashMode = "sha256")
|
|
print("isLuks :", c.isLuks())
|
|
print("luksUUID:", c.luksUUID())
|
|
print("addKeyVK:", c.addKeyByVolumeKey(newPassphrase = PASSWORD, slot = 2))
|
|
print("addKeyP :", c.addKeyByPassphrase(passphrase = PASSWORD,
|
|
newPassphrase = PASSWORD2, slot = 3))
|
|
print("removeP :", c.removePassphrase(passphrase = PASSWORD2))
|
|
print("addKeyP :", c.addKeyByPassphrase(PASSWORD, PASSWORD2))
|
|
# original api required wrong passphrase parameter here
|
|
# print "killSlot:", c.killSlot(passphrase = "xxx", slot = 0)
|
|
print("killSlot:", c.killSlot(slot = 0))
|
|
print("activate:", c.activate(name = DEVICE, passphrase = PASSWORD))
|
|
print("suspend :", c.suspend())
|
|
# os.system("dmsetup info -c " + DEVICE)
|
|
print("resume :", c.resume(passphrase = PASSWORD))
|
|
print_status(c)
|
|
info = c.info()
|
|
print("cipher :", info["cipher"])
|
|
print("cmode :", info["cipher_mode"])
|
|
print("keysize :", info["keysize"])
|
|
print("dir :", info["dir"])
|
|
print("device :", info["device"])
|
|
print("offset :", info["offset"])
|
|
print("name :", info["name"])
|
|
print("uuid :", info["uuid"])
|
|
# os.system("cryptsetup luksDump " + info["device"])
|
|
print("deact. :", c.deactivate())
|
|
|
|
del c
|
|
|
|
c = pycryptsetup.CryptSetup(
|
|
device = IMG,
|
|
name = DEVICE,
|
|
yesDialog = askyes,
|
|
logFunc = log)
|
|
|
|
print("activate:", c.activate(name = DEVICE, passphrase = PASSWORD))
|
|
|
|
c2 = pycryptsetup.CryptSetup(
|
|
name = DEVICE,
|
|
yesDialog = askyes,
|
|
logFunc = log)
|
|
|
|
info = c2.info()
|
|
print("cipher :", info["cipher"])
|
|
print("cmode :", info["cipher_mode"])
|
|
print("keysize :", info["keysize"])
|
|
|
|
print("deact. :", c.deactivate())
|
|
r = c2.deactivate()
|
|
print("deact. :", r)
|
|
del c
|
|
del c2
|
|
|
|
os.remove(IMG)
|