mirror of
https://gitlab.com/cryptsetup/cryptsetup.git
synced 2025-12-11 19:00:02 +01:00
git-svn-id: https://cryptsetup.googlecode.com/svn/trunk@681 36d66b0a-2a48-0410-832c-cd162a569da5
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, 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.
|
|
|
|
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,
|
|
return
|
|
|
|
def askyes(txt):
|
|
print "Question:", txt
|
|
return 1
|
|
|
|
def askpassword(txt):
|
|
return PASSWORD
|
|
|
|
def print_status(c):
|
|
r = c.status()
|
|
print "status :",
|
|
if r == pycryptsetup.CRYPT_ACTIVE:
|
|
print "ACTIVE"
|
|
elif r == pycryptsetup.CRYPT_INACTIVE:
|
|
print "INACTIVE"
|
|
else:
|
|
print "ERROR"
|
|
return
|
|
|
|
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,
|
|
passwordDialog = askpassword)
|
|
|
|
#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)
|
|
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,
|
|
passwordDialog = askpassword)
|
|
|
|
print "activate:", c.activate(name = DEVICE, passphrase = PASSWORD)
|
|
|
|
c2 = pycryptsetup.CryptSetup(
|
|
name = DEVICE,
|
|
yesDialog = askyes,
|
|
logFunc = log,
|
|
passwordDialog = askpassword)
|
|
|
|
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)
|