Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Changes in the implementation and Gateway for model-treatment added #5

Open
wants to merge 53 commits into
base: main
Choose a base branch
from
Open
Changes from 1 commit
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
f99341f
Changes for contract jwt
educanovas93 Jun 26, 2024
adaa013
Sign and Verification of JWTContracts for REAR Integration working
educanovas93 Jul 9, 2024
f8c211a
Adding property verified Chain
educanovas93 Jul 9, 2024
ab4f979
Comments
educanovas93 Jul 31, 2024
3846c71
Add fabric directory and new smart contracts
aariasOdinS Sep 16, 2024
b221194
Add functionality to request XACML authorization after VP verification
aariasOdinS Sep 16, 2024
6e97ded
fix
educanovas93 Sep 16, 2024
8c35a90
idproofs working well with automatic setup when requesting a credential
educanovas93 Sep 19, 2024
c83de96
Duplicate DID creation with same store name controlled
educanovas93 Sep 23, 2024
09a2bb9
Using fabric as local copy in the repository in order to develop smar…
educanovas93 Oct 11, 2024
555688a
Removed problematic fabric-samples directory
educanovas93 Oct 11, 2024
5c45f2a
Adding fabric as a regular folder
educanovas93 Oct 11, 2024
54ce6ad
Add API REST server for Blockchain
aariasOdinS Oct 21, 2024
1e20464
Update REST API
aariasOdinS Oct 23, 2024
4681380
Add XACML for XADATU project
aariasOdinS Oct 23, 2024
f179e4a
Update README
aariasOdinS Oct 23, 2024
c550862
Minor fixes
aariasOdinS Oct 23, 2024
d1ec844
Minor fix README xacml-xadatu
aariasOdinS Oct 23, 2024
d9cec8c
Gateway node changes
educanovas93 Oct 23, 2024
2817484
deleted chainrest zip
educanovas93 Oct 23, 2024
4c35f26
using go gateway
educanovas93 Oct 23, 2024
72e85da
Add Access Token generation after VP verification
aariasOdinS Oct 31, 2024
3cc0bd4
Model updates smart contract and fabric gateway correctly added and w…
Oct 31, 2024
95fa27d
Refactor for aggregated models
Oct 31, 2024
23895f5
Separating in two smart contracts for the model aggregation and the b…
Nov 5, 2024
4dbed73
working with vector, testing mock dht retrieved data with aggregation…
Nov 6, 2024
b891913
Changing Matrix dimnensions and testing
Nov 12, 2024
0af5598
Update XACML authorization request registration
aariasOdinS Nov 14, 2024
5d2c9c3
Update XACML Dockerfile
aariasOdinS Nov 14, 2024
23ab184
Add PEP-Proxy component and documentation
aariasOdinS Nov 15, 2024
1cd11f2
Minor fixes
aariasOdinS Nov 15, 2024
186ce8e
Deleting chainrest javascript API
Nov 18, 2024
8e3b37e
fixing dependencies between the new implementatioons
Nov 18, 2024
a038667
Modify .env PEP-Proxy
aariasOdinS Nov 18, 2024
4acf382
README gateway for model treatment updated
Nov 18, 2024
8d70ba8
Working in FLUIDOS-Y2-DEMO
Nov 25, 2024
412773a
Added README of demo workflow
Dec 2, 2024
001e511
Update READMEs
aariasOdinS Dec 3, 2024
a2ca8bc
Minor fixes
aariasOdinS Dec 3, 2024
726b7a2
Update README
aariasOdinS Dec 3, 2024
aecf482
XADATU integration in the demo for the review
aariasOdinS Dec 16, 2024
7634a09
Update XADATU integration for review demo
aariasOdinS Dec 17, 2024
8cd1e80
Update review demo README
aariasOdinS Dec 17, 2024
2186227
Minor fixes
aariasOdinS Dec 17, 2024
2f12123
Update REAR PORT in README
aariasOdinS Dec 18, 2024
dca3967
Add new endpoints for querying authorization requests
aariasOdinS Jan 14, 2025
b9110f3
Add Deliverables and demo video
aariasOdinS Jan 31, 2025
2a060f0
Change Deliverables name
aariasOdinS Jan 31, 2025
b11f9b7
Minor fixes
aariasOdinS Jan 31, 2025
3197b0f
Changes for demo UMU-OpenCall
educanovas93 Feb 17, 2025
6cd9cb8
Merge branch 'opencall-XADATU' of github.com:fluidos-project/idm-flui…
educanovas93 Feb 17, 2025
3413e28
changes
educanovas93 Mar 7, 2025
0d56b89
Changes from merge
educanovas93 Mar 7, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Changing Matrix dimnensions and testing
  • Loading branch information
