Search in sources :

Example 16 with Enclave

use of com.quorum.tessera.enclave.Enclave in project tessera by ConsenSys.

the class EncodedPayloadManagerProvider method provider.

public static EncodedPayloadManager provider() {
    EncodedPayloadManagerHolder encodedPayloadManagerHolder = EncodedPayloadManagerHolder.INSTANCE;
    if (encodedPayloadManagerHolder.getEncodedPayloadManager().isPresent()) {
        return encodedPayloadManagerHolder.getEncodedPayloadManager().get();
    }
    Enclave enclave = Enclave.create();
    PrivacyHelper privacyHelper = PrivacyHelper.create();
    PayloadDigest payloadDigest = PayloadDigest.create();
    EncodedPayloadManager encodedPayloadManager = new EncodedPayloadManagerImpl(enclave, privacyHelper, payloadDigest);
    encodedPayloadManagerHolder.storeInstance(encodedPayloadManager);
    return encodedPayloadManager;
}
Also used : Enclave(com.quorum.tessera.enclave.Enclave) PayloadDigest(com.quorum.tessera.enclave.PayloadDigest) EncodedPayloadManager(com.quorum.tessera.transaction.EncodedPayloadManager) PrivacyHelper(com.quorum.tessera.transaction.PrivacyHelper)

Example 17 with Enclave

use of com.quorum.tessera.enclave.Enclave in project tessera by ConsenSys.

the class RuntimeContextProviderTest method provides.

@Test
public void provides() {
    Config confg = createMockConfig();
    try (var mockedStaticConfigFactory = mockStatic(ConfigFactory.class);
        var mockStaticRestClientFactory = mockStatic(RestClientFactory.class);
        var mockStaticKeyDataUtil = mockStatic(KeyDataUtil.class);
        var mockStaticEnclave = mockStatic(Enclave.class)) {
        Enclave enclave = mock(Enclave.class);
        mockStaticEnclave.when(Enclave::create).thenReturn(enclave);
        ConfigKeyPair configKeyPair = mock(ConfigKeyPair.class);
        when(configKeyPair.getPublicKey()).thenReturn(Base64.getEncoder().encodeToString("PublicKey".getBytes()));
        when(configKeyPair.getPrivateKey()).thenReturn(Base64.getEncoder().encodeToString("PrivateKey".getBytes()));
        mockStaticKeyDataUtil.when(() -> KeyDataUtil.unmarshal(any(KeyData.class), any(KeyEncryptor.class))).thenReturn(configKeyPair);
        RestClientFactory restClientFactory = mock(RestClientFactory.class);
        when(restClientFactory.buildFrom(any(ServerConfig.class))).thenReturn(mock(Client.class));
        mockStaticRestClientFactory.when(RestClientFactory::create).thenReturn(restClientFactory);
        ConfigFactory configFactory = mock(ConfigFactory.class);
        when(configFactory.getConfig()).thenReturn(confg);
        mockedStaticConfigFactory.when(ConfigFactory::create).thenReturn(configFactory);
        RuntimeContext runtimeContext = RuntimeContextProvider.provider();
        assertThat(runtimeContext).isNotNull().isSameAs(RuntimeContextProvider.provider());
        mockedStaticConfigFactory.verify(ConfigFactory::create);
        mockedStaticConfigFactory.verifyNoMoreInteractions();
        mockStaticRestClientFactory.verify(RestClientFactory::create);
        mockedStaticConfigFactory.verifyNoMoreInteractions();
        mockStaticKeyDataUtil.verify(() -> KeyDataUtil.unmarshal(any(KeyData.class), any(KeyEncryptor.class)));
        mockStaticKeyDataUtil.verifyNoMoreInteractions();
        mockStaticEnclave.verify(Enclave::create);
        mockStaticEnclave.verifyNoMoreInteractions();
        verify(enclave).getPublicKeys();
        verifyNoMoreInteractions(enclave);
    }
}
Also used : Enclave(com.quorum.tessera.enclave.Enclave) KeyEncryptor(com.quorum.tessera.config.keys.KeyEncryptor) RestClientFactory(com.quorum.tessera.context.RestClientFactory) ConfigKeyPair(com.quorum.tessera.config.keypairs.ConfigKeyPair) Client(jakarta.ws.rs.client.Client) RuntimeContext(com.quorum.tessera.context.RuntimeContext) Test(org.junit.Test)

Example 18 with Enclave

use of com.quorum.tessera.enclave.Enclave in project tessera by ConsenSys.

the class RuntimeContextProvider method provider.

public static RuntimeContext provider() {
    LOGGER.debug("Providing RuntimeContext");
    RuntimeContextHolder contextHolder = RuntimeContextHolder.INSTANCE;
    if (contextHolder.getContext().isPresent()) {
        LOGGER.debug("Found stored RuntimeContext instance");
        return contextHolder.getContext().get();
    }
    Config config = ConfigFactory.create().getConfig();
    EncryptorConfig encryptorConfig = Optional.ofNullable(config.getEncryptor()).orElse(new EncryptorConfig() {

        {
            setType(EncryptorType.NACL);
        }
    });
    KeyEncryptor keyEncryptor = KeyEncryptorFactory.newFactory().create(encryptorConfig);
    final KeyVaultConfigValidations vaultConfigValidation = KeyVaultConfigValidations.create();
    final RuntimeContextBuilder runtimeContextBuilder = RuntimeContextBuilder.create();
    if (Objects.nonNull(config.getKeys())) {
        List<ConfigKeyPair> configKeyPairs = config.getKeys().getKeyData().stream().map(o -> KeyDataUtil.unmarshal(o, keyEncryptor)).collect(Collectors.toList());
        Set<ConstraintViolation<?>> violations = vaultConfigValidation.validate(config.getKeys(), configKeyPairs);
        if (!violations.isEmpty()) {
            LOGGER.debug("Constraint violations {}", violations);
            throw new ConstraintViolationException(violations);
        }
        final Enclave enclave = Enclave.create();
        runtimeContextBuilder.withKeys(enclave.getPublicKeys());
    }
    List<ServerConfig> servers = config.getServerConfigs();
    ServerConfig p2pServerContext = servers.stream().filter(s -> s.getApp() == AppType.P2P).findFirst().orElseThrow(() -> new IllegalStateException("No P2P server configured"));
    Client p2pClient = RestClientFactory.create().buildFrom(p2pServerContext);
    List<PublicKey> alwaysSendTo = Stream.of(config).map(Config::getAlwaysSendTo).filter(Objects::nonNull).flatMap(List::stream).map(Base64.getDecoder()::decode).map(PublicKey::from).collect(Collectors.toList());
    RuntimeContext context = runtimeContextBuilder.withP2pServerUri(config.getP2PServerConfig().getServerUri()).withP2pClient(p2pClient).withKeyEncryptor(keyEncryptor).withDisablePeerDiscovery(config.isDisablePeerDiscovery()).withRemoteKeyValidation(config.getFeatures().isEnableRemoteKeyValidation()).withEnhancedPrivacy(config.getFeatures().isEnablePrivacyEnhancements()).withPeers(config.getPeers().stream().map(Peer::getUrl).map(URI::create).collect(Collectors.toList())).withAlwaysSendTo(alwaysSendTo).withUseWhiteList(config.isUseWhiteList()).withRecoveryMode(config.isRecoveryMode()).withMultiplePrivateStates(config.getFeatures().isEnableMultiplePrivateStates()).withClientMode(config.getClientMode()).build();
    contextHolder.setContext(context);
    return context;
}
Also used : ConstraintViolation(jakarta.validation.ConstraintViolation) ConfigKeyPair(com.quorum.tessera.config.keypairs.ConfigKeyPair) PublicKey(com.quorum.tessera.encryption.PublicKey) Client(jakarta.ws.rs.client.Client) java.util(java.util) Logger(org.slf4j.Logger) KeyEncryptorFactory(com.quorum.tessera.config.keys.KeyEncryptorFactory) LoggerFactory(org.slf4j.LoggerFactory) KeyEncryptor(com.quorum.tessera.config.keys.KeyEncryptor) ConstraintViolationException(jakarta.validation.ConstraintViolationException) Collectors(java.util.stream.Collectors) RestClientFactory(com.quorum.tessera.context.RestClientFactory) KeyDataUtil(com.quorum.tessera.config.util.KeyDataUtil) Stream(java.util.stream.Stream) com.quorum.tessera.config(com.quorum.tessera.config) RuntimeContext(com.quorum.tessera.context.RuntimeContext) Enclave(com.quorum.tessera.enclave.Enclave) URI(java.net.URI) KeyVaultConfigValidations(com.quorum.tessera.context.KeyVaultConfigValidations) KeyVaultConfigValidations(com.quorum.tessera.context.KeyVaultConfigValidations) PublicKey(com.quorum.tessera.encryption.PublicKey) ConfigKeyPair(com.quorum.tessera.config.keypairs.ConfigKeyPair) URI(java.net.URI) Enclave(com.quorum.tessera.enclave.Enclave) KeyEncryptor(com.quorum.tessera.config.keys.KeyEncryptor) ConstraintViolation(jakarta.validation.ConstraintViolation) ConstraintViolationException(jakarta.validation.ConstraintViolationException) Client(jakarta.ws.rs.client.Client) RuntimeContext(com.quorum.tessera.context.RuntimeContext)

