![JAR search and dependency download from the Maven repository](/logo.png)
com.digitalpetri.opcua.stack.server.Endpoint Maven / Gradle / Ivy
/*
* Copyright 2015 Kevin Herron
*
* 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 com.digitalpetri.opcua.stack.server;
import java.net.URI;
import java.security.cert.X509Certificate;
import java.util.Optional;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import com.digitalpetri.opcua.stack.core.security.SecurityPolicy;
import com.digitalpetri.opcua.stack.core.types.enumerated.MessageSecurityMode;
import static com.google.common.base.Preconditions.checkNotNull;
public class Endpoint {
private final URI endpointUri;
private final SecurityPolicy securityPolicy;
private final MessageSecurityMode messageSecurity;
private final X509Certificate certificate;
private final String bindAddress;
public Endpoint(@Nonnull URI endpointUri,
@Nullable String bindAddress,
@Nullable X509Certificate certificate,
@Nonnull SecurityPolicy securityPolicy,
@Nonnull MessageSecurityMode messageSecurity) {
checkNotNull(endpointUri);
checkNotNull(securityPolicy);
checkNotNull(messageSecurity);
this.endpointUri = endpointUri;
this.securityPolicy = securityPolicy;
this.messageSecurity = messageSecurity;
this.certificate = certificate;
this.bindAddress = bindAddress;
}
public URI getEndpointUri() {
return endpointUri;
}
public SecurityPolicy getSecurityPolicy() {
return securityPolicy;
}
public MessageSecurityMode getMessageSecurity() {
return messageSecurity;
}
public Optional getCertificate() {
return Optional.ofNullable(certificate);
}
public Optional getBindAddress() {
return Optional.ofNullable(bindAddress);
}
public short getSecurityLevel() {
short securityLevel = 0;
switch (messageSecurity) {
case SignAndEncrypt:
securityLevel |= 0x80;
break;
case Sign:
securityLevel |= 0x40;
break;
default:
securityLevel |= 0x20;
}
switch(securityPolicy) {
case Basic256Sha256:
securityLevel |= 0x08;
break;
case Basic256:
securityLevel |= 0x04;
break;
case Basic128Rsa15:
securityLevel |= 0x02;
break;
case None:
securityLevel |= 0x01;
break;
}
return securityLevel;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Endpoint endpoint = (Endpoint) o;
return !(bindAddress != null ? !bindAddress.equals(endpoint.bindAddress) : endpoint.bindAddress != null) &&
!(certificate != null ? !certificate.equals(endpoint.certificate) : endpoint.certificate != null) &&
endpointUri.equals(endpoint.endpointUri) &&
messageSecurity == endpoint.messageSecurity &&
securityPolicy == endpoint.securityPolicy;
}
@Override
public int hashCode() {
int result = endpointUri.hashCode();
result = 31 * result + securityPolicy.hashCode();
result = 31 * result + messageSecurity.hashCode();
result = 31 * result + (certificate != null ? certificate.hashCode() : 0);
result = 31 * result + (bindAddress != null ? bindAddress.hashCode() : 0);
return result;
}
@Override
public String toString() {
return "Endpoint{" +
"endpointUri=" + endpointUri +
", securityPolicy=" + securityPolicy +
", messageSecurity=" + messageSecurity +
", certificate=" + certificate +
", bindAddress='" + bindAddress + '\'' +
'}';
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy