diff --git a/basice2e/run.sh b/basice2e/run.sh
index cafac88d34c9e1a2a4b1af4953b3a8ca5c4c2a6f..fbf6693ef7c5c0b7b5173e3f764b2dd740cb13b8 100755
--- a/basice2e/run.sh
+++ b/basice2e/run.sh
@@ -1066,58 +1066,6 @@ wait $PIDVAL3
 
 echo "GROUP CHAT FINISHED!"
 
-###############################################################################
-# Test  File Transfer
-###############################################################################
-
-echo "TESTING FILE TRANSFER..."
-
-# Create authenticated channel between client 110 and 111
-CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client110.log -s blob110 --writeContact $CLIENTOUT/client110-contact.bin --unsafe -m \"Hello from contact 110 to myself, without E2E Encryption\""
-eval $CLIENTCMD >> $CLIENTOUT/client110.txt &
-PIDVAL1=$!
-echo "$CLIENTCMD -- $PIDVAL1"
-wait $PIDVAL1
-CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client111.log -s blob111 --writeContact $CLIENTOUT/client111-contact.bin --destfile $CLIENTOUT/client110-contact.bin --send-auth-request --unsafe-channel-creation --sendCount 0 --receiveCount 0"
-eval $CLIENTCMD >> $CLIENTOUT/client111.txt &
-PIDVAL2=$!
-echo "$CLIENTCMD -- $PIDVAL2"
-
-while [ ! -s $CLIENTOUT/client111-contact.bin ]; do
-    sleep 1
-    echo -n "."
-done
-echo
-
-TMPID=$(cat $CLIENTOUT/client110.log | grep -a "User\:" | awk -F' ' '{print $5}')
-CLIENT110ID=${TMPID}
-echo "CLIENT 110 ID: $CLIENT110ID"
-TMPID=$(cat $CLIENTOUT/client111.log | grep -a "User\:" | awk -F' ' '{print $5}')
-CLIENT111ID=${TMPID}
-echo "CLIENT 111 ID: $CLIENT111ID"
-
-# Client 110 will now wait for client 111's E2E Auth channel request and confirm
-CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client110.log -s blob110 --destfile $CLIENTOUT/client111-contact.bin --sendCount 0 --receiveCount 0 --accept-channel --auth-timeout 360"
-eval $CLIENTCMD >> $CLIENTOUT/client110.txt &
-PIDVAL1=$!
-echo "$CLIENTCMD -- $PIDVAL1"
-wait $PIDVAL1
-wait $PIDVAL2
-
-# Client 111 sends a file to client 110
-CLIENTCMD="timeout 360s ../bin/client fileTransfer -s blob110 -l $CLIENTOUT/client110.log $CLIENTFILETRANSFEROPTS"
-eval $CLIENTCMD > $CLIENTOUT/client110.txt 2>&1 &
-PIDVAL1=$!
-echo "$CLIENTCMD -- $PIDVAL1"
-CLIENTCMD="timeout 700s ../bin/client fileTransfer -s blob111 -l $CLIENTOUT/client111.log $CLIENTFILETRANSFEROPTS --sendFile $CLIENTOUT/client110-contact.bin --filePath LoremIpsum.txt --filePreviewString \"Lorem ipsum dolor sit amet, consectetur adipiscing elit.\" --maxThroughput 1000 --retry 0"
-eval $CLIENTCMD > $CLIENTOUT/client111.txt 2>&1 &
-PIDVAL2=$!
-echo "$CLIENTCMD -- $PIDVAL2"
-wait $PIDVAL1
-wait $PIDVAL2
-
-echo "FILE TRANSFER FINISHED..."
-
 # echo "TESTING BROADCAST CHANNELS..."
 
 # New broadcast channel...
