#!/usr/bin/python3

import base64
import sys
import json
from passlib import hash

def main():

    if len(sys.argv) < 2:
        return -1

    if sys.argv[1] == 'list':
        print('{ "encrypt": { "type": "str", "plainpass": "str" } }\n')
        return 0

    if sys.argv[1] == 'call':
        if len(sys.argv) < 3:
            return -1

    if sys.argv[2] != 'encrypt':
        return -1

    encpass = ""
    try:
        jsonin = json.loads(sys.stdin.readline())
        enctype = jsonin['type'].strip()
        plainpass = jsonin['plainpass']

        if enctype == 'ssha':
            encpass = hash.ldap_salted_sha1.hash(plainpass)
        elif enctype == 'sha1':
            encpass = hash.ldap_sha1.hash(plainpass)
        elif enctype == 'plain':
            encpass = plainpass
        elif enctype == 'md5':
            encpass = hash.apr_md5_crypt.hash(plainpass)
        elif enctype == 'bcrypt':
            encpass = hash.bcrypt.hash(plainpass)
        elif enctype == 'crypt':
            encpass = hash.des_crypt.hash(plainpass)

    except:
        encpass = ""

    print(json.dumps({ "encrypted_password": encpass}))

    return 0

main()