From da4abe9ba139b73792902089c7d7d2aefccf0ebb Mon Sep 17 00:00:00 2001 From: Sergey Abramchuk Date: Wed, 6 Sep 2017 22:58:41 +0300 Subject: [PATCH] Return error object if parsing finished with failure --- OpenVPN Adapter/OpenVPNCertificate.m | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/OpenVPN Adapter/OpenVPNCertificate.m b/OpenVPN Adapter/OpenVPNCertificate.m index bfa942c..49b6d9c 100644 --- a/OpenVPN Adapter/OpenVPNCertificate.m +++ b/OpenVPN Adapter/OpenVPNCertificate.m @@ -8,6 +8,8 @@ #import +#import "NSError+Message.h" +#import "OpenVPNError.h" #import "OpenVPNCertificate.h" @interface OpenVPNCertificate () @@ -34,9 +36,13 @@ NSString *pemString = [[NSString alloc] initWithData:pemData encoding:NSUTF8StringEncoding]; int result = mbedtls_x509_crt_parse(certificate.crt, (const unsigned char *)pemString.UTF8String, pemData.length + 1); - if (result != 0) { + if (result < 0) { if (error) { - // TODO: Return parse error + NSString *reason = [NSError reasonFromResult:result]; + *error = [NSError errorWithDomain:OpenVPNIdentityErrorDomain code:result userInfo:@{ + NSLocalizedDescriptionKey: @"Failed to parse PEM data.", + NSLocalizedFailureReasonErrorKey: reason + }]; } return nil; @@ -49,9 +55,13 @@ OpenVPNCertificate *certificate = [OpenVPNCertificate new]; int result = mbedtls_x509_crt_parse_der(certificate.crt, derData.bytes, derData.length); - if (result != 0) { + if (result < 0) { if (error) { - // TODO: Return parse error + NSString *reason = [NSError reasonFromResult:result]; + *error = [NSError errorWithDomain:OpenVPNIdentityErrorDomain code:result userInfo:@{ + NSLocalizedDescriptionKey: @"Failed to parse DER data.", + NSLocalizedFailureReasonErrorKey: reason + }]; } return nil;