From a77ef8df00460ce5602201077e121d6cc0433f50 Mon Sep 17 00:00:00 2001 From: Pointcheval Hugo Date: Sun, 20 Dec 2020 22:07:24 +0100 Subject: [PATCH] Fix digest on iOS --- ios/Classes/Hash.swift | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/ios/Classes/Hash.swift b/ios/Classes/Hash.swift index eb6cd3c..430e2a7 100644 --- a/ios/Classes/Hash.swift +++ b/ios/Classes/Hash.swift @@ -42,24 +42,33 @@ class Hash { if (data == nil) { return nil } - let digestData = Data(count: algorithm.digestLength) - let digestBytes = digestData.withUnsafeBytes { $0.load(as: UnsafeMutablePointer.self) } - let messageBytes = data!.withUnsafeBytes { $0.load(as: UnsafePointer.self) } + let hashBytes = UnsafeMutablePointer.allocate(capacity: algorithm.digestLength) + defer { hashBytes.deallocate() } switch algorithm { case .SHA1: - CC_SHA1(messageBytes, CC_LONG(data!.count), digestBytes) + data!.withUnsafeBytes { (buffer) -> Void in + CC_SHA1(buffer.baseAddress!, CC_LONG(buffer.count), hashBytes) + } case .SHA224: - CC_SHA224(messageBytes, CC_LONG(data!.count), digestBytes) + data!.withUnsafeBytes { (buffer) -> Void in + CC_SHA224(buffer.baseAddress!, CC_LONG(buffer.count), hashBytes) + } case .SHA256: - CC_SHA256(messageBytes, CC_LONG(data!.count), digestBytes) + data!.withUnsafeBytes { (buffer) -> Void in + CC_SHA256(buffer.baseAddress!, CC_LONG(buffer.count), hashBytes) + } case .SHA384: - CC_SHA384(messageBytes, CC_LONG(data!.count), digestBytes) + data!.withUnsafeBytes { (buffer) -> Void in + CC_SHA384(buffer.baseAddress!, CC_LONG(buffer.count), hashBytes) + } case .SHA512: - CC_SHA512(messageBytes, CC_LONG(data!.count), digestBytes) + data!.withUnsafeBytes { (buffer) -> Void in + CC_SHA512(buffer.baseAddress!, CC_LONG(buffer.count), hashBytes) + } } - return digestData + return Data(bytes: hashBytes, count: algorithm.digestLength) } }