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

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


The following commit(s) were added to refs/heads/splitroles-blockchain by this 
push:
     new 6d584af  Bugfix: Add orderref/cid lookup to principal store
6d584af is described below

commit 6d584af7f55adfc7d603640930c5704ff0decb57
Author: Christopher Morris <[email protected]>
AuthorDate: Wed Sep 25 16:13:03 2019 +0100

    Bugfix: Add orderref/cid lookup to principal store
---
 !notes                      |   2 +
 pkg/common/common.go        |  13 ++-
 pkg/defaultservice/order.go | 190 +++++++++++++++++++++++---------------------
 3 files changed, 115 insertions(+), 90 deletions(-)

diff --git a/!notes b/!notes
new file mode 100644
index 0000000..25596f0
--- /dev/null
+++ b/!notes
@@ -0,0 +1,2 @@
+curl -X POST "127.0.0.1:5556/v1/order1" -H "accept: */*" -H "Content-Type: 
application/json" -d 
"{\"beneficiaryIDDocumentCID\":\"\",\"extension\":{\"coin\":\"0\"}}"
+curl -X POST "127.0.0.1:5556/v1/order/secret1" -H "accept: */*" -H 
"Content-Type: application/json" -d 
"{\"orderReference\":\"1daef6ba-df9e-11e9-b3b8-acde48001122\",\"beneficiaryIDDocumentCID\":\"QmcyJqEMqNEEYHrNSyUY83CQCNwZ5yVan3SgaQ4NchsqsC\"}"
\ No newline at end of file
diff --git a/pkg/common/common.go b/pkg/common/common.go
index 9b306a8..91adc16 100644
--- a/pkg/common/common.go
+++ b/pkg/common/common.go
@@ -206,12 +206,23 @@ func WriteOrderToIPFS(nodeID string, ipfs ipfs.Connector, 
store *datastore.Store
 
        //Write order to store
        //orderRef := fmt.Sprintf("order-ref-%s", order.Reference)
-       if err := store.Set("order", order.Reference, ipfsAddress, 
map[string]string{"time": time.Now().UTC().Format(time.RFC3339)}); err != nil {
+       if err := WriteOrderToStore(store, order.Reference, ipfsAddress); err 
!= nil {
                return "", errors.New("Save Order to store")
        }
+
+       // if err := store.Set("order", order.Reference, ipfsAddress, 
map[string]string{"time": time.Now().UTC().Format(time.RFC3339)}); err != nil {
+       //      return "", errors.New("Save Order to store")
+       // }
        return ipfsAddress, nil
 }
 
+func WriteOrderToStore(store *datastore.Store, orderReference string, 
ipfsAddress string) error {
+       if err := store.Set("order", orderReference, ipfsAddress, 
map[string]string{"time": time.Now().UTC().Format(time.RFC3339)}); err != nil {
+               return errors.New("Save Order to store")
+       }
+       return nil
+}
+
 //InitECKeys - generate EC keys using BIP44 HD Wallets (as bitcoin) from seed
 func InitECKeys(seed []byte) ([]byte, error) {
        //EC ADD Keypair Protocol
diff --git a/pkg/defaultservice/order.go b/pkg/defaultservice/order.go
index 9aa2cff..7fcd513 100644
--- a/pkg/defaultservice/order.go
+++ b/pkg/defaultservice/order.go
@@ -122,95 +122,95 @@ func (s *Service) ProduceFinalSecret(seed, sikeSK []byte, 
order, orderPart4 *doc
 }
 
 // OrderSecret -
-func (s *Service) OrderSecret(req *api.OrderSecretRequest) 
(*api.OrderSecretResponse, error) {
-       orderReference := req.OrderReference
-       var orderPart2CID string
-       if err := s.Store.Get("order", orderReference, &orderPart2CID); err != 
nil {
-               return nil, err
-       }
-
-       nodeID := s.NodeID()
-       recipientList, err := common.BuildRecipientList(s.Ipfs, nodeID, 
s.MasterFiduciaryNodeID())
-       if err != nil {
-               return nil, err
-       }
-       remoteIDDoc, err := common.RetrieveIDDocFromIPFS(s.Ipfs, 
s.MasterFiduciaryNodeID())
-       if err != nil {
-               return nil, err
-       }
-
-       _, _, blsSK, sikeSK, err := common.RetrieveIdentitySecrets(s.Store, 
nodeID)
-       if err != nil {
-               return nil, err
-       }
-
-       //Retrieve the order from IPFS
-
-       order, err := common.RetrieveOrderFromIPFS(s.Ipfs, orderPart2CID, 
sikeSK, nodeID, remoteIDDoc.BLSPublicKey)
-       if err != nil {
-               return nil, errors.Wrap(err, "Fail to retrieve Order from IPFS")
-       }
-
-       if err := s.Plugin.ValidateOrderSecretRequest(req, *order); err != nil {
-               return nil, err
-       }
-
-       var beneficiariesSikeSK []byte
-       var beneficiaryCID string
-
-       if req.BeneficiaryIDDocumentCID != "" {
-               beneficiaryCID = req.BeneficiaryIDDocumentCID
-       } else {
-               beneficiaryCID = order.BeneficiaryCID
-       }
-
-       _, beneficiariesSeed, _, beneficiariesSikeSK, err := 
common.RetrieveIdentitySecrets(s.Store, beneficiaryCID)
-       if err != nil {
-               return nil, err
-       }
-
-       //Create a piece of data that is destined for the beneficiary, passed 
via the Master Fiduciary
-
-       beneficiaryEncryptedData, extension, err := 
s.Plugin.ProduceBeneficiaryEncryptedData(blsSK, order, req)
-       if err != nil {
-               return nil, err
-       }
-
-       //Create a request Object in IPFS
-       orderPart3CID, err := common.CreateAndStorePart3(s.Ipfs, s.Store, 
order, orderPart2CID, nodeID, beneficiaryEncryptedData, recipientList)
-       if err != nil {
-               return nil, err
-       }
-
-       //Post the address of the updated doc to the custody node
-       request := &api.FulfillOrderSecretRequest{
-               SenderDocumentCID: nodeID,
-               OrderPart3CID:     orderPart3CID,
-               Extension:         extension,
-       }
-       response, err := s.MasterFiduciaryServer.FulfillOrderSecret(request)
-       if err != nil {
-               return nil, err
-       }
-
-       //Retrieve the response Order from IPFS
-       orderPart4, err := common.RetrieveOrderFromIPFS(s.Ipfs, 
response.OrderPart4CID, sikeSK, nodeID, remoteIDDoc.BLSPublicKey)
-       if err != nil {
-               return nil, err
-       }
-
-       finalPrivateKey, finalPublicKey, ext, err := 
s.Plugin.ProduceFinalSecret(beneficiariesSeed, beneficiariesSikeSK, order, 
orderPart4, beneficiaryCID)
-       if err != nil {
-               return nil, err
-       }
-
-       return &api.OrderSecretResponse{
-               Secret:         finalPrivateKey,
-               Commitment:     finalPublicKey,
-               OrderReference: order.Reference,
-               Extension:      ext,
-       }, nil
-}
+//func (s *Service) OrderSecret(req *api.OrderSecretRequest) 
(*api.OrderSecretResponse, error) {
+// orderReference := req.OrderReference
+// var orderPart2CID string
+// if err := s.Store.Get("order", orderReference, &orderPart2CID); err != nil {
+//     return nil, err
+// }
+
+// nodeID := s.NodeID()
+// recipientList, err := common.BuildRecipientList(s.Ipfs, nodeID, 
s.MasterFiduciaryNodeID())
+// if err != nil {
+//     return nil, err
+// }
+// remoteIDDoc, err := common.RetrieveIDDocFromIPFS(s.Ipfs, 
s.MasterFiduciaryNodeID())
+// if err != nil {
+//     return nil, err
+// }
+
+// _, _, blsSK, sikeSK, err := common.RetrieveIdentitySecrets(s.Store, nodeID)
+// if err != nil {
+//     return nil, err
+// }
+
+// //Retrieve the order from IPFS
+
+// order, err := common.RetrieveOrderFromIPFS(s.Ipfs, orderPart2CID, sikeSK, 
nodeID, remoteIDDoc.BLSPublicKey)
+// if err != nil {
+//     return nil, errors.Wrap(err, "Fail to retrieve Order from IPFS")
+// }
+
+// if err := s.Plugin.ValidateOrderSecretRequest(req, *order); err != nil {
+//     return nil, err
+// }
+
+// var beneficiariesSikeSK []byte
+// var beneficiaryCID string
+
+// if req.BeneficiaryIDDocumentCID != "" {
+//     beneficiaryCID = req.BeneficiaryIDDocumentCID
+// } else {
+//     beneficiaryCID = order.BeneficiaryCID
+// }
+
+// _, beneficiariesSeed, _, beneficiariesSikeSK, err := 
common.RetrieveIdentitySecrets(s.Store, beneficiaryCID)
+// if err != nil {
+//     return nil, err
+// }
+
+// //Create a piece of data that is destined for the beneficiary, passed via 
the Master Fiduciary
+
+// beneficiaryEncryptedData, extension, err := 
s.Plugin.ProduceBeneficiaryEncryptedData(blsSK, order, req)
+// if err != nil {
+//     return nil, err
+// }
+
+// //Create a request Object in IPFS
+// orderPart3CID, err := common.CreateAndStorePart3(s.Ipfs, s.Store, order, 
orderPart2CID, nodeID, beneficiaryEncryptedData, recipientList)
+// if err != nil {
+//     return nil, err
+// }
+
+// //Post the address of the updated doc to the custody node
+// request := &api.FulfillOrderSecretRequest{
+//     SenderDocumentCID: nodeID,
+//     OrderPart3CID:     orderPart3CID,
+//     Extension:         extension,
+// }
+// response, err := s.MasterFiduciaryServer.FulfillOrderSecret(request)
+// if err != nil {
+//     return nil, err
+// }
+
+// //Retrieve the response Order from IPFS
+// orderPart4, err := common.RetrieveOrderFromIPFS(s.Ipfs, 
response.OrderPart4CID, sikeSK, nodeID, remoteIDDoc.BLSPublicKey)
+// if err != nil {
+//     return nil, err
+// }
+
+// finalPrivateKey, finalPublicKey, ext, err := 
s.Plugin.ProduceFinalSecret(beneficiariesSeed, beneficiariesSikeSK, order, 
orderPart4, beneficiaryCID)
+// if err != nil {
+//     return nil, err
+// }
+
+// return &api.OrderSecretResponse{
+//     Secret:         finalPrivateKey,
+//     Commitment:     finalPublicKey,
+//     OrderReference: order.Reference,
+//     Extension:      ext,
+// }, nil
+//}
 
 // Order1 -
 func (s *Service) Order1(req *api.OrderRequest) (string, error) {
@@ -341,11 +341,18 @@ func (s *Service) Order2(req *api.FulfillOrderResponse) 
(string, error) {
                return "", errors.Wrap(err, "Fail to retrieve Order from IPFS")
        }
 
+       //update OrderPartCID for order id
+
        commitment, extension, err := 
s.Plugin.PrepareOrderResponse(updatedOrder, req.Extension, req.Extension)
        if err != nil {
                return "", errors.Wrap(err, "Generating Final Public Key")
        }
 
+       err = common.WriteOrderToStore(s.Store, updatedOrder.Reference, 
req.OrderPart2CID)
+       if err != nil {
+               return "", errors.Wrap(err, "Saving new CID to Order reference")
+       }
+
        response := &api.OrderResponse{
                OrderReference: updatedOrder.Reference,
                Commitment:     commitment,
@@ -390,6 +397,11 @@ func (s *Service) OrderSecret1(req 
*api.OrderSecretRequest) (string, error) {
                return "", err
        }
 
+       // localIDDoc, err := common.RetrieveIDDocFromIPFS(s.Ipfs, s.NodeID())
+       // if err != nil {
+       //      return "", err
+       // }
+
        //Retrieve the order from IPFS
        order, err := common.RetrieveOrderFromIPFS(s.Ipfs, orderPart2CID, 
sikeSK, nodeID, remoteIDDoc.BLSPublicKey)
        if err != nil {

Reply via email to