This is an automated email from the ASF dual-hosted git repository.

cmorris pushed a commit to branch policy
in repository https://gitbox.apache.org/repos/asf/incubator-milagro-dta.git

commit 28c3f2b6a62d6c1023aaa24d98b7d2c877da52db
Author: Christopher Morris <[email protected]>
AuthorDate: Wed Aug 28 14:34:29 2019 +0100

    Add policy to protobuffers and order
---
 cmd/servicetester/e2e_test.sh       |  11 +-
 go.mod                              |   5 +-
 go.sum                              |  15 ++
 libs/documents/docs.pb.go           | 294 +++++++++++++++++++-----------------
 libs/documents/docs.proto           |  61 ++++----
 libs/documents/docs.validator.pb.go |  27 +++-
 libs/documents/policy_test.go       |   5 +-
 pkg/api/proto.go                    |  49 +++---
 pkg/common/common.go                |  15 +-
 9 files changed, 274 insertions(+), 208 deletions(-)

diff --git a/cmd/servicetester/e2e_test.sh b/cmd/servicetester/e2e_test.sh
index d3dbbce..c84c0cc 100755
--- a/cmd/servicetester/e2e_test.sh
+++ b/cmd/servicetester/e2e_test.sh
@@ -2,7 +2,9 @@
 #End to End Test of Services using curl/bash
 
 apiVersion="v1"
