Refactor UInt128 initialization from byte array and clarify variable names in tests

Replaces unsafe memory operations in UInt128 init with manual byte parsing to
improve safety and readability. Updates variable names in RSASecKeyTests for
clarity and safety.
This commit is contained in:
Marcin Krzyzanowski
2026-01-19 19:46:13 +01:00
parent a41ae3ba4f
commit a2acb6155f
2 changed files with 8 additions and 6 deletions
+6 -4
View File
@@ -25,10 +25,12 @@ struct UInt128: Equatable, ExpressibleByIntegerLiteral {
}
init(_ raw: Array<UInt8>) {
self = raw.prefix(MemoryLayout<UInt128>.stride).withUnsafeBytes({ (rawBufferPointer) -> UInt128 in
let arr = rawBufferPointer.bindMemory(to: UInt64.self)
return UInt128((arr[0].bigEndian, arr[1].bigEndian))
})
precondition(raw.count >= 16, "UInt128 requires at least 16 bytes")
let a = UInt64(raw[0]) << 56 | UInt64(raw[1]) << 48 | UInt64(raw[2]) << 40 | UInt64(raw[3]) << 32 |
UInt64(raw[4]) << 24 | UInt64(raw[5]) << 16 | UInt64(raw[6]) << 8 | UInt64(raw[7])
let b = UInt64(raw[8]) << 56 | UInt64(raw[9]) << 48 | UInt64(raw[10]) << 40 | UInt64(raw[11]) << 32 |
UInt64(raw[12]) << 24 | UInt64(raw[13]) << 16 | UInt64(raw[14]) << 8 | UInt64(raw[15])
self.init((a, b))
}
init(_ raw: ArraySlice<UInt8>) {
+2 -2
View File
@@ -493,7 +493,7 @@
)
"""
private func initSecKey(rawRepresentation unsafe: Data) throws -> SecKey {
private func initSecKey(rawRepresentation rawKey: Data) throws -> SecKey {
let attributes: [String: Any] = [
kSecAttrKeyType as String: kSecAttrKeyTypeRSA,
kSecAttrKeyClass as String: kSecAttrKeyClassPrivate,
@@ -502,7 +502,7 @@
]
var error: Unmanaged<CFError>?
guard let secKey = SecKeyCreateWithData(unsafe as CFData, attributes as CFDictionary, &error) else {
guard let secKey = SecKeyCreateWithData(rawKey as CFData, attributes as CFDictionary, &error) else {
throw NSError(domain: "Error constructing SecKey from raw key data: \(error.debugDescription)", code: 0, userInfo: nil)
}