Skip to content

Commit cd624e7

Browse files
committed
Improved code for iOS
1 parent d3c6b07 commit cd624e7

File tree

1 file changed

+18
-19
lines changed

1 file changed

+18
-19
lines changed

ios/sha256.m

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -17,39 +17,38 @@ @implementation sha256Lib
1717

1818
RCT_EXPORT_MODULE()
1919

20-
RCT_EXPORT_METHOD(sha1: (NSString *) data
21-
resolver: (RCTPromiseResolveBlock) resolve
22-
rejecter: (RCTPromiseRejectBlock) reject)
20+
typedef unsigned char (*DIGEST_FUNCTION)(const void *data, CC_LONG len, unsigned char *md);
2321

24-
{
25-
const char* str = [data UTF8String];
26-
unsigned char result[CC_SHA1_DIGEST_LENGTH];
27-
CC_SHA1(str, (CC_LONG)strlen(str), result);
22+
- (NSString*) calcHash: (NSString*) subject withDigestFunction: (DIGEST_FUNCTION) digest withDigestLength: (int) digestLength {
23+
24+
const char* str = [subject UTF8String];
25+
unsigned char result[digestLength];
26+
digest(str, strlen(str), result);
2827

29-
NSMutableString *ret = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH*2];
30-
for(int i = 0; i<CC_SHA1_DIGEST_LENGTH; i++)
28+
NSMutableString *ret = [NSMutableString stringWithCapacity:digestLength * 2];
29+
for(int i = 0; i < digestLength; i++)
3130
{
3231
[ret appendFormat:@"%02x",result[i]];
3332
}
3433

35-
resolve(ret);
34+
return ret;
3635
}
3736

38-
RCT_EXPORT_METHOD(sha256: (NSString *) data
37+
RCT_EXPORT_METHOD(sha1: (NSString *) data
3938
resolver: (RCTPromiseResolveBlock) resolve
4039
rejecter: (RCTPromiseRejectBlock) reject)
4140

4241
{
43-
const char* str = [data UTF8String];
44-
unsigned char result[CC_SHA256_DIGEST_LENGTH];
45-
CC_SHA256(str, strlen(str), result);
42+
NSString *ret = [self calcHash:data withDigestFunction:CC_SHA1 withDigestLength: CC_SHA1_DIGEST_LENGTH];
43+
resolve(ret);
44+
}
4645

47-
NSMutableString *ret = [NSMutableString stringWithCapacity:CC_SHA256_DIGEST_LENGTH*2];
48-
for(int i = 0; i<CC_SHA256_DIGEST_LENGTH; i++)
49-
{
50-
[ret appendFormat:@"%02x",result[i]];
51-
}
46+
RCT_EXPORT_METHOD(sha256: (NSString *) data
47+
resolver: (RCTPromiseResolveBlock) resolve
48+
rejecter: (RCTPromiseRejectBlock) reject)
5249

50+
{
51+
NSString *ret = [self calcHash:data withDigestFunction:CC_SHA256 withDigestLength: CC_SHA256_DIGEST_LENGTH];
5352
resolve(ret);
5453
}
5554

0 commit comments

Comments
 (0)