コード例 #1
0
 def __init__(self):
     bankconfig = OnlineBankConfig()
     self.bank_addr = bankconfig.get_parameter("CLIENT", "bank_addr")
     self.bank_port = int(bankconfig.get_parameter("CLIENT", "bank_port"))
     # bank_stack = bankconfig.get_parameter("CLIENT", "stack", "default")
     self.bank_username = bankconfig.get_parameter("CLIENT", "username")
     self.certPath = os.path.join(bankconfig.path(), BANK_CERT_FILE_NAME)
     self.bank_cert = loadCertFromFile(self.certPath)
     self.bank_client = None
コード例 #2
0
def test_basic():
    def printPoints(p):
        for bp in p:
            print(bp)

    filename, cert, key = sys.argv[1:]
    cert = loadCertFromFile(cert)
    key = loadPrivateKeyFromPemFile(key)
    passwd = getpass.getpass()

    test_start(filename, cert, key, passwd, printPoints)
    simulate_shutdown()
    test_reload(filename, cert, passwd, printPoints)
コード例 #3
0
def main():
    from playground.common.logging import EnablePresetLogging, PRESET_DEBUG
    EnablePresetLogging(PRESET_DEBUG)

    args = sys.argv[1:]
    if len(args) != 4:
        print("Incorrect number of arguments (got %s, expected 4)" % len(args))
        print(
            "USAGE:\n\tpython3 bank_functional1.py [Bank Cert Path] [User Login Name]\n\t\t[Client/Requester Bank Account Name] [Server/Merchant Bank Account Name]"
        )
        return

    bankcert = loadCertFromFile(args[0])
    username = args[1]
    pw = getpass.getpass("Enter client/requester's bank password: "******"print('this is a test')"
    fee = 1
    #debugPrint("Creating NullServerWallet")
    #serverWallet = NullServerWallet()
    debugPrint("Creating PayingServerWallet")
    serverWallet = PayingServerWallet(bankcert, merchantaccount)
    debugPrint("Creating SimplePayingServerAuth")
    serverAuth = SimplePayingServerAuth(fee)
    debugPrint("Creating DefaultMobileCodeEngine")
    serverEngine = DefaultMobileCodeEngine()

    # debugPrint("Creating NullClientWallet")
    # clientWallet = NullClientWallet()
    debugPrint("Creating PayingClientWallet")
    clientWallet = PayingClientWallet(bankstackfactory, username, pw,
                                      payeraccount, merchantaccount)

    def serverFactory():
        debugPrint("Factory creating MobileCodeServer")
        return MobileCodeServer(serverWallet, serverAuth, serverEngine)

    debugPrint("Creating MobileCodeClient")
    client = MobileCodeClient("default", "localhost", 1, samplecode,
                              SimplePayingClientAuth(), clientWallet)
    coro = playground.getConnector().create_playground_server(serverFactory, 1)
    loop = get_event_loop()
    server = loop.run_until_complete(coro)
    print("Server started")
    loop.call_later(0, RunCodeAndPrintResult, client)
    loop.run_forever()
コード例 #4
0
ファイル: ex8server.py プロジェクト: soap27century/hello
import asyncio, sys
import playground
import escape_room_006 as er
from autograder_ex8_packets import AutogradeStartTest, AutogradeTestStatus, AutogradeResultRequest, AutogradeResultResponse
#from gamepacket import GameCommandPacket, GameResponsePacket
from gamepacket import *
import playground.common.logging as pgLog
from playground.network.packet import PacketType
##############################
from CipherUtil import loadCertFromFile
from BankCore import LedgerLineStorage, LedgerLine
from OnlineBank import BankClientProtocol, OnlineBankConfig
import getpass, sys, os
##############################
certPath = os.path.join("bank.cert")
bank_cert = loadCertFromFile(certPath)
bank_addr = '20194.0.0.19000'
bank_port = 777

# Setup logging right away
pgLog.EnablePresetLogging(pgLog.PRESET_VERBOSE)

SERVER_PORT = 3088
AG_IP = '192.168.200.52'
AG_PORT = 19008


def verify(bank_client, receipt_bytes, signature_bytes, dst, amount, memo):
    if not bank_client.verify(receipt_bytes, signature_bytes):
        raise Exception("Bad receipt. Not correctly signed by bank")
    ledger_line = LedgerLineStorage.deserialize(receipt_bytes)
コード例 #5
0
def main():
    from OnlineBank import BankClientProtocol, BANK_FIXED_PLAYGROUND_ADDR, BANK_FIXED_PLAYGROUND_PORT
    from CipherUtil import loadCertFromFile
    #logctx = LoggingContext()
    #logctx.nodeId = "parallelTSP_"+myAddr.toString()

    # set this up as a configuration option
    #logctx.doPacketTracing = True
    #playground.playgroundlog.startLogging(logctx)

    # Having placeHolders for asyncio

    loop = asyncio.get_event_loop()
    loop.set_debug(enabled=True)
    ptspArgs = {}
    
    #from playground.common.logging import EnablePresetLogging, PRESET_VERBOSE, PRESET_DEBUG
    #EnablePresetLogging(PRESET_VERBOSE)
    import OnlineBank
    OnlineBank.DEBUG = 0
        
    args= sys.argv[1:]
    i = 0
    for arg in args:
        if arg.startswith("-"):
                k,v = arg.split("=")
                ptspArgs[k]=v
        else:
                ptspArgs[i] = arg
                i+=1
    stack = ptspArgs.get("-stack","default")
    bankAddress = ptspArgs.get("-bankaddr", BANK_FIXED_PLAYGROUND_ADDR)
    bankPort = ptspArgs.get("-bankport", BANK_FIXED_PLAYGROUND_PORT)
            
    tracker = MobileCodeServerTracker()
    tracker.startScan()

    bankcert = loadCertFromFile(ptspArgs[0])
    payeraccount = ptspArgs[2]
    username = args[1]
    pw = getpass.getpass("Enter bank password for {}: ".format(username))

    bankstackfactory = lambda: BankClientProtocol(bankcert, username, pw)
    wallet = PayingClientWallet(stack, bankstackfactory, username, pw, payeraccount,
                                bankAddress, bankPort)

    clientAuth = SimplePayingClientAuth()
    PTSP = ParallelTSP(tracker, clientAuth, wallet, n=50)        
    def initShell():
        uiFactory = ParallelTSPCLI(PTSP)
        uiFactory.registerExitListener(lambda reason: loop.call_later(2.0, loop.stop))
        a = AdvancedStdio(uiFactory)

    # loop.set_debug(enabled=True)
    loop.call_soon(initShell)

    
    # TODO - Will switchAddr be changed to "localhost" ?
    # stack can be "default" or user provided stack from ~/.playgroun/connector
    
    
    #parallelMaster = MobileCodeClient(stack, switchAddr, port, samplecode, NullClientAuth(), NullClientWallet())
    #coro = playground.getConnector(stack).create_playground_connection(lambda: TwistedStdioReplacement.StandardIO(ParallelTSPCLI(configOptions, parallelMaster)),switchAddr, port)
    #transport, protocol = loop.run_until_complete(coro)
    loop.run_forever()
    tracker.stopScan()
    loop.close()
コード例 #6
0
    i = 0
    for arg in args:
        if arg.startswith("-"):
            k, v = arg.split("=")
            serverArgs[k] = v
        else:
            serverArgs[i] = arg
            i += 1

    bankcertPath = serverArgs[0]
    paytoAccount = serverArgs[1]

    stack = serverArgs.get("-stack", "default")
    port = int(serverArgs.get("-port", "1"))

    bankcert = loadCertFromFile(bankcertPath)

    #serverWallet = NullServerWallet()
    #serverAuth = NullServerAuth()
    serverWallet = PayingServerWallet(bankcert, paytoAccount)
    serverEngine = DefaultMobileCodeEngine()
    serverAuth = SimplePayingServerAuth(paytoAccount,
                                        5)  # hardcoded 5 bitpoints per job
    serverAuth.traits[serverAuth.CONNECTOR_ATTRIBUTE] = stack
    serverAuth.traits[serverAuth.TIMEOUT_ATTRIBUTE] = 600  # 10 minutes.
    serverFactory = lambda: MobileCodeServer(serverWallet, serverAuth,
                                             serverEngine)

    coro = playground.getConnector(stack).create_playground_server(
        serverFactory, port)
    loop = get_event_loop()
コード例 #7
0
def main(args):
    if args[0] == "create":
        cert, key, filename = args[1:4]
        cert = loadCertFromFile(cert)
        key = loadPrivateKeyFromPemFile(key)
        passwd = getpass.getpass("Create mint password: "******"Re-enter mint password: "******"Passwords do not match")
        PrintingPress.CreateBankVault(filename, cert, key, passwd)
    elif args[0] == "mint":
        if len(args) == 1 or args[1].lower() in ["--help", "-h", "help"]:
            sys.exit("mint <amount> <cert> <filename> [<output_dir>]\n" +
                     "  amount can be of the form <amount>:<denomination>")
        amount, cert, filename = args[1:4]
        if len(args) > 4:
            outputDir = args[4]
        else:
            outputDir = None
        cert = loadCertFromFile(cert)
        if ":" in amount:
            amount, denominations = amount.split(":")
        else:
            denominations = amount
        amount = int(amount)
        denominations = int(denominations)
        passwd = getpass.getpass("Mint password: "******"Minting %d of %d bitpoints" %
                  ((total + denominations), amount))
            mint.mintBitPoints(denominations, serializer)
            total += denominations
    elif args[0] == "info":
        filename = args[1]
        if len(args) > 2:
            sampleSize = args[2]
        else:
            sampleSize = None
        bitpoints = []
        with open(filename, "rb") as f:
            bitpoints = BitPoint.deserializeAll(f)
        print("Deserialized", len(bitpoints), "bitpoints")
        if sampleSize == None:
            sample = []
        elif sampleSize.lower() == "all":
            sample = bitpoints
        else:
            start, stop = sampleSize.split(":")
            start = int(start.strip())
            stop = int(stop.strip())
            sample = bitpoints[start:stop]
        for bp in sample:
            print(bp)
    elif args[0] == "validate":
        filename, issuingCert = args[1:3]
        bitpoints = []
        with open(filename, "rb") as f:
            bitpoints = BitPoint.deserializeAll(f)
        cert = loadCertFromFile(issuingCert)
        verifier = BitPointVerifier(cert)
        numValid = 0
        for bp in bitpoints:
            isValid, reason = verifier.verify(bp)
            if isValid:
                numValid += 1
            else:
                print(bp.serialNumber(), "is NOT valid:", reason)
        print("Valid bitpoints: %s/%s" % (numValid, len(bitpoints)))