Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Sources/Web3Core/KeystoreManager/BIP32HDNode.swift
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ public class HDNode {
}
depth = data[4..<5].bytes[0]
parentFingerprint = data[5..<9]
childNumber = data[9..<13].bytes.withUnsafeBytes { $0.load(as: UInt32.self) }
childNumber = Array(data.dropFirst(9).prefix(4)).withUnsafeBytes { $0.load(as: UInt32.self) }
chaincode = data[13..<45]
if serializePrivate {
privateKey = data[46..<78]
Expand Down
14 changes: 7 additions & 7 deletions Sources/Web3Core/Utility/Utilities.swift
Original file line number Diff line number Diff line change
Expand Up @@ -239,8 +239,8 @@ public struct Utilities {
/// Takes a hash of some message. What message is hashed should be checked by user separately.
public static func hashECRecover(hash: Data, signature: Data) -> EthereumAddress? {
if signature.count != 65 { return nil }
let rData = signature[0..<32].bytes
let sData = signature[32..<64].bytes
let rData: [UInt8] = Array(signature.prefix(32))
let sData: [UInt8] = Array(signature.dropFirst(32).prefix(32))
var vData = signature[64]
if vData >= 27 && vData <= 30 {
vData -= 27
Expand Down Expand Up @@ -274,11 +274,11 @@ public struct Utilities {

/// Unmarshals a 65 byte recoverable EC signature into internal structure.
static func unmarshalSignature(signatureData: Data) -> SECP256K1.UnmarshaledSignature? {
if signatureData.count != 65 { return nil }
let bytes = signatureData.bytes
let r = Array(bytes[0..<32])
let s = Array(bytes[32..<64])
return SECP256K1.UnmarshaledSignature(v: bytes[64], r: Data(r), s: Data(s))
guard signatureData.count == 65 else { return nil }
let rSlice = signatureData.prefix(32)
let sSlice = signatureData.dropFirst(32).prefix(32)
let v = signatureData[64]
return SECP256K1.UnmarshaledSignature(v: v, r: Data(rSlice), s: Data(sSlice))
}

/// Marshals the V, R and S signature parameters into a 65 byte recoverable EC signature.
Expand Down
4 changes: 2 additions & 2 deletions Sources/web3swift/HookedFunctions/Web3+BrowserFunctions.swift
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,8 @@ extension Web3.BrowserFunctions {

public func personalECRecover(_ personalMessage: Data, signature: Data) -> String? {
if signature.count != 65 { return nil }
let rData = signature[0..<32].bytes
let sData = signature[32..<64].bytes
let rData = Array(signature.prefix(32))
let sData = Array(signature.dropFirst(32).prefix(32))
var vData = signature[64]
if vData >= 27 && vData <= 30 {
vData -= 27
Expand Down
Loading