Merge heads.

This commit is contained in:
Jonathan Schleifer 2012-01-26 23:25:46 +01:00
commit 73eeb3c507
8 changed files with 64 additions and 55 deletions

View file

@ -11,6 +11,11 @@
4B1295EF1337BD5F00154B25 /* test.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B1295EE1337BD5F00154B25 /* test.m */; };
4B1295F11337C37E00154B25 /* ObjXMPP.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BC559911337A65400E345C7 /* ObjXMPP.framework */; };
4B1295F21337C3CF00154B25 /* ObjFW.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BC559D61337ABD300E345C7 /* ObjFW.framework */; };
4B19F57A14D17082005D52DC /* XMPPCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B19F57614D17081005D52DC /* XMPPCallback.h */; settings = {ATTRIBUTES = (Public, ); }; };
4B19F57B14D17082005D52DC /* XMPPCallback.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B19F57714D17081005D52DC /* XMPPCallback.m */; };
4B19F57C14D17082005D52DC /* XMPPEXTERNALAuth.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B19F57814D17081005D52DC /* XMPPEXTERNALAuth.h */; settings = {ATTRIBUTES = (Public, ); }; };
4B19F57D14D17082005D52DC /* XMPPEXTERNALAuth.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B19F57914D17081005D52DC /* XMPPEXTERNALAuth.m */; };
4B19F5A314D1779E005D52DC /* ObjOpenSSL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B19F5A214D1779E005D52DC /* ObjOpenSSL.framework */; };
4B4844F5138BBC7500EB48A5 /* XMPPSRVLookup.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B4844F3138BBC7400EB48A5 /* XMPPSRVLookup.h */; settings = {ATTRIBUTES = (Public, ); }; };
4B4844F6138BBC7500EB48A5 /* XMPPSRVLookup.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B4844F4138BBC7500EB48A5 /* XMPPSRVLookup.m */; };
4B484501138BBEEB00EB48A5 /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B484500138BBEEB00EB48A5 /* libresolv.dylib */; };
@ -35,7 +40,6 @@
4BC55A001337AC1800E345C7 /* XMPPSCRAMAuth.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BC559FD1337AC1800E345C7 /* XMPPSCRAMAuth.m */; };
4BC55A011337AC1800E345C7 /* XMPPStanza.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BC559FE1337AC1800E345C7 /* XMPPStanza.h */; settings = {ATTRIBUTES = (Public, ); }; };
4BC55A021337AC1800E345C7 /* XMPPStanza.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BC559FF1337AC1800E345C7 /* XMPPStanza.m */; };
4BD0AB16134129B900445289 /* ObjOpenSSL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BD0AB15134129B900445289 /* ObjOpenSSL.framework */; };
4BD9BF59134003F700DAB43A /* XMPPRosterItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BD9BF57134003F700DAB43A /* XMPPRosterItem.h */; settings = {ATTRIBUTES = (Public, ); }; };
4BD9BF5A134003F700DAB43A /* XMPPRosterItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BD9BF58134003F700DAB43A /* XMPPRosterItem.m */; };
4BDEF8071340B240000156D1 /* XMPPRoster.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BDEF8051340B240000156D1 /* XMPPRoster.h */; settings = {ATTRIBUTES = (Public, ); }; };
@ -59,6 +63,11 @@
4B01D01F137C7E7D005624EA /* namespaces.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = namespaces.h; path = src/namespaces.h; sourceTree = SOURCE_ROOT; };
4B1295E01337BD2D00154B25 /* ObjXMPPTests */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = ObjXMPPTests; sourceTree = BUILT_PRODUCTS_DIR; };
4B1295EE1337BD5F00154B25 /* test.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = test.m; path = tests/test.m; sourceTree = SOURCE_ROOT; };
4B19F57614D17081005D52DC /* XMPPCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = XMPPCallback.h; path = src/XMPPCallback.h; sourceTree = SOURCE_ROOT; };
4B19F57714D17081005D52DC /* XMPPCallback.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = XMPPCallback.m; path = src/XMPPCallback.m; sourceTree = SOURCE_ROOT; };
4B19F57814D17081005D52DC /* XMPPEXTERNALAuth.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = XMPPEXTERNALAuth.h; path = src/XMPPEXTERNALAuth.h; sourceTree = SOURCE_ROOT; };
4B19F57914D17081005D52DC /* XMPPEXTERNALAuth.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = XMPPEXTERNALAuth.m; path = src/XMPPEXTERNALAuth.m; sourceTree = SOURCE_ROOT; };
4B19F5A214D1779E005D52DC /* ObjOpenSSL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ObjOpenSSL.framework; path = /Library/Frameworks/ObjOpenSSL.framework; sourceTree = "<group>"; };
4B4844F3138BBC7400EB48A5 /* XMPPSRVLookup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = XMPPSRVLookup.h; path = src/XMPPSRVLookup.h; sourceTree = SOURCE_ROOT; };
4B4844F4138BBC7500EB48A5 /* XMPPSRVLookup.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = XMPPSRVLookup.m; path = src/XMPPSRVLookup.m; sourceTree = SOURCE_ROOT; };
4B484500138BBEEB00EB48A5 /* libresolv.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libresolv.dylib; path = usr/lib/libresolv.dylib; sourceTree = SDKROOT; };
@ -85,7 +94,6 @@
4BC559FE1337AC1800E345C7 /* XMPPStanza.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = XMPPStanza.h; path = src/XMPPStanza.h; sourceTree = SOURCE_ROOT; };
4BC559FF1337AC1800E345C7 /* XMPPStanza.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = XMPPStanza.m; path = src/XMPPStanza.m; sourceTree = SOURCE_ROOT; };
4BC55A051337ADA800E345C7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = SOURCE_ROOT; };
4BD0AB15134129B900445289 /* ObjOpenSSL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ObjOpenSSL.framework; path = ../ObjOpenSSL/build/Debug/ObjOpenSSL.framework; sourceTree = "<group>"; };
4BD9BF57134003F700DAB43A /* XMPPRosterItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = XMPPRosterItem.h; path = src/XMPPRosterItem.h; sourceTree = SOURCE_ROOT; };
4BD9BF58134003F700DAB43A /* XMPPRosterItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = XMPPRosterItem.m; path = src/XMPPRosterItem.m; sourceTree = SOURCE_ROOT; };
4BDEF8051340B240000156D1 /* XMPPRoster.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = XMPPRoster.h; path = src/XMPPRoster.h; sourceTree = SOURCE_ROOT; };
@ -106,8 +114,8 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
4BD0AB16134129B900445289 /* ObjOpenSSL.framework in Frameworks */,
4BC559D71337ABD300E345C7 /* ObjFW.framework in Frameworks */,
4B19F5A314D1779E005D52DC /* ObjOpenSSL.framework in Frameworks */,
4B484501138BBEEB00EB48A5 /* libresolv.dylib in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
@ -155,7 +163,7 @@
isa = PBXGroup;
children = (
4BC559D61337ABD300E345C7 /* ObjFW.framework */,
4BD0AB15134129B900445289 /* ObjOpenSSL.framework */,
4B19F5A214D1779E005D52DC /* ObjOpenSSL.framework */,
);
name = Frameworks;
sourceTree = "<group>";
@ -166,10 +174,14 @@
4BC5599B1337A65400E345C7 /* Supporting Files */,
4BC559DA1337AC0900E345C7 /* XMPPAuthenticator.h */,
4BC559DB1337AC0900E345C7 /* XMPPAuthenticator.m */,
4B19F57614D17081005D52DC /* XMPPCallback.h */,
4B19F57714D17081005D52DC /* XMPPCallback.m */,
4BC559DC1337AC0900E345C7 /* XMPPConnection.h */,
4BC559DD1337AC0900E345C7 /* XMPPConnection.m */,
4BC559DE1337AC0900E345C7 /* XMPPExceptions.h */,
4BC559DF1337AC0900E345C7 /* XMPPExceptions.m */,
4B19F57814D17081005D52DC /* XMPPEXTERNALAuth.h */,
4B19F57914D17081005D52DC /* XMPPEXTERNALAuth.m */,
4BC559E01337AC0900E345C7 /* XMPPIQ.h */,
4BC559E11337AC0900E345C7 /* XMPPIQ.m */,
4BC559E21337AC0900E345C7 /* XMPPJID.h */,
@ -212,8 +224,10 @@
buildActionMask = 2147483647;
files = (
4BC559EC1337AC0900E345C7 /* XMPPAuthenticator.h in Headers */,
4B19F57A14D17082005D52DC /* XMPPCallback.h in Headers */,
4BC559EE1337AC0900E345C7 /* XMPPConnection.h in Headers */,
4BC559F01337AC0900E345C7 /* XMPPExceptions.h in Headers */,
4B19F57C14D17082005D52DC /* XMPPEXTERNALAuth.h in Headers */,
4BC559F21337AC0900E345C7 /* XMPPIQ.h in Headers */,
4BC559F41337AC0900E345C7 /* XMPPJID.h in Headers */,
4BC559F61337AC0900E345C7 /* XMPPMessage.h in Headers */,
@ -271,6 +285,9 @@
/* Begin PBXProject section */
4BC559871337A65400E345C7 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0420;
};
buildConfigurationList = 4BC5598A1337A65400E345C7 /* Build configuration list for PBXProject "ObjXMPP" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
@ -313,8 +330,10 @@
buildActionMask = 2147483647;
files = (
4BC559ED1337AC0900E345C7 /* XMPPAuthenticator.m in Sources */,
4B19F57B14D17082005D52DC /* XMPPCallback.m in Sources */,
4BC559EF1337AC0900E345C7 /* XMPPConnection.m in Sources */,
4BC559F11337AC0900E345C7 /* XMPPExceptions.m in Sources */,
4B19F57D14D17082005D52DC /* XMPPEXTERNALAuth.m in Sources */,
4BC559F31337AC0900E345C7 /* XMPPIQ.m in Sources */,
4BC559F51337AC0900E345C7 /* XMPPJID.m in Sources */,
4BC559F71337AC0900E345C7 /* XMPPMessage.m in Sources */,
@ -363,7 +382,7 @@
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = DEBUG;
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
GCC_VERSION = 4.2;
GCC_VERSION = com.apple.compilers.llvmgcc42;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
@ -374,10 +393,6 @@
"-fconstant-string-class=OFConstantString",
"-fno-constant-cfstrings",
);
OTHER_LDFLAGS = (
"-L/opt/local/lib",
"-lidn",
);
SDKROOT = macosx;
};
name = Debug;
@ -387,7 +402,7 @@
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_VERSION = 4.2;
GCC_VERSION = com.apple.compilers.llvmgcc42;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
@ -397,10 +412,6 @@
"-fconstant-string-class=OFConstantString",
"-fno-constant-cfstrings",
);
OTHER_LDFLAGS = (
"-L/opt/local/lib",
"-lidn",
);
SDKROOT = macosx;
};
name = Release;
@ -417,11 +428,10 @@
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREPROCESSOR_DEFINITIONS = HAVE_RES_NDESTROY;
GCC_VERSION = 4.2;
INFOPLIST_FILE = Info.plist;
OTHER_LDFLAGS = (
"-Wl,-reexport_framework,ObjOpenSSL",
"-lcrypto",
"-L/opt/local/lib",
"-lidn",
);
PRODUCT_NAME = "$(TARGET_NAME)";
@ -441,11 +451,10 @@
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREPROCESSOR_DEFINITIONS = HAVE_RES_NDESTROY;
GCC_VERSION = 4.2;
INFOPLIST_FILE = Info.plist;
OTHER_LDFLAGS = (
"-Wl,-reexport_framework,ObjOpenSSL",
"-lcrypto",
"-L/opt/local/lib",
"-lidn",
);
PRODUCT_NAME = "$(TARGET_NAME)";

