From bb74e6cfd8168a8f5639290a052811dbeecb9669 Mon Sep 17 00:00:00 2001 From: Florian Zeitz Date: Sun, 20 Nov 2011 21:27:34 +0100 Subject: [PATCH] Update to work with OFString changes --- src/X509Certificate.h | 5 ++++- src/X509Certificate.m | 44 +++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 46 insertions(+), 3 deletions(-) diff --git a/src/X509Certificate.h b/src/X509Certificate.h index ecccfbb..42614d2 100644 --- a/src/X509Certificate.h +++ b/src/X509Certificate.h @@ -67,5 +67,8 @@ - (OFString*)X509_stringFromASN1String: (ASN1_STRING*)str; @end -@interface X509OID: OFString {} +@interface X509OID: OFObject +{ + OFString *string; +} @end diff --git a/src/X509Certificate.m b/src/X509Certificate.m index 774182b..4452143 100644 --- a/src/X509Certificate.m +++ b/src/X509Certificate.m @@ -398,7 +398,8 @@ toSize: bufferLength]; } - ret = [X509OID stringWithUTF8String: buffer]; + ret = [[[X509OID alloc] + initWithUTF8String: buffer] autorelease]; } @finally { [self freeMemory: buffer]; } @@ -425,10 +426,49 @@ @end @implementation X509OID +- initWithUTF8String: (const char*) str +{ + self = [self init]; + + @try { + string = [[OFString alloc] initWithUTF8String: str]; + } @catch (id e) { + [self release]; + @throw e; + } + + return self; +} + +- (void)dealloc +{ + [string release]; + [super dealloc]; +} + - (OFString*)description { char tmp[1024]; - OBJ_obj2txt(tmp, sizeof(tmp), OBJ_txt2obj(s->cString, 1), 0); + OBJ_obj2txt(tmp, sizeof(tmp), OBJ_txt2obj([string UTF8String], 1), 0); return [OFString stringWithUTF8String: tmp]; } + +- (BOOL)isEqual: (id)object +{ + if (([object isKindOfClass: [OFString class]]) || + ([object isKindOfClass: [X509OID class]])) + return [object isEqual: string]; + + return NO; +} + +- (uint32_t)hash +{ + return [string hash]; +} + +- copy +{ + return [self retain]; +} @end