Esempio n. 1
0
def splitAdd(user, password, name, value):
  splits = getSplits(user, password)
  k = int(splits[0])
  n = (len(splits) - 1)/2
  assert int(n) == n
  assert k <= n
  splitter = ShamirSplit()
  shares = splitter.share(value, k, n)
  for s in range(n):
    global host, port
    host = splits[2*s + 1]
    port = splits[2*s + 2]
    print "Sending split", s, "to", host + ":" + port
    add(user, password, 1, name, concat([int2bin(s + 1), int2bin(shares[s])]))
Esempio n. 2
0
def splitAdd(user, password, name, value):
    splits = getSplits(user, password)
    k = int(splits[0])
    n = (len(splits) - 1) / 2
    assert int(n) == n
    assert k <= n
    splitter = ShamirSplit()
    shares = splitter.share(value, k, n)
    for s in range(n):
        global host, port
        host = splits[2 * s + 1]
        port = splits[2 * s + 2]
        print "Sending split", s, "to", host + ":" + port
        add(user, password, 1, name,
            concat([int2bin(s + 1), int2bin(shares[s])]))
Esempio n. 3
0
def splitGet(user, password, name):
  splits = getSplits(user, password)
  k = int(splits[0])
  n = (len(splits) - 1)/2
  assert int(n) == n
  assert k <= n
  
  keys = KeyDeriver(password)
  shares = {}
  # FIXME: obviously we should try all n until we get k splits
  for s in range(k):
    global host, port
    host = splits[2*s + 1]
    port = splits[2*s + 2]
    print "Getting split", s, "from", host + ":" + port
    records = baseGetList(user, password, 1, name)
    record = records[-1]
    share = unconcat(keys.decrypt(record['value']))
    assert len(share) == 2
    shares[bin2int(share[0])] = bin2int(share[1])

  splitter = ShamirSplit()
  secret = splitter.recover(shares)
  print "value =", secret
Esempio n. 4
0
def splitGet(user, password, name):
    splits = getSplits(user, password)
    k = int(splits[0])
    n = (len(splits) - 1) / 2
    assert int(n) == n
    assert k <= n

    keys = KeyDeriver(password)
    shares = {}
    # FIXME: obviously we should try all n until we get k splits
    for s in range(k):
        global host, port
        host = splits[2 * s + 1]
        port = splits[2 * s + 2]
        print "Getting split", s, "from", host + ":" + port
        records = baseGetList(user, password, 1, name)
        record = records[-1]
        share = unconcat(keys.decrypt(record['value']))
        assert len(share) == 2
        shares[bin2int(share[0])] = bin2int(share[1])

    splitter = ShamirSplit()
    secret = splitter.recover(shares)
    print "value =", secret