eduardo committed Nov 12, 2024
commit b89191373791db97aeb969987c9ded3ab35262d0
Original file line number Diff line number Diff line change
@@ -14,14 +14,14 @@ type ModelAggregationContract struct {

// AggregateModelTransaction represents a transaction in the blockchain
type AggregateModelTransaction struct {
ID string `json:"id"`
Data []interface{} `json:"data"`
BaseModel string `json:"baseModel"`
BaseModelVersion string `json:"baseModelVersion"`
Date string `json:"date"`
NodeDID string `json:"nodeDID"`
SignedProof string `json:"signedProof"`
ModelsRef []string `json:"modelsRef"`
ID string `json:"id"`
Data []interface{} `json:"data"`
BaseModel string `json:"baseModel"`
BaseModelVersion string `json:"baseModelVersion"`
Date string `json:"date"`
NodeDID string `json:"nodeDID"`
SignedProof string `json:"signedProof"`
ModelsRef []string `json:"modelsRef"`
}

// CalculationResponse represents the response for model aggregation
@@ -35,53 +35,61 @@ type CalculationResponse struct {

// MockModelData represents a model from DHT with weights and ID
type MockModelData struct {
Weights []interface{}
Weights [][]float64
DHTID string
}

// calculateModelUpdate computes the difference between two matrices
func calculateModelUpdate(modelWeights, sourceWeights []interface{}) ([]float64, error) {
var update []float64
for i := 0; i < len(modelWeights); i++ {
weight1, ok1 := modelWeights[i].(float64)
weight2, ok2 := sourceWeights[i].(float64)
if !ok1 || !ok2 {
return nil, fmt.Errorf("invalid matrix value type at index %d", i)
func calculateModelUpdate(modelWeights, sourceWeights [][]float64) ([][]float64, error) {
if len(modelWeights) != len(sourceWeights) {
return nil, fmt.Errorf("mismatched matrix dimensions")
}

update := make([][]float64, len(modelWeights))
for i := range modelWeights {
if len(modelWeights[i]) != len(sourceWeights[i]) {
return nil, fmt.Errorf("mismatched row dimensions at index %d", i)
}
update[i] = make([]float64, len(modelWeights[i]))
for j := range modelWeights[i] {
update[i][j] = modelWeights[i][j] - sourceWeights[i][j]
}
update = append(update, weight1-weight2)
}
return update, nil
}

// calculateAveragedUpdate computes the average of multiple model updates
func calculateAveragedUpdate(updates [][]float64) []float64 {
if len(updates) == 0 {
func calculateAveragedUpdate(updates [][][]float64) [][]float64 {
if len(updates) == 0 || len(updates[0]) == 0 {
return nil
}

resultLen := len(updates[0])
result := make([]float64, resultLen)

for i := 0; i < resultLen; i++ {
sum := 0.0
for _, update := range updates {
sum += update[i]
rows, cols := len(updates[0]), len(updates[0][0])
result := make([][]float64, rows)
for i := range result {
result[i] = make([]float64, cols)
for j := range result[i] {
sum := 0.0
for _, update := range updates {
sum += update[i][j]
}
result[i][j] = sum / float64(len(updates))
}
result[i] = sum / float64(len(updates))
}

return result
}

// calculateGlobalWeights computes final weights
func calculateGlobalWeights(averagedUpdate []float64, sourceWeights []interface{}) ([]float64, error) {
var result []float64
for i := 0; i < len(sourceWeights); i++ {
sourceWeight, ok := sourceWeights[i].(float64)
if !ok {
return nil, fmt.Errorf("invalid source weight type at index %d", i)
func calculateGlobalWeights(averagedUpdate [][]float64, sourceWeights [][]float64) ([][]float64, error) {
result := make([][]float64, len(sourceWeights))
for i := range sourceWeights {
if len(sourceWeights[i]) != len(averagedUpdate[i]) {
return nil, fmt.Errorf("mismatched row dimensions at index %d", i)
}
result[i] = make([]float64, len(sourceWeights[i]))
for j := range sourceWeights[i] {
result[i][j] = sourceWeights[i][j] + averagedUpdate[i][j]
}
result = append(result, sourceWeight+averagedUpdate[i])
}
return result, nil
}
@@ -96,10 +104,14 @@ func generateMockWeights(length int) []interface{} {
}

// generateMockModelData creates mock weights and DHTID for testing
func generateMockModelData(baseModel string, length int, index int) MockModelData {
weights := make([]interface{}, length)
for i := 0; i < length; i++ {
weights[i] = float64(i) * 0.1 // Mock values
func generateMockModelData(baseModel string, sourceData [][]float64, index int) MockModelData {
rows, cols := len(sourceData), len(sourceData[0])
weights := make([][]float64, rows)
for i := range weights {
weights[i] = make([]float64, cols)
for j := range weights[i] {
weights[i][j] = float64(i*cols+j) * 0.1 * float64(index)
}
}

return MockModelData{
@@ -137,6 +149,27 @@ func (s *ModelAggregationContract) InitLedger(ctx contractapi.TransactionContext
return nil
}

// Convert []interface{} to [][]float64
func convertToFloat64Matrix(data []interface{}) ([][]float64, error) {
matrix := make([][]float64, len(data))
for i, row := range data {
floatRow, ok := row.([]interface{})
if !ok {
return nil, fmt.Errorf("row %d is not of type []interface{}", i)
}
floatRowConverted := make([]float64, len(floatRow))
for j, val := range floatRow {
floatVal, ok := val.(float64)
if !ok {
return nil, fmt.Errorf("value at row %d, column %d is not of type float64", i, j)
}
floatRowConverted[j] = floatVal
}
matrix[i] = floatRowConverted
}
return matrix, nil
}

// AggregateModel creates a new aggregated model in the ledger
func (s *ModelAggregationContract) AggregateModel(ctx contractapi.TransactionContextInterface, data []interface{}, baseModel string, baseModelVersion string, date string, nodeDID string, signedProof string) (*CalculationResponse, error) {
id := fmt.Sprintf("%s_%s:%s", baseModel, baseModelVersion, date)
@@ -153,19 +186,25 @@ func (s *ModelAggregationContract) AggregateModel(ctx contractapi.TransactionCon
return nil, fmt.Errorf("data matrix cannot be nil")
}

// Convert data to [][]float64
floatData, err := convertToFloat64Matrix(data)
if err != nil {
return nil, err
}

// Mock DHT retrieval of other model weights with their IDs
mockModels := []MockModelData{
generateMockModelData(baseModel, len(data), 1),
generateMockModelData(baseModel, len(data), 2),
generateMockModelData(baseModel, len(data), 3),
generateMockModelData(baseModel, floatData, 1),
generateMockModelData(baseModel, floatData, 2),
generateMockModelData(baseModel, floatData, 3),
}

// Calculate updates for each model
var modelUpdates [][]float64
var modelUpdates [][][]float64
var modelsRef []string // Store DHT IDs of participating models

for _, model := range mockModels {
update, err := calculateModelUpdate(model.Weights, data)
update, err := calculateModelUpdate(model.Weights, floatData)
if err != nil {
return nil, fmt.Errorf("error calculating model update for model %s: %v", model.DHTID, err)
}
@@ -177,7 +216,7 @@ func (s *ModelAggregationContract) AggregateModel(ctx contractapi.TransactionCon
averagedUpdate := calculateAveragedUpdate(modelUpdates)

// Calculate global weights
globalWeights, err := calculateGlobalWeights(averagedUpdate, data)
globalWeights, err := calculateGlobalWeights(averagedUpdate, floatData)
if err != nil {
return nil, fmt.Errorf("error calculating global weights: %v", err)
}
@@ -190,14 +229,14 @@ func (s *ModelAggregationContract) AggregateModel(ctx contractapi.TransactionCon

// Create and store transaction
transaction := AggregateModelTransaction{
ID: id,
Data: globalWeightsInterface,
BaseModel: baseModel,
ID: id,
Data: globalWeightsInterface,
BaseModel: baseModel,
BaseModelVersion: baseModelVersion,
Date: date,
NodeDID: nodeDID,
SignedProof: signedProof,
ModelsRef: modelsRef,
Date: date,
NodeDID: nodeDID,
SignedProof: signedProof,
ModelsRef: modelsRef,
}

transactionJSON, err := json.Marshal(transaction)
12 changes: 6 additions & 6 deletions modules/model-gateway/api-rest/web/handler_model_aggregation.go
Original file line number Diff line number Diff line change
@@ -9,12 +9,12 @@ import (
)

type AggregateModelRequest struct {
Data []interface{} `json:"data"`
BaseModel string `json:"baseModel"`
BaseModelVersion string `json:"baseModelVersion"`
Date string `json:"date"`
NodeDID string `json:"nodeDID"`
SignedProof string `json:"signedProof"`
Data [][]float64 `json:"data"`
BaseModel string `json:"baseModel"`
BaseModelVersion string `json:"baseModelVersion"`
Date string `json:"date"`
NodeDID string `json:"nodeDID"`
SignedProof string `json:"signedProof"`
}

type CalculationResponse struct {
10 changes: 8 additions & 2 deletions modules/model-gateway/application-gateway/model_aggregation.go
Original file line number Diff line number Diff line change
@@ -5,7 +5,13 @@ import (
"fmt"
)

func AggregateModel(data []interface{}, baseModel string, baseModelVersion string, date string, nodeDID string, signedProof string) (string, error) {
func AggregateModel(data [][]float64, baseModel string, baseModelVersion string, date string, nodeDID string, signedProof string) (string, error) {
// Convert [][]float64 to []interface{} for chaincode
dataInterface := make([]interface{}, len(data))
for i, row := range data {
dataInterface[i] = row
}

if err := InitializeConnection(); err != nil {
return "", fmt.Errorf("failed to initialize blockchain connection: %v", err)
}
@@ -14,7 +20,7 @@ func AggregateModel(data []interface{}, baseModel string, baseModelVersion strin
network := gateway.GetNetwork("mychannel")
contract := network.GetContract("model-aggregation")

dataBytes, err := json.Marshal(data)
dataBytes, err := json.Marshal(dataInterface)
if err != nil {
return "", fmt.Errorf("failed to marshal data: %v", err)
}
16 changes: 8 additions & 8 deletions modules/model-gateway/certs/ca.crt
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICJjCCAc2gAwIBAgIUNCwDjARYxvk7emCqnxSegV64egcwCgYIKoZIzj0EAwIw
MIICJzCCAc2gAwIBAgIUfL1BqWVeiUyai+PMvmnJrVuOYScwCgYIKoZIzj0EAwIw
cDELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMQ8wDQYDVQQH
EwZEdXJoYW0xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
Lm9yZzEuZXhhbXBsZS5jb20wHhcNMjQxMTA2MTcwNjAwWhcNMzkxMTAzMTcwNjAw
Lm9yZzEuZXhhbXBsZS5jb20wHhcNMjQxMTEyMTU1NDAwWhcNMzkxMTA5MTU1NDAw
WjBwMQswCQYDVQQGEwJVUzEXMBUGA1UECBMOTm9ydGggQ2Fyb2xpbmExDzANBgNV
BAcTBkR1cmhhbTEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMT
Y2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABENr
KhOmCq/xKBKXgGpZx2woRxb4Ml8TtHzripV+nIwACpZX6Y1pEDtsCABU6BWkgc34
P6M81QXNwA4Aw4vE+qWjRTBDMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAG
AQH/AgEBMB0GA1UdDgQWBBRrjJtm/J8OL7WlAP5olXahL+pB3DAKBggqhkjOPQQD
AgNHADBEAiAdX6Xfav46ODhgnBDCpbn+dsO2/jZkXmngk0s+Z4rN/gIgPdpuI2kD
Gc128blJaSc83vjwlNWjvsRtGiS3HBgCcNI=
Y2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABC8K
gPsxpmyMVC4oMok3efY80JBYgqlAgw0JX4MC3Lxunb5+/rhejocMSRQasJ2birqb
v4TQozKQl4ulXZuzvgejRTBDMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAG
AQH/AgEBMB0GA1UdDgQWBBQtMQ51BoU11Ff2P5LvwGm1KjTIbzAKBggqhkjOPQQD
AgNIADBFAiEAwGOzZHSUIcYzPuYL0K2qEEyA8AyoBXqXxQxX5l3ate0CIEMlOnw0
fnBgA6pFEEuwJSndK8ot+0OAK538s0FV4Emb
-----END CERTIFICATE-----
16 changes: 8 additions & 8 deletions modules/model-gateway/certs/cert.pem
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
-----BEGIN CERTIFICATE-----
MIICmzCCAkGgAwIBAgIUGdzQb2fblEA+O0CW6FbL6I20YcMwCgYIKoZIzj0EAwIw
MIICmzCCAkGgAwIBAgIUbdzeiK2F0mq4HnJVoSokQpNbJ5YwCgYIKoZIzj0EAwIw
cDELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMQ8wDQYDVQQH
EwZEdXJoYW0xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
Lm9yZzEuZXhhbXBsZS5jb20wHhcNMjQxMTA2MTcwNjAwWhcNMjUxMTA2MTcxMTAw
Lm9yZzEuZXhhbXBsZS5jb20wHhcNMjQxMTEyMTU1NDAwWhcNMjUxMTEyMTU1OTAw
WjBdMQswCQYDVQQGEwJVUzEXMBUGA1UECBMOTm9ydGggQ2Fyb2xpbmExFDASBgNV
BAoTC0h5cGVybGVkZ2VyMQ8wDQYDVQQLEwZjbGllbnQxDjAMBgNVBAMTBXVzZXIx
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5VWlEujcJhoVNVGehMtrxStzaiZQ
EcxlvoEfDxP4SfysEmhRnNjuCRBHiXW/0CAhsv6Gm1EvX4xOMqQjzBL/fKOByzCB
yDAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUzjGl5bqF
8KELz/uJQ1S4ubXZQzkwHwYDVR0jBBgwFoAUa4ybZvyfDi+1pQD+aJV2oS/qQdww
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEjpluhtjqwIaPdLV6mp6mU1jTUXV4
ussszgLtlYNWAqWLM2JDnZUawNvv00krgGApZpJJSbJyfyfFn1ieHHOEuqOByzCB
yDAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQU1T8Coib2
JFIUT7MTEKlJ/8JUuI8wHwYDVR0jBBgwFoAULTEOdQaFNdRX9j+S78BptSo0yG8w
DgYDVR0RBAcwBYIDaWRtMFgGCCoDBAUGBwgBBEx7ImF0dHJzIjp7ImhmLkFmZmls
aWF0aW9uIjoiIiwiaGYuRW5yb2xsbWVudElEIjoidXNlcjEiLCJoZi5UeXBlIjoi
Y2xpZW50In19MAoGCCqGSM49BAMCA0gAMEUCIQCeIyulhmd5BWtVwCMmH+INkVG9
gdCAlmGprJBEGHUXAgIgAxasEhUJZzU46mKFszynI5dMReAvomN9UqA3jhsoNGo=
Y2xpZW50In19MAoGCCqGSM49BAMCA0gAMEUCIQCJBdOPQ4SS+xVPH2pAmqUEQVqo
lBg4QiIZENJ12AMQtQIgUyQPpGsqornHyJ7l4fUqOPhSSeHFtCZ2b0GPjPcdP3A=
-----END CERTIFICATE-----

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgom508d1kzqdv3IMN
BF7NaAS+EO5se/qauyR0jyR98WShRANCAASOmW6G2OrAho90tXqanqZTWNNRdXi6
yyzOAu2Vg1YCpYszYkOdlRrA2+/TSSuAYClmkklJsnJ/J8WfWJ4cc4S6
-----END PRIVATE KEY-----
6 changes: 3 additions & 3 deletions test/bdd/fixtures/agent-rest/data/connection-profile.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{"identity":{"pub":"-----BEGIN CERTIFICATE-----\nMIICmzCCAkGgAwIBAgIUGdzQb2fblEA+O0CW6FbL6I20YcMwCgYIKoZIzj0EAwIw\ncDELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMQ8wDQYDVQQH\nEwZEdXJoYW0xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjQxMTA2MTcwNjAwWhcNMjUxMTA2MTcxMTAw\nWjBdMQswCQYDVQQGEwJVUzEXMBUGA1UECBMOTm9ydGggQ2Fyb2xpbmExFDASBgNV\nBAoTC0h5cGVybGVkZ2VyMQ8wDQYDVQQLEwZjbGllbnQxDjAMBgNVBAMTBXVzZXIx\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5VWlEujcJhoVNVGehMtrxStzaiZQ\nEcxlvoEfDxP4SfysEmhRnNjuCRBHiXW/0CAhsv6Gm1EvX4xOMqQjzBL/fKOByzCB\nyDAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUzjGl5bqF\n8KELz/uJQ1S4ubXZQzkwHwYDVR0jBBgwFoAUa4ybZvyfDi+1pQD+aJV2oS/qQdww\nDgYDVR0RBAcwBYIDaWRtMFgGCCoDBAUGBwgBBEx7ImF0dHJzIjp7ImhmLkFmZmls\naWF0aW9uIjoiIiwiaGYuRW5yb2xsbWVudElEIjoidXNlcjEiLCJoZi5UeXBlIjoi\nY2xpZW50In19MAoGCCqGSM49BAMCA0gAMEUCIQCeIyulhmd5BWtVwCMmH+INkVG9\ngdCAlmGprJBEGHUXAgIgAxasEhUJZzU46mKFszynI5dMReAvomN9UqA3jhsoNGo=\n-----END CERTIFICATE-----\n","priv":"-----BEGIN PRIVATE KEY-----\nMIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgDiBKytGXoVWvu/7A\nobYbIe/QamJqwPQ0mHKXnyySNyWhRANCAATlVaUS6NwmGhU1UZ6Ey2vFK3NqJlAR\nzGW+gR8PE/hJ/KwSaFGc2O4JEEeJdb/QICGy/oabUS9fjE4ypCPMEv98\n-----END PRIVATE KEY-----\n"},"connection-profile":
{"identity":{"pub":"-----BEGIN CERTIFICATE-----\nMIICmzCCAkGgAwIBAgIUbdzeiK2F0mq4HnJVoSokQpNbJ5YwCgYIKoZIzj0EAwIw\ncDELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMQ8wDQYDVQQH\nEwZEdXJoYW0xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjQxMTEyMTU1NDAwWhcNMjUxMTEyMTU1OTAw\nWjBdMQswCQYDVQQGEwJVUzEXMBUGA1UECBMOTm9ydGggQ2Fyb2xpbmExFDASBgNV\nBAoTC0h5cGVybGVkZ2VyMQ8wDQYDVQQLEwZjbGllbnQxDjAMBgNVBAMTBXVzZXIx\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEjpluhtjqwIaPdLV6mp6mU1jTUXV4\nussszgLtlYNWAqWLM2JDnZUawNvv00krgGApZpJJSbJyfyfFn1ieHHOEuqOByzCB\nyDAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQU1T8Coib2\nJFIUT7MTEKlJ/8JUuI8wHwYDVR0jBBgwFoAULTEOdQaFNdRX9j+S78BptSo0yG8w\nDgYDVR0RBAcwBYIDaWRtMFgGCCoDBAUGBwgBBEx7ImF0dHJzIjp7ImhmLkFmZmls\naWF0aW9uIjoiIiwiaGYuRW5yb2xsbWVudElEIjoidXNlcjEiLCJoZi5UeXBlIjoi\nY2xpZW50In19MAoGCCqGSM49BAMCA0gAMEUCIQCJBdOPQ4SS+xVPH2pAmqUEQVqo\nlBg4QiIZENJ12AMQtQIgUyQPpGsqornHyJ7l4fUqOPhSSeHFtCZ2b0GPjPcdP3A=\n-----END CERTIFICATE-----\n","priv":"-----BEGIN PRIVATE KEY-----\nMIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgom508d1kzqdv3IMN\nBF7NaAS+EO5se/qauyR0jyR98WShRANCAASOmW6G2OrAho90tXqanqZTWNNRdXi6\nyyzOAu2Vg1YCpYszYkOdlRrA2+/TSSuAYClmkklJsnJ/J8WfWJ4cc4S6\n-----END PRIVATE KEY-----\n"},"connection-profile":
{
"name": "test-network-org1",
"version": "1.0.0",
@@ -27,7 +27,7 @@
"peer0.org1.example.com": {
"url": "grpcs://peer0.org1.example.com:7051",
"tlsCACerts": {
"pem": "-----BEGIN CERTIFICATE-----\nMIICJjCCAc2gAwIBAgIUNCwDjARYxvk7emCqnxSegV64egcwCgYIKoZIzj0EAwIw\ncDELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMQ8wDQYDVQQH\nEwZEdXJoYW0xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjQxMTA2MTcwNjAwWhcNMzkxMTAzMTcwNjAw\nWjBwMQswCQYDVQQGEwJVUzEXMBUGA1UECBMOTm9ydGggQ2Fyb2xpbmExDzANBgNV\nBAcTBkR1cmhhbTEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMT\nY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABENr\nKhOmCq/xKBKXgGpZx2woRxb4Ml8TtHzripV+nIwACpZX6Y1pEDtsCABU6BWkgc34\nP6M81QXNwA4Aw4vE+qWjRTBDMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAG\nAQH/AgEBMB0GA1UdDgQWBBRrjJtm/J8OL7WlAP5olXahL+pB3DAKBggqhkjOPQQD\nAgNHADBEAiAdX6Xfav46ODhgnBDCpbn+dsO2/jZkXmngk0s+Z4rN/gIgPdpuI2kD\nGc128blJaSc83vjwlNWjvsRtGiS3HBgCcNI=\n-----END CERTIFICATE-----\n"
"pem": "-----BEGIN CERTIFICATE-----\nMIICJzCCAc2gAwIBAgIUfL1BqWVeiUyai+PMvmnJrVuOYScwCgYIKoZIzj0EAwIw\ncDELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMQ8wDQYDVQQH\nEwZEdXJoYW0xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjQxMTEyMTU1NDAwWhcNMzkxMTA5MTU1NDAw\nWjBwMQswCQYDVQQGEwJVUzEXMBUGA1UECBMOTm9ydGggQ2Fyb2xpbmExDzANBgNV\nBAcTBkR1cmhhbTEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMT\nY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABC8K\ngPsxpmyMVC4oMok3efY80JBYgqlAgw0JX4MC3Lxunb5+/rhejocMSRQasJ2birqb\nv4TQozKQl4ulXZuzvgejRTBDMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAG\nAQH/AgEBMB0GA1UdDgQWBBQtMQ51BoU11Ff2P5LvwGm1KjTIbzAKBggqhkjOPQQD\nAgNIADBFAiEAwGOzZHSUIcYzPuYL0K2qEEyA8AyoBXqXxQxX5l3ate0CIEMlOnw0\nfnBgA6pFEEuwJSndK8ot+0OAK538s0FV4Emb\n-----END CERTIFICATE-----\n"
},
"grpcOptions": {
"ssl-target-name-override": "peer0.org1.example.com",
@@ -40,7 +40,7 @@
"url": "https://ca.org1.example.com:7054",
"caName": "ca-org1",
"tlsCACerts": {
"pem": ["-----BEGIN CERTIFICATE-----\nMIICJjCCAc2gAwIBAgIUNCwDjARYxvk7emCqnxSegV64egcwCgYIKoZIzj0EAwIw\ncDELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMQ8wDQYDVQQH\nEwZEdXJoYW0xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjQxMTA2MTcwNjAwWhcNMzkxMTAzMTcwNjAw\nWjBwMQswCQYDVQQGEwJVUzEXMBUGA1UECBMOTm9ydGggQ2Fyb2xpbmExDzANBgNV\nBAcTBkR1cmhhbTEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMT\nY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABENr\nKhOmCq/xKBKXgGpZx2woRxb4Ml8TtHzripV+nIwACpZX6Y1pEDtsCABU6BWkgc34\nP6M81QXNwA4Aw4vE+qWjRTBDMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAG\nAQH/AgEBMB0GA1UdDgQWBBRrjJtm/J8OL7WlAP5olXahL+pB3DAKBggqhkjOPQQD\nAgNHADBEAiAdX6Xfav46ODhgnBDCpbn+dsO2/jZkXmngk0s+Z4rN/gIgPdpuI2kD\nGc128blJaSc83vjwlNWjvsRtGiS3HBgCcNI=\n-----END CERTIFICATE-----\n"]
"pem": ["-----BEGIN CERTIFICATE-----\nMIICJzCCAc2gAwIBAgIUfL1BqWVeiUyai+PMvmnJrVuOYScwCgYIKoZIzj0EAwIw\ncDELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMQ8wDQYDVQQH\nEwZEdXJoYW0xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjQxMTEyMTU1NDAwWhcNMzkxMTA5MTU1NDAw\nWjBwMQswCQYDVQQGEwJVUzEXMBUGA1UECBMOTm9ydGggQ2Fyb2xpbmExDzANBgNV\nBAcTBkR1cmhhbTEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMT\nY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABC8K\ngPsxpmyMVC4oMok3efY80JBYgqlAgw0JX4MC3Lxunb5+/rhejocMSRQasJ2birqb\nv4TQozKQl4ulXZuzvgejRTBDMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAG\nAQH/AgEBMB0GA1UdDgQWBBQtMQ51BoU11Ff2P5LvwGm1KjTIbzAKBggqhkjOPQQD\nAgNIADBFAiEAwGOzZHSUIcYzPuYL0K2qEEyA8AyoBXqXxQxX5l3ate0CIEMlOnw0\nfnBgA6pFEEuwJSndK8ot+0OAK538s0FV4Emb\n-----END CERTIFICATE-----\n"]
},
"httpOptions": {
"verify": false