#import <Cocoa/Cocoa.h>
#include "CommonDigest.h"
#include "CommonDigestSPI.h"
#import "TestToolProtocol.h"
typedef int (^initBlock)(void *ctx);
typedef int (^updateBlock)(void *ctx, const void *data, CC_LONG len);
typedef int (^finalBlock)(unsigned char *md, void *ctx);
typedef unsigned char* (^oneShotBlock)(const void *data, CC_LONG len, unsigned char *md);
#define MIN_DATA_SIZE 1
#define MAX_DATA_SIZE 10000
#define MAX_DIGEST_SIZE 64
#define MAX_CONTEXT_SIZE CC_DIGEST_SIZE
@interface CCDigestTestObject : NSObject
{
NSString* _digestName; size_t _digestSize; initBlock _initBlock; updateBlock _updateBlock; finalBlock _finalBlock; oneShotBlock _oneShotBlock; NSData* _stagedResult; NSData* _oneShotResult; NSData* _digestData; unsigned char _context[MAX_CONTEXT_SIZE]; id<TestToolProtocol>
_testObject; BOOL _testPassed;
}
@property (readonly) NSString* digestName;
@property (readonly) size_t digestSize;
@property (readonly) NSData* stagedResult;
@property (readonly) NSData* oneShotResult;
@property (readonly) NSData* digestData;
@property (readwrite, assign) id<TestToolProtocol> testObject;
@property (readonly) BOOL testPassed;
+ (NSArray *)setupDigestTests:(id<TestToolProtocol>)testObject;
- (id)initWithDigestName:(NSString *)name withDigestSize:(size_t)size
withInitBlock:(initBlock)initDigest
withUpdateBlock:(updateBlock)updateDigest
withFinalBlock:(finalBlock)completeDigest
withOneShotBlock:(oneShotBlock)oneShotDigest;
- (void)doAssertTest:(BOOL)result errorString:(NSString *)errorStr;
- (void)runTest;
@end