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 {