import sys
import crypt
+import bcrypt
from string import ascii_letters, digits
from random import choice
HASH_ID_FROM_METHOD = {
'md5': '1',
'blowfish': '2a',
- 'sun-md5': 'md5',
'sha256': '5',
'sha512': '6'
}
def main():
(passwd, method) = parse_arguments(sys.argv[1:])
- salt = random_salt()
- hash = crypt.crypt(passwd, "$" + HASH_ID_FROM_METHOD[method] + "$" + salt)
+
+ if method != 'blowfish' :
+ hash = crypt.crypt(
+ passwd,"$" + HASH_ID_FROM_METHOD[method] + "$" + random_salt())
+ else:
+ hash = bcrypt.hashpw(passwd, bcrypt.gensalt(8))
+
sys.stdout.write("%s\n" % (hash))
return 0
log_error "No ${!shadow} found!"
fi
- hash=$("@scriptsdir@/snf-passtohash.py" "$password")
-
+ case "$flavor" in
+ linux|freebsd)
+ hash=$("@scriptsdir@/snf-passtohash.py" "$password")
+ ;;
+ openbsd|netbsd)
+ hash=$("@scriptsdir@/snf-passtohash.py" -m blowfish "$password")
+ ;;
+ *)
+ log_error "Unknown unix flavor: \`$flavor'"
+ ;;
+ esac
+
users=()
if [ -n "$SNF_IMAGE_PROPERTY_USERS" ]; then
components=
[Helper]
-packages=ufsutils linux-image-3.2.0-4-amd64
+packages=ufsutils linux-image-3.2.0-4-amd64 python-bcrypt
# Don't change the parameters below unless you really know what you are doing.
# The /'s and the empty `componets' variable are needed when working with apt.
source=http://apt.dev.grnet.gr/
Pin: version 8.2-3+wheezy+grnet.growfs.fix
Pin-Priority: 1001
+Package: python-bcrypt
+Pin: version 0.4-1grnet
+Pin-Priority: 1001
+
Package: linux-image-3.2.0-4-amd64
Pin: version 3.2.46-1+deb7u1+ufs.rw
Pin-Priority: 1001