// // SUDSAVerifierTest.m // Sparkle // // Created by Kornel on 25/07/2014. // Copyright (c) 2014 Sparkle Project. All rights reserved. // #import #import #import "SUDSAVerifier.h" @interface SUDSAVerifierTest : XCTestCase @property NSString *testDir, *testFile, *pubKeyFile; @end @implementation SUDSAVerifierTest @synthesize testDir, testFile, pubKeyFile; - (void)setUp { [super setUp]; self.testDir = [@"" __FILE__ stringByDeletingLastPathComponent]; self.testFile = [self.testDir stringByAppendingPathComponent:@"/signed_test_file"]; self.pubKeyFile = [self.testDir stringByAppendingPathComponent:@"test_pubkey"]; } - (void)testVerifyFileAtPath { NSData *pubKey = [NSData dataWithContentsOfFile:self.pubKeyFile]; XCTAssertNotNil(pubKey, @"Public key must be readable"); NSString *validSig = @"MCwCFCIHCIYYkfZavNzTitTW5tlRp/k5AhQ40poFytqcVhIYdCxQznaXeJPJDQ=="; XCTAssertTrue([self checkFile:self.testFile withPubKey:pubKey signature:validSig], @"Expected valid signature"); XCTAssertFalse([self checkFile:self.testFile withPubKey:[NSData dataWithBytes:"lol" length:3] signature:validSig], @"Invalid pubkey"); XCTAssertFalse([self checkFile:self.pubKeyFile withPubKey:pubKey signature:validSig], @"Wrong file checked"); XCTAssertFalse([self checkFile:self.testFile withPubKey:pubKey signature:@"MCwCFCIHCiYYkfZavNzTitTW5tlRp/k5AhQ40poFytqcVhIYdCxQznaXeJPJDQ=="], @"Expected invalid signature"); XCTAssertTrue([self checkFile:self.testFile withPubKey:pubKey signature:@"MC0CFAsKO7cq2q7L5/FWe6ybVIQkwAwSAhUA2Q8GKsE309eugi/v3Kh1W3w3N8c="], @"Expected valid signature"); XCTAssertFalse([self checkFile:self.testFile withPubKey:pubKey signature:@"MC0CFAsKO7cq2q7L5/FWe6ybVIQkwAwSAhUA2Q8GKsE309eugi/v3Kh1W3w3N8"], @"Expected invalid signature"); } - (BOOL)checkFile:(NSString *)aFile withPubKey:(NSData *)pubKey signature:(NSString *)sigString { SUDSAVerifier *v = [[SUDSAVerifier alloc] initWithPublicKeyData:pubKey]; NSData *sig = [[NSData alloc] initWithBase64Encoding:sigString]; return [v verifyFileAtPath:aFile signature:sig]; } - (void)testValidatePath { NSString *pubkey = [NSString stringWithContentsOfFile:self.pubKeyFile encoding:NSASCIIStringEncoding error:nil]; XCTAssertTrue([SUDSAVerifier validatePath:self.testFile withEncodedDSASignature:@"MC0CFFMF3ha5kjvrJ9JTpTR8BenPN9QUAhUAzY06JRdtP17MJewxhK0twhvbKIE=" withPublicDSAKey:pubkey], @"Expected valid signature"); } @end