Remove CryptoKit in favour of Crypto

This commit is contained in:
Christoph Hagen 2022-04-08 13:58:49 +02:00
parent 1c6c29d585
commit 562c6fb9c1
2 changed files with 33 additions and 26 deletions

View File

@ -0,0 +1,33 @@
import Foundation
import Crypto
extension Message {
static var length: Int {
SHA256.byteCount + Content.length
}
init<T: Sequence>(decodeFrom data: T) where T.Element == UInt8 {
let count = SHA256.byteCount
self.mac = Data(data.prefix(count))
self.content = .init(decodeFrom: Array(data.dropFirst(count)))
}
func isValid(using key: SymmetricKey) -> Bool {
HMAC<SHA256>.isValidAuthenticationCode(mac, authenticating: content.encoded, using: key)
}
}
extension Message.Content {
func authenticate(using key: SymmetricKey) -> Message {
let mac = HMAC<SHA256>.authenticationCode(for: encoded, using: key)
return .init(mac: Data(mac.map { $0 }), content: self)
}
func authenticateAndSerialize(using key: SymmetricKey) -> Data {
let encoded = self.encoded
let mac = HMAC<SHA256>.authenticationCode(for: encoded, using: key)
return Data(mac.map { $0 }) + encoded
}
}

View File

@ -1,13 +1,8 @@
import Foundation
import CryptoKit
import NIOCore
struct Message: Equatable, Hashable {
static var length: Int {
SHA256Digest.byteCount + Content.length
}
struct Content: Equatable, Hashable {
let time: UInt32
@ -28,17 +23,6 @@ struct Message: Equatable, Hashable {
MemoryLayout<UInt32>.size * 2
}
func authenticate(using key: SymmetricKey) -> Message {
let mac = HMAC<SHA256>.authenticationCode(for: encoded, using: key)
return .init(mac: Data(mac.map { $0 }), content: self)
}
func authenticateAndSerialize(using key: SymmetricKey) -> Data {
let encoded = self.encoded
let mac = HMAC<SHA256>.authenticationCode(for: encoded, using: key)
return Data(mac.map { $0 }) + encoded
}
var encoded: Data {
time.encoded + id.encoded
}
@ -64,16 +48,6 @@ struct Message: Equatable, Hashable {
self.init(decodeFrom: data)
}
private init<T: Sequence>(decodeFrom data: T) where T.Element == UInt8 {
let count = SHA256Digest.byteCount
self.mac = Data(data.prefix(count))
self.content = .init(decodeFrom: Array(data.dropFirst(count)))
}
func isValid(using key: SymmetricKey) -> Bool {
HMAC<SHA256>.isValidAuthenticationCode(mac, authenticating: content.encoded, using: key)
}
var encoded: Data {
mac + content.encoded
}