diff --git a/basice2e/LoremIpsum.txt b/fileTransfer/LoremIpsum.txt
similarity index 100%
rename from basice2e/LoremIpsum.txt
rename to fileTransfer/LoremIpsum.txt
diff --git a/fileTransfer/betanet.txt b/fileTransfer/betanet.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e35ebcf24ff6d2bbf54f6c994bfd35de7becbd33
--- /dev/null
+++ b/fileTransfer/betanet.txt
@@ -0,0 +1,306 @@
+188.187.190.53:22840
+135.181.134.215:22840
+90.64.159.233:22840
+63.224.248.74:22840
+78.63.197.35:22840
+95.217.225.220:22840
+167.86.89.25:22840
+134.17.158.63:22840
+77.92.107.203:22840
+136.50.65.29:22840
+176.99.131.128:22840
+109.251.8.131:22840
+85.237.9.101:22840
+195.93.180.119:22840
+193.106.95.173:22840
+193.106.95.227:22840
+168.119.49.161:22840
+193.106.94.75:22840
+176.99.131.188:22840
+180.150.125.93:22840
+135.181.29.63:22840
+116.202.99.94:22840
+94.130.150.94:22840
+93.81.246.111:22840
+183.99.96.180:22101
+62.171.131.155:22840
+159.65.122.44:22840
+45.122.123.134:22840
+157.90.34.21:22840
+107.182.163.106:22840
+52.124.124.210:22840
+170.187.225.94:22840
+95.217.228.117:22840
+88.99.13.205:22840
+52.183.38.229:22840
+77.223.99.126:22840
+37.228.116.99:22840
+167.99.247.6:22840
+5.45.81.112:22840
+193.47.33.51:22840
+5.45.81.110:22840
+69.197.179.42:22840
+69.197.179.162:22840
+94.244.64.115:22840
+109.100.137.105:22840
+86.57.132.29:22840
+178.248.81.38:22840
+213.55.169.27:22840
+212.24.106.228:22840
+195.181.247.171:22840
+82.148.29.76:22840
+81.163.28.252:22840
+80.249.150.70:22840
+79.98.24.202:22840
+62.173.145.42:22840
+77.223.98.157:22840
+193.47.33.132:22840
+82.148.19.245:22840
+31.184.254.81:22840
+195.64.234.210:22840
+195.64.234.98:22840
+78.26.169.79:22840
+62.77.156.70:22840
+77.223.97.164:22840
+193.47.33.50:22840
+62.173.140.126:22840
+93.81.246.64:22840
+149.210.192.112:22840
+77.120.176.213:22840
+188.138.242.248:22840
+178.168.101.47:22840
+37.97.220.128:22840
+69.197.147.18:22840
+81.240.39.28:22840
+141.105.67.92:22840
+213.10.138.128:22840
+217.136.119.184:22840
+85.201.32.4:22840
+92.64.19.232:22840
+89.221.20.22:22840
+62.167.123.100:22800
+161.230.93.70:22840
+76.65.147.14:22840
+86.7.108.18:22840
+109.129.225.57:22840
+194.158.207.84:22840
+116.203.252.237:22840
+217.12.210.152:22840
+45.115.107.124:22840
+178.128.199.183:22840
+93.107.156.53:22840
+82.15.128.246:22840
+70.75.89.186:22840
+109.87.172.237:22840
+80.90.47.210:22840
+90.189.180.24:22840
+46.98.0.118:22840
+85.221.55.10:22840
+191.32.173.237:22840
+80.5.16.132:22840
+173.212.199.13:22840
+120.88.119.219:22840
+135.19.193.9:22840
+134.249.187.129:22840
+188.194.110.16:22840
+195.38.9.10:22840
+46.42.16.25:22840
+31.165.163.210:22840
+89.232.195.123:22840
+77.122.54.99:22840
+85.105.79.102:22840
+163.172.149.150:22840
+5.53.16.225:22840
+178.124.192.61:22840
+167.99.130.234:22840
+95.158.15.24:22840
+195.239.181.117:22840
+104.158.0.184:22840
+62.171.142.152:22840
+77.122.89.98:22840
+200.37.209.49:22840
+181.43.154.26:22840
+185.230.88.227:22840
+91.169.185.175:62840
+217.136.102.221:22840
+149.210.229.230:22840
+176.37.104.235:22840
+37.97.224.62:22840
+94.107.24.186:22840
+151.252.109.180:22840
+195.93.181.189:22840
+195.93.181.192:22840
+149.210.229.210:22840
+77.122.48.168:22840
+185.4.65.20:22840
+37.97.224.55:22840
+178.170.47.131:22840
+37.97.224.32:22840
+178.170.39.140:22840
+135.181.139.234:22840
+78.129.38.119:22840
+78.181.101.251:22840
+68.183.34.147:22840
+5.255.173.96:22840
+195.177.94.31:22840
+37.57.87.184:22840
+37.97.224.19:22840
+209.145.53.106:22840
+176.214.77.176:22840
+143.178.133.206:22840
+85.118.207.56:22840
+88.211.82.66:22840
+185.23.83.59:22840
+93.75.3.51:22840
+176.210.55.44:22840
+83.144.175.13:22840
+78.188.200.189:22840
+174.114.197.104:22840
+188.83.79.190:22840
+66.183.0.247:22840
+5.61.52.49:22840
+149.210.229.197:22840
+82.118.17.160:22841
+31.202.122.239:22840
+46.150.9.16:22840
+205.250.188.151:22840
+149.210.229.175:22840
+77.122.91.193:22840
+31.202.122.152:22840
+151.95.102.130:22840
+91.245.37.80:22840
+199.119.86.179:22840
+93.72.67.70:22840
+195.134.65.165:22840
+103.56.39.162:20090
+178.27.238.236:22840
+149.210.192.41:22840
+103.56.39.183:20090
+5.61.54.13:22840
+78.188.51.20:22840
+93.157.248.142:22840
+31.172.140.126:22840
+95.189.106.118:22840
+86.94.128.12:22840
+5.132.111.41:22840
+109.129.220.59:22840
+84.83.206.46:22840
+136.144.240.106:22840
+89.28.86.208:22840
+89.28.6.19:22840
+5.255.173.43:22840
+77.122.29.37:22840
+136.144.203.178:22840
+136.144.230.186:22840
+136.144.206.186:22840
+61.6.46.179:22840
+31.202.123.194:22840
+135.125.235.32:22840
+103.83.149.90:22840
+66.183.0.246:22840
+185.12.142.45:22840
+46.37.194.90:22840
+78.26.140.125:22840
+89.191.125.159:22840
+31.201.104.137:22840
+77.92.109.45:22840
+108.249.110.153:22840
+196.41.195.118:22840
+101.98.209.195:22840
+77.92.109.43:22840
+188.127.250.195:22840
+76.176.192.12:22840
+91.177.2.56:22840
+82.193.107.60:22840
+86.83.150.15:22840
+134.249.121.177:22840
+46.166.138.219:22840
+75.156.104.27:22840
+109.100.137.83:22840
+174.88.128.201:22840
+178.168.68.129:22840
+66.183.0.245:22840
+62.238.247.127:22840
+65.21.151.29:22841
+207.81.171.109:22840
+155.93.136.90:22840
+190.22.170.63:22840
+136.144.230.185:22840
+102.182.202.19:22840
+70.52.24.55:22841
+195.191.174.168:22840
+88.223.114.249:22840
+46.142.181.156:22840
+174.94.125.212:22840
+184.146.45.46:22840
+136.144.236.167:22840
+174.88.104.199:22840
+88.223.115.74:22840
+178.170.40.34:22840
+91.149.187.22:22840
+178.150.223.30:22840
+195.138.68.0:22840
+77.122.59.150:22840
+91.241.178.180:22840
+95.164.8.35:22840
+188.138.162.9:22840
+77.122.80.204:22840
+46.150.9.21:22840
+46.119.158.146:22840
+5.34.183.246:22842
+65.21.180.158:22840
+188.187.188.47:22840
+62.171.137.40:22840
+178.151.197.49:22840
+213.231.5.100:22840
+194.28.172.72:22840
+76.71.65.212:22840
+76.71.65.96:22840
+185.46.60.30:22840
+185.172.34.211:22840
+87.255.69.231:22840
+91.222.114.19:22840
+162.55.58.184:22840
+91.233.171.9:22840
+82.16.173.238:22840
+77.169.225.166:22840
+87.248.171.27:22840
+81.243.65.75:22840
+207.6.218.81:22840
+207.6.218.110:22840
+188.124.46.130:22840
+159.196.176.42:22840
+143.244.158.201:22840
+185.224.108.251:22840
+80.100.87.204:22840
+185.48.197.184:22840
+95.67.28.111:22840
+171.25.167.187:22840
+176.100.12.243:22840
+185.224.108.82:22840
+217.12.223.90:22852
+185.224.110.37:22840
+195.138.85.182:22840
+176.104.49.11:22840
+176.104.52.215:22840
+88.204.18.134:22840
+217.26.167.45:22840
+185.172.34.212:22840
+87.255.69.232:22840
+5.165.211.128:22840
+136.144.205.104:22840
+178.168.57.176:22840
+87.255.69.238:22840
+194.233.67.188:22840
+88.159.77.30:22840
+195.74.67.235:22840
+174.94.68.31:22840
+91.5.88.185:22841
+179.223.85.90:22840
+139.59.245.228:22840
+199.119.86.185:22840
+105.228.133.62:22840
+139.59.126.219:22840
+91.5.83.238:22842
+95.216.221.129:22840
+158.140.234.119:22840
diff --git a/fileTransfer/client-registrar.yaml b/fileTransfer/client-registrar.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..3ab9c33b4e7785a14f91ab4fdfcebc8b035fabbd
--- /dev/null
+++ b/fileTransfer/client-registrar.yaml
@@ -0,0 +1,36 @@
+# ==================================
+# Client Registrar Configuration
+# ==================================
+
+# Log message level (0 = info, 1 = debug, >1 = trace)
+logLevel: 0
+# Path to log file
+logPath: "results/client-registrar.log"
+
+# Public address, used in NDF it gives to client
+publicAddress: "0.0.0.0:20061"
+# The listening port of this server
+port: 20061
+
+# === REQUIRED FOR ENABLING TLS ===
+# Path to the registration server private key file
+keyPath: "../keys/cmix.rip.key"
+# Path to the registration server certificate file
+certPath: "../keys/cmix.rip.crt"
+
+# Maximum number of connections per period
+userRegCapacity: 1000
+# How often the number of connections is reset
+userRegLeakPeriod: "24h"
+
+# Database connection information
+dbUsername: "cmix"
+dbPassword: ""
+dbName: "cmix_server"
+dbAddress: ""
+
+# List of client codes to be added to the database (for testing)
+clientRegCodes:
+  - "AAAA"
+  - "BBBB"
+  - "CCCC"
diff --git a/basice2e/clients.goldoutput/client110.txt b/fileTransfer/clients.goldoutput/client110.txt
similarity index 100%
rename from basice2e/clients.goldoutput/client110.txt
rename to fileTransfer/clients.goldoutput/client110.txt
diff --git a/basice2e/clients.goldoutput/client111.txt b/fileTransfer/clients.goldoutput/client111.txt
similarity index 100%
rename from basice2e/clients.goldoutput/client111.txt
rename to fileTransfer/clients.goldoutput/client111.txt
diff --git a/fileTransfer/devnet.txt b/fileTransfer/devnet.txt
new file mode 100644
index 0000000000000000000000000000000000000000..922c0de14aa0c5f53ae073466dbc7e4869862eb3
--- /dev/null
+++ b/fileTransfer/devnet.txt
@@ -0,0 +1,3 @@
+34.222.125.145:11420
+35.163.143.85:11420
+34.218.59.127:11420
diff --git a/fileTransfer/gateway-1.yaml b/fileTransfer/gateway-1.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..401f3c99a7ada08dde2780d1f5d8fb37d96fcec4
--- /dev/null
+++ b/fileTransfer/gateway-1.yaml
@@ -0,0 +1,49 @@
+# START YAML ===
+################################################################################
+## Copyright © 2018 Privategrity Corporation                                   #
+##                                                                             #
+## All rights reserved.                                                        #
+################################################################################
+
+##
+# Gateway Configuration File
+##
+
+# Used for debugging
+loglevel: 2
+
+# Output log file
+log: "results/gateways/gateway-1.log"
+
+# The public IP address and port of the node associated with this gateway
+cmixAddress:  "0.0.0.0:10060"
+
+# The listening port of this gateway
+Port: 1060
+
+# The public IPv4 address of the Gateway, as reported to the network, to use
+# instead of dynamically looking up Gateway's own IP address. If a port is not
+# included, then the port flag is used instead.
+overridePublicIP: "0.0.0.0"
+
+# Period in which the message cleanup function executes. Recommended period is on the order of a minute.
+messageTimeout: "1800s"
+
+# Path to where the IDF is saved. This is used by the wrapper management script.
+idfPath: "results/gateways/gatewayIDF-0.json"
+
+# === REQUIRED FOR ENABLING TLS ===
+# Path to the private key file
+keyPath: "../keys/cmix.rip.key"
+# Path to the certificate file
+certPath: "../keys/cmix.rip.crt"
+# Path to the permissioning certificate
+schedulingCertPath: "../keys/cmix.rip.crt"
+# Path to the certificate file
+cmixCertPath: "../keys/cmix.rip.crt"
+
+
+devMode: true
+
+minRegisteredNodes: 0
+# === END YAML
diff --git a/fileTransfer/gateway-2.yaml b/fileTransfer/gateway-2.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..a498cbb25834913d1c0bfed2198bd4e0bbff4880
--- /dev/null
+++ b/fileTransfer/gateway-2.yaml
@@ -0,0 +1,49 @@
+# START YAML ===
+################################################################################
+## Copyright © 2018 Privategrity Corporation                                   #
+##                                                                             #
+## All rights reserved.                                                        #
+################################################################################
+
+##
+# Gateway Configuration File
+##
+
+# Used for debugging
+loglevel: 2
+
+# Output log file
+log: "results/gateways/gateway-2.log"
+
+# The public IP address and port of the node associated with this gateway
+cmixAddress:  "0.0.0.0:10061"
+
+# The listening port of this gateway
+Port: 1061
+
+# The public IPv4 address of the Gateway, as reported to the network, to use
+# instead of dynamically looking up Gateway's own IP address. If a port is not
+# included, then the port flag is used instead.
+overridePublicIP: "0.0.0.0"
+
+# Period in which the message cleanup function executes. Recommended period is on the order of a minute.
+messageTimeout: "1800s"
+
+# Path to where the IDF is saved. This is used by the wrapper management script.
+idfPath: "results/gateways/gatewayIDF-1.json"
+
+# === REQUIRED FOR ENABLING TLS ===
+# Path to the private key file
+keyPath: "../keys/cmix.rip.key"
+# Path to the certificate file
+certPath: "../keys/cmix.rip.crt"
+# Path to the permissioning certificate
+schedulingCertPath: "../keys/cmix.rip.crt"
+# Path to the certificate file
+cmixCertPath: "../keys/cmix.rip.crt"
+
+
+devMode: true
+
+minRegisteredNodes: 0
+# === END YAML
diff --git a/fileTransfer/gateway-3.yaml b/fileTransfer/gateway-3.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..9f36de1ae8b794c4028e92eddd3432a55196d38d
--- /dev/null
+++ b/fileTransfer/gateway-3.yaml
@@ -0,0 +1,49 @@
+# START YAML ===
+################################################################################
+## Copyright © 2018 Privategrity Corporation                                   #
+##                                                                             #
+## All rights reserved.                                                        #
+################################################################################
+
+##
+# Gateway Configuration File
+##
+
+# Used for debugging
+loglevel: 2
+
+# Output log file
+log: "results/gateways/gateway-3.log"
+
+# The public IP address and port of the node associated with this gateway
+cmixAddress:  "0.0.0.0:10062"
+
+# The listening port of this gateway
+Port: 1062
+
+# The public IPv4 address of the Gateway, as reported to the network, to use
+# instead of dynamically looking up Gateway's own IP address. If a port is not
+# included, then the port flag is used instead.
+overridePublicIP: "0.0.0.0"
+
+# Period in which the message cleanup function executes. Recommended period is on the order of a minute.
+messageTimeout: "1800s"
+
+# Path to where the IDF is saved. This is used by the wrapper management script.
+idfPath: "results/gateways/gatewayIDF-2.json"
+
+# === REQUIRED FOR ENABLING TLS ===
+# Path to the private key file
+keyPath: "../keys/cmix.rip.key"
+# Path to the certificate file
+certPath: "../keys/cmix.rip.crt"
+# Path to the permissioning certificate
+schedulingCertPath: "../keys/cmix.rip.crt"
+# Path to the certificate file
+cmixCertPath: "../keys/cmix.rip.crt"
+
+
+devMode: true
+
+minRegisteredNodes: 0
+# === END YAML
diff --git a/fileTransfer/gateway-4.yaml b/fileTransfer/gateway-4.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..f07b197033ef595d6b1c96e7ebbac8c61259bb6f
--- /dev/null
+++ b/fileTransfer/gateway-4.yaml
@@ -0,0 +1,49 @@
+# START YAML ===
+################################################################################
+## Copyright © 2018 Privategrity Corporation                                   #
+##                                                                             #
+## All rights reserved.                                                        #
+################################################################################
+
+##
+# Gateway Configuration File
+##
+
+# Used for debugging
+loglevel: 2
+
+# Output log file
+log: "results/gateways/gateway-4.log"
+
+# The public IP address and port of the node associated with this gateway
+cmixAddress:  "0.0.0.0:10063"
+
+# The listening port of this gateway
+Port: 1063
+
+# The public IPv4 address of the Gateway, as reported to the network, to use
+# instead of dynamically looking up Gateway's own IP address. If a port is not
+# included, then the port flag is used instead.
+overridePublicIP: "0.0.0.0"
+
+# Period in which the message cleanup function executes. Recommended period is on the order of a minute.
+messageTimeout: "1800s"
+
+# Path to where the IDF is saved. This is used by the wrapper management script.
+idfPath: "results/gateways/gatewayIDF-3.json"
+
+# === REQUIRED FOR ENABLING TLS ===
+# Path to the private key file
+keyPath: "../keys/cmix.rip.key"
+# Path to the certificate file
+certPath: "../keys/cmix.rip.crt"
+# Path to the permissioning certificate
+schedulingCertPath: "../keys/cmix.rip.crt"
+# Path to the certificate file
+cmixCertPath: "../keys/cmix.rip.crt"
+
+
+devMode: true
+
+minRegisteredNodes: 0
+# === END YAML
diff --git a/fileTransfer/gateway-5.yaml b/fileTransfer/gateway-5.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..ca8a4015364934c833bec8e6249bb3c5d5235385
--- /dev/null
+++ b/fileTransfer/gateway-5.yaml
@@ -0,0 +1,49 @@
+# START YAML ===
+################################################################################
+## Copyright © 2018 Privategrity Corporation                                   #
+##                                                                             #
+## All rights reserved.                                                        #
+################################################################################
+
+##
+# Gateway Configuration File
+##
+
+# Used for debugging
+loglevel: 2
+
+# Output log file
+log: "results/gateways/gateway-5.log"
+
+# The public IP address and port of the node associated with this gateway
+cmixAddress:  "0.0.0.0:10064"
+
+# The listening port of this gateway
+Port: 1064
+
+# The public IPv4 address of the Gateway, as reported to the network, to use
+# instead of dynamically looking up Gateway's own IP address. If a port is not
+# included, then the port flag is used instead.
+overridePublicIP: "0.0.0.0"
+
+# Period in which the message cleanup function executes. Recommended period is on the order of a minute.
+messageTimeout: "1800s"
+
+# Path to where the IDF is saved. This is used by the wrapper management script.
+idfPath: "results/gateways/gatewayIDF-4.json"
+
+# === REQUIRED FOR ENABLING TLS ===
+# Path to the private key file
+keyPath: "../keys/cmix.rip.key"
+# Path to the certificate file
+certPath: "../keys/cmix.rip.crt"
+# Path to the permissioning certificate
+schedulingCertPath: "../keys/cmix.rip.crt"
+# Path to the certificate file
+cmixCertPath: "../keys/cmix.rip.crt"
+
+
+devMode: true
+
+minRegisteredNodes: 0
+# === END YAML
diff --git a/fileTransfer/mainnet.txt b/fileTransfer/mainnet.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3fbbb1c4181299e5380dbb76870d73576e29d43f
--- /dev/null
+++ b/fileTransfer/mainnet.txt
@@ -0,0 +1,74 @@
+"65.21.170.29:22840"
+"88.198.2.52:22840"
+"188.40.70.250:22840"
+"185.218.125.248:22840"
+"31.202.122.131:22840"
+"173.249.60.80:22840"
+"65.21.76.35:22840"
+"195.201.171.211:22840"
+"65.21.221.236:22840"
+"37.97.220.130:22840"
+"159.148.31.238:22840"
+"nodochile.myddns.me:22840"
+"94.130.10.38:22840"
+"188.240.52.205:22840"
+"212.38.189.73:22840"
+"xerxesgw.caius.ovh:22840"
+"46.4.50.57:22840"
+"103.195.101.143:22840"
+"49.12.45.179:22840"
+"167.172.88.140:22840"
+"5.189.176.210:22840"
+"135.181.213.94:22840"
+"213.136.70.8:22840"
+"194.163.163.77:22840"
+"65.21.204.13:22840"
+"88.119.195.16:22840"
+"88.198.2.51:22840"
+"181.43.194.251:22840"
+"159.148.31.232:22840"
+"65.108.52.154:11098"
+"138.201.37.166:22840"
+"kmil.go.ro:22840"
+"37.97.169.197:22840"
+"144.76.65.107:22840"
+"178.18.253.13:22840"
+"162.55.131.110:22840"
+"91.230.111.8:22840"
+"109.98.108.250:22840"
+"15.161.170.171:22840"
+"37.97.224.110:22840"
+"54.79.206.112:22840"
+"144.126.149.30:22840"
+"194.163.171.145:22840"
+"37.97.220.129:22840"
+"194.163.170.125:22840"
+"65.21.143.248:22840"
+"149.210.229.175:22840"
+"149.210.192.112:22840"
+"149.210.192.111:22840"
+"65.21.234.163:22840"
+"149.210.229.223:22840"
+"173.249.44.133:22840"
+"75.119.130.123:22840"
+"194.233.77.127:22840"
+"66.94.99.187:22840"
+"144.91.99.106:22840"
+"185.214.134.207:22840"
+"95.217.207.236:22840"
+"95.217.206.164:22840"
+"173.212.233.67:22840"
+"37.55.17.106:22840"
+"65.108.3.162:22840"
+"186.106.188.155:22840"
+"109.237.108.117:22840"
+"65.108.42.168:22840"
+"65.21.234.86:22840"
+"65.21.50.177:22840"
+"194.163.189.115:22840"
+"135.181.212.170:22840"
+"23.88.104.166:22840"
+"103.107.182.192:22840"
+"65.108.2.254:22840"
+"94.130.136.136:22840"
+"162.55.100.14:22840"
diff --git a/fileTransfer/network.config b/fileTransfer/network.config
new file mode 100644
index 0000000000000000000000000000000000000000..61a12cf512ec5d6d17420b0e6d0cfcfbc37278bb
--- /dev/null
+++ b/fileTransfer/network.config
@@ -0,0 +1,26 @@
+localhost:1060
+# This is the network configuration file. The top line of this file,
+# when not set via command line, is used to determine to which network
+# the integration test will be run against.
+
+# Note you can also specify "release", "betanet", or "protonet" on run.sh
+
+# Betanet gateways
+109.169.15.30:22840
+5.12.137.118:22840
+92.246.20.92:22840
+178.16.39.203:22840
+86.135.17.18:22840
+
+# Release (messenger test) network gateways
+34.221.74.216:11420
+52.25.9.28:11420
+54.149.122.115:11420
+
+
+# protonet
+185.152.3.247:11420
+93.151.207.39:11420
+93.107.154.131:11420
+173.208.225.75:11421
+92.246.20.92:11420
diff --git a/fileTransfer/noerrors.txt b/fileTransfer/noerrors.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/fileTransfer/permissioning.yaml b/fileTransfer/permissioning.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..29520c6687f042e969beb7372f24d1011949b9d5
--- /dev/null
+++ b/fileTransfer/permissioning.yaml
@@ -0,0 +1,96 @@
+# ==================================
+# Permissioning Server Configuration
+# ==================================
+
+# Log message level
+loglevel: 2
+
+# Path to log file
+logPath: "results/permissioning.log"
+
+# The listening port of this  server
+port: 20060
+
+# Database connection information
+dbUsername: ""
+dbPassword: ""
+dbName: ""
+dbAddress: "0.0.0.0:6969"
+
+minimumNodes: 5
+
+minGatewayVersion: "3.0.0"
+minServerVersion:  "3.0.0"
+minClientVersion: "4.0.0"
+nodeMetricInterval: 3
+
+# For testing, use the sequence as the country code. Do not use the geobinning database
+disableGeoBinning: true
+
+# For testing, do not exclude node or gateway IPs which are local to the machine
+allowLocalIPs: true
+
+# Disable pruning of NDF for offline nodes
+# if set to false, network will sleep for five minutes on start
+disableNDFPruning: true
+permissiveIPChecking: true
+
+# How long rounds will be tracked by gateways. Rounds (and messages as an extension)
+# prior to this period are not guaranteed to be delivered to clients.
+# Expects duration in"h". (Defaults to 1 weeks (168 hours)
+messageRetentionLimit: "168h"
+
+# Path to the file containing the round ID
+roundIdPath: "results/roundId.txt"
+
+# Path to the file containing the update ID
+updateIdPath: "results/updateId.txt"
+
+
+# Public address used in NDF to give to client
+registrationAddress: "0.0.0.0:20061"
+
+# Path to whitelisted IPs for client ratelimiting
+whitelistedIpAddressesPath: "whitelist.txt"
+
+# Path to the node topology permissioning info
+ndfOutputPath: "ndf.json"
+
+# === REQUIRED FOR ENABLING TLS ===
+# Path to the registration server private key file
+keyPath: "../keys/cmix.rip.key"
+# Path to the registration server certificate file
+certPath: "../keys/cmix.rip.crt"
+
+fullNdfOutputPath: "results/permissions-ndfoutput.json"
+signedPartialNDFOutputPath: "results/permissions-ndfoutput-partial.json"
+
+# === REQUIRED FOR ENABLING TLS ===
+# Path to the UDB certificate file
+udbCertPath: "../keys/cmix.rip.crt"
+# "Location of the user discovery contact file.
+udContactPath: "results/udbContact.bin"
+udbAddress: "127.0.0.1:30060"
+
+# Time interval (in minutes) in which the database is
+# checked for banned nodes
+BanTrackerInterval: "3"
+
+groups:
+  cmix:
+    prime: "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200CBBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D788719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA993B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934063199FFFFFFFFFFFFFFFF"
+    generator: "2"
+  e2e:
+    prime: "E2EE983D031DC1DB6F1A7A67DF0E9A8E5561DB8E8D49413394C049B7A8ACCEDC298708F121951D9CF920EC5D146727AA4AE535B0922C688B55B3DD2AEDF6C01C94764DAB937935AA83BE36E67760713AB44A6337C20E7861575E745D31F8B9E9AD8412118C62A3E2E29DF46B0864D0C951C394A5CBBDC6ADC718DD2A3E041023DBB5AB23EBB4742DE9C1687B5B34FA48C3521632C4A530E8FFB1BC51DADDF453B0B2717C2BC6669ED76B4BDD5C9FF558E88F26E5785302BEDBCA23EAC5ACE92096EE8A60642FB61E8F3D24990B8CB12EE448EEF78E184C7242DD161C7738F32BF29A841698978825B4111B4BC3E1E198455095958333D776D8B2BEEED3A1A1A221A6E37E664A64B83981C46FFDDC1A45E3D5211AAF8BFBC072768C4F50D7D7803D2D4F278DE8014A47323631D7E064DE81C0C6BFA43EF0E6998860F1390B5D3FEACAF1696015CB79C3F9C2D93D961120CD0E5F12CBB687EAB045241F96789C38E89D796138E6319BE62E35D87B1048CA28BE389B575E994DCA755471584A09EC723742DC35873847AEF49F66E43873"
+    generator: "2"
+
+
+# Path to file with config for scheduling algorithm within the user directory
+schedulingConfigPath: "registration.json"
+
+# Path to JSON file with list of Node registration codes (in order of network
+# placement)
+RegCodesFilePath: "regCodes.json"
+
+# Set address space size for ephemeral IDs
+addressSpace: 32
diff --git a/fileTransfer/regCodes.json b/fileTransfer/regCodes.json
new file mode 100644
index 0000000000000000000000000000000000000000..7f6da44e87864cd7e143406b69f3185c52769cbb
--- /dev/null
+++ b/fileTransfer/regCodes.json
@@ -0,0 +1 @@
+[{"RegCode": "edhp", "Order": "CR"},{"RegCode": "mvep", "Order": "CR"},{"RegCode": "owms", "Order": "CR"},{"RegCode": "clig", "Order": "CR"},{"RegCode": "zrbl", "Order": "CR"}]
\ No newline at end of file
diff --git a/fileTransfer/registration.json b/fileTransfer/registration.json
new file mode 100644
index 0000000000000000000000000000000000000000..f400c7eb3334920b7f93396409ae19fb013d9073
--- /dev/null
+++ b/fileTransfer/registration.json
@@ -0,0 +1,12 @@
+{
+    "TeamSize": 5,
+    "PrecomputationTimeout": 30000,
+    "RealtimeTimeout": 15000,
+    "DebugTrackRounds": true,
+    "BatchSize": 32,
+    "MinimumDelay": 1000,
+    "RealtimeDelay": 2000,
+    "Threshold":     0.3,
+    "NodeCleanUpInterval": 180000,
+    "ResourceQueueTimeout": 300000
+}
\ No newline at end of file
diff --git a/fileTransfer/release.txt b/fileTransfer/release.txt
new file mode 100644
index 0000000000000000000000000000000000000000..444256765d3f3402799c47b75e3e399dbcd4facf
--- /dev/null
+++ b/fileTransfer/release.txt
@@ -0,0 +1,3 @@
+34.222.230.124:11420
+54.187.42.105:11420
+54.149.115.63:11420
diff --git a/fileTransfer/run.sh b/fileTransfer/run.sh
new file mode 100755
index 0000000000000000000000000000000000000000..0bedd20899f80f1539c4a712d6e05047a98b339c
--- /dev/null
+++ b/fileTransfer/run.sh
@@ -0,0 +1,236 @@
+# NOTE: This is verbose on purpose.
+################################################################################
+## Initial Set Up & Clean Up of Past Runs
+################################################################################
+
+# Copy file into folder if it does not already exist
+if [ ! -f network.sh ]; then
+  cp ../network/network.sh .
+fi
+
+set -e
+rm -fr results.bak || true
+mv results results.bak || rm -fr results || true
+rm -fr blob* || true
+rm *-contact.json || true
+rm server-5.qdstrm || true
+rm server-5.qdrep || true
+
+mkdir -p .elixxir
+
+if [ $# -gt 1 ]
+then
+    echo "usage: $0 [gatewayip:port]"
+    exit
+fi
+
+
+NETWORKENTRYPOINT=$1
+
+DEBUGLEVEL=${DEBUGLEVEL-1}
+
+
+SERVERLOGS=results/servers
+GATEWAYLOGS=results/gateways
+CLIENTOUT=results/clients
+UDBOUT=results/udb-console.txt
+CLIENTCLEAN=results/clients-cleaned
+CLIENTOPTS="--password hello --ndf results/ndf.json --verify-sends --sendDelay 100 --waitTimeout 360 -v $DEBUGLEVEL"
+CLIENTFILETRANSFEROPTS="--password hello --waitTimeout 600 --ndf results/ndf.json -v $DEBUGLEVEL"
+
+
+mkdir -p $SERVERLOGS
+mkdir -p $GATEWAYLOGS
+mkdir -p $CLIENTOUT
+mkdir -p $CLIENTCLEAN
+
+mkdir -p $SERVERLOGS
+mkdir -p $GATEWAYLOGS
+mkdir -p $CLIENTOUT
+mkdir -p $CLIENTCLEAN
+
+
+################################################################################
+## Network Set Up
+################################################################################
+
+
+if [ "$NETWORKENTRYPOINT" == "betanet" ]
+then
+    NETWORKENTRYPOINT=$(sort -R betanet.txt | head -1)
+elif [ "$NETWORKENTRYPOINT" == "mainnet" ]
+then
+    NETWORKENTRYPOINT=$(sort -R mainnet.txt | head -1)
+elif [ "$NETWORKENTRYPOINT" == "release" ]
+then
+    NETWORKENTRYPOINT=$(sort -R release.txt | head -1)
+elif [ "$NETWORKENTRYPOINT" == "devnet" ]
+then
+    NETWORKENTRYPOINT=$(sort -R devnet.txt | head -1)
+elif [ "$NETWORKENTRYPOINT" == "" ]
+then
+    NETWORKENTRYPOINT=$(head -1 network.config)
+fi
+
+echo "NETWORK: $NETWORKENTRYPOINT"
+
+if [ "$NETWORKENTRYPOINT" == "localhost:1060" ]
+then
+    source network.sh
+
+else
+    echo "Connecting to network defined at $NETWORKENTRYPOINT"
+    echo $NETWORKENTRYPOINT > results/startgwserver.txt
+fi
+
+echo "localhost:1060" > results/startgwserver.txt
+
+echo "DONE LETS DO STUFF"
+
+echo "DOWNLOADING TLS Cert..."
+# -alpn h2 added to mimic grpc headers
+CMD="openssl s_client -alpn h2 -showcerts -connect $(tr -d '[:space:]' < results/startgwserver.txt)"
+echo $CMD
+eval $CMD < /dev/null 2>&1 > "results/startgwcert.bin"
+CMD="cat results/startgwcert.bin | openssl x509 -outform PEM"
+echo $CMD
+eval $CMD > "results/startgwcert.pem"
+head "results/startgwcert.pem"
+
+echo "DOWNLOADING NDF..."
+CLIENTCMD="../bin/client getndf --gwhost $(tr -d '[:space:]' < results/startgwserver.txt) --cert results/startgwcert.pem"
+eval $CLIENTCMD >> results/ndf.json 2>&1 &
+PIDVAL=$!
+echo "$CLIENTCMD -- $PIDVAL"
+wait $PIDVAL
+
+cat results/ndf.json | jq . | head -5
+
+file results/ndf.json
+
+if [ ! -s results/ndf.json ]
+then
+    echo "results/ndf.json is empty, cannot proceed"
+    exit -1
+fi
+
+###############################################################################
+# Test  File Transfer
+###############################################################################
+
+echo "TESTING FILE TRANSFER..."
+
+# Create authenticated channel between client 110 and 111
+CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client110.log -s blob110 --writeContact $CLIENTOUT/client110-contact.bin --unsafe -m \"Hello from contact 110 to myself, without E2E Encryption\""
+eval $CLIENTCMD >> $CLIENTOUT/client110.txt &
+PIDVAL1=$!
+echo "$CLIENTCMD -- $PIDVAL1"
+wait $PIDVAL1
+CLIENTCMD="timeout 240s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client111.log -s blob111 --writeContact $CLIENTOUT/client111-contact.bin --destfile $CLIENTOUT/client110-contact.bin --send-auth-request --unsafe-channel-creation --sendCount 0 --receiveCount 0"
+eval $CLIENTCMD >> $CLIENTOUT/client111.txt &
+PIDVAL2=$!
+echo "$CLIENTCMD -- $PIDVAL2"
+
+while [ ! -s $CLIENTOUT/client111-contact.bin ]; do
+    sleep 1
+    echo -n "."
+done
+echo
+
+TMPID=$(cat $CLIENTOUT/client110.log | grep -a "User\:" | awk -F' ' '{print $5}')
+CLIENT110ID=${TMPID}
+echo "CLIENT 110 ID: $CLIENT110ID"
+TMPID=$(cat $CLIENTOUT/client111.log | grep -a "User\:" | awk -F' ' '{print $5}')
+CLIENT111ID=${TMPID}
+echo "CLIENT 111 ID: $CLIENT111ID"
+
+# Client 110 will now wait for client 111's E2E Auth channel request and confirm
+CLIENTCMD="timeout 360s ../bin/client $CLIENTOPTS -l $CLIENTOUT/client110.log -s blob110 --destfile $CLIENTOUT/client111-contact.bin --sendCount 0 --receiveCount 0 --accept-channel --auth-timeout 360"
+eval $CLIENTCMD >> $CLIENTOUT/client110.txt &
+PIDVAL1=$!
+echo "$CLIENTCMD -- $PIDVAL1"
+wait $PIDVAL1
+wait $PIDVAL2
+
+# Client 111 sends a file to client 110
+CLIENTCMD="timeout 360s ../bin/client fileTransfer -s blob110 -l $CLIENTOUT/client110.log $CLIENTFILETRANSFEROPTS"
+eval $CLIENTCMD > $CLIENTOUT/client110.txt 2>&1 &
+PIDVAL1=$!
+echo "$CLIENTCMD -- $PIDVAL1"
+CLIENTCMD="timeout 700s ../bin/client fileTransfer -s blob111 -l $CLIENTOUT/client111.log $CLIENTFILETRANSFEROPTS --sendFile $CLIENTOUT/client110-contact.bin --filePath LoremIpsum.txt --filePreviewString \"Lorem ipsum dolor sit amet, consectetur adipiscing elit.\" --maxThroughput 1000 --retry 0"
+eval $CLIENTCMD > $CLIENTOUT/client111.txt 2>&1 &
+PIDVAL2=$!
+echo "$CLIENTCMD -- $PIDVAL2"
+wait $PIDVAL1
+wait $PIDVAL2
+
+echo "FILE TRANSFER FINISHED..."
+
+########################################################################
+
+echo "TESTS EXITED SUCCESSFULLY, CHECKING OUTPUT..."
+
+cp $CLIENTOUT/*.txt $CLIENTCLEAN/
+
+sed -i.bak 's/Sending\ to\ .*\:/Sent:/g' $CLIENTCLEAN/client*.txt
+sed -i.bak 's/Message\ from\ .*, .* Received:/Received:/g' $CLIENTCLEAN/client*.txt
+sed -i.bak 's/ERROR.*Signature/Signature/g' $CLIENTCLEAN/client*.txt
+sed -i.bak 's/[Aa]uthenticat.*$//g' $CLIENTCLEAN/client*.txt
+rm $CLIENTCLEAN/client*.txt.bak
+
+for C in $(ls -1 $CLIENTCLEAN | grep -v client11[01]); do
+    sort -o tmp $CLIENTCLEAN/$C  || true
+    cp tmp $CLIENTCLEAN/$C
+    # uniq tmp $CLIENTCLEAN/$C || true
+done
+
+GOLDOUTPUT=clients.goldoutput
+if [ "$NETWORKENTRYPOINT" != "localhost:1060" ]
+then
+    rm -fr clients.net_goldoutput || true
+    GOLDOUTPUT=clients.net_goldoutput
+    cp -r clients.goldoutput clients.net_goldoutput
+    # Delete the localhost only files
+    rm $GOLDOUTPUT/client13* || true
+    rm $GOLDOUTPUT/client18* || true
+    rm $GOLDOUTPUT/client19* || true
+    rm $GOLDOUTPUT/client2[01]* || true
+    rm $GOLDOUTPUT/client31* || true
+    rm $GOLDOUTPUT/client3[56]* || true
+    rm $GOLDOUTPUT/client45* || true
+    rm $GOLDOUTPUT/client56* || true
+    rm $GOLDOUTPUT/client67* || true
+    rm $GOLDOUTPUT/client74* || true
+    rm $GOLDOUTPUT/client9* || true
+fi
+
+
+set +x
+diff -aru $GOLDOUTPUT $CLIENTCLEAN
+
+if [ "$NETWORKENTRYPOINT" == "localhost:1060" ]
+then
+
+    #cat $CLIENTOUT/* | strings | grep -ae "ERROR" -e "FATAL" > results/client-errors || true
+    #diff -ruN results/client-errors.txt noerrors.txt
+    cat $SERVERLOGS/server-*.log | grep -a "ERROR" | grep -a -v "context" | grep -av "metrics" | grep -av "database" | grep -av RequestClientKey > results/server-errors.txt || true
+    cat $SERVERLOGS/server-*.log | grep -a "FATAL" | grep -a -v "context" | grep -av "transport is closing" | grep -av "database" >> results/server-errors.txt || true
+    diff -aruN results/server-errors.txt noerrors.txt
+    IGNOREMSG="GetRoundBufferInfo: Error received: rpc error: code = Unknown desc = round buffer is empty"
+    IGNORESERVE="Failed to serve "
+    IGNORESTART="Failed to start "
+    cat $GATEWAYLOGS/*.log | grep -a "ERROR" | grep -av "context" | grep -av "certificate" | grep -av "Failed to read key" | grep -av "$IGNOREMSG" | grep -av "$IGNORESERVE" | grep -av "$IGNORESTART"  > results/gateway-errors.txt || true
+    cat $GATEWAYLOGS/*.log | grep -a "FATAL" | grep -av "context" | grep -av "transport is closing" >> results/gateway-errors.txt || true
+    diff -aruN results/gateway-errors.txt noerrors.txt
+    echo "Checking backup files for equality..."
+    # diff -aruN $CLIENTOUT/client120A.backup.json $CLIENTOUT/client120B.backup.json > client120BackupDiff.txt
+    #diff -aruN $CLIENTOUT/client121A.backup.json $CLIENTOUT/client121B.backup.json > client121BackupDiff.txt || true
+    # diff -aruN  client120BackupDiff.txt noerrors.txt
+    #echo "NOTE: BACKUP CHECK DISABLED, this should be uncommented when turned back on!"
+    #diff -aruN  client121BackupDiff.txt noerrors.txt
+fi
+
+# Remove the file if it exists
+if [ -f network.sh ]; then
+  rm network.sh
+fi
\ No newline at end of file
diff --git a/fileTransfer/server-1.yaml b/fileTransfer/server-1.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..9b1a51af591e86c5f43f4eefaa7705037f50bac0
--- /dev/null
+++ b/fileTransfer/server-1.yaml
@@ -0,0 +1,42 @@
+# START YAML ===
+registrationCode: "edhp"
+useGPU: false
+devMode: true
+rawPermAddr: true
+logLevel: 2
+
+cmix:
+  paths:
+    # Path where the ID will be stored after the ID is created on first run
+    # used by the wrapper script
+    idf:  "nodeID-0.json"
+    # Path to the self signed TLS cert that the node uses for identification
+    cert: "../keys/cmix.rip.crt"
+    # Path to the private key for the self signed TLS cert
+    key:  "../keys/cmix.rip.key"
+    # Path to where the log will be stored
+    log:  "results/servers/server-1.log"
+    errOutput: "results/servers/server-1.err"
+    ipListOutput: "results/servers/iplist-1.txt"
+  port: "10060"
+  overridePublicIP: "127.0.0.1"
+database:
+  name: "cmix_server"
+  username: "cmix"
+  password: ""
+  addresses: ""
+gateway:
+  paths:
+    # Path to the self signed TLS cert used by the gateway
+    cert: "../keys/cmix.rip.crt"
+scheduling:
+  paths:
+    # Path to the self signed TLS cert used by the permissioning. Provided by xx network
+    cert: "../keys/cmix.rip.crt"
+  # IP Address of the permissioning server, provided by xx network
+  address: "0.0.0.0:20060"
+metrics:
+  # location of stored metrics data. Modification to set to permissioning
+  # server instead of saving will be made at a later date
+  log:  "metrics-server-1.log"
+# === END YAML
diff --git a/fileTransfer/server-2.yaml b/fileTransfer/server-2.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..040cea6869097b6149dc95ccafe6508155e441a0
--- /dev/null
+++ b/fileTransfer/server-2.yaml
@@ -0,0 +1,42 @@
+# START YAML ===
+registrationCode: "mvep"
+useGPU: false
+devMode: true
+rawPermAddr: true
+logLevel: 2
+
+cmix:
+  paths:
+    # Path where the ID will be stored after the ID is created on first run
+    # used by the wrapper script
+    idf:  "nodeID-1.json"
+    # Path to the self signed TLS cert that the node uses for identification
+    cert: "../keys/cmix.rip.crt"
+    # Path to the private key for the self signed TLS cert
+    key:  "../keys/cmix.rip.key"
+    # Path to where the log will be stored
+    log:  "results/servers/server-2.log"
+    errOutput: "results/servers/server-2.err"
+    ipListOutput: "results/servers/iplist-1.txt"
+  port: "10061"
+  overridePublicIP: "127.0.0.1"
+database:
+  name: "cmix_server"
+  username: "cmix"
+  password: ""
+  addresses: ""
+gateway:
+  paths:
+    # Path to the self signed TLS cert used by the gateway
+    cert: "../keys/cmix.rip.crt"
+scheduling:
+  paths:
+    # Path to the self signed TLS cert used by the permissioning. Provided by xx network
+    cert: "../keys/cmix.rip.crt"
+  # IP Address of the permissioning server, provided by xx network
+  address: "0.0.0.0:20060"
+metrics:
+  # location of stored metrics data. Modification to set to permissioning
+  # server instead of saving will be made at a later date
+  log:  "metrics-server-2.log"
+# === END YAML
diff --git a/fileTransfer/server-3.yaml b/fileTransfer/server-3.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..1162ae97cf9c00a58089b93cc5675daaf8b93d33
--- /dev/null
+++ b/fileTransfer/server-3.yaml
@@ -0,0 +1,42 @@
+# START YAML ===
+registrationCode: "owms"
+useGPU: false
+devMode: true
+rawPermAddr: true
+logLevel: 2
+
+cmix:
+  paths:
+    # Path where the ID will be stored after the ID is created on first run
+    # used by the wrapper script
+    idf:  "nodeID-2.json"
+    # Path to the self signed TLS cert that the node uses for identification
+    cert: "../keys/cmix.rip.crt"
+    # Path to the private key for the self signed TLS cert
+    key:  "../keys/cmix.rip.key"
+    # Path to where the log will be stored
+    log:  "results/servers/server-3.log"
+    errOutput: "results/servers/server-3.err"
+    ipListOutput: "results/servers/iplist-1.txt"
+  port: "10062"
+  overridePublicIP: "127.0.0.1"
+database:
+  name: "cmix_server"
+  username: "cmix"
+  password: ""
+  addresses: ""
+gateway:
+  paths:
+    # Path to the self signed TLS cert used by the gateway
+    cert: "../keys/cmix.rip.crt"
+scheduling:
+  paths:
+    # Path to the self signed TLS cert used by the permissioning. Provided by xx network
+    cert: "../keys/cmix.rip.crt"
+  # IP Address of the permissioning server, provided by xx network
+  address: "0.0.0.0:20060"
+metrics:
+  # location of stored metrics data. Modification to set to permissioning
+  # server instead of saving will be made at a later date
+  log:  "metrics-server-3.log"
+# === END YAML
diff --git a/fileTransfer/server-4.yaml b/fileTransfer/server-4.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..0aa6c97fe075204695309b875dab40c7de7bc663
--- /dev/null
+++ b/fileTransfer/server-4.yaml
@@ -0,0 +1,42 @@
+# START YAML ===
+registrationCode: "clig"
+useGPU: false
+devMode: true
+rawPermAddr: true
+logLevel: 2
+
+cmix:
+  paths:
+    # Path where the ID will be stored after the ID is created on first run
+    # used by the wrapper script
+    idf:  "nodeID-3.json"
+    # Path to the self signed TLS cert that the node uses for identification
+    cert: "../keys/cmix.rip.crt"
+    # Path to the private key for the self signed TLS cert
+    key:  "../keys/cmix.rip.key"
+    # Path to where the log will be stored
+    log:  "results/servers/server-4.log"
+    errOutput: "results/servers/server-4.err"
+    ipListOutput: "results/servers/iplist-1.txt"
+  port: "10063"
+  overridePublicIP: "127.0.0.1"
+database:
+  name: "cmix_server"
+  username: "cmix"
+  password: ""
+  addresses: ""
+gateway:
+  paths:
+    # Path to the self signed TLS cert used by the gateway
+    cert: "../keys/cmix.rip.crt"
+scheduling:
+  paths:
+    # Path to the self signed TLS cert used by the permissioning. Provided by xx network
+    cert: "../keys/cmix.rip.crt"
+  # IP Address of the permissioning server, provided by xx network
+  address: "0.0.0.0:20060"
+metrics:
+  # location of stored metrics data. Modification to set to permissioning
+  # server instead of saving will be made at a later date
+  log:  "metrics-server-4.log"
+# === END YAML
diff --git a/fileTransfer/server-5.yaml b/fileTransfer/server-5.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..646b54ea59cecc271857403a3796297eb2d7b416
--- /dev/null
+++ b/fileTransfer/server-5.yaml
@@ -0,0 +1,42 @@
+# START YAML ===
+registrationCode: "zrbl"
+useGPU: false
+devMode: true
+rawPermAddr: true
+logLevel: 2
+
+cmix:
+  paths:
+    # Path where the ID will be stored after the ID is created on first run
+    # used by the wrapper script
+    idf:  "nodeID-4.json"
+    # Path to the self signed TLS cert that the node uses for identification
+    cert: "../keys/cmix.rip.crt"
+    # Path to the private key for the self signed TLS cert
+    key:  "../keys/cmix.rip.key"
+    # Path to where the log will be stored
+    log:  "results/servers/server-5.log"
+    errOutput: "results/servers/server-5.err"
+    ipListOutput: "results/servers/iplist-1.txt"
+  port: "10064"
+  overridePublicIP: "127.0.0.1"
+database:
+  name: "cmix_server"
+  username: "cmix"
+  password: ""
+  addresses: ""
+gateway:
+  paths:
+    # Path to the self signed TLS cert used by the gateway
+    cert: "../keys/cmix.rip.crt"
+scheduling:
+  paths:
+    # Path to the self signed TLS cert used by the permissioning. Provided by xx network
+    cert: "../keys/cmix.rip.crt"
+  # IP Address of the permissioning server, provided by xx network
+  address: "0.0.0.0:20060"
+metrics:
+  # location of stored metrics data. Modification to set to permissioning
+  # server instead of saving will be made at a later date
+  log:  "metrics-server-5.log"
+# === END YAML
diff --git a/fileTransfer/udb.yaml b/fileTransfer/udb.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..6e4e019fae019d79ea79464fc1e04e2da2f34b89
--- /dev/null
+++ b/fileTransfer/udb.yaml
@@ -0,0 +1,10 @@
+# UDB Config for E2E Integration test
+log: "./results/udb.log"
+sessionPath: "./results/udbsession"
+sessionPass: "hello"
+certPath: "../keys/cmix.rip.crt"
+port: "30060"
+keyPath: "../keys/cmix.rip.key"
+permCertPath: "../keys/cmix.rip.crt"
+permAddress: "0.0.0.0:20060"
+devMode: true
\ No newline at end of file
diff --git a/fileTransfer/udbContact.bin b/fileTransfer/udbContact.bin
new file mode 100644
index 0000000000000000000000000000000000000000..10b08460a8ec87eaa6474298845d1deaa9482a5c
--- /dev/null
+++ b/fileTransfer/udbContact.bin
@@ -0,0 +1 @@
+<xxc(2)uu49Kr9myQUG0gG8VKwalxmem65pfPu4D2Lk1u8pi/UDrgZ7Ugdw/BAr6QTgt3dDqBSTfbLpgWOpOQvmR1bACzi52YiM90WbtsF4Iy5RZ64mRVbzN+erifSAaH8JAWSoK23KmMJH9F/HqBBwMjWJmpmkpxR0wo4bHDoBnHulqnBf/WxsHBeLk6HRbWqXWljV3LnO0ugSZDxa3cNu8mjfMNnxgoQr3JWY/bgiAHUGvUSHGxfMgmRvbxuFe3TRO9ZNVGhIC291GsvA+6kKnIjC2NuHu+UZ5Gmk86fw/1kbVK6lxFZsWN7dDgDrodUMc0Bnq2fQ+pmwP26x2Wj5tUHUKK+VHqmY+DGHg/RObjpgnr1qctl3/+gpL83Q3TyWwAjH/73tVww/M6lDnFYxAb62k0NYtVKZVFPDqrocFyAlDXaReg1it9VNJSPYiUM4TCimMmtYL6AgcXdMeD5E7UX1vsvmA5Ll9jZNOmoyPWLYt5W9Gvl79Xqgzqlf0t1DxR4ZmFtG/NwH3S1gCARcIlYgCb66j2gifEMH7aAQWyW8YLm2hEZmwLxISnIPjEL3gIOzNHtmGGXN23jUIwAAAgA790tNCG8KTm8tuEBiH/sjKg==xxc>
\ No newline at end of file
diff --git a/fileTransfer/udbProto.json b/fileTransfer/udbProto.json
new file mode 100644
index 0000000000000000000000000000000000000000..940cadfe9b1bb56946fd38a8c677207245add9e3
--- /dev/null
+++ b/fileTransfer/udbProto.json
@@ -0,0 +1 @@
+{"TransmissionID":"MhaUvxgJp0REgqp/FNes3ddICg1vKmIIUr+hABI9PXgD","TransmissionSalt":"aUdWmk0Dtu8YZ9N4fUCl80QAmCZ+eY96BDTAN9//9kI=","TransmissionRSA":{"N":744095517605335188486192402593567285818149781037814392671915097997165799160704009076529206117565015316892087089782583938102479243183663906078668582528984516276493241709164519970005583971481012694667579696383360567823504989650655410246207331522294633002054530951336779742521949130565223443549835766371552961634577790108359687869697030104209247319401651289712207512551543251668177804743453344668589351336794674335174328494860289416890175422687829958938924106165398205285038813958087994742173028066268997679203164659373760933342345626244738488110458781897756397149360694648367300111068967014678500898983090333707836644483738687322761365319344259236535454689996343110842585871572930571278463402471136616034421156328875234527272277980275379473515969296415235308154781609704415193243251254222667078013823356321213274280009612841451973719445431427792198300346805888677562529255025870805189890421627704987545754460307965087998094692006804411392783507966480991167024256590215549839475685306270811326657913050667578064503246626321836700579972796860953792588080819942544062977767967992236600692121009380090485897336412623665757415839315721348591326702012914394412545952829437103713850347584948953528257126120160975904938795178616150713777831589,"E":65537,"D":702540524327712978286466077105790056678969955922255232545891489063744574128612569535199928085456619203859372153966109927796010011603759273638246729040785738035622202988204724082335711421080162694477101925219543187134214539033120295707837878642675511638740378895522619590888057835298904908929813505588790799198357720349344223969868061274671644969751681902643121660346855086187525184614960443841773399647021439245580083376969805274103382587388114414289085660271241356003819929067314812253558149711712876228635033944612512096562618373058664318305855593748378360108198295661336701847393296488506669516858822963804260311691759542739227343536282374650987690037136673732778544975139599300829103845745104309687652878356279709829981494578600603924386279381105751731671579921080691074783353253958778076575957155595416051906390745893233111609000272562409467803170191115741547810223834894875859746256757717726366292758015729401293357270389003259918967902654657293283011346796119435418406947470723708887763547764820828540891209479365431423513260945988353481802346962185241475598840911175187647890159503133204568937310632267175230680232531126383217383814916312952923810037599497876585604599444464808553067231902765607317662766023981051800036686273,"Primes":[26431524235468771028852443590104055376636364921067197450041684258482439988835561020261125258562308094700689754910670346007026107201010688328852518422104352082149765577020457481232265846864075786524112374194109435619505107638299597352847727718122930754740563865787954820820245269180427904294490102595163613363903301612449832540143489589841021282833070290450230168473246516211511298499533872232550844877914066189330777819461606196011609435557144318950621971682270122109937087991576359208132704648705570764167630153594184009208403478937807655656357669009470285691425163502536227383519714393737089527860969984842067786101,28151820189273258942344071129053694480161436139819710188331124791415914831471008775403858034120373831438530464789505032183420165894885328994613924494905439083295166072103442061113078040409562754110291758200572034754286027961921301572668934253552291343681689448082037497152344335274886686268374921532985704635156460979764429070570728443686028271768081803840073189209047377853848238258439123998890243019814395279696459993201039305339332983028931741597790390904270131316198444444886804187393230626448411790408221074812330007942755799986304653723364502190308487509016389841021566288050103973334556368552133193493944408689],"Precomputed":{"Dp":275861918871181765777119358768805009042514512504538856765315959424477607341860685381671569904887601458340659358208317693345833000068530918670905329824669680092015802595205653556965833639852721943062588521732316919659756986505285939077892576089782636316013025988357127995499454722056436616528544641577916467658114626896496413590157420685280964301964082558981299651123802082620103577729849834552463156636605601011676641111307179731631610447855207198410446444461491425045347943699562532590182186851925025599137266354249078570861467256564390137921306217899471678791138011134699170397294423689155274685397614624288178673,"Dq":20251853375093108718674238635432892563921007495734318881533472838489627548476924176040866851955981272517828971313395551327029420652154717499734014133036480629583806088703921134828221879139253331786377393413250059516388743370809492102858684015410780592477790114275535038844384485571048533054744709867618963802570860877854857148803386838061270563205181572605460893517398533291080291147479606024866554731101049481309326072897084076010928068387048779916221764340337818499984617266561381665606317822215493877818423040314663633588189342602717841897580646356474723470712524458623415234392941421286158880506566848352312481377,"Qinv":1782249293930479585148549445278205034617546516712012566064256819261113180298258405511667713490475276726336613818509018461173201977639000556416891523605685233456051292911470649097170785609362912595510275601045219404262259673943809118153699614833210258102652927663612925023313592281316017977621743103307097046836057862305643762370317914029974246165942098634086048350280652529323604758408742898452312792547897909618079071765102987807077305433629474092046709583007609210604882495077254479038254736382806594706188378137791260031991135639188023310238199612626314094372849297487936335153146414944425343861682455207985266708,"CRTValues":null}},"ReceptionID":"uu49Kr9myQUG0gG8VKwalxmem65pfPu4D2Lk1u8pi/UD","ReceptionSalt":"M8xD+2gHGbqwKPwHFxs7+IjutQYuyBUkX2H257o5BdU=","ReceptionRSA":{"N":850387188153991188889446100749739241848829271482462061108409439312531431988795734813327514693008344548532502397064837726907012068926804456615485530991075075479632026273101933309061970039508777559060326644210787796911046233949155489473727669005294322689793791335544727360305644959942063168476363583581030898050353126928764965273874658694962134566452334451854924568242626514389265043292391299760010067072010852660228863317130740474026897759770820934809759670185849936472580423333979237659958984231856174610567212253308506984182380860548206401655999782332308043025450559980137052816211530713615583429240205892728859426128000967414395838939110894033790769681039750313146913688429864118346214901692066118374534016813397369786419474818398950057293996832967235881835337432259690040386208608584839830051784956186429114899224875646403109211367267143599678019107255952565689487312514740269900292167402469336239686704437448306260169629496444993371773823439258565787685710030837201534059640894021404396138451751712905956843779570695671045422782022593718074598748351627333401529057059641321731684199811309173775075814578877100319468485440759413419208114295109676086784903373038008038594143762297734223790838124082684159063469085109435783518725031,"E":65537,"D":564922212042972891506779603709986684962272914422874876092540423872769289935398323184885484645154711027502930510414145293747815500326018670791589385580030144211006599750553715770887147559547944650942359905229184557030627277529401445675232029624235148495438489607025204008203409747486116303247866721674280821649117660056115481226310038842219913218786872835656314004723732098768107056926939591645201310559136617365280437344369150983684163873340894930173985790635539446178597340291613196667556255191759193646646393943456253239701974694076434107586512390304739235381525566166520085882164295171867519962140940902875266686494581933486332733070115573951932064475826442525759304559384157338056633545437785084083189928354125207030609304055082642325819334882909664939190272656190536034921638933681026317152328190142016810293928283213410554345222497221023348512487512997673475708771529517243600219742073183452616019438402558324904073954972062329692828835961585134598049832023174978649417520451705037067815379933732830551892585260348438752787466224668527842810502446714266623795601014094978116799695556231619140778349831856996205593248896859777976571100881350185386707051672977669257878795867903988402998091514995549897864288962757393054768438537,"Primes":[29492971595987200184565588575492524180677323915637743461334512913337954089756992535478030745356298455923396638365524831317118482754099964262507886663300281433334915984551779676428190574578201359535331987821184071989738056990202803783701055959370528270478305175226218851763791555786561228871062383690072445559534386478623474224364245986294525688152961853703225064960942669169364540334937714823971415905428637789133243443480147178878208486722743719938775945712937478778805521783173263515825112840086735855547887576584469859603118910509756820711149404941056507505214523564857945496996487150674719706390219045171074335669,28833553966793039902622472693344948085468484145845354555175845509525852913656457209339298633228826325187527465622133573224700820135296269687184379379824668957542611483930310268532473436266625079565533379890421336412596736616538404624204368463036294562591617517553183068875112160214949467183247851787117317409259574446000362822944034217039330133706829603389396809485151845126091352794981119059018300220209826040784745553271153888708759107151118112035826198322288728622562498893857193711017030398086686353945134010647373894524028231986696810322055915091233789726845203397655178875279735934668248673328323303568542440299],"Precomputed":{"Dp":22035237410890233868459863048338975639819722683815281575052938413439628332162765147926847055043275613688284730725665248110879449899362264829236899315936009893392193130347405158251161198776593825925012295095354961090338647794761436856568384348544759704654930999358405268422632307384972924785564942206454328040993656009976019887941091363945732186709946704404815833892496723925079492767447780739975286934240402358132188919389129905454498658046281432577050584888444445861180895892596225766397251174372446422126467723384631073675430939059008540612500276377295754916960329986927526454681065555835446395523094977597412985733,"Dq":16841607730729779627880254737037774275779080108991259477426970506807599516834294855936468737964805708655851677434354230175954764404521738920387232291067463077265226781891943132572792211121754246391635530802528781571848010706640373056663308127699305062117691053480260736325118535987736173516864180026715457076559142313393867416303731172135824915975669274116088772252187506773681691029370847575861277330815144740242001614038173411351927897550159472187183222786780178092858880596561535853910492143960790906343282877269046075993405262988094570992390564561887627916194430414303984731460217763692273970657921724531238912593,"Qinv":13386450555509069245317666985331292478728039484440837065189457918756926085772889573452664818969207436096145088071795396654392004940595219762405312750934346518716740936238520072004578261328949676162223098531690599793600587771458065485838287464893640290027597304483114889945915722313306140200593797334834667938307085618314432134506785949791967130287157125647210497214516165218726084383497011560605024384546734297139331536623591040849235382041138776467271730696249828686335872619825082175542573979118200539219034800857165800266206532665733326893998872307865475986277696080650713536968589910998008126592314634991854532329,"CRTValues":null}},"Precanned":false,"RegistrationTimestamp":1640900456461843040,"RegCode":"","TransmissionRegValidationSig":"Zln6nmiiuvO2vZGe4jMrHyEWyd3j89GYUjnugb88V+1Q/mdn9BFV/qmiBpnoNyqAn5XOpHmkYOw0DkBX2Tc3w5NQWHiLgcrAMHlZUkinFZ2/jWeLNGuWTFmauu2q+z1C4R/reAjlRiyo2OuKBZxFoE3mbw85mWYoiyyMbEfyNCHK2ScCmdapHP5kSzWeUi2WjaNi+LUBqmWMLX9nWZs24YD6VapNnStcj7w14XTWtUJ/oXtgwI/uMDa3ZvLwCO6JwsRR3VGq98Dbky4eJhXwCnFTW/Jy/ZR5n3xPccU3Eb+/0eHyYwZGORe0Tr7qGq0YI9wFNfjv3rpEmqqScq9sHg==","ReceptionRegValidationSig":"ABBNeRb2gEVIi/LU3c4rwTxauQpJ0PV0Dp78JT3QGXyoThMjDIgpCZHZRr8clexXkDSNZ0GZCKLQtv48e2TJbO15oodzKZq9fS6HPNc/D2l17DBbNCFTy+kM7MKIqHU4dN2h/fhjYgQ0k3WaR04NGSFtX4FSyeDqh8LbQAlrvKn13Z1fCId6kt9Sp3GTWtRMm2RD3hRNYLzrFHqAiH/rDcMy/d4Ar9wTwKlIcFyX3+1ENjAxTcsnjno7+aa5tT8XI0HdlcvrMDkx+m2kbHquqGJM9hCg/XxhrLFqsjY0F0bVp7J2UeHoLw6s6OgEl9Eg5I0k51K+SSMa1Mse1zggkg==","CmixDhPrivateKey":{"Value":23134336198863750741748703660400387868824411194091704843877765878704684400020511760943730932032181255742725205976185967794840498055119688330124475657025083380879051516507316264855378759159543513707252259922784173347685874456358247463151784175729466898154272096842618045994973870223785531415217217965394756900460790339174016946558150507580144972427210564566872862707000226886100833409714665643615263325876515987666291734559374206190550344559412403144311029314745799204676946278572048079685978558133653417488694953610922501137922416052437955367323383147526279158425720871674296239641638893436600760625905793653337291326,"Fingerprint":1019130854791890857},"CmixDhPublicKey":{"Value":40661473203398365346021139834751279657661515042218153062933068745659041507124553367048607412838109996778705972152516147090017024944177990861357148498071195775787956973205443551118903422765769934453067811496751124796541305224646917714432655244199681118218184307551604728113020909007420531039281826284338933975869040846161322930224431922676228280139352116332784218225442881629816602619617561152949947075502732590198688997850331029595028876889786739167152345971604837504050490241011792155573239919262293917635508122225378077992880296300468988471302542680432268331360185693269950450132051419581315000110594207999508607050616011689445128093546507459669376840509120845943383094511932011628510767784841945662325523012877900497552502527594150800481434891933803449151469858078545202819003974303280259033864766743161709598642156724209578764288690522108924880552091308234645729967740909969025514152089886697815454891469560150611996697804062619010044123824507982370347027313396405015494843434897303661589566168416699605512854149233601685403032629550047093556970695648101495563847168540708660964238960062140890332386702253196064038177801032833477139196626595095716721717130200091320630907308046939829403546847081437153253274137106108481349472925,"Fingerprint":1019130854791890857},"E2eDhPrivateKey":{"Value":15868054927490624034769207675284372396111367138702747294809526549406434197505594302868553416930040949078939726209524016245099170354423124146109791439676150153811847753697222698706991672115541614080484720172498069738416608757527621565114235134343850506971256805006649306801742780960331446133932778313421336826492419515327757859355790985926801091202339643161980910811435573134233363961673385626782920679443568800015505367010870530111147205683029126252427303195582360585233280495455148410685790997024364716148825012857917467229638326785383545555885827743352446807694303549475074691875396849487056555719913457474008032697,"Fingerprint":16801541511233098363},"E2eDhPublicKey":{"Value":147139791407699234997192910595075527435460061524772944343748681206265869846642332345707990677406040145177534321538182440717890359993428686109525202118205223891431899168261959123977071363023161983520620405235747590084693661804115691677488049367521195795602971625363864492999496527190606383593289607097185210792999982667279095678826515909506042508081456493456997354040504436530126940434391612132572210469911068602346111602950742796752446044197938946885845119733654743975968520762482827365434031479613917149883640347855512864879556669871625702373555191119636414088476652878563700716501799409607427689929171266147047756204689439519092680494886131474665331718064247744119146288064620933248987203778241513546175445638858254194548267620960510274776658377038971793051901595492445943697519511203993381901627766295075444537422179881027670118336783809271801530698319821686375879565780071214330909899155111647279589474822393047955732167728825532445888096165721311471522851,"Fingerprint":16801541511233098363}}
\ No newline at end of file
diff --git a/fileTransfer/whitelist.txt b/fileTransfer/whitelist.txt
new file mode 100644
index 0000000000000000000000000000000000000000..446eca0cad0a5393cf757e761a7c33576aab024d
--- /dev/null
+++ b/fileTransfer/whitelist.txt
@@ -0,0 +1 @@
+["0.0.0.0", "127.0.0.1"]
\ No newline at end of file