Пример #1
0
def test_setupKeeper():
    """
    Test setting up keep directory
    """
    print("Testing setupKeeper")

    seed = (
        b'\x0c\xaa\xc9\xc6G\x11\xf6nn\xd7\x1b7\xdc^i\xc5\x12O\xe9>\xe1$F\xe1'
        b'\xa4z\xd4\xb6P\xdd\x86\x1d')

    prikey = (
        b'\xd9\xc8<$\x03\xb9%\x03c\xb3*6g\xa7m\xd8\x8d\x08j\xd4^4\x88\xcac\xba\xd1\xe9'
        b'\xd9\xe6\x99%')

    baseDirPath = setupTmpBaseDir()
    assert baseDirPath.startswith("/tmp/bluepea")
    assert baseDirPath.endswith("test")
    keepDirPath = os.path.join(baseDirPath, "bluepea/keep")
    os.makedirs(keepDirPath)
    assert os.path.exists(keepDirPath)

    keeper = keeping.setupKeeper(baseDirPath=keepDirPath,
                                 seed=seed,
                                 prikey=prikey)

    assert keeper == keeping.gKeeper
    assert keeper.baseDirPath == keeping.gKeepDirPath

    cleanupTmpBaseDir(keepDirPath)
    assert not os.path.exists(keepDirPath)
    print("Done Test")
Пример #2
0
def test_Keeper():
    """
    Test Keeper class
    """
    print("Testing Keeper Class")

    baseDirPath = setupTmpBaseDir()
    assert baseDirPath.startswith("/tmp/bluepea")
    assert baseDirPath.endswith("test")
    keepDirPath = os.path.join(baseDirPath, "bluepea/keep")
    os.makedirs(keepDirPath)
    assert os.path.exists(keepDirPath)

    seed = (
        b'\x0c\xaa\xc9\xc6G\x11\xf6nn\xd7\x1b7\xdc^i\xc5\x12O\xe9>\xe1$F\xe1'
        b'\xa4z\xd4\xb6P\xdd\x86\x1d')

    prikey = (
        b'\xd9\xc8<$\x03\xb9%\x03c\xb3*6g\xa7m\xd8\x8d\x08j\xd4^4\x88\xcac\xba\xd1\xe9'
        b'\xd9\xe6\x99%')

    keeper = keeping.Keeper(baseDirPath=keepDirPath, seed=seed, prikey=prikey)

    assert keeper.baseDirPath == keepDirPath
    assert keeper.filePath.endswith("/bluepea/keep/key.server.json")

    assert keeper.seed == seed
    assert keeper.sigkey == (
        b'\x0c\xaa\xc9\xc6G\x11\xf6nn\xd7\x1b7\xdc^i\xc5\x12O\xe9>\xe1$F\xe1'
        b'\xa4z\xd4\xb6P\xdd\x86\x1d^\xaeX\xa9\xa2\xfa/\x8f)\x7fG\xee\xec\x85!/BQiM'
        b"\xbfG\x11O\xd0\x02\xf8\xdf\x06'\xd7\x8f")
    assert keeper.sigkey[:32] == keeper.seed
    assert keeper.verkey == (
        b'^\xaeX\xa9\xa2\xfa/\x8f)\x7fG\xee\xec\x85!/BQiM\xbfG\x11O\xd0\x02\xf8\xdf'
        b"\x06'\xd7\x8f")

    keys = keeper.loadAllRoles(keeper.baseDirPath)
    assert "server" in keys
    assert keys['server'][
        'seed'] == '0caac9c64711f66e6ed71b37dc5e69c5124fe93ee12446e1a47ad4b650dd861d'
    assert keys['server'][
        'sigkey'] == '0caac9c64711f66e6ed71b37dc5e69c5124fe93ee12446e1a47ad4b650dd861d5eae58a9a2fa2f8f297f47eeec85212f4251694dbf47114fd002f8df0627d78f'
    assert keys['server'][
        'verkey'] == '5eae58a9a2fa2f8f297f47eeec85212f4251694dbf47114fd002f8df0627d78f'
    assert keys['server'][
        'prikey'] == 'd9c83c2403b9250363b32a3667a76dd88d086ad45e3488ca63bad1e9d9e69925'
    assert keys['server'][
        'pubkey'] == '1ea6d2c98888fff8e45b5b5dd55643dc825cda3538b72e0a5db9ecee007d3f72'

    assert keyToKey64u(
        keeper.pubkey) == "HqbSyYiI__jkW1td1VZD3IJc2jU4ty4KXbns7gB9P3I="

    keeper.clearBaseDir()
    assert not os.path.exists(keepDirPath)

    cleanupTmpBaseDir(os.path.dirname(keepDirPath))
    assert not os.path.exists(os.path.dirname(keepDirPath))
    print("Done Test")