View file

@ -25,7 +25,7 @@
@class XMPPIQ;
#ifdef OF_HAVE_BLOCKS
typedef void(^xmpp_callback_block)(XMPPIQ*);
typedef void(^xmpp_callback_block_t)(XMPPIQ*);
#endif
@interface XMPPCallback: OFObject
@ -33,10 +33,12 @@ typedef void(^xmpp_callback_block)(XMPPIQ*);
id object;
SEL selector;
}
#ifdef OF_HAVE_BLOCKS
+ callbackWithCallbackBlock: (xmpp_callback_block)callback;
- initWithCallbackBlock: (xmpp_callback_block)callback;
+ callbackWithCallbackBlock: (xmpp_callback_block_t)callback;
- initWithCallbackBlock: (xmpp_callback_block_t)callback;
#endif
+ callbackWithCallbackObject: (id)object
selector: (SEL)selector;
- initWithCallbackObject: (id)object

View file

@ -28,12 +28,12 @@
@implementation XMPPCallback
#ifdef OF_HAVE_BLOCKS
+ callbackWithCallbackBlock: (xmpp_callback_block)callback
+ callbackWithCallbackBlock: (xmpp_callback_block_t)callback
{
return [[[self alloc] initWithCallbackBlock: callback] autorelease];
}
- initWithCallbackBlock: (xmpp_callback_block)callback
- initWithCallbackBlock: (xmpp_callback_block_t)callback
{
self = [super init];
@ -55,8 +55,7 @@
{
self = [super init];
// TODO: Retain or follow delegate paradigm?
object = [object_ retain];
object = object_;
selector = selector_;
return self;
@ -64,8 +63,6 @@
- (void)dealloc
{
[object release];
[super dealloc];
}
@ -73,7 +70,7 @@
{
#ifdef OF_HAVE_BLOCKS
if ([object isKindOfClass: [OFBlock class]])
((xmpp_callback_block)object)(iq);
((xmpp_callback_block_t)object)(iq);
else
#endif
[object performSelector: selector

View file

@ -383,9 +383,9 @@
[sock writeString: [element XMLString]];
}
- (void)sendIQ: (XMPPIQ*)iq
withCallbackObject: (id)object
selector: (SEL)selector
- (void)sendIQ: (XMPPIQ*)iq
withCallbackObject: (id)object
selector: (SEL)selector
{
OFAutoreleasePool *pool = [[OFAutoreleasePool alloc] init];
@try {
@ -404,8 +404,8 @@ withCallbackObject: (id)object
}
#ifdef OF_HAVE_BLOCKS
- (void)sendIQ: (XMPPIQ*)iq
withCallbackBlock: (xmpp_callback_block)callback;
- (void)sendIQ: (XMPPIQ*)iq
withCallbackBlock: (xmpp_callback_block_t)callback;
{
OFAutoreleasePool *pool = [[OFAutoreleasePool alloc] init];
@try {
@ -933,9 +933,9 @@ withCallbackBlock: (xmpp_callback_block)callback;
[iq addChild: bind];
[self sendIQ: iq
withCallbackObject: self
selector: @selector(XMPP_handleResourceBind:)];
[self sendIQ: iq
withCallbackObject: self
selector: @selector(XMPP_handleResourceBind:)];
}
- (void)XMPP_sendStreamError: (OFString*)condition
@ -992,9 +992,9 @@ withCallbackBlock: (xmpp_callback_block)callback;
ID: [self generateStanzaID]];
[iq addChild: [OFXMLElement elementWithName: @"session"
namespace: XMPP_NS_SESSION]];
[self sendIQ: iq
withCallbackObject: self
selector: @selector(XMPP_handleSession:)];
[self sendIQ: iq
withCallbackObject: self
selector: @selector(XMPP_handleSession:)];
}
- (void)XMPP_handleSession: (XMPPIQ*)iq

View file

@ -42,7 +42,7 @@
- (OFDataArray*)initialMessage
{
OFDataArray *message = [OFDataArray dataArrayWithItemSize: 1];
OFDataArray *message = [OFDataArray dataArray];
/* authzid */
if (authzid)

View file

@ -46,7 +46,7 @@
- (OFDataArray*)initialMessage
{
OFDataArray *message = [OFDataArray dataArrayWithItemSize: 1];
OFDataArray *message = [OFDataArray dataArray];
/* authzid */
if (authzid)

View file

@ -81,6 +81,7 @@
{
if (type == nil)
return @"available";
return [[type copy] autorelease];
}

View file

@ -145,7 +145,7 @@
- (OFDataArray*)initialMessage
{
OFDataArray *ret = [OFDataArray dataArrayWithItemSize: 1];
OFDataArray *ret = [OFDataArray dataArray];
/* New authentication attempt, reset status */
[cNonce release];
@ -215,8 +215,8 @@
} got = 0;
hash = [[[hashType alloc] init] autorelease];
ret = [OFDataArray dataArrayWithItemSize: 1];
authMessage = [OFDataArray dataArrayWithItemSize: 1];
ret = [OFDataArray dataArray];
authMessage = [OFDataArray dataArray];
OFString *chal = [OFString stringWithUTF8String: [data cArray]
length: [data count] *
@ -252,7 +252,7 @@
@throw [OFInvalidServerReplyException exceptionWithClass: isa];
// Add c=<base64(GS2Header+channelBindingData)>
tmpArray = [OFDataArray dataArrayWithItemSize: 1];
tmpArray = [OFDataArray dataArray];
[tmpArray addNItems: [GS2Header UTF8StringLength]
fromCArray: [GS2Header UTF8String]];
if (plusAvailable && [connection encrypted]) {
@ -278,7 +278,7 @@
* IETF RFC 5802:
* SaltedPassword := Hi(Normalize(password), salt, i)
*/
tmpArray = [OFDataArray dataArrayWithItemSize: 1];
tmpArray = [OFDataArray dataArray];
[tmpArray addNItems: [password UTF8StringLength]
fromCArray: [password UTF8String]];
@ -305,7 +305,7 @@
* IETF RFC 5802:
* ClientKey := HMAC(SaltedPassword, "Client Key")
*/
tmpArray = [OFDataArray dataArrayWithItemSize: 1];
tmpArray = [OFDataArray dataArray];
[tmpArray addNItems: 10
fromCArray: "Client Key"];
clientKey = [self XMPP_HMACWithKey: saltedPassword
@ -317,7 +317,7 @@
*/
[hash updateWithBuffer: (void*) clientKey
length: [hashType digestSize]];
tmpArray = [OFDataArray dataArrayWithItemSize: 1];
tmpArray = [OFDataArray dataArray];
[tmpArray addNItems: [hashType digestSize]
fromCArray: [hash digest]];
@ -332,7 +332,7 @@
* IETF RFC 5802:
* ServerKey := HMAC(SaltedPassword, "Server Key")
*/
tmpArray = [OFDataArray dataArrayWithItemSize: 1];
tmpArray = [OFDataArray dataArray];
[tmpArray addNItems: 10
fromCArray: "Server Key"];
serverKey = [self XMPP_HMACWithKey: saltedPassword
@ -342,10 +342,10 @@
* IETF RFC 5802:
* ServerSignature := HMAC(ServerKey, AuthMessage)
*/
tmpArray = [OFDataArray dataArrayWithItemSize: 1];
tmpArray = [OFDataArray dataArray];
[tmpArray addNItems: [hashType digestSize]
fromCArray: serverKey];
serverSignature = [[OFDataArray alloc] initWithItemSize: 1];
serverSignature = [[OFDataArray alloc] init];
[serverSignature addNItems: [hashType digestSize]
fromCArray: [self XMPP_HMACWithKey: tmpArray
data: authMessage]];
@ -354,7 +354,7 @@
* IETF RFC 5802:
* ClientProof := ClientKey XOR ClientSignature
*/
tmpArray = [OFDataArray dataArrayWithItemSize: 1];
tmpArray = [OFDataArray dataArray];
for (i = 0; i < [hashType digestSize]; i++) {
uint8_t c = clientKey[i] ^ clientSignature[i];
[tmpArray addItem: &c];
@ -428,7 +428,7 @@
data: (OFDataArray*)data
{
OFAutoreleasePool *pool = [[OFAutoreleasePool alloc] init];
OFDataArray *k = [OFDataArray dataArrayWithItemSize: 1];
OFDataArray *k = [OFDataArray dataArray];
size_t i, kSize, blockSize = [hashType blockSize];
uint8_t *kI = NULL, *kO = NULL;
OFHash *hashI, *hashO;
@ -505,7 +505,7 @@
result[j] ^= uOld[j];
for (j = 0; j < i - 1; j++) {
tmp = [OFDataArray dataArrayWithItemSize: 1];
tmp = [OFDataArray dataArray];
[tmp addNItems: digestSize
fromCArray: uOld];
@ -520,7 +520,7 @@
[pool releaseObjects];
}
ret = [OFDataArray dataArrayWithItemSize: 1];
ret = [OFDataArray dataArray];
[ret addNItems: digestSize
fromCArray: result];
} @finally {