Refactor getters/setters for min TLS version andTLS cert profile and rename class methods

This commit is contained in:
Sergey Abramchuk
2017-04-27 19:44:52 +03:00
parent 0025e4f8ac
commit 05cbfa5dad
3 changed files with 122 additions and 98 deletions
@@ -16,13 +16,19 @@ using namespace openvpn;
@property (readonly) ClientAPI::Config config; @property (readonly) ClientAPI::Config config;
+ (OpenVPNTransportProtocol)getTransportProtocolFromString:(nullable NSString *)value; + (OpenVPNTransportProtocol)getTransportProtocolFromValue:(nullable NSString *)value;
+ (nonnull NSString *)getStringFromTransportProtocol:(OpenVPNTransportProtocol)protocol; + (nonnull NSString *)getValueFromTransportProtocol:(OpenVPNTransportProtocol)protocol;
+ (OpenVPNIPv6Preference)getIPv6PreferenceFromString:(nullable NSString *)value; + (OpenVPNIPv6Preference)getIPv6PreferenceFromValue:(nullable NSString *)value;
+ (nonnull NSString *)getStringFromIPv6Preference:(OpenVPNIPv6Preference)preference; + (nonnull NSString *)getValueFromIPv6Preference:(OpenVPNIPv6Preference)preference;
+ (OpenVPNCompressionMode)getCompressionModeFromString:(nullable NSString *)value; + (OpenVPNCompressionMode)getCompressionModeFromValue:(nullable NSString *)value;
+ (nonnull NSString *)getStringFromCompressionMode:(OpenVPNCompressionMode)compressionMode; + (nonnull NSString *)getValueFromCompressionMode:(OpenVPNCompressionMode)compressionMode;
+ (OpenVPNMinTLSVersion)getMinTLSFromValue:(nullable NSString *)value;
+ (nonnull NSString *)getValueFromMinTLS:(OpenVPNMinTLSVersion)minTLS;
+ (OpenVPNTLSCertProfile)getTLSCertProfileFromValue:(nullable NSString *)value;
+ (nonnull NSString *)getValueFromTLSCertProfile:(OpenVPNTLSCertProfile)tlsCertProfile;
@end @end
+108 -90
View File
@@ -10,32 +10,32 @@
using namespace openvpn; using namespace openvpn;
NSString * const OpenVPNTransportProtocolUDPValue = @"udp"; NSString *const OpenVPNTransportProtocolUDPValue = @"udp";
NSString * const OpenVPNTransportProtocolTCPValue = @"tcp"; NSString *const OpenVPNTransportProtocolTCPValue = @"tcp";
NSString * const OpenVPNTransportProtocolAdaptiveValue = @"adaptive"; NSString *const OpenVPNTransportProtocolAdaptiveValue = @"adaptive";
NSString * const OpenVPNTransportProtocolDefaultValue = @""; NSString *const OpenVPNTransportProtocolDefaultValue = @"";
NSString * const OpenVPNIPv6PreferenceEnabledValue = @"yes"; NSString *const OpenVPNIPv6PreferenceEnabledValue = @"yes";
NSString * const OpenVPNIPv6PreferenceDisabledValue = @"no"; NSString *const OpenVPNIPv6PreferenceDisabledValue = @"no";
NSString * const OpenVPNIPv6PreferenceDefaultValue = @"default"; NSString *const OpenVPNIPv6PreferenceDefaultValue = @"default";
NSString * const OpenVPNCompressionModeEnabledValue = @"yes"; NSString *const OpenVPNCompressionModeEnabledValue = @"yes";
NSString * const OpenVPNCompressionModeDisabledValue = @"no"; NSString *const OpenVPNCompressionModeDisabledValue = @"no";
NSString * const OpenVPNCompressionModeAsymValue = @"asym"; NSString *const OpenVPNCompressionModeAsymValue = @"asym";
NSString * const OpenVPNCompressionModeDefaultValue = @""; NSString *const OpenVPNCompressionModeDefaultValue = @"";
NSString * const OpenVPNMinTLSVersionDisabledValue = @"disabled"; NSString *const OpenVPNMinTLSVersionDisabledValue = @"disabled";
NSString * const OpenVPNMinTLSVersion10Value = @"tls_1_0"; NSString *const OpenVPNMinTLSVersion10Value = @"tls_1_0";
NSString * const OpenVPNMinTLSVersion11Value = @"tls_1_1"; NSString *const OpenVPNMinTLSVersion11Value = @"tls_1_1";
NSString * const OpenVPNMinTLSVersion12Value = @"tls_1_2"; NSString *const OpenVPNMinTLSVersion12Value = @"tls_1_2";
NSString * const OpenVPNMinTLSVersionDefaultValue = @"default"; NSString *const OpenVPNMinTLSVersionDefaultValue = @"default";
NSString * const OpenVPNTLSCertProfileLegacyValue = @"legacy"; NSString *const OpenVPNTLSCertProfileLegacyValue = @"legacy";
NSString * const OpenVPNTLSCertProfilePreferredValue = @"preferred"; NSString *const OpenVPNTLSCertProfilePreferredValue = @"preferred";
NSString * const OpenVPNTLSCertProfileSuiteBValue = @"suiteb"; NSString *const OpenVPNTLSCertProfileSuiteBValue = @"suiteb";
NSString * const OpenVPNTLSCertProfileLegacyDefaultValue = @"legacy-default"; NSString *const OpenVPNTLSCertProfileLegacyDefaultValue = @"legacy-default";
NSString * const OpenVPNTLSCertProfilePreferredDefaultValue = @"preferred-default"; NSString *const OpenVPNTLSCertProfilePreferredDefaultValue = @"preferred-default";
NSString * const OpenVPNTLSCertProfileDefaultValue = @"default"; NSString *const OpenVPNTLSCertProfileDefaultValue = @"default";
@interface OpenVPNConfiguration () { @interface OpenVPNConfiguration () {
ClientAPI::Config _config; ClientAPI::Config _config;
@@ -49,7 +49,7 @@ NSString * const OpenVPNTLSCertProfileDefaultValue = @"default";
return _config; return _config;
} }
+ (OpenVPNTransportProtocol)getTransportProtocolFromString:(NSString *)value { + (OpenVPNTransportProtocol)getTransportProtocolFromValue:(NSString *)value {
NSDictionary *options = @{ NSDictionary *options = @{
OpenVPNTransportProtocolUDPValue: @(OpenVPNTransportProtocolUDP), OpenVPNTransportProtocolUDPValue: @(OpenVPNTransportProtocolUDP),
OpenVPNTransportProtocolTCPValue: @(OpenVPNTransportProtocolTCP), OpenVPNTransportProtocolTCPValue: @(OpenVPNTransportProtocolTCP),
@@ -65,7 +65,7 @@ NSString * const OpenVPNTLSCertProfileDefaultValue = @"default";
return (OpenVPNTransportProtocol)[transportProtocol integerValue]; return (OpenVPNTransportProtocol)[transportProtocol integerValue];
} }
+ (nonnull NSString *)getStringFromTransportProtocol:(OpenVPNTransportProtocol)protocol { + (nonnull NSString *)getValueFromTransportProtocol:(OpenVPNTransportProtocol)protocol {
NSDictionary *options = @{ NSDictionary *options = @{
@(OpenVPNTransportProtocolUDP): OpenVPNTransportProtocolUDPValue, @(OpenVPNTransportProtocolUDP): OpenVPNTransportProtocolUDPValue,
@(OpenVPNTransportProtocolTCP): OpenVPNTransportProtocolTCPValue, @(OpenVPNTransportProtocolTCP): OpenVPNTransportProtocolTCPValue,
@@ -79,7 +79,7 @@ NSString * const OpenVPNTLSCertProfileDefaultValue = @"default";
return value; return value;
} }
+ (OpenVPNIPv6Preference)getIPv6PreferenceFromString:(nullable NSString *)value { + (OpenVPNIPv6Preference)getIPv6PreferenceFromValue:(nullable NSString *)value {
NSDictionary *options = @{ NSDictionary *options = @{
OpenVPNIPv6PreferenceEnabledValue: @(OpenVPNIPv6PreferenceEnabled), OpenVPNIPv6PreferenceEnabledValue: @(OpenVPNIPv6PreferenceEnabled),
OpenVPNIPv6PreferenceDisabledValue: @(OpenVPNIPv6PreferenceDisabled), OpenVPNIPv6PreferenceDisabledValue: @(OpenVPNIPv6PreferenceDisabled),
@@ -94,7 +94,7 @@ NSString * const OpenVPNTLSCertProfileDefaultValue = @"default";
return (OpenVPNIPv6Preference)[ipv6 integerValue]; return (OpenVPNIPv6Preference)[ipv6 integerValue];
} }
+ (nonnull NSString *)getStringFromIPv6Preference:(OpenVPNIPv6Preference)preference { + (nonnull NSString *)getValueFromIPv6Preference:(OpenVPNIPv6Preference)preference {
NSDictionary *options = @{ NSDictionary *options = @{
@(OpenVPNIPv6PreferenceEnabled): OpenVPNIPv6PreferenceEnabledValue, @(OpenVPNIPv6PreferenceEnabled): OpenVPNIPv6PreferenceEnabledValue,
@(OpenVPNIPv6PreferenceDisabled): OpenVPNIPv6PreferenceDisabledValue, @(OpenVPNIPv6PreferenceDisabled): OpenVPNIPv6PreferenceDisabledValue,
@@ -107,7 +107,7 @@ NSString * const OpenVPNTLSCertProfileDefaultValue = @"default";
return value; return value;
} }
+ (OpenVPNCompressionMode)getCompressionModeFromString:(nullable NSString *)value { + (OpenVPNCompressionMode)getCompressionModeFromValue:(nullable NSString *)value {
NSDictionary *options = @{ NSDictionary *options = @{
OpenVPNCompressionModeEnabledValue: @(OpenVPNCompressionModeEnabled), OpenVPNCompressionModeEnabledValue: @(OpenVPNCompressionModeEnabled),
OpenVPNCompressionModeDisabledValue: @(OpenVPNCompressionModeDisabled), OpenVPNCompressionModeDisabledValue: @(OpenVPNCompressionModeDisabled),
@@ -123,7 +123,7 @@ NSString * const OpenVPNTLSCertProfileDefaultValue = @"default";
return (OpenVPNCompressionMode)[compressionMode integerValue]; return (OpenVPNCompressionMode)[compressionMode integerValue];
} }
+ (nonnull NSString *)getStringFromCompressionMode:(OpenVPNCompressionMode)compressionMode { + (nonnull NSString *)getValueFromCompressionMode:(OpenVPNCompressionMode)compressionMode {
NSDictionary *options = @{ NSDictionary *options = @{
@(OpenVPNCompressionModeEnabled): OpenVPNCompressionModeEnabledValue, @(OpenVPNCompressionModeEnabled): OpenVPNCompressionModeEnabledValue,
@(OpenVPNCompressionModeDisabled): OpenVPNCompressionModeDisabledValue, @(OpenVPNCompressionModeDisabled): OpenVPNCompressionModeDisabledValue,
@@ -137,6 +137,72 @@ NSString * const OpenVPNTLSCertProfileDefaultValue = @"default";
return value; return value;
} }
+ (OpenVPNMinTLSVersion)getMinTLSFromValue:(nullable NSString *)value {
NSDictionary *options = @{
OpenVPNMinTLSVersionDisabledValue: @(OpenVPNMinTLSVersionDisabled),
OpenVPNMinTLSVersion10Value: @(OpenVPNMinTLSVersion10),
OpenVPNMinTLSVersion11Value: @(OpenVPNMinTLSVersion11),
OpenVPNMinTLSVersion12Value: @(OpenVPNMinTLSVersion12),
OpenVPNMinTLSVersionDefaultValue: @(OpenVPNMinTLSVersionDefault)
};
NSString *currentValue = [value length] == 0 ? OpenVPNMinTLSVersionDefaultValue : value;
NSNumber *minTLSVersion = options[currentValue];
NSAssert(minTLSVersion != nil, @"Incorrect minTLS value: %@", currentValue);
return (OpenVPNMinTLSVersion)[minTLSVersion integerValue];
}
+ (nonnull NSString *)getValueFromMinTLS:(OpenVPNMinTLSVersion)minTLS {
NSDictionary *options = @{
@(OpenVPNMinTLSVersionDisabled): OpenVPNMinTLSVersionDisabledValue,
@(OpenVPNMinTLSVersion10): OpenVPNMinTLSVersion10Value,
@(OpenVPNMinTLSVersion11): OpenVPNMinTLSVersion11Value,
@(OpenVPNMinTLSVersion12): OpenVPNMinTLSVersion12Value,
@(OpenVPNMinTLSVersionDefault): OpenVPNMinTLSVersionDefaultValue
};
NSString *value = options[@(minTLS)];
NSAssert(value != nil, @"Incorrect minTLS value: %li", (NSInteger)minTLS);
return value;
}
+ (OpenVPNTLSCertProfile)getTLSCertProfileFromValue:(nullable NSString *)value {
NSDictionary *options = @{
OpenVPNTLSCertProfileLegacyValue: @(OpenVPNTLSCertProfileLegacy),
OpenVPNTLSCertProfilePreferredValue: @(OpenVPNTLSCertProfilePreferred),
OpenVPNTLSCertProfileSuiteBValue: @(OpenVPNTLSCertProfileSuiteB),
OpenVPNTLSCertProfileLegacyDefaultValue: @(OpenVPNTLSCertProfileLegacyDefault),
OpenVPNTLSCertProfilePreferredDefaultValue: @(OpenVPNTLSCertProfilePreferredDefault),
OpenVPNTLSCertProfileDefaultValue: @(OpenVPNTLSCertProfileDefault),
};
NSString *currentValue = [value length] == 0 ? OpenVPNTLSCertProfileDefaultValue : value;
NSNumber *tlsCertProfile = options[currentValue];
NSAssert(tlsCertProfile != nil, @"Incorrect tlsCertProfile value: %@", currentValue);
return (OpenVPNTLSCertProfile)[tlsCertProfile integerValue];
}
+ (nonnull NSString *)getValueFromTLSCertProfile:(OpenVPNTLSCertProfile)tlsCertProfile {
NSDictionary *options = @{
@(OpenVPNTLSCertProfileLegacy): OpenVPNTLSCertProfileLegacyValue,
@(OpenVPNTLSCertProfilePreferred): OpenVPNTLSCertProfilePreferredValue,
@(OpenVPNTLSCertProfileSuiteB): OpenVPNTLSCertProfileSuiteBValue,
@(OpenVPNTLSCertProfileLegacyDefault): OpenVPNTLSCertProfileLegacyDefaultValue,
@(OpenVPNTLSCertProfilePreferredDefault): OpenVPNTLSCertProfilePreferredDefaultValue,
@(OpenVPNTLSCertProfileDefault): OpenVPNTLSCertProfileDefaultValue
};
NSString *value = options[@(tlsCertProfile)];
NSAssert(value != nil, @"Incorrect tlsCertProfile value: %li", (NSInteger)tlsCertProfile);
return value;
}
@end @end
@implementation OpenVPNConfiguration @implementation OpenVPNConfiguration
@@ -197,21 +263,21 @@ NSString * const OpenVPNTLSCertProfileDefaultValue = @"default";
- (OpenVPNTransportProtocol)proto { - (OpenVPNTransportProtocol)proto {
NSString *currentValue = [NSString stringWithUTF8String:_config.protoOverride.c_str()]; NSString *currentValue = [NSString stringWithUTF8String:_config.protoOverride.c_str()];
return [OpenVPNConfiguration getTransportProtocolFromString:currentValue]; return [OpenVPNConfiguration getTransportProtocolFromValue:currentValue];
} }
- (void)setProto:(OpenVPNTransportProtocol)proto { - (void)setProto:(OpenVPNTransportProtocol)proto {
NSString *value = [OpenVPNConfiguration getStringFromTransportProtocol:proto]; NSString *value = [OpenVPNConfiguration getValueFromTransportProtocol:proto];
_config.protoOverride = std::string([value UTF8String]); _config.protoOverride = std::string([value UTF8String]);
} }
- (OpenVPNIPv6Preference)ipv6 { - (OpenVPNIPv6Preference)ipv6 {
NSString *currentValue = [NSString stringWithUTF8String:_config.ipv6.c_str()]; NSString *currentValue = [NSString stringWithUTF8String:_config.ipv6.c_str()];
return [OpenVPNConfiguration getIPv6PreferenceFromString:currentValue]; return [OpenVPNConfiguration getIPv6PreferenceFromValue:currentValue];
} }
- (void)setIpv6:(OpenVPNIPv6Preference)ipv6 { - (void)setIpv6:(OpenVPNIPv6Preference)ipv6 {
NSString *value = [OpenVPNConfiguration getStringFromIPv6Preference:ipv6]; NSString *value = [OpenVPNConfiguration getValueFromIPv6Preference:ipv6];
_config.ipv6 = std::string([value UTF8String]); _config.ipv6 = std::string([value UTF8String]);
} }
@@ -265,11 +331,11 @@ NSString * const OpenVPNTLSCertProfileDefaultValue = @"default";
- (OpenVPNCompressionMode)compressionMode { - (OpenVPNCompressionMode)compressionMode {
NSString *currentValue = [NSString stringWithUTF8String:_config.compressionMode.c_str()]; NSString *currentValue = [NSString stringWithUTF8String:_config.compressionMode.c_str()];
return [OpenVPNConfiguration getCompressionModeFromString:currentValue]; return [OpenVPNConfiguration getCompressionModeFromValue:currentValue];
} }
- (void)setCompressionMode:(OpenVPNCompressionMode)compressionMode { - (void)setCompressionMode:(OpenVPNCompressionMode)compressionMode {
NSString *value = [OpenVPNConfiguration getStringFromCompressionMode:compressionMode]; NSString *value = [OpenVPNConfiguration getValueFromCompressionMode:compressionMode];
_config.compressionMode = std::string([value UTF8String]); _config.compressionMode = std::string([value UTF8String]);
} }
@@ -298,71 +364,23 @@ NSString * const OpenVPNTLSCertProfileDefaultValue = @"default";
} }
- (OpenVPNMinTLSVersion)minTLSVersion { - (OpenVPNMinTLSVersion)minTLSVersion {
NSDictionary *options = @{ NSString *currentValue = [NSString stringWithUTF8String:_config.tlsVersionMinOverride.c_str()];
OpenVPNMinTLSVersionDisabledValue: @(OpenVPNMinTLSVersionDisabled), return [OpenVPNConfiguration getMinTLSFromValue:currentValue];
OpenVPNMinTLSVersion10Value: @(OpenVPNMinTLSVersion10),
OpenVPNMinTLSVersion11Value: @(OpenVPNMinTLSVersion11),
OpenVPNMinTLSVersion12Value: @(OpenVPNMinTLSVersion12),
OpenVPNMinTLSVersionDefaultValue: @(OpenVPNMinTLSVersionDefault)
};
NSString *currentValue = _config.tlsVersionMinOverride.empty() ? OpenVPNMinTLSVersionDefaultValue :
[NSString stringWithUTF8String:_config.tlsVersionMinOverride.c_str()];
NSNumber *minTLSVersion = options[currentValue];
NSAssert(minTLSVersion != nil, @"Incorrect tlsVersionMinOverride value: %@", currentValue);
return (OpenVPNMinTLSVersion)[minTLSVersion integerValue];
} }
- (void)setMinTLSVersion:(OpenVPNMinTLSVersion)minTLSVersion { - (void)setMinTLSVersion:(OpenVPNMinTLSVersion)minTLSVersion {
NSDictionary *options = @{ NSString *value = [OpenVPNConfiguration getValueFromMinTLS:minTLSVersion];
@(OpenVPNMinTLSVersionDisabled): OpenVPNMinTLSVersionDisabledValue, _config.tlsVersionMinOverride = std::string([value UTF8String]);
@(OpenVPNMinTLSVersion10): OpenVPNMinTLSVersion10Value,
@(OpenVPNMinTLSVersion11): OpenVPNMinTLSVersion11Value,
@(OpenVPNMinTLSVersion12): OpenVPNMinTLSVersion12Value,
@(OpenVPNMinTLSVersionDefault): OpenVPNMinTLSVersionDefaultValue
};
NSString *value = options[@(minTLSVersion)];
NSAssert(value != nil, @"Incorrect minTLSVersion value: %li", (NSInteger)minTLSVersion);
_config.tlsVersionMinOverride = [value UTF8String];
} }
- (OpenVPNTLSCertProfile)tlsCertProfile { - (OpenVPNTLSCertProfile)tlsCertProfile {
NSDictionary *options = @{ NSString *currentValue = [NSString stringWithUTF8String:_config.tlsCertProfileOverride.c_str()];
OpenVPNTLSCertProfileLegacyValue: @(OpenVPNTLSCertProfileLegacy), return [OpenVPNConfiguration getTLSCertProfileFromValue:currentValue];
OpenVPNTLSCertProfilePreferredValue: @(OpenVPNTLSCertProfilePreferred),
OpenVPNTLSCertProfileSuiteBValue: @(OpenVPNTLSCertProfileSuiteB),
OpenVPNTLSCertProfileLegacyDefaultValue: @(OpenVPNTLSCertProfileLegacyDefault),
OpenVPNTLSCertProfilePreferredDefaultValue: @(OpenVPNTLSCertProfilePreferredDefault),
OpenVPNTLSCertProfileDefaultValue: @(OpenVPNTLSCertProfileDefault),
};
NSString *currentValue = _config.tlsCertProfileOverride.empty() ? OpenVPNTLSCertProfileDefaultValue :
[NSString stringWithUTF8String:_config.tlsCertProfileOverride.c_str()];
NSNumber *tlsCertProfile = options[currentValue];
NSAssert(tlsCertProfile != nil, @"Incorrect tlsCertProfileOverride value: %@", currentValue);
return (OpenVPNTLSCertProfile)[tlsCertProfile integerValue];
} }
- (void)setTlsCertProfile:(OpenVPNTLSCertProfile)tlsCertProfile { - (void)setTlsCertProfile:(OpenVPNTLSCertProfile)tlsCertProfile {
NSDictionary *options = @{ NSString *value = [OpenVPNConfiguration getValueFromTLSCertProfile:tlsCertProfile];
@(OpenVPNTLSCertProfileLegacy): OpenVPNTLSCertProfileLegacyValue, _config.tlsCertProfileOverride = std::string([value UTF8String]);
@(OpenVPNTLSCertProfilePreferred): OpenVPNTLSCertProfilePreferredValue,
@(OpenVPNTLSCertProfileSuiteB): OpenVPNTLSCertProfileSuiteBValue,
@(OpenVPNTLSCertProfileLegacyDefault): OpenVPNTLSCertProfileLegacyDefaultValue,
@(OpenVPNTLSCertProfilePreferredDefault): OpenVPNTLSCertProfilePreferredDefaultValue,
@(OpenVPNTLSCertProfileDefault): OpenVPNTLSCertProfileDefaultValue
};
NSString *value = options[@(tlsCertProfile)];
NSAssert(value != nil, @"Incorrect tlsCertProfile value: %li", (NSInteger)tlsCertProfile);
_config.tlsCertProfileOverride = [value UTF8String];
} }
- (NSDictionary<NSString *,NSString *> *)peerInfo { - (NSDictionary<NSString *,NSString *> *)peerInfo {
+2 -2
View File
@@ -8,7 +8,7 @@
#import <openvpn/common/number.hpp> #import <openvpn/common/number.hpp>
#import "OpenVPNValuesConverter.h" #import "OpenVPNConfiguration+Internal.h"
#import "OpenVPNServerEntry+Internal.h" #import "OpenVPNServerEntry+Internal.h"
#import "OpenVPNProperties.h" #import "OpenVPNProperties.h"
#import "OpenVPNProperties+Internal.h" #import "OpenVPNProperties+Internal.h"
@@ -41,7 +41,7 @@ using namespace openvpn;
_remotePort = port; _remotePort = port;
NSString *currentProto = [NSString stringWithUTF8String:eval.remoteProto.c_str()]; NSString *currentProto = [NSString stringWithUTF8String:eval.remoteProto.c_str()];
_remoteProto = [OpenVPNPropertyConverter getTransportProtocolFromString:currentProto]; _remoteProto = [OpenVPNConfiguration getTransportProtocolFromValue:currentProto];
_servers = nil; _servers = nil;
if (!eval.serverList.empty()) { if (!eval.serverList.empty()) {