Java源码示例:org.eclipse.californium.scandium.config.DtlsConnectorConfig
示例1
private void addIdentity(final DtlsConnectorConfig.Builder dtlsConfig) {
final KeyLoader keyLoader = KeyLoader.fromFiles(vertx, getConfig().getKeyPath(), getConfig().getCertPath());
final PrivateKey pk = keyLoader.getPrivateKey();
final Certificate[] certChain = keyLoader.getCertificateChain();
if (pk != null && certChain != null) {
if (pk.getAlgorithm().equals("EC")) {
// Californium's cipher suites support ECC based keys only
log.info("using private key [{}] and certificate [{}] as server identity",
getConfig().getKeyPath(), getConfig().getCertPath());
dtlsConfig.setIdentity(pk, certChain);
} else {
log.warn("configured key is not ECC based, certificate based cipher suites will be disabled");
}
}
}
示例2
void connectBridge() {
DtlsConnectorConfig.Builder builder = new DtlsConnectorConfig.Builder();
builder.setAddress(new InetSocketAddress(0));
builder.setPskStore(new StaticPskStore(identity, psk.getBytes()));
DTLSConnector dtlsConnector = new DTLSConnector(builder.build());
CoapEndpoint.CoapEndpointBuilder coapbuilder = new CoapEndpoint.CoapEndpointBuilder();
coapbuilder.setConnector(dtlsConnector);
coapbuilder.setNetworkConfig(NetworkConfig.getStandard());
coapEndPoint = coapbuilder.build();
}
示例3
private void establishConnection() {
TradfriGatewayConfig configuration = getConfigAs(TradfriGatewayConfig.class);
this.gatewayURI = "coaps://" + configuration.host + ":" + configuration.port + "/" + DEVICES;
this.gatewayInfoURI = "coaps://" + configuration.host + ":" + configuration.port + "/" + GATEWAY + "/"
+ GATEWAY_DETAILS;
try {
URI uri = new URI(gatewayURI);
deviceClient = new TradfriCoapClient(uri);
} catch (URISyntaxException e) {
logger.error("Illegal gateway URI '{}': {}", gatewayURI, e.getMessage());
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, e.getMessage());
return;
}
DtlsConnectorConfig.Builder builder = new DtlsConnectorConfig.Builder(new InetSocketAddress(0));
builder.setPskStore(new StaticPskStore(configuration.identity, configuration.preSharedKey.getBytes()));
dtlsConnector = new DTLSConnector(builder.build(), new InMemoryConnectionStore(100, 60));
endPoint = new TradfriCoapEndpoint(dtlsConnector, NetworkConfig.getStandard());
deviceClient.setEndpoint(endPoint);
updateStatus(ThingStatus.UNKNOWN);
// schedule a new scan every minute
scanJob = scheduler.scheduleWithFixedDelay(this::startScan, 0, 1, TimeUnit.MINUTES);
}
示例4
/**
* Creates the client to use for uploading data to the secure endpoint
* of the CoAP adapter.
*
* @param pskStoreToUse The store to retrieve shared secrets from.
* @return The client.
*/
protected CoapClient getCoapsClient(final PskStore pskStoreToUse) {
final DtlsConnectorConfig.Builder dtlsConfig = new DtlsConnectorConfig.Builder();
dtlsConfig.setAddress(new InetSocketAddress(InetAddress.getLoopbackAddress(), 0));
dtlsConfig.setPskStore(pskStoreToUse);
dtlsConfig.setMaxRetransmissions(1);
final CoapEndpoint.Builder builder = new CoapEndpoint.Builder();
builder.setNetworkConfig(NetworkConfig.createStandardWithoutFile());
builder.setConnector(new DTLSConnector(dtlsConfig.build()));
return new CoapClient().setEndpoint(builder.build());
}
示例5
protected void initCoap() {
DtlsConnectorConfig.Builder builder = new DtlsConnectorConfig.Builder(); //new InetSocketAddress(0)
builder.setPskStore(new StaticPskStore("", security_key.getBytes()));
coap = new CoapEndpoint(new DTLSConnector(builder.build()), NetworkConfig.getStandard());
}
示例6
private Future<Endpoint> createSecureEndpoint(final NetworkConfig config) {
final ApplicationLevelInfoSupplier deviceResolver = Optional.ofNullable(honoDeviceResolver)
.orElse(new DefaultDeviceResolver(context, tracer, getTypeName(), getConfig(), getCredentialsClientFactory()));
final PskStore store = Optional.ofNullable(pskStore)
.orElseGet(() -> {
if (deviceResolver instanceof PskStore) {
return (PskStore) deviceResolver;
} else {
return new DefaultDeviceResolver(context, tracer, getTypeName(), getConfig(), getCredentialsClientFactory());
}
});
final DtlsConnectorConfig.Builder dtlsConfig = new DtlsConnectorConfig.Builder();
dtlsConfig.setServerOnly(true);
dtlsConfig.setRecommendedCipherSuitesOnly(true);
dtlsConfig.setClientAuthenticationRequired(getConfig().isAuthenticationRequired());
dtlsConfig.setAddress(
new InetSocketAddress(getConfig().getBindAddress(), getConfig().getPort(getPortDefaultValue())));
dtlsConfig.setApplicationLevelInfoSupplier(deviceResolver);
dtlsConfig.setPskStore(store);
dtlsConfig.setRetransmissionTimeout(getConfig().getDtlsRetransmissionTimeout());
dtlsConfig.setMaxConnections(config.getInt(Keys.MAX_ACTIVE_PEERS));
addIdentity(dtlsConfig);
try {
final DtlsConnectorConfig dtlsConnectorConfig = dtlsConfig.build();
if (log.isInfoEnabled()) {
final String ciphers = dtlsConnectorConfig.getSupportedCipherSuites()
.stream()
.map(cipher -> cipher.name())
.collect(Collectors.joining(", "));
log.info("creating secure endpoint supporting ciphers: {}", ciphers);
}
final DTLSConnector dtlsConnector = new DTLSConnector(dtlsConnectorConfig);
final CoapEndpoint.Builder builder = new CoapEndpoint.Builder();
builder.setNetworkConfig(config);
builder.setConnector(dtlsConnector);
return Future.succeededFuture(builder.build());
} catch (final IllegalStateException ex) {
log.warn("failed to create secure endpoint", ex);
return Future.failedFuture(ex);
}
}