Пример #3
0
def test_setupDbEnv():
    """

    """
    print("Testing Setup DB Env")

    baseDirPath = setupTmpBaseDir()
    assert baseDirPath.startswith("/tmp/bluepea")
    assert baseDirPath.endswith("test")
    dbDirPath = os.path.join(baseDirPath, "bluepea/db")
    os.makedirs(dbDirPath)
    assert os.path.exists(dbDirPath)

    env = dbing.setupDbEnv(baseDirPath=dbDirPath)
    assert env.path() == dbDirPath

    assert dbing.gDbDirPath == dbDirPath
    assert dbing.gDbEnv is env

    data = ODict()

    dbCore = dbing.gDbEnv.open_db(
        b'core')  # open named sub db named 'core' within env

    with dbing.gDbEnv.begin(db=dbCore,
                            write=True) as txn:  # txn is a Transaction object
        data["name"] = "John Smith"
        data["city"] = "Alta"
        datab = json.dumps(data, indent=2).encode("utf-8")
        txn.put(b'person0', datab)  # keys and values are bytes
        d0b = txn.get(b'person0')
        assert d0b == datab

        data["name"] = "Betty Smith"
        data["city"] = "Snowbird"
        datab = json.dumps(data, indent=2).encode("utf-8")
        txn.put(b'person1', datab)  # keys and values are bytes
        d1b = txn.get(b'person1')
        assert d1b == datab

        d0b = txn.get(b'person0')  # re-fetch person0
        assert d0b != datab
        data = json.loads(d0b.decode('utf-8'), object_pairs_hook=ODict)
        assert data['name'] == "John Smith"
        assert data['city'] == "Alta"

    cleanupTmpBaseDir(dbDirPath)
    assert not os.path.exists(dbDirPath)
    print("Done Test")
Пример #4
0
def test_setupPrime():
    """
    Test prime setup
    """
    print("Testing setup")

    dt = datetime.datetime(2000, 1, 1, tzinfo=datetime.timezone.utc)
    stamp = timing.iso8601(dt, aware=True)
    assert  stamp == "2000-01-01T00:00:00+00:00"

    baseDirPath = setupTmpBaseDir()

    assert baseDirPath.startswith("/tmp/bluepea")
    assert baseDirPath.endswith("test")
    keepDirPath = os.path.join(baseDirPath, "bluepea/keep")
    os.makedirs(keepDirPath)
    assert os.path.exists(keepDirPath)

    seed = (b'\x0c\xaa\xc9\xc6G\x11\xf6nn\xd7\x1b7\xdc^i\xc5\x12O\xe9>\xe1$F\xe1'
            b'\xa4z\xd4\xb6P\xdd\x86\x1d')

    prikey = (b'\xd9\xc8<$\x03\xb9%\x03c\xb3*6g\xa7m\xd8\x8d\x08j\xd4^4\x88\xcac\xba\xd1\xe9'
              b'\xd9\xe6\x99%')


    dbDirPath = os.path.join(baseDirPath, "bluepea/db")
    os.makedirs(dbDirPath)
    assert os.path.exists(dbDirPath)

    priming.setup(keepDirPath=keepDirPath,
                  seed=seed,
                  prikey=prikey,
                  dbDirPath=dbDirPath,
                  changed=stamp)

    assert keeping.gKeepDirPath == keepDirPath
    assert dbing.gDbDirPath == dbDirPath

    keeper = keeping.gKeeper

    dat, ser, sig = dbing.getSelfSigned(keeper.did)
    assert dat
    assert dat['did'] == keeper.did
    assert dat['changed'] == stamp

    cleanupTmpBaseDir(baseDirPath)
    assert not os.path.exists(baseDirPath)
    print("Done Test")
