Skip to content

Commit ac8b8ab

Browse files
author
Gleb Dolgich
committed
Added command-line arguments to verify a registration code
1 parent 70414f8 commit ac8b8ab

File tree

1 file changed

+41
-11
lines changed

1 file changed

+41
-11
lines changed

objc/cocoafob.m

Lines changed: 41 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -77,34 +77,64 @@ void smoketest()
7777
return generator.regCode;
7878
}
7979

80+
// Pass public key, registration name and registration code to verify it
81+
BOOL codecheck(NSString *pubKeyFileName, NSString *regName, NSString *regCode)
82+
{
83+
NSError *err = nil;
84+
NSString *pubKey = [NSString stringWithContentsOfFile:pubKeyFileName encoding:NSASCIIStringEncoding error:&err];
85+
if (!pubKey || err)
86+
return NO;
87+
CFobLicVerifier *verifier = [CFobLicVerifier verifierWithPublicKey:pubKey];
88+
verifier.regName = regName;
89+
verifier.regCode = regCode;
90+
return [verifier verify];
91+
}
92+
8093
// Uses NSUserDefaults to parse command-line arguments:
8194
// -privkey <private-key-file-name>
8295
// -name <registration-name>
8396
// Prints generated registration code.
97+
// -pubkey <public-key-file-name>
98+
// -code <registration-code>
99+
// Verifies registration code.
84100
int main(int argc, const char * argv[])
85101
{
86102
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
87103

88-
puts("CocoaFob Command Line Utility Version 1.0b2");
104+
puts("CocoaFob Command Line Utility Version 1.0b3");
89105

90106
#ifdef TEST
91107
smoketest();
92108
#endif
93109
NSUserDefaults *args = [NSUserDefaults standardUserDefaults];
94110
NSString *privKeyFileName = [args stringForKey:@"privkey"];
111+
NSString *pubKeyFileName = [args stringForKey:@"pubkey"];
95112
NSString *regName = [args stringForKey:@"name"];
96-
if (!privKeyFileName || !regName) {
97-
puts("Usage: cocoafob -privkey <priv-key-file> -name <reg-name>");
113+
NSString *regCodeIn = [args stringForKey:@"code"];
114+
if (!((privKeyFileName && regName) || (pubKeyFileName && regName && regCodeIn))) {
115+
puts("Usage: cocoafob {-privkey <priv-key-file> -name <reg-name>|-pubkey <pub-key-file> -name <reg-name> -code <reg-code>}");
98116
return 1;
99117
}
100-
NSString *regCode = codegen(privKeyFileName, regName);
101-
int retval = 0;
102-
if (!regCode) {
103-
puts("Error");
104-
retval = 2;
105-
} else {
106-
puts([regCode UTF8String]);
107-
}
118+
int retval = 0;
119+
if (regCodeIn && pubKeyFileName && regName) {
120+
// Verify supplied registration code
121+
BOOL check = codecheck(pubKeyFileName, regName, regCodeIn);
122+
if (check) {
123+
puts("OK");
124+
} else {
125+
puts("Error");
126+
retval = 3;
127+
}
128+
} else {
129+
// Generate registration code
130+
NSString *regCode = codegen(privKeyFileName, regName);
131+
if (!regCode) {
132+
puts("Error");
133+
retval = 2;
134+
} else {
135+
puts([regCode UTF8String]);
136+
}
137+
}
108138
[pool drain];
109139
return retval;
110140
}

0 commit comments

Comments
 (0)