-simplePolicy='{"policy":{ "example":"single fiduciary","walletRef": 
"CD-2367-227","beneficiarydocid":"","nodeId": "123","coin": 0,"sharingGroups": 
[{"groupref": "Back Office Team","threshold":1,"ids": [{"id": "alice","idType": 
"oidc","idRef": "Alice"}]}],"participantCount": 7}}'
+simplePolicy='{ "example":"single fiduciary","walletRef": 
"CD-2367-227","beneficiarydocid":"","nodeId": "123","coin": 0,"sharingGroups": 
[{"groupref": "Back Office Team","threshold":1,"ids": [{"id": "alice","idType": 
"oidc","idRef": "Alice"}]}],"participantCount": 7}'
+
+#simplePolicy='policy:{"example":"single fiduciary"}'
 
 status () {
   #Determine if an extension is running
@@ -23,6 +25,9 @@ status () {
 execute_bitcoin () {
   #Run 2 Tests against the Bitcoin Extension
   echo "Bitcoin Plugin Tests [2 Tests]"
+
+#  echo "http://localhost:5556/$apiVersion/order"; -H "accept: */*" -H 
"Content-Type: application/json" -d                
"{\"policy\":$simplePolicy,\"beneficiaryIDDocumentCID\":\"\",\"extension\":{\"coin\":\"0\"}}"
+
   output1=$(curl -s -X POST "http://localhost:5556/$apiVersion/order"; -H 
"accept: */*" -H "Content-Type: application/json" -d 
"{\"policy\":$simplePolicy,\"beneficiaryIDDocumentCID\":\"\",\"extension\":{\"coin\":\"0\"}}")
   echo $output1
   op1=$(echo $output1 | jq .orderReference)
@@ -109,10 +114,8 @@ execute_safeguardsecret () {
 execute_milagro () {
   echo "Milagro Tests [1 Test]"
   output1=$(curl -s -X POST "http://localhost:5556/$apiVersion/order"; -H 
"accept: */*" -H "Content-Type: application/json" -d 
"{\"beneficiaryIDDocumentCID\":$identity}")
-  echo $output1
   op1=$(echo $output1 | jq .orderReference)
 
-
   commitment1=$(echo $output1 | jq .commitment)
   output2=$(curl -s -X POST "http://localhost:5556/$apiVersion/order/secret"; 
-H "accept: */*" -H "Content-Type: application/json" -d 
"{\"orderReference\":$op1,\"beneficiaryIDDocumentCID\":$identity}")
   commitment2=$(echo $output2 | jq .commitment)
@@ -154,7 +157,7 @@ execute_orderlist () {
   #A simple smoke test to ensure some sort of order is returned
   hasSecret=`echo $outputOrder | grep "Secret"`
 
-  if [ -z $hasSecret ]; then
+  if [ -z "$hasSecret" ]; then
       echo "Failed Order has error"
       exit 1
   else
diff --git a/go.mod b/go.mod
index 7adef26..2777869 100644
--- a/go.mod
+++ b/go.mod
@@ -1,10 +1,11 @@
 module github.com/apache/incubator-milagro-dta
 
 require (
-       github.com/VividCortex/gohistogram v1.0.0 // indirect
+       code.qredo.net/libcustody v0.1.17
        github.com/btcsuite/btcd v0.0.0-20190427004231-96897255fd17
        github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d
        github.com/coreos/go-oidc v2.0.0+incompatible
+       github.com/ethereum/go-ethereum v1.8.27
        github.com/go-kit/kit v0.8.0
        github.com/go-playground/locales v0.12.1 // indirect
        github.com/go-playground/universal-translator v0.16.0 // indirect
@@ -27,12 +28,10 @@ require (
        github.com/multiformats/go-multihash v0.0.5
        github.com/mwitkow/go-proto-validators 
v0.0.0-20190709101305-c00cd28f239a
        github.com/pkg/errors v0.8.1
-       github.com/pquerna/cachecontrol v0.0.0-20180517163645-1555304b9b35 // 
indirect
        github.com/prometheus/client_golang v0.9.3
        github.com/stretchr/testify v1.3.0
        github.com/tyler-smith/go-bip39 v1.0.0
        go.etcd.io/bbolt v1.3.3
-       google.golang.org/appengine v1.4.0 // indirect
        gopkg.in/go-playground/assert.v1 v1.2.1 // indirect
        gopkg.in/go-playground/validator.v9 v9.29.1
        gopkg.in/square/go-jose.v2 v2.3.1 // indirect
diff --git a/go.sum b/go.sum
index 521c6f5..a7623ae 100644
--- a/go.sum
+++ b/go.sum
@@ -1,6 +1,9 @@
 bazil.org/fuse v0.0.0-20180421153158-65cc252bf669 
h1:FNCRpXiquG1aoyqcIWVFmpTSKVcx2bQD38uZZeGtdlw=
 bazil.org/fuse v0.0.0-20180421153158-65cc252bf669/go.mod 
h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8=
 cloud.google.com/go v0.26.0/go.mod 
h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
+cloud.google.com/go v0.34.0/go.mod 
h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
+code.qredo.net/libcustody v0.1.17 
h1:HobIrYBS/Viv7P43C+ubD6CGdS5Ax1itLV4+fq7fJgU=
+code.qredo.net/libcustody v0.1.17/go.mod 
h1:jfdOca8JV9wFPaXNJ3cOr+1p0qRtoNLtgJ/uOuAi430=
 github.com/AndreasBriese/bbloom v0.0.0-20180913140656-343706a395b7/go.mod 
h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8=
 github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9 
h1:HD8gA2tkByhMAwYaFAX9w2l7vxvBQ5NMoxDrkhqhtn4=
 github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod 
h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8=
@@ -29,10 +32,12 @@ github.com/blang/semver v3.5.1+incompatible/go.mod 
h1:kRBLl5iJ+tD4TcOOxsy/0fnweb
 github.com/bren2010/proquint v0.0.0-20160323162903-38337c27106d 
h1:QgeLLoPD3kRVmeu/1al9iIpIANMi9O1zXFm8BnYGCJg=
 github.com/bren2010/proquint v0.0.0-20160323162903-38337c27106d/go.mod 
h1:Jbj8eKecMNwf0KFI75skSUZqMB4UCRcndUScVBTWyUI=
 github.com/btcsuite/btcd v0.0.0-20190213025234-306aecffea32/go.mod 
h1:DrZx5ec/dmnfpw9KyYoQyYo7d0KEvTkk/5M/vbZjAr8=
+github.com/btcsuite/btcd v0.0.0-20190410025418-9bfb2ca0346b/go.mod 
h1:DrZx5ec/dmnfpw9KyYoQyYo7d0KEvTkk/5M/vbZjAr8=
 github.com/btcsuite/btcd v0.0.0-20190427004231-96897255fd17 
h1:m0N5Vg5nP3zEz8TREZpwX3gt4Biw3/8fbIf4A3hO96g=
 github.com/btcsuite/btcd v0.0.0-20190427004231-96897255fd17/go.mod 
h1:3J08xEfcugPacsc34/LKRU2yO7YmuT8yt28J8k2+rrI=
 github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod 
h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA=
 github.com/btcsuite/btcutil v0.0.0-20190207003914-4c204d697803/go.mod 
h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg=
+github.com/btcsuite/btcutil v0.0.0-20190316010144-3ac1210f4b38/go.mod 
h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg=
 github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d 
h1:yJzD/yFppdVCf6ApMkVy8cUxV0XrxdP9rVf6D87/Mng=
 github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod 
h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg=
 github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod 
h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg=
@@ -75,6 +80,8 @@ github.com/dgryski/go-sip13 
v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8
 github.com/dustin/go-humanize v1.0.0 
h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo=
 github.com/dustin/go-humanize v1.0.0/go.mod 
h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
 github.com/elgris/jsondiff v0.0.0-20160530203242-765b5c24c302/go.mod 
h1:qBlWZqWeVx9BjvqBsnC/8RUlAYpIFmPvgROcw0n1scE=
+github.com/ethereum/go-ethereum v1.8.27 
h1:d+gkiLaBDk5fn3Pe/xNVaMrB/ozI+AUB2IlVBp29IrY=
+github.com/ethereum/go-ethereum v1.8.27/go.mod 
h1:PwpWDrCLZrV+tfrhqqF6kPknbISMHaJv9Ln3kPCZLwY=
 github.com/facebookgo/atomicfile v0.0.0-20151019160806-2de1f203e7d5 
h1:BBso6MBKW8ncyZLv37o+KNyy0HrrHgfnOaGQC2qvN+A=
 github.com/facebookgo/atomicfile v0.0.0-20151019160806-2de1f203e7d5/go.mod 
h1:JpoxHjuQauoxiFMl1ie8Xc/7TfLuMZ5eOCONd1sUBHg=
 github.com/fatih/color v1.6.0/go.mod 
h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
@@ -124,6 +131,7 @@ github.com/golang/protobuf v1.2.0/go.mod 
h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5y
 github.com/golang/protobuf v1.3.0/go.mod 
h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0=
 github.com/golang/protobuf v1.3.1 
h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg=
 github.com/golang/protobuf v1.3.1/go.mod 
h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.2 
h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs=
 github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db 
h1:woRePGFeVFfLKN/pOkfl+p/TAqKOfFu+7KPlMVpok/w=
 github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod 
h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
 github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2/go.mod 
h1:k9Qvh+8juN+UKMCS/3jFtGICgW8O96FVaZsaxdzDkR4=
@@ -143,6 +151,7 @@ github.com/golangci/misspell 
v0.0.0-20180809174111-950f5d19e770/go.mod h1:dEbvlS
 github.com/golangci/prealloc v0.0.0-20180630174525-215b22d4de21/go.mod 
h1:tf5+bzsHdTM0bsB7+8mt0GUMvjCgwLpTapNZHU8AajI=
 github.com/golangci/revgrep v0.0.0-20180526074752-d9c87f5ffaf0/go.mod 
h1:qOQCunEYvmd/TLamH+7LlVccLvUH5kZNhbCgTHoBbp4=
 github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4/go.mod 
h1:Izgrg8RkN3rCIMLGE9CyYmU9pY2Jer6DgANEnZ/L/cQ=
+github.com/gomodule/redigo v2.0.0+incompatible/go.mod 
h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4=
 github.com/google/go-cmp v0.2.0 h1:+dTQ8DZQJz0Mb/HjFlkptS1FeQ4cWSnN941F8aEG4SQ=
 github.com/google/go-cmp v0.2.0/go.mod 
h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
 github.com/google/uuid v1.0.0/go.mod 
h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
@@ -150,6 +159,7 @@ github.com/google/uuid v1.1.1 
h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY=
 github.com/google/uuid v1.1.1/go.mod 
h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 
h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=
 github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod 
h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
+github.com/gorilla/mux v1.7.0/go.mod 
h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
 github.com/gorilla/mux v1.7.3 h1:gnP5JzjVOuiZD07fKKToCAOjS0yOpj/qPETTXCCS6hw=
 github.com/gorilla/mux v1.7.3/go.mod 
h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
 github.com/gorilla/websocket v1.4.0 
h1:WDFjx/TMzVgy9VdMMQi2K2Emtwi2QcUQsztZ/zLaH/Q=
@@ -588,6 +598,7 @@ github.com/prometheus/procfs 
v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7z
 github.com/prometheus/procfs v0.0.0-20190519111021-9935e8e0588d 
h1:Z5QMcUKnQw7ouB1wDuyZM6TL/rm+brJcNk6Ai8ut3zM=
 github.com/prometheus/procfs v0.0.0-20190519111021-9935e8e0588d/go.mod 
h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
 github.com/prometheus/tsdb v0.7.1/go.mod 
h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
+github.com/rafaeljusto/redigomock v0.0.0-20190202135759-257e089e14a1/go.mod 
h1:JaY6n2sDr+z2WTsXkOmNRUfDy6FN0L6Nk7x06ndm4tY=
 github.com/rogpeppe/go-internal v1.1.0/go.mod 
h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
 github.com/rs/cors v1.6.0/go.mod 
h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU=
 github.com/russross/blackfriday v1.5.2/go.mod 
h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
@@ -712,6 +723,7 @@ golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod 
h1:mL1N/T3taQHkDXs73r
 golang.org/x/net v0.0.0-20181102091132-c10e9556a7bc/go.mod 
h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod 
h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod 
h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod 
h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod 
h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20190227160552-c95aed5357e7/go.mod 
h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20190310074541-c10a0554eabf/go.mod 
h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -723,6 +735,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859 
h1:R/3boaszxrf1GEUWTVDzSKVwL
 golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod 
h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be 
h1:vEDujvNQGv4jgYKudGeI/+DAX4Jffq6hpD55MmoEvKs=
 golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod 
h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
+golang.org/x/oauth2 v0.0.0-20190319182350-c85d3e98c914 
h1:jIOcLT9BZzyJ9ce+IwwZ+aF9yeCqzrR+NrD68a/SHKw=
+golang.org/x/oauth2 v0.0.0-20190319182350-c85d3e98c914/go.mod 
h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
 golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod 
h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod 
h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod 
h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -789,6 +803,7 @@ gopkg.in/go-playground/assert.v1 v1.2.1 
h1:xoYuJVE7KT85PYWrN730RguIQO0ePzVRfFMXa
 gopkg.in/go-playground/assert.v1 v1.2.1/go.mod 
h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE=
 gopkg.in/go-playground/validator.v9 v9.29.1 
h1:SvGtYmN60a5CVKTOzMSyfzWDeZRxRuGvRQyEAKbw1xc=
 gopkg.in/go-playground/validator.v9 v9.29.1/go.mod 
h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ=
+gopkg.in/square/go-jose.v2 v2.3.0/go.mod 
h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI=
 gopkg.in/square/go-jose.v2 v2.3.1 
h1:SK5KegNXmKmqE342YYN2qPHEnUYeoMiXXl1poUlI+o4=
 gopkg.in/square/go-jose.v2 v2.3.1/go.mod 
h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI=
 gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 
h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
diff --git a/libs/documents/docs.pb.go b/libs/documents/docs.pb.go
index 51e50dd..a93e74c 100644
--- a/libs/documents/docs.pb.go
+++ b/libs/documents/docs.pb.go
@@ -7,6 +7,7 @@ import (
        fmt "fmt"
        _ "github.com/gogo/protobuf/gogoproto"
        proto "github.com/golang/protobuf/proto"
+       timestamp "github.com/golang/protobuf/ptypes/timestamp"
        _ "github.com/mwitkow/go-proto-validators"
        math "math"
 )
@@ -709,20 +710,21 @@ func (m *PolicyWrapper) GetPolicy() *Policy {
 }
 
 type Policy struct {
-       Example              string          
`protobuf:"bytes,2,opt,name=example,proto3" json:"example,omitempty"`
-       WalletRef            string          
`protobuf:"bytes,3,opt,name=walletRef,proto3" json:"walletRef,omitempty"`
-       NodeId               string          
`protobuf:"bytes,4,opt,name=nodeId,proto3" json:"nodeId,omitempty"`
-       Coin                 int64           
`protobuf:"varint,5,opt,name=coin,proto3" json:"coin,omitempty"`
-       SharingGroups        []*SharingGroup 
`protobuf:"bytes,6,rep,name=sharingGroups,proto3" 
json:"sharingGroups,omitempty"`
-       ParticipantCount     int64           
`protobuf:"varint,7,opt,name=participantCount,proto3" 
json:"participantCount,omitempty"`
-       Threshold            int64           
`protobuf:"varint,8,opt,name=threshold,proto3" json:"threshold,omitempty"`
-       Signers              []int64         
`protobuf:"varint,9,rep,packed,name=signers,proto3" json:"signers,omitempty"`
-       PublicAddress        string          
`protobuf:"bytes,10,opt,name=publicAddress,proto3" 
json:"publicAddress,omitempty"`
-       Beneficiarydocid     string          
`protobuf:"bytes,11,opt,name=beneficiarydocid,proto3" 
json:"beneficiarydocid,omitempty"`
-       DateTime             int64           
`protobuf:"varint,12,opt,name=dateTime,proto3" json:"dateTime,omitempty"`
-       XXX_NoUnkeyedLiteral struct{}        `json:"-"`
-       XXX_unrecognized     []byte          `json:"-"`
-       XXX_sizecache        int32           `json:"-"`
+       Example              string               
`protobuf:"bytes,2,opt,name=Example,json=example,proto3" 
json:"Example,omitempty"`
+       WalletRef            string               
`protobuf:"bytes,3,opt,name=WalletRef,json=walletRef,proto3" 
json:"WalletRef,omitempty"`
+       NodeId               string               
`protobuf:"bytes,4,opt,name=NodeId,json=nodeId,proto3" json:"NodeId,omitempty"`
+       CoinType             int64                
`protobuf:"varint,5,opt,name=CoinType,json=coin,proto3" 
json:"CoinType,omitempty"`
+       SharingGroups        []*SharingGroup      
`protobuf:"bytes,6,rep,name=SharingGroups,json=sharingGroups,proto3" 
json:"SharingGroups,omitempty"`
+       ParticipantCount     int64                
`protobuf:"varint,7,opt,name=ParticipantCount,json=participantCount,proto3" 
json:"ParticipantCount,omitempty"`
+       Threshold            int64                
`protobuf:"varint,8,opt,name=Threshold,json=threshold,proto3" 
json:"Threshold,omitempty"`
+       Signers              []int64              
`protobuf:"varint,9,rep,packed,name=Signers,json=signers,proto3" 
json:"Signers,omitempty"`
+       PublicAddress        string               
`protobuf:"bytes,10,opt,name=PublicAddress,json=publicaddress,proto3" 
json:"PublicAddress,omitempty"`
+       BeneficiaryDocCID    string               
`protobuf:"bytes,11,opt,name=BeneficiaryDocCID,json=beneficiarydocid,proto3" 
json:"BeneficiaryDocCID,omitempty"`
+       UpdatedAt            *timestamp.Timestamp 
`protobuf:"bytes,12,opt,name=UpdatedAt,json=updatedAt,proto3" 
json:"UpdatedAt,omitempty"`
+       CreatedAt            *timestamp.Timestamp 
`protobuf:"bytes,13,opt,name=CreatedAt,json=createdAt,proto3" 
json:"CreatedAt,omitempty"`
+       XXX_NoUnkeyedLiteral struct{}             `json:"-"`
+       XXX_unrecognized     []byte               `json:"-"`
+       XXX_sizecache        int32                `json:"-"`
 }
 
 func (m *Policy) Reset()         { *m = Policy{} }
@@ -771,9 +773,9 @@ func (m *Policy) GetNodeId() string {
        return ""
 }
 
-func (m *Policy) GetCoin() int64 {
+func (m *Policy) GetCoinType() int64 {
        if m != nil {
-               return m.Coin
+               return m.CoinType
        }
        return 0
 }
@@ -813,31 +815,38 @@ func (m *Policy) GetPublicAddress() string {
        return ""
 }
 
-func (m *Policy) GetBeneficiarydocid() string {
+func (m *Policy) GetBeneficiaryDocCID() string {
        if m != nil {
-               return m.Beneficiarydocid
+               return m.BeneficiaryDocCID
        }
        return ""
 }
 
-func (m *Policy) GetDateTime() int64 {
+func (m *Policy) GetUpdatedAt() *timestamp.Timestamp {
        if m != nil {
-               return m.DateTime
+               return m.UpdatedAt
        }
-       return 0
+       return nil
+}
+
+func (m *Policy) GetCreatedAt() *timestamp.Timestamp {
+       if m != nil {
+               return m.CreatedAt
+       }
+       return nil
 }
 
 type SharingGroup struct {
-       Groupid              int64       
`protobuf:"varint,1,opt,name=groupid,proto3" json:"groupid,omitempty"`
-       Groupref             string      
`protobuf:"bytes,2,opt,name=groupref,proto3" json:"groupref,omitempty"`
-       Ids                  []*Identity 
`protobuf:"bytes,3,rep,name=ids,proto3" json:"ids,omitempty"`
-       Threshold            int64       
`protobuf:"varint,4,opt,name=threshold,proto3" json:"threshold,omitempty"`
-       Signature            []byte      
`protobuf:"bytes,5,opt,name=signature,proto3" json:"signature,omitempty"`
-       TimeStamp            int64       
`protobuf:"varint,6,opt,name=timeStamp,proto3" json:"timeStamp,omitempty"`
-       Status               string      
`protobuf:"bytes,7,opt,name=status,proto3" json:"status,omitempty"`
-       XXX_NoUnkeyedLiteral struct{}    `json:"-"`
-       XXX_unrecognized     []byte      `json:"-"`
-       XXX_sizecache        int32       `json:"-"`
+       GroupID              int64                
`protobuf:"varint,1,opt,name=GroupID,json=groupId,proto3" 
json:"GroupID,omitempty"`
+       GroupRef             string               
`protobuf:"bytes,2,opt,name=GroupRef,json=groupref,proto3" 
json:"GroupRef,omitempty"`
+       IDs                  []*Identity          
`protobuf:"bytes,3,rep,name=IDs,json=ids,proto3" json:"IDs,omitempty"`
+       Threshold            int64                
`protobuf:"varint,4,opt,name=Threshold,json=threshold,proto3" 
json:"Threshold,omitempty"`
+       Signature            []byte               
`protobuf:"bytes,5,opt,name=Signature,json=signature,proto3" 
json:"Signature,omitempty"`
+       TimeStamp            *timestamp.Timestamp 
`protobuf:"bytes,6,opt,name=TimeStamp,json=timeStamp,proto3" 
json:"TimeStamp,omitempty"`
+       Status               string               
`protobuf:"bytes,7,opt,name=Status,json=status,proto3" json:"Status,omitempty"`
+       XXX_NoUnkeyedLiteral struct{}             `json:"-"`
+       XXX_unrecognized     []byte               `json:"-"`
+       XXX_sizecache        int32                `json:"-"`
 }
 
 func (m *SharingGroup) Reset()         { *m = SharingGroup{} }
@@ -865,23 +874,23 @@ func (m *SharingGroup) XXX_DiscardUnknown() {
 
 var xxx_messageInfo_SharingGroup proto.InternalMessageInfo
 
-func (m *SharingGroup) GetGroupid() int64 {
+func (m *SharingGroup) GetGroupID() int64 {
        if m != nil {
-               return m.Groupid
+               return m.GroupID
        }
        return 0
 }
 
-func (m *SharingGroup) GetGroupref() string {
+func (m *SharingGroup) GetGroupRef() string {
        if m != nil {
-               return m.Groupref
+               return m.GroupRef
        }
        return ""
 }
 
-func (m *SharingGroup) GetIds() []*Identity {
+func (m *SharingGroup) GetIDs() []*Identity {
        if m != nil {
-               return m.Ids
+               return m.IDs
        }
        return nil
 }
@@ -900,11 +909,11 @@ func (m *SharingGroup) GetSignature() []byte {
        return nil
 }
 
-func (m *SharingGroup) GetTimeStamp() int64 {
+func (m *SharingGroup) GetTimeStamp() *timestamp.Timestamp {
        if m != nil {
                return m.TimeStamp
        }
-       return 0
+       return nil
 }
 
 func (m *SharingGroup) GetStatus() string {
@@ -916,15 +925,15 @@ func (m *SharingGroup) GetStatus() string {
 
 // Identity of a sharing group
 type Identity struct {
-       Id                   string   `protobuf:"bytes,1,opt,name=id,proto3" 
json:"id,omitempty"`
-       IdRef                string   `protobuf:"bytes,2,opt,name=idRef,proto3" 
json:"idRef,omitempty"`
-       IdType               string   
`protobuf:"bytes,3,opt,name=idType,proto3" json:"idType,omitempty"`
-       Share                []byte   `protobuf:"bytes,4,opt,name=share,proto3" 
json:"share,omitempty"`
-       Status               string   
`protobuf:"bytes,5,opt,name=status,proto3" json:"status,omitempty"`
-       TimeStamp            int64    
`protobuf:"varint,6,opt,name=timeStamp,proto3" json:"timeStamp,omitempty"`
-       XXX_NoUnkeyedLiteral struct{} `json:"-"`
-       XXX_unrecognized     []byte   `json:"-"`
-       XXX_sizecache        int32    `json:"-"`
+       ID                   string               
`protobuf:"bytes,1,opt,name=ID,json=id,proto3" json:"ID,omitempty"`
+       IDRef                string               
`protobuf:"bytes,2,opt,name=IDRef,json=idRef,proto3" json:"IDRef,omitempty"`
+       IDType               string               
`protobuf:"bytes,3,opt,name=IDType,json=idType,proto3" json:"IDType,omitempty"`
+       Share                []byte               
`protobuf:"bytes,4,opt,name=Share,json=share,proto3" json:"Share,omitempty"`
+       Status               string               
`protobuf:"bytes,5,opt,name=Status,json=status,proto3" json:"Status,omitempty"`
+       TimeStamp            *timestamp.Timestamp 
`protobuf:"bytes,6,opt,name=TimeStamp,json=timeStamp,proto3" 
json:"TimeStamp,omitempty"`
+       XXX_NoUnkeyedLiteral struct{}             `json:"-"`
+       XXX_unrecognized     []byte               `json:"-"`
+       XXX_sizecache        int32                `json:"-"`
 }
 
 func (m *Identity) Reset()         { *m = Identity{} }
@@ -952,23 +961,23 @@ func (m *Identity) XXX_DiscardUnknown() {
 
 var xxx_messageInfo_Identity proto.InternalMessageInfo
 
-func (m *Identity) GetId() string {
+func (m *Identity) GetID() string {
        if m != nil {
-               return m.Id
+               return m.ID
        }
        return ""
 }
 
-func (m *Identity) GetIdRef() string {
+func (m *Identity) GetIDRef() string {
        if m != nil {
-               return m.IdRef
+               return m.IDRef
        }
        return ""
 }
 
-func (m *Identity) GetIdType() string {
+func (m *Identity) GetIDType() string {
        if m != nil {
-               return m.IdType
+               return m.IDType
        }
        return ""
 }
@@ -987,11 +996,11 @@ func (m *Identity) GetStatus() string {
        return ""
 }
 
-func (m *Identity) GetTimeStamp() int64 {
+func (m *Identity) GetTimeStamp() *timestamp.Timestamp {
        if m != nil {
                return m.TimeStamp
        }
-       return 0
+       return nil
 }
 
 type PlainTestMessage1 struct {
@@ -1122,9 +1131,9 @@ func init() {
        proto.RegisterType((*OrderPart3)(nil), "documents.OrderPart3")
        proto.RegisterType((*OrderPart4)(nil), "documents.OrderPart4")
        proto.RegisterType((*PolicyWrapper)(nil), "documents.PolicyWrapper")
-       proto.RegisterType((*Policy)(nil), "documents.policy")
-       proto.RegisterType((*SharingGroup)(nil), "documents.sharingGroup")
-       proto.RegisterType((*Identity)(nil), "documents.identity")
+       proto.RegisterType((*Policy)(nil), "documents.Policy")
+       proto.RegisterType((*SharingGroup)(nil), "documents.SharingGroup")
+       proto.RegisterType((*Identity)(nil), "documents.Identity")
        proto.RegisterType((*PlainTestMessage1)(nil), 
"documents.PlainTestMessage1")
        proto.RegisterType((*EncryptTestMessage1)(nil), 
"documents.EncryptTestMessage1")
        proto.RegisterType((*SimpleString)(nil), "documents.SimpleString")
@@ -1133,85 +1142,90 @@ func init() {
 func init() { proto.RegisterFile("docs.proto", 
fileDescriptor_2a25dace11219bce) }
 
 var fileDescriptor_2a25dace11219bce = []byte{
-       // 1267 bytes of a gzipped FileDescriptorProto
-       0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x57, 
0x4b, 0x6f, 0x1c, 0xc5,
-       0x13, 0xd7, 0x78, 0xec, 0x8d, 0xa7, 0xbc, 0xf6, 0xdf, 0xe9, 0x38, 0xc9, 
0x28, 0xff, 0x08, 0x5b,
-       0x23, 0x83, 0x0c, 0xc2, 0x36, 0x59, 0x3b, 0x11, 0x58, 0x20, 0x14, 0xef, 
0x86, 0xb0, 0xe2, 0xb5,
-       0xf4, 0x5a, 0x06, 0x29, 0x4a, 0xa4, 0xf1, 0x74, 0x79, 0xb7, 0x95, 0xdd, 
0xe9, 0xd1, 0x4c, 0x6f,
-       0x92, 0x15, 0x70, 0xe6, 0xc0, 0x81, 0x03, 0x5c, 0xb9, 0x20, 0xe5, 0xca, 
0x11, 0xbe, 0x00, 0x5f,
-       0x03, 0x59, 0xf8, 0x00, 0xe2, 0x13, 0xc0, 0x0d, 0xd4, 0x3d, 0xaf, 0x1e, 
0xdb, 0x1b, 0xe7, 0x80,
-       0xc4, 0x9e, 0xba, 0x5e, 0xdd, 0xf5, 0xf8, 0x55, 0xd5, 0x2c, 0x00, 0x13, 
0x41, 0xb2, 0x11, 0xc5,
-       0x42, 0x0a, 0xe2, 0x30, 0x11, 0x8c, 0x86, 0x18, 0xca, 0xe4, 0xda, 0xad, 
0x1e, 0x97, 0xfd, 0xd1,
-       0xc1, 0x46, 0x20, 0x86, 0x9b, 0xc3, 0xc7, 0x5c, 0x3e, 0x14, 0x8f, 0x37, 
0x7b, 0x62, 0x5d, 0xeb,
-       0xad, 0x3f, 0xf2, 0x07, 0x9c, 0xf9, 0x52, 0xc4, 0xc9, 0x66, 0x71, 0x4c, 
0xaf, 0xb8, 0xb6, 0x6e,
-       0xd8, 0xf5, 0x44, 0x4f, 0x6c, 0x6a, 0xf6, 0xc1, 0xe8, 0x50, 0x53, 0x9a, 
0xd0, 0xa7, 0x54, 0xdd,
-       0xfb, 0xca, 0x82, 0x85, 0x2e, 0xef, 0x85, 0xc8, 0xee, 0x84, 0x8f, 0x70, 
0x20, 0x22, 0x24, 0xab,
-       0xe0, 0x28, 0x8e, 0x2f, 0x47, 0x31, 0xba, 0xd6, 0x8a, 0xb5, 0x56, 0xdf, 
0xad, 0x1d, 0x1f, 0x2d,
-       0x4f, 0x45, 0x4b, 0xb4, 0x14, 0x90, 0x37, 0x52, 0x2d, 0x8c, 0x9b, 0xed, 
0x96, 0x3b, 0xb5, 0x62,
-       0xad, 0x39, 0xbb, 0xff, 0x3f, 0x3e, 0x5a, 0xbe, 0x0a, 0x97, 0x1f, 0x7c, 
0x7c, 0xef, 0xde, 0x8e,
-       0x3f, 0x08, 0x47, 0xc3, 0x9d, 0xfb, 0xf7, 0x3f, 0xdb, 0xbe, 0xf9, 0xc5, 
0xea, 0xe7, 0x0f, 0x56,
-       0x69, 0xa9, 0x4d, 0x5c, 0xb8, 0xf0, 0x01, 0x26, 0x89, 0xdf, 0x43, 0xd7, 
0x56, 0xd7, 0xd3, 0x9c,
-       0xf4, 0x04, 0xcc, 0x16, 0x6e, 0xbc, 0x0c, 0xb5, 0x77, 0xd1, 0x67, 0x18, 
0x6b, 0x1f, 0xe6, 0x1a,
-       0x17, 0x37, 0x8a, 0xe4, 0x6c, 0xa4, 0x02, 0x9a, 0x29, 0x10, 0x02, 0xd3, 
0xbb, 0x82, 0x8d, 0xb5,
-       0x1b, 0x75, 0xaa, 0xcf, 0x64, 0x15, 0xe6, 0xef, 0x84, 0x41, 0x3c, 0x8e, 
0x24, 0x32, 0x2d, 0x4c,
-       0x9f, 0xaa, 0x32, 0xbd, 0xef, 0xed, 0xfc, 0x15, 0x72, 0x05, 0x6a, 0xed, 
0xce, 0x3b, 0xdd, 0x76,
-       0x4b, 0xbf, 0xe7, 0xd0, 0x8c, 0x52, 0xde, 0xee, 0x63, 0x9c, 0x70, 0x11, 
0xea, 0xfb, 0xa7, 0x68,
-       0x4e, 0x92, 0x57, 0x61, 0xb6, 0xe5, 0x4b, 0xdc, 0xe3, 0xc3, 0x34, 0x10, 
0x7b, 0x77, 0xf1, 0xf8,
-       0x68, 0xb9, 0xbe, 0xf8, 0xf4, 0xcb, 0xdf, 0xfe, 0x98, 0x71, 0x9f, 0xfe, 
0xfc, 0xe3, 0x37, 0x63,
-       0x5a, 0x68, 0x90, 0x15, 0x98, 0xeb, 0xc4, 0xf8, 0x88, 0x8b, 0x51, 0xa2, 
0x52, 0x36, 0xad, 0x1f,
-       0x31, 0x59, 0xc4, 0x83, 0xba, 0x72, 0x6a, 0x6f, 0x1c, 0x61, 0x53, 0x30, 
0x74, 0x67, 0xf4, 0x73,
-       0x15, 0x9e, 0xba, 0x45, 0xd1, 0xb9, 0x47, 0x35, 0xad, 0x62, 0xb2, 0xc8, 
0x36, 0x5c, 0xae, 0xc4,
-       0x58, 0x5c, 0x77, 0x41, 0xeb, 0x9e, 0x2d, 0x24, 0x0d, 0x58, 0xaa, 0x08, 
0xf2, 0x07, 0x66, 0xb5,
-       0xd1, 0x99, 0x32, 0xb2, 0x06, 0xff, 0xab, 0xf0, 0xdb, 0xfb, 0xae, 0xa3, 
0x93, 0x7c, 0x92, 0x4d,
-       0xde, 0x04, 0xa0, 0x18, 0xf0, 0x88, 0xab, 0xea, 0xb9, 0xb0, 0x62, 0xaf, 
0xcd, 0x35, 0x96, 0x8c,
-       0x7a, 0x16, 0xc2, 0x14, 0x69, 0xfd, 0x25, 0x6a, 0xe8, 0x7b, 0x3f, 0x58, 
0xe0, 0x14, 0xa4, 0x59,
-       0x0f, 0xab, 0x5a, 0x8f, 0x75, 0xb0, 0x9f, 0x13, 0x8c, 0x4a, 0x2f, 0x73, 
0xdf, 0x8f, 0x92, 0xd1,
-       0xc0, 0x97, 0xc8, 0xde, 0xc3, 0x1c, 0x23, 0x27, 0xd9, 0xe4, 0x05, 0x80, 
0x26, 0x8f, 0xfa, 0x18,
-       0xef, 0xe1, 0x13, 0xa9, 0x2b, 0x57, 0xa7, 0x06, 0x87, 0x2c, 0xc0, 0x54, 
0x7b, 0x5f, 0x97, 0xab,
-       0x4e, 0xa7, 0xda, 0xfb, 0xde, 0x5f, 0x16, 0x40, 0xbb, 0xd5, 0xca, 0xc2, 
0x23, 0xaf, 0xc3, 0xd5,
-       0xdb, 0x23, 0xd9, 0xc7, 0x50, 0xf2, 0xc0, 0x97, 0x5c, 0x84, 0x14, 0x0f, 
0x31, 0xc6, 0x30, 0xc0,
-       0x0c, 0x6a, 0x93, 0xc4, 0xe4, 0x16, 0x5c, 0xd9, 0xc5, 0x10, 0x0f, 0x79, 
0xc0, 0xfd, 0x78, 0x7c,
-       0xa7, 0xd9, 0x19, 0x1d, 0x0c, 0x78, 0xa0, 0x3c, 0x4d, 0xa1, 0x3e, 0x41, 
0xaa, 0xc0, 0xdf, 0xe5,
-       0x0f, 0xb1, 0x54, 0xcf, 0xc0, 0x5f, 0x61, 0x6a, 0xbc, 0xbd, 0xdf, 0x2d, 
0x95, 0xd2, 0xc0, 0x2a,
-       0x3c, 0xb2, 0x01, 0x8e, 0x42, 0x6f, 0x22, 0xfd, 0x61, 0xa4, 0x23, 0x3c, 
0x0b, 0xe4, 0xa5, 0x8a,
-       0xf7, 0xa7, 0x0d, 0xf3, 0x1f, 0xc5, 0x0c, 0xe3, 0x22, 0x7a, 0x02, 0xd3, 
0x0a, 0x65, 0x59, 0xa8,
-       0xfa, 0x4c, 0x5e, 0x82, 0xe9, 0xa6, 0xe0, 0x69, 0x43, 0xd9, 0xbb, 0xe4, 
0xf8, 0x68, 0x79, 0x61,
-       0xf1, 0xef, 0xfc, 0x67, 0xb9, 0xbf, 0x5f, 0xa0, 0x5a, 0x4e, 0xde, 0x86, 
0x7a, 0x27, 0xe6, 0x61,
-       0xc0, 0x23, 0x7f, 0xa0, 0x4a, 0x6b, 0x9f, 0x5f, 0xda, 0x8a, 0x01, 0x69, 
0xc2, 0x82, 0x91, 0xa2,
-       0xa2, 0xef, 0x9e, 0x7d, 0xc5, 0x09, 0x13, 0x35, 0x10, 0xcb, 0x8a, 0xcd, 
0x68, 0x7b, 0x0d, 0xd3,
-       0x4f, 0x2d, 0x5a, 0x0a, 0xaa, 0x99, 0xaa, 0x9d, 0x9b, 0x29, 0x72, 0x13, 
0x40, 0x27, 0xaa, 0xe3,
-       0xc7, 0xb2, 0xa1, 0x9b, 0x73, 0xae, 0x71, 0xd9, 0xe8, 0x89, 0x52, 0x48, 
0x0d, 0xc5, 0x8a, 0xd9,
-       0x96, 0x6e, 0xcf, 0x09, 0x66, 0x5b, 0x86, 0xd9, 0x56, 0xc5, 0x6c, 0x5b, 
0xb7, 0xe9, 0x04, 0xb3,
-       0x6d, 0xc3, 0x6c, 0x5b, 0x0d, 0xe1, 0x48, 0x0c, 0x78, 0x30, 0x76, 0xe1, 
0xd4, 0x10, 0x4e, 0x05,
-       0x34, 0x53, 0xf0, 0x7e, 0xb2, 0xcc, 0x80, 0xc8, 0x6b, 0x70, 0xa9, 0x29, 
0x86, 0x43, 0x2e, 0x95,
-       0x72, 0x89, 0xb1, 0x14, 0x05, 0x67, 0x89, 0xc8, 0x5d, 0x58, 0xcc, 0xa7, 
0xa1, 0xbe, 0xe7, 0x39,
-       0x7b, 0xf9, 0x94, 0x51, 0xb5, 0x12, 0xf6, 0xf9, 0x98, 0xfd, 0xd5, 0xf4, 
0x7c, 0x4b, 0x75, 0x3b,
-       0x45, 0x86, 0xc3, 0x48, 0xe6, 0x33, 0xc6, 0xa1, 0x06, 0xe7, 0xdf, 0xf3, 
0x73, 0x07, 0x5c, 0xb3,
-       0x7f, 0xf3, 0x99, 0xd9, 0xf2, 0xa5, 0x9f, 0x35, 0xec, 0x44, 0x79, 0x35, 
0xc6, 0xe9, 0xf3, 0x63,
-       0xfc, 0xce, 0x8c, 0x71, 0x5b, 0x2d, 0xbb, 0x2e, 0x06, 0x31, 0xca, 0x7c, 
0xd9, 0xa5, 0xd4, 0x7f,
-       0x57, 0x83, 0x1d, 0x98, 0xef, 0x68, 0x1c, 0x7d, 0x12, 0xfb, 0x51, 0x84, 
0xb1, 0x81, 0x3c, 0xeb,
-       0x3c, 0xe4, 0x7d, 0x6d, 0xe7, 0xba, 0x6a, 0x39, 0xe0, 0x13, 0x7f, 0x18, 
0x0d, 0x30, 0x75, 0x9b,
-       0xe6, 0x24, 0xb9, 0x0e, 0xce, 0x63, 0x7f, 0x30, 0x40, 0x49, 0xf1, 0x30, 
0x9d, 0x23, 0xb4, 0x64,
-       0xa8, 0x7c, 0x84, 0x82, 0x61, 0x9b, 0x65, 0x7b, 0x39, 0xa3, 0xd4, 0xf0, 
0x0a, 0xd4, 0xa0, 0xd2,
-       0x93, 0x8f, 0xea, 0x33, 0x79, 0x0b, 0xe6, 0x93, 0xbe, 0x1f, 0xf3, 0xb0, 
0x77, 0x37, 0x16, 0xa3,
-       0x28, 0x71, 0x6b, 0x7a, 0x9f, 0x5d, 0x35, 0x1c, 0x34, 0xe5, 0xb4, 0xaa, 
0x4d, 0x5e, 0x81, 0xc5,
-       0xc8, 0x8f, 0x25, 0x57, 0x33, 0x2a, 0x94, 0x4d, 0x31, 0x0a, 0xa5, 0xee, 
0x7e, 0x9b, 0x9e, 0xe2,
-       0x2b, 0xa7, 0x65, 0x3f, 0xc6, 0xa4, 0x2f, 0x06, 0x4c, 0xf7, 0xba, 0x4d, 
0x4b, 0x86, 0x0a, 0x36,
-       0xd1, 0x1f, 0x55, 0x89, 0xeb, 0xac, 0xd8, 0x6b, 0x36, 0xcd, 0x49, 0x35, 
0xff, 0x23, 0xdd, 0x57,
-       0xb7, 0x19, 0x8b, 0x31, 0x49, 0x74, 0xf7, 0x3a, 0xb4, 0xca, 0x54, 0x9e, 
0x1c, 0x94, 0xf8, 0x62,
-       0x22, 0xe0, 0xcc, 0x9d, 0xd3, 0x8a, 0xa7, 0xf8, 0xea, 0x5b, 0x87, 0xe5, 
0xdf, 0x3a, 0xf5, 0x49,
-       0xdf, 0x3a, 0xb9, 0x86, 0xf7, 0x8b, 0x05, 0x75, 0x33, 0x6a, 0xe5, 0x6a, 
0x4f, 0x1d, 0x38, 0xd3,
-       0xe5, 0xb4, 0x69, 0x4e, 0x92, 0x6b, 0x30, 0xab, 0x8f, 0x31, 0x1e, 0x66, 
0x25, 0x2b, 0x68, 0xf2,
-       0x22, 0xd8, 0x9c, 0x25, 0xae, 0xad, 0xf3, 0x7b, 0xc9, 0xc8, 0x2f, 0x67, 
0x6a, 0x5b, 0xca, 0x31,
-       0x55, 0xf2, 0x6a, 0x96, 0xa6, 0x4f, 0x66, 0xe9, 0x3a, 0x38, 0x49, 0xf1, 
0x39, 0x9b, 0xee, 0xe8,
-       0x92, 0xa1, 0x6d, 0xf9, 0x10, 0xbb, 0xe5, 0xd4, 0xa6, 0x25, 0x43, 0xc1, 
0x22, 0x91, 0xbe, 0x1c,
-       0x25, 0xba, 0x42, 0x0e, 0xcd, 0x28, 0xef, 0x5b, 0x0b, 0x66, 0x73, 0x1f, 
0xd4, 0xf6, 0xcf, 0xc2,
-       0x72, 0xe8, 0x14, 0x67, 0x64, 0x09, 0x66, 0x38, 0xa3, 0x45, 0x38, 0x29, 
0xa1, 0xae, 0xe2, 0x4c,
-       0x2f, 0xc2, 0x14, 0x7c, 0x19, 0xa5, 0xb4, 0x55, 0xa6, 0x30, 0xdb, 0xbe, 
0x29, 0x61, 0x3c, 0x3c,
-       0x63, 0x3e, 0xfc, 0x6c, 0x77, 0xbd, 0x1b, 0x70, 0xb1, 0x33, 0xf0, 0x79, 
0xb8, 0x87, 0x89, 0xcc,
-       0x3e, 0xa9, 0x6f, 0x28, 0x93, 0x0f, 0xfd, 0x21, 0x4a, 0x4c, 0xe4, 0x8d, 
0xcc, 0xcb, 0x92, 0xe1,
-       0x6d, 0xc1, 0xa5, 0x6c, 0xb0, 0x4c, 0x32, 0x6a, 0x9c, 0x34, 0x6a, 0x78, 
0x6b, 0x50, 0xef, 0x72,
-       0xd5, 0x55, 0x5d, 0xa9, 0x4a, 0xac, 0xaa, 0xdb, 0x14, 0xa1, 0xc4, 0x30, 
0x1f, 0x27, 0x39, 0x79,
-       0x50, 0xd3, 0xff, 0x32, 0xb6, 0xfe, 0x09, 0x00, 0x00, 0xff, 0xff, 0x63, 
0xbb, 0xd8, 0x02, 0xe5,
-       0x0c, 0x00, 0x00,
+       // 1352 bytes of a gzipped FileDescriptorProto
+       0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x56, 
0xcf, 0x6f, 0x1b, 0xc5,
+       0x17, 0x97, 0xb3, 0xb6, 0xe3, 0x7d, 0xb1, 0xf3, 0x75, 0xa7, 0x69, 0xbb, 
0xca, 0xb7, 0xfa, 0x26,
+       0xb2, 0xf2, 0x45, 0xe1, 0x47, 0x1c, 0xea, 0xa4, 0x55, 0x89, 0x40, 0xa8, 
0xb1, 0x43, 0xb1, 0x80,
+       0x62, 0xc6, 0x21, 0x45, 0xaa, 0x5a, 0x69, 0xb3, 0xfb, 0x62, 0x8f, 0x6a, 
0xef, 0xac, 0x76, 0xc7,
+       0x6d, 0x2d, 0xe0, 0xcc, 0x81, 0x23, 0x67, 0x2e, 0x48, 0xbd, 0x22, 0x4e, 
0xf0, 0x0f, 0xf0, 0x57,
+       0x70, 0x89, 0xc8, 0x01, 0xc4, 0x5f, 0x00, 0x9c, 0x40, 0x33, 0xb3, 0x6b, 
0xcf, 0xa6, 0x09, 0xae,
+       0x10, 0x12, 0x7b, 0xda, 0xf7, 0x6b, 0xe6, 0xfd, 0xf8, 0xbc, 0xf7, 0x06, 
0xc0, 0xe7, 0x5e, 0x5c,
+       0x0f, 0x23, 0x2e, 0x38, 0xb1, 0x7d, 0xee, 0x8d, 0x86, 0x18, 0x88, 0x78, 
0xf9, 0x46, 0x8f, 0x89,
+       0xfe, 0xe8, 0xb0, 0xee, 0xf1, 0xe1, 0xe6, 0xf0, 0x31, 0x13, 0x0f, 0xf9, 
0xe3, 0xcd, 0x1e, 0xdf,
+       0x50, 0x7a, 0x1b, 0x8f, 0xdc, 0x01, 0xf3, 0x5d, 0xc1, 0xa3, 0x78, 0x73, 
0xf2, 0xab, 0x8f, 0x58,
+       0xde, 0x30, 0xec, 0x7a, 0xbc, 0xc7, 0x37, 0x15, 0xfb, 0x70, 0x74, 0xa4, 
0x28, 0x45, 0xa8, 0xbf,
+       0x44, 0x7d, 0xa5, 0xc7, 0x79, 0x6f, 0x80, 0x53, 0x2d, 0xc1, 0x86, 0x18, 
0x0b, 0x77, 0x18, 0x6a,
+       0x85, 0xda, 0xe7, 0x39, 0x58, 0xec, 0xb2, 0x5e, 0x80, 0xfe, 0x5e, 0xf0, 
0x08, 0x07, 0x3c, 0x44,
+       0xb2, 0x06, 0xb6, 0xe4, 0xb8, 0x62, 0x14, 0xa1, 0x93, 0x5b, 0xcd, 0xad, 
0x97, 0x77, 0x8b, 0x27,
+       0xc7, 0x2b, 0x73, 0xe1, 0x12, 0x9d, 0x0a, 0xc8, 0x6b, 0x5a, 0x0b, 0xa3, 
0x66, 0xbb, 0xe5, 0xcc,
+       0xad, 0xe6, 0xd6, 0xed, 0xdd, 0xff, 0x9e, 0x1c, 0xaf, 0x5c, 0x81, 0x4b, 
0x0f, 0x3e, 0xb8, 0x77,
+       0x6f, 0xc7, 0x1d, 0x04, 0xa3, 0xe1, 0xce, 0xfd, 0xfb, 0x1f, 0x6f, 0x5f, 
0xff, 0x74, 0xed, 0x93,
+       0x07, 0x6b, 0x74, 0xaa, 0x4d, 0x1c, 0x98, 0x7f, 0x0f, 0xe3, 0xd8, 0xed, 
0xa1, 0x63, 0xc9, 0xe3,
+       0x69, 0x4a, 0xd6, 0x38, 0x94, 0x26, 0x6e, 0xbc, 0x08, 0xc5, 0xb7, 0xd1, 
0xf5, 0x31, 0x52, 0x3e,
+       0x2c, 0x34, 0x2e, 0xd4, 0x27, 0xd9, 0xab, 0x6b, 0x01, 0x4d, 0x14, 0x08, 
0x81, 0xfc, 0x2e, 0xf7,
+       0xc7, 0xca, 0x8d, 0x32, 0x55, 0xff, 0x64, 0x0d, 0x2a, 0x7b, 0x81, 0x17, 
0x8d, 0x43, 0x81, 0xbe,
+       0x12, 0xea, 0xab, 0xb2, 0xcc, 0xda, 0x57, 0x56, 0x7a, 0x0b, 0xb9, 0x0c, 
0xc5, 0x76, 0xe7, 0xad,
+       0x6e, 0xbb, 0xa5, 0xee, 0xb3, 0x69, 0x42, 0x49, 0x6f, 0x0f, 0x30, 0x8a, 
0x19, 0x0f, 0xd4, 0xf9,
+       0x73, 0x34, 0x25, 0xc9, 0x2b, 0x50, 0x6a, 0xb9, 0x02, 0xf7, 0xd9, 0x50, 
0x07, 0x62, 0xed, 0x56,
+       0x4f, 0x8e, 0x57, 0xca, 0xd5, 0xa7, 0x9f, 0xfd, 0xf4, 0x4b, 0xc1, 0x79, 
0xfa, 0xfd, 0xb7, 0x5f,
+       0x8c, 0xe9, 0x44, 0x83, 0xac, 0xc2, 0x42, 0x27, 0xc2, 0x47, 0x8c, 0x8f, 
0x62, 0x99, 0xb2, 0xbc,
+       0xba, 0xc4, 0x64, 0x91, 0x1a, 0x94, 0xa5, 0x53, 0xfb, 0xe3, 0x10, 0x9b, 
0xdc, 0x47, 0xa7, 0xa0,
+       0xae, 0xcb, 0xf0, 0xe4, 0x29, 0x92, 0x4e, 0x3d, 0x2a, 0x2a, 0x15, 0x93, 
0x45, 0xb6, 0xe1, 0x52,
+       0x26, 0xc6, 0xc9, 0x71, 0xf3, 0x4a, 0xf7, 0x6c, 0x21, 0x69, 0xc0, 0x52, 
0x46, 0x90, 0x5e, 0x50,
+       0x52, 0x46, 0x67, 0xca, 0xc8, 0x3a, 0xfc, 0x27, 0xc3, 0x6f, 0x1f, 0x38, 
0xb6, 0x4a, 0xf2, 0x69,
+       0x36, 0x79, 0x1d, 0x80, 0xa2, 0xc7, 0x42, 0x26, 0xab, 0xe7, 0xc0, 0xaa, 
0xb5, 0xbe, 0xd0, 0x58,
+       0x32, 0xea, 0x39, 0x11, 0x6a, 0xa4, 0xf5, 0x97, 0xa8, 0xa1, 0x5f, 0xfb, 
0x3a, 0x07, 0xf6, 0x84,
+       0x34, 0xeb, 0x91, 0xcb, 0xd6, 0x63, 0x03, 0xac, 0xe7, 0x04, 0xa3, 0xd4, 
0x4b, 0xdc, 0x77, 0xc3,
+       0x78, 0x34, 0x70, 0x05, 0xfa, 0xef, 0x60, 0x8a, 0x91, 0xd3, 0x6c, 0xf2, 
0x3f, 0x80, 0x26, 0x0b,
+       0xfb, 0x18, 0xed, 0xe3, 0x13, 0xa1, 0x2a, 0x57, 0xa6, 0x06, 0x87, 0x2c, 
0xc2, 0x5c, 0xfb, 0x40,
+       0x95, 0xab, 0x4c, 0xe7, 0xda, 0x07, 0xb5, 0xdf, 0x72, 0x00, 0xed, 0x56, 
0x2b, 0x09, 0x8f, 0xdc,
+       0x84, 0x2b, 0xb7, 0x46, 0xa2, 0x8f, 0x81, 0x60, 0x9e, 0x2b, 0x18, 0x0f, 
0x28, 0x1e, 0x61, 0x84,
+       0x81, 0x87, 0x09, 0xd4, 0xce, 0x13, 0x93, 0x1b, 0x70, 0x79, 0x17, 0x03, 
0x3c, 0x62, 0x1e, 0x73,
+       0xa3, 0xf1, 0x5e, 0xb3, 0x33, 0x3a, 0x1c, 0x30, 0x4f, 0x7a, 0xaa, 0xa1, 
0x7e, 0x8e, 0x54, 0x82,
+       0xbf, 0xcb, 0x1e, 0xe2, 0x54, 0x3d, 0x01, 0x7f, 0x86, 0xa9, 0xf0, 0xf6, 
0x6e, 0x77, 0xaa, 0xa4,
+       0x03, 0xcb, 0xf0, 0x48, 0x1d, 0xec, 0xfd, 0x74, 0x64, 0xa8, 0x08, 0xcf, 
0x02, 0xf9, 0x54, 0xa5,
+       0xf6, 0xab, 0x05, 0x95, 0xf7, 0x23, 0x1f, 0xa3, 0x49, 0xf4, 0x04, 0xf2, 
0x12, 0x65, 0x49, 0xa8,
+       0xea, 0x9f, 0xbc, 0x00, 0xf9, 0x26, 0x67, 0xba, 0xa1, 0xac, 0x5d, 0x72, 
0x72, 0xbc, 0xb2, 0x58,
+       0xfd, 0x23, 0xfd, 0x72, 0xce, 0xcf, 0xf3, 0x54, 0xc9, 0xc9, 0x9b, 0x50, 
0xee, 0x44, 0x2c, 0xf0,
+       0x58, 0xe8, 0x0e, 0x64, 0x69, 0xad, 0xd9, 0xa5, 0xcd, 0x18, 0x90, 0x26, 
0x2c, 0x1a, 0x29, 0x9a,
+       0xf4, 0xdd, 0x5f, 0x1f, 0x71, 0xca, 0x44, 0x0e, 0xc4, 0x69, 0xc5, 0x0a, 
0xca, 0x5e, 0xc1, 0xf4,
+       0xa3, 0x1c, 0x9d, 0x0a, 0xb2, 0x99, 0x2a, 0xce, 0xcc, 0x14, 0xb9, 0x0e, 
0xa0, 0x12, 0xd5, 0x71,
+       0x23, 0xd1, 0x50, 0xcd, 0xb9, 0xd0, 0xb8, 0x64, 0xf4, 0xc4, 0x54, 0x48, 
0x0d, 0xc5, 0x8c, 0xd9,
+       0x96, 0x6a, 0xcf, 0x73, 0xcc, 0xb6, 0x0c, 0xb3, 0xad, 0x8c, 0xd9, 0xb6, 
0x6a, 0xd3, 0x73, 0xcc,
+       0xb6, 0x0d, 0xb3, 0x6d, 0x39, 0x84, 0x43, 0x3e, 0x60, 0xde, 0xd8, 0x81, 
0x67, 0x86, 0x70, 0x47,
+       0x09, 0x68, 0xa2, 0x50, 0xfb, 0x2e, 0x67, 0x06, 0x44, 0x5e, 0x85, 0x8b, 
0x4d, 0x3e, 0x1c, 0x32,
+       0x21, 0x95, 0xa7, 0x18, 0xd3, 0x28, 0x38, 0x4b, 0x44, 0x6e, 0x43, 0x35, 
0x9d, 0x86, 0xea, 0x9c,
+       0xe7, 0xec, 0xe5, 0x67, 0x8c, 0xb2, 0x95, 0xb0, 0x66, 0x63, 0xf6, 0x47, 
0xd3, 0xf3, 0x2d, 0xd9,
+       0xed, 0x14, 0x7d, 0x1c, 0x86, 0x22, 0x9d, 0x31, 0x36, 0x35, 0x38, 0xff, 
0x9c, 0x9f, 0x3b, 0xe0,
+       0x98, 0xfd, 0x9b, 0xce, 0xcc, 0x96, 0x2b, 0xdc, 0xa4, 0x61, 0xcf, 0x95, 
0x67, 0x63, 0xcc, 0xcf,
+       0x8e, 0xf1, 0x4b, 0x33, 0xc6, 0x6d, 0xb9, 0xec, 0xba, 0xe8, 0x45, 0x28, 
0xd2, 0x65, 0xa7, 0xa9,
+       0x7f, 0xaf, 0x06, 0x3b, 0x50, 0xd1, 0x78, 0xba, 0x1b, 0xb9, 0x61, 0x88, 
0x91, 0x81, 0xbc, 0xdc,
+       0x2c, 0xe4, 0xfd, 0x60, 0x41, 0x51, 0xb3, 0xe4, 0x72, 0xd8, 0x7b, 0xe2, 
0x0e, 0xc3, 0x01, 0x6a,
+       0xb7, 0xe9, 0x3c, 0x6a, 0x92, 0x5c, 0x05, 0xfb, 0xae, 0x3b, 0x18, 0xa0, 
0xa0, 0x78, 0xa4, 0xe7,
+       0x08, 0xb5, 0x1f, 0xa7, 0x0c, 0x99, 0x8f, 0x3b, 0xdc, 0xc7, 0xb6, 0x9f, 
0xec, 0xe5, 0x62, 0xa0,
+       0x28, 0x72, 0x19, 0x4a, 0x72, 0x10, 0xa9, 0x01, 0xa6, 0xa6, 0x1f, 0xcd, 
0x7b, 0x72, 0x30, 0xbd,
+       0x01, 0x95, 0x6e, 0xdf, 0x8d, 0x58, 0xd0, 0xbb, 0x1d, 0xf1, 0x51, 0x18, 
0x3b, 0x45, 0xb5, 0xd3,
+       0xae, 0x18, 0x4e, 0x9a, 0x72, 0x5a, 0x89, 0x4d, 0x6d, 0xf2, 0x12, 0x54, 
0x65, 0x1d, 0x98, 0x9c,
+       0x53, 0x81, 0x68, 0xf2, 0x51, 0x20, 0xd4, 0x04, 0xb0, 0x68, 0x35, 0x3c, 
0xc5, 0x97, 0x8e, 0xef,
+       0xf7, 0x23, 0x8c, 0xfb, 0x7c, 0xe0, 0xab, 0x7e, 0xb7, 0xa8, 0x2d, 0x52, 
0x86, 0x0c, 0x58, 0x3f,
+       0xac, 0x62, 0xc7, 0x5e, 0xb5, 0xd6, 0x2d, 0x3a, 0x1f, 0x6b, 0x52, 0xee, 
0x00, 0xdd, 0x5b, 0xb7,
+       0x7c, 0x3f, 0xc2, 0x38, 0x56, 0x1d, 0x6c, 0xd3, 0x4a, 0xa8, 0x98, 0xae, 
0x66, 0x92, 0x97, 0xe1,
+       0x82, 0x81, 0xb1, 0x16, 0xf7, 0x64, 0xc5, 0x17, 0x94, 0x66, 0xf5, 0x70, 
0x2a, 0xf0, 0xb9, 0xc7,
+       0x7c, 0x72, 0x13, 0xec, 0x0f, 0x43, 0x5f, 0x6e, 0xc5, 0x5b, 0xc2, 0x29, 
0xab, 0xb2, 0x2c, 0xd7,
+       0xf5, 0x0b, 0xb3, 0x9e, 0xbe, 0x30, 0xeb, 0x93, 0x9a, 0x52, 0x7b, 0x94, 
0x2a, 0x4b, 0xcb, 0x66,
+       0x84, 0x89, 0x65, 0x65, 0xb6, 0xa5, 0x97, 0x2a, 0xd7, 0x7e, 0xcf, 0x41, 
0xd9, 0x4c, 0xa5, 0x8c,
+       0x58, 0xfd, 0x24, 0x0f, 0x35, 0x8b, 0xce, 0xf7, 0x14, 0xe9, 0x93, 0x65, 
0x28, 0xe9, 0x6c, 0xe3,
+       0x51, 0x52, 0xfd, 0x92, 0x12, 0x45, 0x78, 0x44, 0xfe, 0x0f, 0x56, 0xbb, 
0x15, 0x3b, 0x96, 0x2a,
+       0xd3, 0x45, 0xa3, 0x4c, 0x6d, 0x5f, 0x2e, 0x5e, 0x31, 0xa6, 0x16, 0xf3, 
0xe3, 0x6c, 0xb2, 0xf3,
+       0xa7, 0x93, 0x7d, 0xd5, 0x7c, 0x19, 0xeb, 0x75, 0x6f, 0xc7, 0x93, 0x17, 
0xf1, 0x4d, 0x0d, 0xf9,
+       0xee, 0x64, 0x01, 0xcc, 0x88, 0x51, 0xa4, 0xca, 0xaa, 0x1b, 0x85, 0x2b, 
0x46, 0xb1, 0x02, 0x81,
+       0x4d, 0x8b, 0xb1, 0xa2, 0x6a, 0xdf, 0xe4, 0xa0, 0x94, 0xfa, 0xa7, 0x1e, 
0x19, 0xe9, 0xdb, 0x74,
+       0x8e, 0xf9, 0x64, 0x09, 0x0a, 0xed, 0xd6, 0x34, 0xd4, 0x02, 0xf3, 0x13, 
0x20, 0xb7, 0x5b, 0x0a,
+       0xae, 0x1a, 0xe3, 0x45, 0xe6, 0xab, 0x8d, 0xbb, 0x04, 0x05, 0x99, 0x45, 
0x4c, 0x96, 0x7c, 0x41,
+       0xe2, 0x11, 0x8d, 0x8b, 0x0b, 0xe6, 0xc5, 0x7f, 0x3f, 0x94, 0xda, 0x35, 
0xb8, 0xd0, 0x19, 0xb8,
+       0x2c, 0xd8, 0xc7, 0x58, 0x24, 0xaf, 0xfa, 0x6b, 0x32, 0x6f, 0x77, 0xdc, 
0x21, 0x0a, 0x8c, 0xc5,
+       0xb5, 0x24, 0x82, 0x29, 0xa3, 0xb6, 0x05, 0x17, 0x93, 0xd9, 0x76, 0x9e, 
0x51, 0xe3, 0xb4, 0x51,
+       0xa3, 0xb6, 0x0e, 0xe5, 0x2e, 0x93, 0x8d, 0xdd, 0x15, 0x12, 0x1a, 0x12, 
0x15, 0x4d, 0x1e, 0x08,
+       0x0c, 0xd2, 0x89, 0x96, 0x92, 0x87, 0x45, 0xe5, 0xf0, 0xd6, 0x9f, 0x01, 
0x00, 0x00, 0xff, 0xff,
+       0xea, 0x0c, 0x11, 0xd2, 0x89, 0x0d, 0x00, 0x00,
 }
diff --git a/libs/documents/docs.proto b/libs/documents/docs.proto
index 06ae5be..41673e3 100644
--- a/libs/documents/docs.proto
+++ b/libs/documents/docs.proto
@@ -30,6 +30,8 @@ syntax="proto3";
 package documents;
 import "github.com/mwitkow/go-proto-validators/validator.proto";
 import "github.com/gogo/protobuf/gogoproto/gogo.proto";
+import "google/protobuf/timestamp.proto";
+
 //The Encrypted Envelope
 
 message SignedEnvelope {
@@ -85,7 +87,7 @@ message OrderDocument {
     OrderPart2 OrderPart2    = 7;
     OrderPart3 OrderPart3    = 8;
     OrderPart4 OrderPart4    = 9;
-    policy policy            = 10;
+    Policy policy            = 10;
 }
 
 message OrderPart2 {
@@ -108,41 +110,42 @@ message OrderPart4 {
 }
 
 message PolicyWrapper{
-    policy policy = 1;
+    Policy policy = 1;
 }
 
-message policy{
-    string example                      = 2;
-    string walletRef                    = 3;
-    string nodeId                       = 4;
-    int64 coin                          = 5;
-    repeated sharingGroup sharingGroups = 6;
-    int64 participantCount              = 7;
-       int64 threshold                     = 8;
-       repeated int64 signers              = 9;
-       string publicAddress                = 10;
-       string beneficiarydocid             = 11;
-    int64 dateTime                      = 12 [(validator.field) = 
{int_gt:1564050341,int_lt:32521429541}];
+message Policy{
+    string Example                      = 2 [json_name="example"];;
+    string WalletRef                    = 3 [json_name="walletRef"];;
+    string NodeId                       = 4 [json_name="nodeId"];;
+    int64 CoinType                      = 5 [json_name="coin"];;
+    repeated SharingGroup SharingGroups = 6 [json_name="sharingGroups"];;
+    int64 ParticipantCount              = 7 [json_name="participantCount"];;
+       int64 Threshold                     = 8 [json_name="threshold"];
+       repeated int64 Signers              = 9 [json_name="signers"];;
+       string PublicAddress                = 10 [json_name="publicaddress"];;
+       string BeneficiaryDocCID            = 11 [json_name="beneficiarydocid"];
+    google.protobuf.Timestamp UpdatedAt                     = 12 
[json_name="updatedAt"];
+    google.protobuf.Timestamp  CreatedAt                     = 13 
[json_name="createdAt"];
 }
 
-message sharingGroup {
-       int64 groupid         = 1;  
-       string groupref       = 2;
-       repeated identity ids = 3;
-       int64 threshold       = 4;
-       bytes signature       = 5;
-       int64 timeStamp       = 6;
-       string status         = 7;
+message SharingGroup {
+       int64 GroupID         = 1 [json_name="groupId"];  
+       string GroupRef       = 2 [json_name="groupref"];
+       repeated Identity IDs = 3 [json_name="ids"];
+       int64 Threshold       = 4 [json_name="threshold"];
+       bytes Signature       = 5 [json_name="signature"];
+       google.protobuf.Timestamp  TimeStamp       = 6 [json_name="timeStamp"];
+       string Status         = 7 [json_name="status"];
 }
 
 // Identity of a sharing group
-message identity {
-    string id       = 1;
-       string idRef    = 2;
-       string idType   = 3;
-       bytes share     = 4;
-       string status   = 5;
-       int64 timeStamp = 6;
+message Identity {
+    string ID       = 1 [json_name="id"];
+       string IDRef    = 2 [json_name="idRef"];
+       string IDType   = 3 [json_name="idType"];
+       bytes Share     = 4 [json_name="share"];
+       string Status   = 5 [json_name="status"];
+       google.protobuf.Timestamp  TimeStamp = 6 [json_name="timeStamp"];
 }
 
 message PlainTestMessage1 {
diff --git a/libs/documents/docs.validator.pb.go 
b/libs/documents/docs.validator.pb.go
index ea66ec7..63dc63a 100644
--- a/libs/documents/docs.validator.pb.go
+++ b/libs/documents/docs.validator.pb.go
@@ -9,6 +9,7 @@ import (
        proto "github.com/golang/protobuf/proto"
        _ "github.com/mwitkow/go-proto-validators"
        _ "github.com/gogo/protobuf/gogoproto"
+       _ "github.com/golang/protobuf/ptypes/timestamp"
        regexp "regexp"
        github_com_mwitkow_go_proto_validators 
"github.com/mwitkow/go-proto-validators"
 )
@@ -183,25 +184,39 @@ func (this *Policy) Validate() error {
                        }
                }
        }
-       if !(this.DateTime > 1564050341) {
-               return 
github_com_mwitkow_go_proto_validators.FieldError("DateTime", fmt.Errorf(`value 
'%v' must be greater than '1564050341'`, this.DateTime))
+       if this.UpdatedAt != nil {
+               if err := 
github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.UpdatedAt); 
err != nil {
+                       return 
github_com_mwitkow_go_proto_validators.FieldError("UpdatedAt", err)
+               }
        }
-       if !(this.DateTime < 32521429541) {
-               return 
github_com_mwitkow_go_proto_validators.FieldError("DateTime", fmt.Errorf(`value 
'%v' must be less than '32521429541'`, this.DateTime))
+       if this.CreatedAt != nil {
+               if err := 
github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.CreatedAt); 
err != nil {
+                       return 
github_com_mwitkow_go_proto_validators.FieldError("CreatedAt", err)
+               }
        }
        return nil
 }
 func (this *SharingGroup) Validate() error {
-       for _, item := range this.Ids {
+       for _, item := range this.IDs {
                if item != nil {
                        if err := 
github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
-                               return 
github_com_mwitkow_go_proto_validators.FieldError("Ids", err)
+                               return 
github_com_mwitkow_go_proto_validators.FieldError("IDs", err)
                        }
                }
        }
+       if this.TimeStamp != nil {
+               if err := 
github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.TimeStamp); 
err != nil {
+                       return 
github_com_mwitkow_go_proto_validators.FieldError("TimeStamp", err)
+               }
+       }
        return nil
 }
 func (this *Identity) Validate() error {
+       if this.TimeStamp != nil {
+               if err := 
github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.TimeStamp); 
err != nil {
+                       return 
github_com_mwitkow_go_proto_validators.FieldError("TimeStamp", err)
+               }
+       }
        return nil
 }
 func (this *PlainTestMessage1) Validate() error {
diff --git a/libs/documents/policy_test.go b/libs/documents/policy_test.go
index a0dbdff..3c5164d 100644
--- a/libs/documents/policy_test.go
+++ b/libs/documents/policy_test.go
@@ -9,9 +9,12 @@ import (
        "github.com/stretchr/testify/assert"
 )
 
+func Test_a(t *testing.T) {
+
+}
+
 //Test_PolicyReadSamples - read in sample JSON polcies and ensure they are 
correctly
 //parsed into JSON and then Protobuffer formats
-
 func Test_PolicyReadSamples(t *testing.T) {
        var policy *Policy
        var err error
diff --git a/pkg/api/proto.go b/pkg/api/proto.go
index 52ed9bf..9c960fe 100644
--- a/pkg/api/proto.go
+++ b/pkg/api/proto.go
@@ -172,55 +172,56 @@ type StatusResponse struct {
 
 //Policy - JSON polciy definition
 type Policy struct {
+       Example string `json:"example" protobuf:"name=Example"`
        // WalletRef is the customer ref ID for the wallet
-       WalletRef string `json:"walletRef"`
+       WalletRef string `json:"walletRef"  protobuf:"name=WalletRef"`
        // NodeID as provided by the customer registration
-       NodeID string `json:"nodeId"`
+       NodeID string `json:"nodeId" protobuf:"name=NodeID"`
        // coinType is the coin type
        // 0 - Bitcoin
        // 1 - Bitcoin test
-       CoinType int `json:"coin"`
+       CoinType int `json:"coin" protobuf:"name=CoinType"`
        // Sharing groups. Each group defines a list of identities.
        // The leader and the node are added automatically.
-       SharingGroups []SharingGroup `json:"sharingGroups"`
+       SharingGroups []SharingGroup `json:"sharingGroups" 
protobuf:"name=SharingGroups"`
        // The number of participants
-       ParticipantCount uint `json:"participantCount"`
+       ParticipantCount uint `json:"participantCount" 
protobuf:"name=ParticipantCount"`
        // The required number of signatures
-       Threshold uint `json:"threshold"`
+       Threshold uint `json:"threshold" protobuf:"name=Threshold"`
        // Slice that points to signer's keys
-       Signers []uint `json:"signers"`
+       Signers []uint `json:"signers" protobuf:"name=Signers"`
        //Public Address for deposit
-       PublicAddress string `json:"publicaddress"`
+       PublicAddress string `json:"publicaddress" 
protobuf:"name=PublicAddress"`
        //The beneficiary who is able to spend
-       BeneficiaryDocID string `json:"beneficiarydocid"`
+       BeneficiaryDocID string `json:"beneficiarydocid" 
protobuf:"name=BeneficiaryDocCID"`
        //TimeStamps
-       CreatedAt time.Time `json:"createdAt"`
-       UpdatedAt time.Time `json:"updatedAt"`
+       CreatedAt time.Time `json:"createdAt" protobuf:"name=CreatedAt"`
+       UpdatedAt time.Time `json:"updatedAt" protobuf:"name=UpdatedAt"`
 }
 
 // SharingGroup defines a list of identities that will hold
 // the secret after split
 type SharingGroup struct {
-       GroupID   int        `json:"groupId"`
-       GroupRef  string     `json:"groupref"`
-       IDs       []Identity `json:"ids"`
-       Threshold int        `json:"threshold"`
+       GroupID   int        `json:"groupId" protobuf:"name=GroupID"`
+       GroupRef  string     `json:"groupref" protobuf:"name=GroupRef"`
+       IDs       []Identity `json:"ids" protobuf:"name=IDs"`
+       Threshold int        `json:"threshold" protobuf:"name=Threshold"`
        //Temporary store of pSig during withdrawal
-       Signature []byte    `json:"signature,omitempty"`
-       TimeStamp time.Time `json:"timeStamp"`
-       Status    string    `json:"status"`
+       Signature []byte    `json:"signature,omitempty" 
protobuf:"name=Signature"`
+       TimeStamp time.Time `json:"timeStamp" protobuf:"name=TimeStamp"`
+       Status    string    `json:"status" protobuf:"name=Status"`
 }
 
 // Identity of a sharing group
 type Identity struct {
        // ID is a verifiable identity of IDType
-       ID string `json:"id"`
+       ID string `json:"id" protobuf:"name=ID"`
        // IDRef is the identity reference
-       IDRef string `json:"idRef"`
+       IDRef string `json:"idRef" protobuf:"name=IDRef"`
        // IDType is the identity type, e.g. "phone"
-       IDType string `json:"idType"`
+       IDType string `json:"idType" protobuf:"name=IDType"`
        //Temporary store of vss shares during withdrawal
-       Share     []byte    `json:"share,omitempty"`
-       Status    string    `json:"status"`
-       TimeStamp time.Time `json:"timeStamp"`
+       Share     []byte    `json:"share,omitempty" protobuf:"name=Share"`
+       Status    string    `json:"status" protobuf:"name=Status"`
+       TimeStamp time.Time `json:"timeStamp" protobuf:"name=TimeStamp"`
 }
diff --git a/pkg/common/common.go b/pkg/common/common.go
index 3105cf8..cd9bb7d 100644
--- a/pkg/common/common.go
+++ b/pkg/common/common.go
@@ -22,11 +22,14 @@ package common
 
 import (
        "encoding/hex"
+       "encoding/json"
        "fmt"
        "io"
        "sync"
        "time"
 
+       "github.com/gogo/protobuf/jsonpb"
+
        "github.com/apache/incubator-milagro-dta/libs/cryptowallet"
        "github.com/apache/incubator-milagro-dta/libs/datastore"
        "github.com/apache/incubator-milagro-dta/libs/documents"
@@ -47,12 +50,21 @@ type IdentitySecrets struct {
 }
 
 // CreateNewDepositOrder - Generate an empty new Deposit Order with random 
reference
-func CreateNewDepositOrder(BeneficiaryIDDocumentCID string, nodeID string, 
policy api.Policy) (*documents.OrderDoc, error) {
+func CreateNewDepositOrder(BeneficiaryIDDocumentCID string, nodeID string, 
jsonPolicy api.Policy) (*documents.OrderDoc, error) {
        //Create a reference for this order
        reference, err := uuid.NewUUID()
        if err != nil {
                return nil, err
        }
+
+       //Generate ProtoBuffer Version of the Policy from the JSON version
+       policy := &documents.Policy{}
+       policyJSONString, err := json.Marshal(jsonPolicy)
+       err = jsonpb.UnmarshalString(string(policyJSONString), policy)
+       if err != nil {
+               return nil, errors.Wrap(err, "Invalid Policy")
+       }
+
        order := documents.NewOrderDoc()
        //oder.Type will be used to extend the things that an order can do.
        order.Type = "Safeguard_Secret"
@@ -60,6 +72,7 @@ func CreateNewDepositOrder(BeneficiaryIDDocumentCID string, 
nodeID string, polic
        order.Reference = reference.String()
        order.BeneficiaryCID = BeneficiaryIDDocumentCID
        order.Timestamp = time.Now().Unix()
+       order.Policy = policy
        return &order, nil
 }
 

Reply via email to