Example 19 with Enclave

use of com.quorum.tessera.enclave.Enclave in project tessera by ConsenSys.

the class PrivacyGroupManagerProvider method provider.

public static PrivacyGroupManager provider() {
    Enclave enclave = Enclave.create();
    PrivacyGroupDAO privacyGroupDAO = PrivacyGroupDAO.create();
    BatchPrivacyGroupPublisher publisher = BatchPrivacyGroupPublisher.create();
    return new PrivacyGroupManagerImpl(enclave, privacyGroupDAO, publisher);
}
Also used : Enclave(com.quorum.tessera.enclave.Enclave) BatchPrivacyGroupPublisher(com.quorum.tessera.privacygroup.publish.BatchPrivacyGroupPublisher) PrivacyGroupDAO(com.quorum.tessera.data.PrivacyGroupDAO)

Example 20 with Enclave

use of com.quorum.tessera.enclave.Enclave in project tessera by ConsenSys.

the class ResendManagerProvider method provider.

public static ResendManager provider() {
    LOGGER.debug("Creating EncryptedTransactionDAO");
    final EncryptedTransactionDAO encryptedTransactionDAO = EncryptedTransactionDAO.create();
    LOGGER.debug("Created EncryptedTransactionDAO {}", encryptedTransactionDAO);
    LOGGER.debug("Creating Enclave");
    final Enclave enclave = Enclave.create();
    LOGGER.debug("Created Enclave {}", enclave);
    PayloadDigest payloadDigest = PayloadDigest.create();
    return new ResendManagerImpl(encryptedTransactionDAO, enclave, payloadDigest);
}
Also used : Enclave(com.quorum.tessera.enclave.Enclave) PayloadDigest(com.quorum.tessera.enclave.PayloadDigest) EncryptedTransactionDAO(com.quorum.tessera.data.EncryptedTransactionDAO)

Aggregations

Enclave (com.quorum.tessera.enclave.Enclave)29 Test (org.junit.Test)11 Discovery (com.quorum.tessera.discovery.Discovery)9 EncryptedTransactionDAO (com.quorum.tessera.data.EncryptedTransactionDAO)7 PayloadDigest (com.quorum.tessera.enclave.PayloadDigest)6 RuntimeContext (com.quorum.tessera.context.RuntimeContext)5 PayloadPublisher (com.quorum.tessera.transaction.publish.PayloadPublisher)5 NetworkStore (com.quorum.tessera.discovery.NetworkStore)4 PrivacyHelper (com.quorum.tessera.transaction.PrivacyHelper)4 TransactionManager (com.quorum.tessera.transaction.TransactionManager)4 Config (com.quorum.tessera.config.Config)3 PrivacyGroupManager (com.quorum.tessera.privacygroup.PrivacyGroupManager)3 LegacyResendManager (com.quorum.tessera.recovery.workflow.LegacyResendManager)3 Client (jakarta.ws.rs.client.Client)3 CliResult (com.quorum.tessera.cli.CliResult)2 ConfigKeyPair (com.quorum.tessera.config.keypairs.ConfigKeyPair)2 KeyEncryptor (com.quorum.tessera.config.keys.KeyEncryptor)2 RestClientFactory (com.quorum.tessera.context.RestClientFactory)2 PartyStore (com.quorum.tessera.p2p.partyinfo.PartyStore)2 ResendBatchPublisher (com.quorum.tessera.recovery.resend.ResendBatchPublisher)2