mirror of https://github.com/hyperledger/besu
[PAN-2996] Remove enclave public key from parameter (#1789)
Signed-off-by: Adrian Sutton <adrian.sutton@consensys.net>pull/2/head
parent
24bfd2e44a
commit
a6cb8ad985
@ -0,0 +1,48 @@ |
||||
/* |
||||
* Copyright 2019 ConsenSys AG. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with |
||||
* the License. You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on |
||||
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the |
||||
* specific language governing permissions and limitations under the License. |
||||
*/ |
||||
package tech.pegasys.pantheon.tests.acceptance.dsl.transaction.priv; |
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat; |
||||
|
||||
import tech.pegasys.pantheon.tests.acceptance.dsl.transaction.NodeRequests; |
||||
import tech.pegasys.pantheon.tests.acceptance.dsl.transaction.Transaction; |
||||
|
||||
import java.io.IOException; |
||||
import java.util.List; |
||||
|
||||
public class PrivCreatePrivacyGroupTransaction implements Transaction<String> { |
||||
|
||||
private final List<String> addresses; |
||||
private final String name; |
||||
private final String description; |
||||
|
||||
public PrivCreatePrivacyGroupTransaction( |
||||
final List<String> addresses, final String name, final String description) { |
||||
|
||||
this.addresses = addresses; |
||||
this.name = name; |
||||
this.description = description; |
||||
} |
||||
|
||||
@Override |
||||
public String execute(final NodeRequests node) { |
||||
try { |
||||
PrivRequestFactory.PrivCreatePrivacyGroupResponse result = |
||||
node.priv().privCreatePrivacyGroup(addresses, name, description).send(); |
||||
assertThat(result).isNotNull(); |
||||
return result.getResult(); |
||||
} catch (final IOException e) { |
||||
throw new RuntimeException(e); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,43 @@ |
||||
/* |
||||
* Copyright 2019 ConsenSys AG. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with |
||||
* the License. You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on |
||||
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the |
||||
* specific language governing permissions and limitations under the License. |
||||
*/ |
||||
package tech.pegasys.pantheon.tests.acceptance.dsl.transaction.priv; |
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat; |
||||
|
||||
import tech.pegasys.pantheon.tests.acceptance.dsl.transaction.NodeRequests; |
||||
import tech.pegasys.pantheon.tests.acceptance.dsl.transaction.Transaction; |
||||
|
||||
import java.io.IOException; |
||||
import java.util.List; |
||||
|
||||
public class PrivCreatePrivacyGroupWithoutOptionalParamsTransaction implements Transaction<String> { |
||||
|
||||
private final List<String> addresses; |
||||
|
||||
public PrivCreatePrivacyGroupWithoutOptionalParamsTransaction(final List<String> addresses) { |
||||
|
||||
this.addresses = addresses; |
||||
} |
||||
|
||||
@Override |
||||
public String execute(final NodeRequests node) { |
||||
try { |
||||
PrivRequestFactory.PrivCreatePrivacyGroupResponse result = |
||||
node.priv().privCreatePrivacyGroupWithoutOptionalParams(addresses).send(); |
||||
assertThat(result).isNotNull(); |
||||
return result.getResult(); |
||||
} catch (final IOException e) { |
||||
throw new RuntimeException(e); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,44 @@ |
||||
/* |
||||
* Copyright 2019 ConsenSys AG. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with |
||||
* the License. You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on |
||||
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the |
||||
* specific language governing permissions and limitations under the License. |
||||
*/ |
||||
package tech.pegasys.pantheon.tests.acceptance.dsl.transaction.priv; |
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat; |
||||
|
||||
import tech.pegasys.pantheon.enclave.types.PrivacyGroup; |
||||
import tech.pegasys.pantheon.tests.acceptance.dsl.transaction.NodeRequests; |
||||
import tech.pegasys.pantheon.tests.acceptance.dsl.transaction.Transaction; |
||||
|
||||
import java.io.IOException; |
||||
import java.util.List; |
||||
|
||||
public class PrivFindPrivacyGroupTransaction implements Transaction<List<PrivacyGroup>> { |
||||
|
||||
private final List<String> addresses; |
||||
|
||||
public PrivFindPrivacyGroupTransaction(final List<String> addresses) { |
||||
|
||||
this.addresses = addresses; |
||||
} |
||||
|
||||
@Override |
||||
public List<PrivacyGroup> execute(final NodeRequests node) { |
||||
try { |
||||
PrivRequestFactory.PrivFindPrivacyGroupResponse result = |
||||
node.priv().privFindPrivacyGroup(addresses).send(); |
||||
assertThat(result).isNotNull(); |
||||
return result.getResult(); |
||||
} catch (final IOException e) { |
||||
throw new RuntimeException(e); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,73 @@ |
||||
/* |
||||
* Copyright 2019 ConsenSys AG. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with |
||||
* the License. You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on |
||||
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the |
||||
* specific language governing permissions and limitations under the License. |
||||
*/ |
||||
package tech.pegasys.pantheon.tests.acceptance.dsl.transaction.priv; |
||||
|
||||
import tech.pegasys.pantheon.enclave.types.PrivacyGroup; |
||||
|
||||
import java.util.Collections; |
||||
import java.util.List; |
||||
|
||||
import org.assertj.core.util.Lists; |
||||
import org.web3j.protocol.Web3jService; |
||||
import org.web3j.protocol.core.Request; |
||||
import org.web3j.protocol.core.Response; |
||||
import org.web3j.protocol.core.methods.response.EthGetTransactionCount; |
||||
|
||||
public class PrivRequestFactory { |
||||
|
||||
public static class PrivCreatePrivacyGroupResponse extends Response<String> {} |
||||
|
||||
public static class PrivFindPrivacyGroupResponse extends Response<List<PrivacyGroup>> {} |
||||
|
||||
private final Web3jService web3jService; |
||||
|
||||
public PrivRequestFactory(final Web3jService web3jService) { |
||||
this.web3jService = web3jService; |
||||
} |
||||
|
||||
public Request<?, EthGetTransactionCount> privGetTransactionCount( |
||||
final String accountAddress, final String privacyGroupId) { |
||||
return new Request<>( |
||||
"priv_getTransactionCount", |
||||
Lists.newArrayList(accountAddress, privacyGroupId), |
||||
web3jService, |
||||
EthGetTransactionCount.class); |
||||
} |
||||
|
||||
public Request<?, PrivCreatePrivacyGroupResponse> privCreatePrivacyGroup( |
||||
final List<String> addresses, final String name, final String description) { |
||||
return new Request<>( |
||||
"priv_createPrivacyGroup", |
||||
Lists.newArrayList(addresses, name, description), |
||||
web3jService, |
||||
PrivCreatePrivacyGroupResponse.class); |
||||
} |
||||
|
||||
public Request<?, PrivCreatePrivacyGroupResponse> privCreatePrivacyGroupWithoutOptionalParams( |
||||
final List<String> addresses) { |
||||
return new Request<>( |
||||
"priv_createPrivacyGroup", |
||||
Collections.singletonList(addresses), |
||||
web3jService, |
||||
PrivCreatePrivacyGroupResponse.class); |
||||
} |
||||
|
||||
public Request<?, PrivFindPrivacyGroupResponse> privFindPrivacyGroup( |
||||
final List<String> addresses) { |
||||
return new Request<>( |
||||
"priv_findPrivacyGroup", |
||||
Collections.singletonList(addresses), |
||||
web3jService, |
||||
PrivFindPrivacyGroupResponse.class); |
||||
} |
||||
} |
@ -0,0 +1,134 @@ |
||||
/* |
||||
* Copyright 2019 ConsenSys AG. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with |
||||
* the License. You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on |
||||
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the |
||||
* specific language governing permissions and limitations under the License. |
||||
*/ |
||||
package tech.pegasys.pantheon.tests.web3j.privacy; |
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat; |
||||
|
||||
import tech.pegasys.pantheon.enclave.Enclave; |
||||
import tech.pegasys.pantheon.enclave.types.CreatePrivacyGroupRequest; |
||||
import tech.pegasys.pantheon.enclave.types.PrivacyGroup; |
||||
import tech.pegasys.pantheon.tests.acceptance.dsl.privacy.PrivacyAcceptanceTestBase; |
||||
import tech.pegasys.pantheon.tests.acceptance.dsl.privacy.PrivacyNet; |
||||
|
||||
import java.util.List; |
||||
|
||||
import org.junit.Before; |
||||
import org.junit.Test; |
||||
|
||||
public class PrivacyGroupAcceptanceTest extends PrivacyAcceptanceTestBase { |
||||
private static final String CONTRACT_NAME = "Event Emmiter"; |
||||
private EventEmitterHarness eventEmitterHarness; |
||||
private PrivacyGroup privacyGroup; |
||||
private PrivacyNet privacyNet; |
||||
|
||||
@Before |
||||
public void setUp() throws Exception { |
||||
privacyNet = |
||||
PrivacyNet.builder(privacy, privacyPantheon, cluster, false) |
||||
.addMinerNode("Alice") |
||||
.addMinerNode("Bob") |
||||
.addMinerNode("Charlie") |
||||
.build(); |
||||
|
||||
privacyNet.startPrivacyNet(); |
||||
|
||||
final Enclave enclave = |
||||
new Enclave(privacyNet.getNode("Alice").getPrivacyParameters().getEnclaveUri()); |
||||
final String[] addresses = |
||||
privacyNet.getNodes().values().stream() |
||||
.map(privacyNode -> privacyNode.orion.getPublicKeys()) |
||||
.flatMap(List::stream) |
||||
.toArray(String[]::new); |
||||
this.privacyGroup = |
||||
enclave.createPrivacyGroup( |
||||
new CreatePrivacyGroupRequest( |
||||
addresses, |
||||
privacyNet.getNode("Alice").orion.getPublicKeys().get(0), |
||||
"testName", |
||||
"testDesc")); |
||||
|
||||
eventEmitterHarness = |
||||
new EventEmitterHarness( |
||||
privateTransactionBuilder, |
||||
privacyNet, |
||||
privateTransactions, |
||||
privateTransactionVerifier, |
||||
eea); |
||||
} |
||||
|
||||
@Test |
||||
public void nodeCanDeployWithPrivacyGroupId() { |
||||
eventEmitterHarness.deployWithPrivacyGroup( |
||||
CONTRACT_NAME, "Alice", privacyGroup.getPrivacyGroupId(), "Alice", "Bob", "Charlie"); |
||||
} |
||||
|
||||
@Test |
||||
public void nodeCanCreatePrivacyGroup() { |
||||
final String privacyGroupId = |
||||
privacyNet |
||||
.getNode("Alice") |
||||
.execute( |
||||
privateTransactions.createPrivacyGroup( |
||||
List.of( |
||||
privacyNet.getEnclave("Alice").getPublicKeys().get(0), |
||||
privacyNet.getEnclave("Bob").getPublicKeys().get(0)), |
||||
"myGroupName", |
||||
"my group description")); |
||||
|
||||
assertThat(privacyGroupId).isNotNull(); |
||||
|
||||
final List<PrivacyGroup> privacyGroups = |
||||
privacyNet |
||||
.getNode("Alice") |
||||
.execute( |
||||
privateTransactions.findPrivacyGroup( |
||||
List.of( |
||||
privacyNet.getEnclave("Alice").getPublicKeys().get(0), |
||||
privacyNet.getEnclave("Bob").getPublicKeys().get(0)))); |
||||
|
||||
assertThat(privacyGroups.size()).isEqualTo(1); |
||||
assertThat(privacyGroups.get(0).getPrivacyGroupId()).isEqualTo(privacyGroupId); |
||||
assertThat(privacyGroups.get(0).getName()).isEqualTo("myGroupName"); |
||||
assertThat(privacyGroups.get(0).getDescription()).isEqualTo("my group description"); |
||||
assertThat(privacyGroups.get(0).getMembers().length).isEqualTo(2); |
||||
} |
||||
|
||||
@Test |
||||
public void nodeCanCreatePrivacyGroupWithoutOptionalParams() { |
||||
final String privacyGroupId = |
||||
privacyNet |
||||
.getNode("Alice") |
||||
.execute( |
||||
privateTransactions.createPrivacyGroupWithoutOptionalParams( |
||||
List.of( |
||||
privacyNet.getEnclave("Alice").getPublicKeys().get(0), |
||||
privacyNet.getEnclave("Bob").getPublicKeys().get(0)))); |
||||
|
||||
assertThat(privacyGroupId).isNotNull(); |
||||
|
||||
final List<PrivacyGroup> privacyGroups = |
||||
privacyNet |
||||
.getNode("Alice") |
||||
.execute( |
||||
privateTransactions.findPrivacyGroup( |
||||
List.of( |
||||
privacyNet.getEnclave("Alice").getPublicKeys().get(0), |
||||
privacyNet.getEnclave("Bob").getPublicKeys().get(0)))); |
||||
|
||||
assertThat(privacyGroups.size()).isEqualTo(1); |
||||
assertThat(privacyGroups.get(0).getPrivacyGroupId()).isEqualTo(privacyGroupId); |
||||
assertThat(privacyGroups.get(0).getName()).isEqualTo(null); |
||||
assertThat(privacyGroups.get(0).getDescription()).isEqualTo(null); |
||||
assertThat(privacyGroups.get(0).getMembers().length).isEqualTo(2); |
||||
} |
||||
} |
@ -1,71 +0,0 @@ |
||||
/* |
||||
* Copyright 2019 ConsenSys AG. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with |
||||
* the License. You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on |
||||
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the |
||||
* specific language governing permissions and limitations under the License. |
||||
*/ |
||||
package tech.pegasys.pantheon.tests.web3j.privacy; |
||||
|
||||
import tech.pegasys.pantheon.enclave.Enclave; |
||||
import tech.pegasys.pantheon.enclave.types.CreatePrivacyGroupRequest; |
||||
import tech.pegasys.pantheon.enclave.types.PrivacyGroup; |
||||
import tech.pegasys.pantheon.tests.acceptance.dsl.privacy.PrivacyAcceptanceTestBase; |
||||
import tech.pegasys.pantheon.tests.acceptance.dsl.privacy.PrivacyNet; |
||||
|
||||
import java.util.List; |
||||
|
||||
import org.junit.Before; |
||||
import org.junit.Test; |
||||
|
||||
public class PrivacyGroupIdAcceptanceTest extends PrivacyAcceptanceTestBase { |
||||
private static final String CONTRACT_NAME = "Event Emmiter"; |
||||
private EventEmitterHarness eventEmitterHarness; |
||||
private PrivacyGroup privacyGroup; |
||||
|
||||
@Before |
||||
public void setUp() throws Exception { |
||||
PrivacyNet privacyNet = |
||||
PrivacyNet.builder(privacy, privacyPantheon, cluster, false) |
||||
.addMinerNode("Alice") |
||||
.addMinerNode("Bob") |
||||
.addMinerNode("Charlie") |
||||
.build(); |
||||
|
||||
privacyNet.startPrivacyNet(); |
||||
|
||||
Enclave enclave = |
||||
new Enclave(privacyNet.getNode("Alice").getPrivacyParameters().getEnclaveUri()); |
||||
String[] addresses = |
||||
privacyNet.getNodes().values().stream() |
||||
.map(privacyNode -> privacyNode.orion.getPublicKeys()) |
||||
.flatMap(List::stream) |
||||
.toArray(String[]::new); |
||||
this.privacyGroup = |
||||
enclave.createPrivacyGroup( |
||||
new CreatePrivacyGroupRequest( |
||||
addresses, |
||||
privacyNet.getNode("Alice").orion.getPublicKeys().get(0), |
||||
"testName", |
||||
"testDesc")); |
||||
|
||||
eventEmitterHarness = |
||||
new EventEmitterHarness( |
||||
privateTransactionBuilder, |
||||
privacyNet, |
||||
privateTransactions, |
||||
privateTransactionVerifier, |
||||
eea); |
||||
} |
||||
|
||||
@Test |
||||
public void nodeCanDeployWithPrivacyGroupId() { |
||||
eventEmitterHarness.deployWithPrivacyGroup( |
||||
CONTRACT_NAME, "Alice", privacyGroup.getPrivacyGroupId(), "Alice", "Bob", "Charlie"); |
||||
} |
||||
} |
Loading…
Reference in new issue