mirror of
https://github.com/deneraraujo/OpenVPNAdapter.git
synced 2026-04-24 00:00:05 +08:00
Refactor generation of mbedTLS errors
This commit is contained in:
@@ -154,10 +154,6 @@
|
|||||||
C9E350C2200F6EC0000820D9 /* NSError+OpenVPNError.h in Headers */ = {isa = PBXBuildFile; fileRef = C9E350BF200F6EC0000820D9 /* NSError+OpenVPNError.h */; };
|
C9E350C2200F6EC0000820D9 /* NSError+OpenVPNError.h in Headers */ = {isa = PBXBuildFile; fileRef = C9E350BF200F6EC0000820D9 /* NSError+OpenVPNError.h */; };
|
||||||
C9E350C3200F6EC0000820D9 /* NSError+OpenVPNError.m in Sources */ = {isa = PBXBuildFile; fileRef = C9E350C0200F6EC0000820D9 /* NSError+OpenVPNError.m */; };
|
C9E350C3200F6EC0000820D9 /* NSError+OpenVPNError.m in Sources */ = {isa = PBXBuildFile; fileRef = C9E350C0200F6EC0000820D9 /* NSError+OpenVPNError.m */; };
|
||||||
C9E350C4200F6EC0000820D9 /* NSError+OpenVPNError.m in Sources */ = {isa = PBXBuildFile; fileRef = C9E350C0200F6EC0000820D9 /* NSError+OpenVPNError.m */; };
|
C9E350C4200F6EC0000820D9 /* NSError+OpenVPNError.m in Sources */ = {isa = PBXBuildFile; fileRef = C9E350C0200F6EC0000820D9 /* NSError+OpenVPNError.m */; };
|
||||||
C9E4401D1F6086A1001D7C41 /* NSError+Message.h in Headers */ = {isa = PBXBuildFile; fileRef = C9E4401B1F6086A1001D7C41 /* NSError+Message.h */; };
|
|
||||||
C9E4401E1F6086A1001D7C41 /* NSError+Message.h in Headers */ = {isa = PBXBuildFile; fileRef = C9E4401B1F6086A1001D7C41 /* NSError+Message.h */; };
|
|
||||||
C9E4401F1F6086A1001D7C41 /* NSError+Message.m in Sources */ = {isa = PBXBuildFile; fileRef = C9E4401C1F6086A1001D7C41 /* NSError+Message.m */; };
|
|
||||||
C9E440201F6086A1001D7C41 /* NSError+Message.m in Sources */ = {isa = PBXBuildFile; fileRef = C9E4401C1F6086A1001D7C41 /* NSError+Message.m */; };
|
|
||||||
C9FD921A1E9A667600374FC4 /* ovpncli.hpp in Headers */ = {isa = PBXBuildFile; fileRef = C9FD92181E9A667600374FC4 /* ovpncli.hpp */; };
|
C9FD921A1E9A667600374FC4 /* ovpncli.hpp in Headers */ = {isa = PBXBuildFile; fileRef = C9FD92181E9A667600374FC4 /* ovpncli.hpp */; };
|
||||||
C9FD921B1E9A667600374FC4 /* ovpncli.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C9FD92191E9A667600374FC4 /* ovpncli.cpp */; };
|
C9FD921B1E9A667600374FC4 /* ovpncli.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C9FD92191E9A667600374FC4 /* ovpncli.cpp */; };
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
@@ -263,8 +259,6 @@
|
|||||||
C9D2ABFF1EA212A3007EDF9D /* OpenVPNAdapterTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = OpenVPNAdapterTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
C9D2ABFF1EA212A3007EDF9D /* OpenVPNAdapterTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = OpenVPNAdapterTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
C9E350BF200F6EC0000820D9 /* NSError+OpenVPNError.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSError+OpenVPNError.h"; sourceTree = "<group>"; };
|
C9E350BF200F6EC0000820D9 /* NSError+OpenVPNError.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSError+OpenVPNError.h"; sourceTree = "<group>"; };
|
||||||
C9E350C0200F6EC0000820D9 /* NSError+OpenVPNError.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSError+OpenVPNError.m"; sourceTree = "<group>"; };
|
C9E350C0200F6EC0000820D9 /* NSError+OpenVPNError.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSError+OpenVPNError.m"; sourceTree = "<group>"; };
|
||||||
C9E4401B1F6086A1001D7C41 /* NSError+Message.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSError+Message.h"; sourceTree = "<group>"; };
|
|
||||||
C9E4401C1F6086A1001D7C41 /* NSError+Message.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSError+Message.m"; sourceTree = "<group>"; };
|
|
||||||
C9FD92181E9A667600374FC4 /* ovpncli.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = ovpncli.hpp; path = Vendors/openvpn/client/ovpncli.hpp; sourceTree = "<group>"; };
|
C9FD92181E9A667600374FC4 /* ovpncli.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = ovpncli.hpp; path = Vendors/openvpn/client/ovpncli.hpp; sourceTree = "<group>"; };
|
||||||
C9FD92191E9A667600374FC4 /* ovpncli.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ovpncli.cpp; path = Vendors/openvpn/client/ovpncli.cpp; sourceTree = "<group>"; };
|
C9FD92191E9A667600374FC4 /* ovpncli.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ovpncli.cpp; path = Vendors/openvpn/client/ovpncli.cpp; sourceTree = "<group>"; };
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
@@ -447,8 +441,6 @@
|
|||||||
C93A4F611EE18009004DC561 /* OpenVPNError.m */,
|
C93A4F611EE18009004DC561 /* OpenVPNError.m */,
|
||||||
C9CDFDD9200781AF00323B73 /* OpenVPNClient.h */,
|
C9CDFDD9200781AF00323B73 /* OpenVPNClient.h */,
|
||||||
C9CDFDDA200781AF00323B73 /* OpenVPNClient.mm */,
|
C9CDFDDA200781AF00323B73 /* OpenVPNClient.mm */,
|
||||||
ABD6EF151F8F9C37007D3D90 /* OpenVPNAdapter.h */,
|
|
||||||
ABD6EF161F8F9C38007D3D90 /* OpenVPNAdapter.mm */,
|
|
||||||
ABD6EF071F8F8CCD007D3D90 /* OpenVPNNetworkSettingsBuilder.h */,
|
ABD6EF071F8F8CCD007D3D90 /* OpenVPNNetworkSettingsBuilder.h */,
|
||||||
ABD6EF081F8F8CCD007D3D90 /* OpenVPNNetworkSettingsBuilder.m */,
|
ABD6EF081F8F8CCD007D3D90 /* OpenVPNNetworkSettingsBuilder.m */,
|
||||||
C9C2B2B6200CB42F00CA0FF3 /* OpenVPNAdapterPacketFlow.h */,
|
C9C2B2B6200CB42F00CA0FF3 /* OpenVPNAdapterPacketFlow.h */,
|
||||||
@@ -456,6 +448,8 @@
|
|||||||
C9C2B2BA200CC42A00CA0FF3 /* OpenVPNPacket.mm */,
|
C9C2B2BA200CC42A00CA0FF3 /* OpenVPNPacket.mm */,
|
||||||
ABD6EF0E1F8F93AB007D3D90 /* OpenVPNPacketFlowBridge.h */,
|
ABD6EF0E1F8F93AB007D3D90 /* OpenVPNPacketFlowBridge.h */,
|
||||||
ABD6EF0F1F8F93AB007D3D90 /* OpenVPNPacketFlowBridge.mm */,
|
ABD6EF0F1F8F93AB007D3D90 /* OpenVPNPacketFlowBridge.mm */,
|
||||||
|
ABD6EF151F8F9C37007D3D90 /* OpenVPNAdapter.h */,
|
||||||
|
ABD6EF161F8F9C38007D3D90 /* OpenVPNAdapter.mm */,
|
||||||
);
|
);
|
||||||
name = Adapter;
|
name = Adapter;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -574,20 +568,10 @@
|
|||||||
name = Extensions;
|
name = Extensions;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
C9E4401A1F6081FF001D7C41 /* Utils */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
C9E4401B1F6086A1001D7C41 /* NSError+Message.h */,
|
|
||||||
C9E4401C1F6086A1001D7C41 /* NSError+Message.m */,
|
|
||||||
);
|
|
||||||
name = Utils;
|
|
||||||
sourceTree = "<group>";
|
|
||||||
};
|
|
||||||
C9FF73B71EB7421600E995AC /* Helpers */ = {
|
C9FF73B71EB7421600E995AC /* Helpers */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
C9E350C5200F70CA000820D9 /* Extensions */,
|
C9E350C5200F70CA000820D9 /* Extensions */,
|
||||||
C9E4401A1F6081FF001D7C41 /* Utils */,
|
|
||||||
);
|
);
|
||||||
name = Helpers;
|
name = Helpers;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -625,7 +609,6 @@
|
|||||||
C9657A171EB0A7F800EFF210 /* OpenVPNConnectionInfo.h in Headers */,
|
C9657A171EB0A7F800EFF210 /* OpenVPNConnectionInfo.h in Headers */,
|
||||||
C9BB47711E7171A100F3F98C /* OpenVPNError.h in Headers */,
|
C9BB47711E7171A100F3F98C /* OpenVPNError.h in Headers */,
|
||||||
C9B795641F1D182500CF35FE /* OpenVPNReachabilityTracker.h in Headers */,
|
C9B795641F1D182500CF35FE /* OpenVPNReachabilityTracker.h in Headers */,
|
||||||
C9E4401D1F6086A1001D7C41 /* NSError+Message.h in Headers */,
|
|
||||||
ABD6EF091F8F8CCD007D3D90 /* OpenVPNNetworkSettingsBuilder.h in Headers */,
|
ABD6EF091F8F8CCD007D3D90 /* OpenVPNNetworkSettingsBuilder.h in Headers */,
|
||||||
C9657A611EB0D64E00EFF210 /* OpenVPNIPv6Preference.h in Headers */,
|
C9657A611EB0D64E00EFF210 /* OpenVPNIPv6Preference.h in Headers */,
|
||||||
C9657A671EB0D73200EFF210 /* OpenVPNMinTLSVersion.h in Headers */,
|
C9657A671EB0D73200EFF210 /* OpenVPNMinTLSVersion.h in Headers */,
|
||||||
@@ -672,7 +655,6 @@
|
|||||||
C9657A181EB0A7F800EFF210 /* OpenVPNConnectionInfo.h in Headers */,
|
C9657A181EB0A7F800EFF210 /* OpenVPNConnectionInfo.h in Headers */,
|
||||||
C9D2ABE81EA20F99007EDF9D /* OpenVPNError.h in Headers */,
|
C9D2ABE81EA20F99007EDF9D /* OpenVPNError.h in Headers */,
|
||||||
C9B795651F1D182500CF35FE /* OpenVPNReachabilityTracker.h in Headers */,
|
C9B795651F1D182500CF35FE /* OpenVPNReachabilityTracker.h in Headers */,
|
||||||
C9E4401E1F6086A1001D7C41 /* NSError+Message.h in Headers */,
|
|
||||||
ABD6EF0A1F8F8CCD007D3D90 /* OpenVPNNetworkSettingsBuilder.h in Headers */,
|
ABD6EF0A1F8F8CCD007D3D90 /* OpenVPNNetworkSettingsBuilder.h in Headers */,
|
||||||
C9657A621EB0D64E00EFF210 /* OpenVPNIPv6Preference.h in Headers */,
|
C9657A621EB0D64E00EFF210 /* OpenVPNIPv6Preference.h in Headers */,
|
||||||
C9657A681EB0D73200EFF210 /* OpenVPNMinTLSVersion.h in Headers */,
|
C9657A681EB0D73200EFF210 /* OpenVPNMinTLSVersion.h in Headers */,
|
||||||
@@ -900,7 +882,6 @@
|
|||||||
ABD6EF0B1F8F8CCD007D3D90 /* OpenVPNNetworkSettingsBuilder.m in Sources */,
|
ABD6EF0B1F8F8CCD007D3D90 /* OpenVPNNetworkSettingsBuilder.m in Sources */,
|
||||||
C98467A81EAA5B7700272A9A /* OpenVPNConfiguration.mm in Sources */,
|
C98467A81EAA5B7700272A9A /* OpenVPNConfiguration.mm in Sources */,
|
||||||
ABD6EF121F8F93AB007D3D90 /* OpenVPNPacketFlowBridge.mm in Sources */,
|
ABD6EF121F8F93AB007D3D90 /* OpenVPNPacketFlowBridge.mm in Sources */,
|
||||||
C9E4401F1F6086A1001D7C41 /* NSError+Message.m in Sources */,
|
|
||||||
C9657A311EB0B7A900EFF210 /* OpenVPNTransportStats.mm in Sources */,
|
C9657A311EB0B7A900EFF210 /* OpenVPNTransportStats.mm in Sources */,
|
||||||
C9B795661F1D182500CF35FE /* OpenVPNReachabilityTracker.mm in Sources */,
|
C9B795661F1D182500CF35FE /* OpenVPNReachabilityTracker.mm in Sources */,
|
||||||
C9657A581EB0CE1300EFF210 /* OpenVPNProperties.mm in Sources */,
|
C9657A581EB0CE1300EFF210 /* OpenVPNProperties.mm in Sources */,
|
||||||
@@ -942,7 +923,6 @@
|
|||||||
ABD6EF0C1F8F8CCD007D3D90 /* OpenVPNNetworkSettingsBuilder.m in Sources */,
|
ABD6EF0C1F8F8CCD007D3D90 /* OpenVPNNetworkSettingsBuilder.m in Sources */,
|
||||||
C98467A91EAA5B7700272A9A /* OpenVPNConfiguration.mm in Sources */,
|
C98467A91EAA5B7700272A9A /* OpenVPNConfiguration.mm in Sources */,
|
||||||
ABD6EF131F8F93AB007D3D90 /* OpenVPNPacketFlowBridge.mm in Sources */,
|
ABD6EF131F8F93AB007D3D90 /* OpenVPNPacketFlowBridge.mm in Sources */,
|
||||||
C9E440201F6086A1001D7C41 /* NSError+Message.m in Sources */,
|
|
||||||
C9657A301EB0B7A600EFF210 /* OpenVPNTransportStats.mm in Sources */,
|
C9657A301EB0B7A600EFF210 /* OpenVPNTransportStats.mm in Sources */,
|
||||||
C9B795671F1D182500CF35FE /* OpenVPNReachabilityTracker.mm in Sources */,
|
C9B795671F1D182500CF35FE /* OpenVPNReachabilityTracker.mm in Sources */,
|
||||||
C9657A591EB0CE1400EFF210 /* OpenVPNProperties.mm in Sources */,
|
C9657A591EB0CE1400EFF210 /* OpenVPNProperties.mm in Sources */,
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
//
|
|
||||||
// NSError+Message.h
|
|
||||||
// OpenVPN Adapter
|
|
||||||
//
|
|
||||||
// Created by Sergey Abramchuk on 06.09.17.
|
|
||||||
//
|
|
||||||
//
|
|
||||||
|
|
||||||
#import <Foundation/Foundation.h>
|
|
||||||
|
|
||||||
@interface NSError (Message)
|
|
||||||
|
|
||||||
+ (NSString *)reasonFromResult:(NSInteger)result;
|
|
||||||
|
|
||||||
@end
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
//
|
|
||||||
// NSError+Message.m
|
|
||||||
// OpenVPN Adapter
|
|
||||||
//
|
|
||||||
// Created by Sergey Abramchuk on 06.09.17.
|
|
||||||
//
|
|
||||||
//
|
|
||||||
|
|
||||||
#import <mbedtls/error.h>
|
|
||||||
|
|
||||||
#import "NSError+Message.h"
|
|
||||||
|
|
||||||
@implementation NSError (Message)
|
|
||||||
|
|
||||||
+ (NSString *)reasonFromResult:(NSInteger)result {
|
|
||||||
size_t length = 1024;
|
|
||||||
char *buffer = malloc(length);
|
|
||||||
|
|
||||||
mbedtls_strerror(result, buffer, length);
|
|
||||||
|
|
||||||
NSString *reason = [NSString stringWithUTF8String:buffer];
|
|
||||||
|
|
||||||
free(buffer);
|
|
||||||
|
|
||||||
return reason;
|
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
|
||||||
@@ -24,4 +24,10 @@ typedef NS_ERROR_ENUM(OpenVPNAdapterErrorDomain, OpenVPNAdapterError);
|
|||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
@interface NSError (OpenVPNMbedTLSErrorGeneration)
|
||||||
|
|
||||||
|
+ (NSError *)ovpn_errorObjectForMbedTLSError:(NSInteger)errorCode description:(NSString *)description;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_END
|
NS_ASSUME_NONNULL_END
|
||||||
|
|||||||
@@ -7,6 +7,8 @@
|
|||||||
|
|
||||||
#import "NSError+OpenVPNError.h"
|
#import "NSError+OpenVPNError.h"
|
||||||
|
|
||||||
|
#import <mbedtls/error.h>
|
||||||
|
|
||||||
#import "OpenVPNError.h"
|
#import "OpenVPNError.h"
|
||||||
|
|
||||||
@implementation NSError (OpenVPNAdapterErrorGeneration)
|
@implementation NSError (OpenVPNAdapterErrorGeneration)
|
||||||
@@ -179,3 +181,23 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
@implementation NSError (OpenVPNMbedTLSErrorGeneration)
|
||||||
|
|
||||||
|
+ (NSError *)ovpn_errorObjectForMbedTLSError:(NSInteger)errorCode description:(NSString *)description {
|
||||||
|
size_t length = 1024;
|
||||||
|
char *buffer = malloc(length);
|
||||||
|
|
||||||
|
mbedtls_strerror(errorCode, buffer, length);
|
||||||
|
|
||||||
|
NSString *reason = [NSString stringWithUTF8String:buffer];
|
||||||
|
|
||||||
|
free(buffer);
|
||||||
|
|
||||||
|
return [NSError errorWithDomain:OpenVPNIdentityErrorDomain code:errorCode userInfo:@{
|
||||||
|
NSLocalizedDescriptionKey: description,
|
||||||
|
NSLocalizedFailureReasonErrorKey: reason
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
|
|||||||
@@ -5,13 +5,12 @@
|
|||||||
// Created by Sergey Abramchuk on 06.09.17.
|
// Created by Sergey Abramchuk on 06.09.17.
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
|
#import "OpenVPNCertificate.h"
|
||||||
|
|
||||||
#import <mbedtls/x509_crt.h>
|
#import <mbedtls/x509_crt.h>
|
||||||
#import <mbedtls/pem.h>
|
#import <mbedtls/pem.h>
|
||||||
|
|
||||||
#import "NSError+Message.h"
|
#import "NSError+OpenVPNError.h"
|
||||||
#import "OpenVPNError.h"
|
|
||||||
#import "OpenVPNCertificate.h"
|
|
||||||
|
|
||||||
@interface OpenVPNCertificate ()
|
@interface OpenVPNCertificate ()
|
||||||
|
|
||||||
@@ -39,11 +38,7 @@
|
|||||||
int result = mbedtls_x509_crt_parse(certificate.crt, (const unsigned char *)pemString.UTF8String, pemData.length + 1);
|
int result = mbedtls_x509_crt_parse(certificate.crt, (const unsigned char *)pemString.UTF8String, pemData.length + 1);
|
||||||
if (result < 0) {
|
if (result < 0) {
|
||||||
if (error) {
|
if (error) {
|
||||||
NSString *reason = [NSError reasonFromResult:result];
|
*error = [NSError ovpn_errorObjectForMbedTLSError:result description:@"Failed to read PEM data"];
|
||||||
*error = [NSError errorWithDomain:OpenVPNIdentityErrorDomain code:result userInfo:@{
|
|
||||||
NSLocalizedDescriptionKey: @"Failed to read PEM data.",
|
|
||||||
NSLocalizedFailureReasonErrorKey: reason
|
|
||||||
}];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil;
|
return nil;
|
||||||
@@ -58,11 +53,7 @@
|
|||||||
int result = mbedtls_x509_crt_parse_der(certificate.crt, derData.bytes, derData.length);
|
int result = mbedtls_x509_crt_parse_der(certificate.crt, derData.bytes, derData.length);
|
||||||
if (result < 0) {
|
if (result < 0) {
|
||||||
if (error) {
|
if (error) {
|
||||||
NSString *reason = [NSError reasonFromResult:result];
|
*error = [NSError ovpn_errorObjectForMbedTLSError:result description:@"Failed to read DER data"];
|
||||||
*error = [NSError errorWithDomain:OpenVPNIdentityErrorDomain code:result userInfo:@{
|
|
||||||
NSLocalizedDescriptionKey: @"Failed to read DER data.",
|
|
||||||
NSLocalizedFailureReasonErrorKey: reason
|
|
||||||
}];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil;
|
return nil;
|
||||||
@@ -80,14 +71,11 @@
|
|||||||
|
|
||||||
size_t output_length = 0;
|
size_t output_length = 0;
|
||||||
|
|
||||||
int result = mbedtls_pem_write_buffer(header.UTF8String, footer.UTF8String, self.crt->raw.p, self.crt->raw.len, pem_buffer, buffer_length, &output_length);
|
int result = mbedtls_pem_write_buffer(header.UTF8String, footer.UTF8String, self.crt->raw.p,
|
||||||
|
self.crt->raw.len, pem_buffer, buffer_length, &output_length);
|
||||||
if (result < 0) {
|
if (result < 0) {
|
||||||
if (error) {
|
if (error) {
|
||||||
NSString *reason = [NSError reasonFromResult:result];
|
*error = [NSError ovpn_errorObjectForMbedTLSError:result description: @"Failed to write PEM data"];
|
||||||
*error = [NSError errorWithDomain:OpenVPNIdentityErrorDomain code:result userInfo:@{
|
|
||||||
NSLocalizedDescriptionKey: @"Failed to write PEM data.",
|
|
||||||
NSLocalizedFailureReasonErrorKey: reason
|
|
||||||
}];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
free(pem_buffer);
|
free(pem_buffer);
|
||||||
@@ -103,11 +91,8 @@
|
|||||||
- (NSData *)derData:(out NSError **)error {
|
- (NSData *)derData:(out NSError **)error {
|
||||||
if (self.crt->raw.p == NULL || self.crt->raw.len == 0) {
|
if (self.crt->raw.p == NULL || self.crt->raw.len == 0) {
|
||||||
if (error) {
|
if (error) {
|
||||||
NSString *reason = [NSError reasonFromResult:MBEDTLS_ERR_X509_BAD_INPUT_DATA];
|
*error = [NSError ovpn_errorObjectForMbedTLSError:MBEDTLS_ERR_X509_BAD_INPUT_DATA
|
||||||
*error = [NSError errorWithDomain:OpenVPNIdentityErrorDomain code:MBEDTLS_ERR_X509_BAD_INPUT_DATA userInfo:@{
|
description: @"Failed to write DER data"];
|
||||||
NSLocalizedDescriptionKey: @"Failed to write DER data.",
|
|
||||||
NSLocalizedFailureReasonErrorKey:reason
|
|
||||||
}];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil;
|
return nil;
|
||||||
|
|||||||
@@ -6,11 +6,11 @@
|
|||||||
//
|
//
|
||||||
//
|
//
|
||||||
|
|
||||||
|
#import "OpenVPNPrivateKey.h"
|
||||||
|
|
||||||
#import <mbedtls/pk.h>
|
#import <mbedtls/pk.h>
|
||||||
|
|
||||||
#import "NSError+Message.h"
|
#import "NSError+OpenVPNError.h"
|
||||||
#import "OpenVPNError.h"
|
|
||||||
#import "OpenVPNPrivateKey.h"
|
|
||||||
|
|
||||||
@interface OpenVPNPrivateKey ()
|
@interface OpenVPNPrivateKey ()
|
||||||
|
|
||||||
@@ -45,14 +45,12 @@
|
|||||||
size_t pem_length = strlen(pemString.UTF8String) + 1;
|
size_t pem_length = strlen(pemString.UTF8String) + 1;
|
||||||
size_t password_length = password != nil ? strlen(password.UTF8String) : 0;
|
size_t password_length = password != nil ? strlen(password.UTF8String) : 0;
|
||||||
|
|
||||||
int result = mbedtls_pk_parse_key(key.ctx, (const unsigned char *)pemString.UTF8String, pem_length, (const unsigned char *)password.UTF8String, password_length);
|
int result = mbedtls_pk_parse_key(key.ctx, (const unsigned char *)pemString.UTF8String,
|
||||||
|
pem_length, (const unsigned char *)password.UTF8String, password_length);
|
||||||
|
|
||||||
if (result < 0) {
|
if (result < 0) {
|
||||||
if (error) {
|
if (error) {
|
||||||
NSString *reason = [NSError reasonFromResult:result];
|
*error = [NSError ovpn_errorObjectForMbedTLSError:result description:@"Failed to read PEM data"];
|
||||||
*error = [NSError errorWithDomain:OpenVPNIdentityErrorDomain code:result userInfo:@{
|
|
||||||
NSLocalizedDescriptionKey: @"Failed to read PEM data.",
|
|
||||||
NSLocalizedFailureReasonErrorKey: reason
|
|
||||||
}];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil;
|
return nil;
|
||||||
@@ -66,14 +64,12 @@
|
|||||||
|
|
||||||
size_t password_length = password != nil ? strlen(password.UTF8String) : 0;
|
size_t password_length = password != nil ? strlen(password.UTF8String) : 0;
|
||||||
|
|
||||||
int result = mbedtls_pk_parse_key(key.ctx, derData.bytes, derData.length, (const unsigned char *)password.UTF8String, password_length);
|
int result = mbedtls_pk_parse_key(key.ctx, derData.bytes,
|
||||||
|
derData.length, (const unsigned char *)password.UTF8String, password_length);
|
||||||
|
|
||||||
if (result < 0) {
|
if (result < 0) {
|
||||||
if (error) {
|
if (error) {
|
||||||
NSString *reason = [NSError reasonFromResult:result];
|
*error = [NSError ovpn_errorObjectForMbedTLSError:result description:@"Failed to read DER data"];
|
||||||
*error = [NSError errorWithDomain:OpenVPNIdentityErrorDomain code:result userInfo:@{
|
|
||||||
NSLocalizedDescriptionKey: @"Failed to read DER data.",
|
|
||||||
NSLocalizedFailureReasonErrorKey: reason
|
|
||||||
}];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil;
|
return nil;
|
||||||
@@ -89,18 +85,15 @@
|
|||||||
int result = mbedtls_pk_write_key_pem(self.ctx, pem_buffer, buffer_length);
|
int result = mbedtls_pk_write_key_pem(self.ctx, pem_buffer, buffer_length);
|
||||||
if (result < 0) {
|
if (result < 0) {
|
||||||
if (error) {
|
if (error) {
|
||||||
NSString *reason = [NSError reasonFromResult:result];
|
*error = [NSError ovpn_errorObjectForMbedTLSError:result description:@"Failed to write PEM data"];
|
||||||
*error = [NSError errorWithDomain:OpenVPNIdentityErrorDomain code:result userInfo:@{
|
|
||||||
NSLocalizedDescriptionKey: @"Failed to write PEM data.",
|
|
||||||
NSLocalizedFailureReasonErrorKey: reason
|
|
||||||
}];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
free(pem_buffer);
|
free(pem_buffer);
|
||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
NSData *pemData = [[NSString stringWithCString:(const char *)pem_buffer encoding:NSUTF8StringEncoding] dataUsingEncoding:NSUTF8StringEncoding];
|
NSData *pemData = [[NSString stringWithCString:(const char *)pem_buffer
|
||||||
|
encoding:NSUTF8StringEncoding] dataUsingEncoding:NSUTF8StringEncoding];
|
||||||
|
|
||||||
free(pem_buffer);
|
free(pem_buffer);
|
||||||
return pemData;
|
return pemData;
|
||||||
@@ -113,11 +106,7 @@
|
|||||||
int result = mbedtls_pk_write_key_der(self.ctx, der_buffer, buffer_length);
|
int result = mbedtls_pk_write_key_der(self.ctx, der_buffer, buffer_length);
|
||||||
if (result < 0) {
|
if (result < 0) {
|
||||||
if (error) {
|
if (error) {
|
||||||
NSString *reason = [NSError reasonFromResult:result];
|
*error = [NSError ovpn_errorObjectForMbedTLSError:result description:@"Failed to write DER data"];
|
||||||
*error = [NSError errorWithDomain:OpenVPNIdentityErrorDomain code:result userInfo:@{
|
|
||||||
NSLocalizedDescriptionKey: @"Failed to write DER data.",
|
|
||||||
NSLocalizedFailureReasonErrorKey: reason
|
|
||||||
}];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
free(der_buffer);
|
free(der_buffer);
|
||||||
|
|||||||
Reference in New Issue
Block a user