Пример #5
0
def test_setupKeep():
    """
    Test setting up keep directory
    """
    print("Testing setupKeep")

    baseDirPath = setupTmpBaseDir()
    assert baseDirPath.startswith("/tmp/bluepea")
    assert baseDirPath.endswith("test")
    keepDirPath = os.path.join(baseDirPath, "bluepea/keep")
    os.makedirs(keepDirPath)
    assert os.path.exists(keepDirPath)

    gKeepDirPath = keeping.setupKeep(baseDirPath=keepDirPath)

    assert gKeepDirPath == keepDirPath
    assert gKeepDirPath == keeping.gKeepDirPath

    cleanupTmpBaseDir(keepDirPath)
    assert not os.path.exists(keepDirPath)
    print("Done Test")
Пример #6
0
def test_dumpLoadKeys():
    """

    """
    print("Testing dump load keys")

    baseDirPath = setupTmpBaseDir()
    assert baseDirPath.startswith("/tmp/bluepea")
    assert baseDirPath.endswith("test")
    keyDirPath = os.path.join(baseDirPath, "keys")
    os.makedirs(keyDirPath)
    assert os.path.exists(keyDirPath)
    keyFilePath = os.path.join(keyDirPath, "signer.json")
    assert keyFilePath.endswith("keys/signer.json")

    # random seed used to generate private signing key
    #seed = libnacl.randombytes(libnacl.crypto_sign_SEEDBYTES)
    seed = (
        b'PTi\x15\xd5\xd3`\xf1u\x15}^r\x9bfH\x02l\xc6\x1b\x1d\x1c\x0b9\xd7{\xc0_'
        b'\xf2K\x93`')

    # creates signing/verification key pair
    verkey, sigkey = libnacl.crypto_sign_seed_keypair(seed)

    assert seed == sigkey[:32]
    assert verkey == (
        b'B\xdd\xbb}8V\xa0\xd6lk\xcf\x15\xad9\x1e\xa7\xa1\xfe\xe0p<\xb6\xbex'
        b'\xb0s\x8d\xd6\xf5\xa5\xe8Q')
    assert sigkey == (
        b'PTi\x15\xd5\xd3`\xf1u\x15}^r\x9bfH\x02l\xc6\x1b\x1d\x1c\x0b9\xd7{\xc0_'
        b'\xf2K\x93`B\xdd\xbb}8V\xa0\xd6lk\xcf\x15\xad9\x1e\xa7\xa1\xfe\xe0p<\xb6\xbex'
        b'\xb0s\x8d\xd6\xf5\xa5\xe8Q')

    keyData = ODict(seed=binascii.hexlify(seed).decode('utf-8'),
                    sigkey=binascii.hexlify(sigkey).decode('utf-8'),
                    verkey=binascii.hexlify(verkey).decode('utf-8'))

    assert keyData == ODict([
        ('seed',
         '50546915d5d360f175157d5e729b6648026cc61b1d1c0b39d77bc05ff24b9360'),
        ('sigkey',
         ('50546915d5d360f175157d5e729b6648026cc61b1d1c0b39d77bc05ff24b93604'
          '2ddbb7d3856a0d66c6bcf15ad391ea7a1fee0703cb6be78b0738dd6f5a5e851')),
        ('verkey',
         '42ddbb7d3856a0d66c6bcf15ad391ea7a1fee0703cb6be78b0738dd6f5a5e851')
    ])

    keeping.dumpKeys(keyData, keyFilePath)
    assert os.path.exists(keyFilePath)
    mode = stat.filemode(os.stat(keyFilePath).st_mode)
    assert mode == "-rw-------"

    keyDataFiled = keeping.loadKeys(keyFilePath)
    assert keyData == keyDataFiled

    sd = binascii.unhexlify(keyDataFiled['seed'].encode('utf-8'))
    assert sd == seed
    sk = binascii.unhexlify(keyDataFiled['sigkey'].encode('utf-8'))
    assert sk == sigkey
    vk = binascii.unhexlify(keyDataFiled['verkey'].encode('utf-8'))
    assert vk == verkey

    cleanupTmpBaseDir(baseDirPath)
    assert not os.path.exists(keyFilePath)
    print("Done Test")