Skip to content

Commit fd38e6e

Browse files
committed
Refactor 'generateSHA256HMAC(secret:message:)' to use CryptoKit
1 parent 88c0214 commit fd38e6e

File tree

1 file changed

+5
-26
lines changed

1 file changed

+5
-26
lines changed

Sources/Helpers/Crypto.swift

Lines changed: 5 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import CommonCrypto
1+
import CryptoKit
22
import Foundation
33
import TweetNacl
44

@@ -17,33 +17,12 @@ struct Crypto {
1717
/// - message: The message.
1818
/// - Returns: The hex-encoded MAC string.
1919
static func generateSHA256HMAC(secret: String, message: String) -> String {
20-
let secretData = Data(secret.utf8)
21-
let messageData = Data(message.utf8)
22-
23-
let algorithm = CCHmacAlgorithm(kCCHmacAlgSHA256)
24-
let digestLength = Int(CC_SHA256_DIGEST_LENGTH)
25-
26-
var digest = Data(count: digestLength)
27-
28-
digest.withUnsafeMutableBytes { (digestBytes: UnsafeMutableRawBufferPointer) in
29-
secretData.withUnsafeBytes { (secretBytes: UnsafeRawBufferPointer) in
30-
messageData.withUnsafeBytes { (messageBytes: UnsafeRawBufferPointer) in
31-
CCHmac(algorithm,
32-
secretBytes.baseAddress,
33-
secretData.count,
34-
messageBytes.baseAddress,
35-
messageData.count,
36-
digestBytes.baseAddress)
37-
}
38-
}
39-
}
40-
41-
// Data to hex string
42-
let signature = digest
43-
.map { String(format: "%02x", $0) }
44-
.joined()
20+
let key = SymmetricKey(data: Data(secret.utf8))
21+
let signature = HMAC<SHA256>.authenticationCode(for: Data(message.utf8), using: key)
4522

4623
return signature
24+
.map { String(format: "%02hhx", $0) }
25+
.joined()
4726
}
4827

4928
/// Decrypts some data `String` using a key, according to the NaCl secret box algorithm.

0 commit comments

Comments
 (0)