Enhance blockchain

This commit is contained in:
Victor Bodinaud
2025-05-05 15:16:53 +02:00
parent 358bdda5a6
commit 1bbe8234fd
19 changed files with 978 additions and 447 deletions

View File

@@ -0,0 +1,47 @@
//
// Wallet.swift
// SwiftChain
//
// Created by Victor on 27/11/2024.
//
import CryptoKit
import Foundation
public class Wallet {
private let privateKey: Curve25519.Signing.PrivateKey
let publicKey: Curve25519.Signing.PublicKey
public let address: String
public init() {
// Générer une nouvelle paire de clés
privateKey = Curve25519.Signing.PrivateKey()
publicKey = privateKey.publicKey
// Créer une adresse au format swift_(hash)
let pubKeyData = publicKey.rawRepresentation
let hash = SHA256.hash(data: pubKeyData)
let hashString = hash.compactMap { String(format: "%02x", $0) }.joined()
address = "swift_" + hashString.prefix(40)
}
// Signer une transaction
public func signTransaction(_ transaction: Transaction) -> Data? {
let messageData = transaction.messageToSign()
return try? privateKey.signature(for: messageData)
}
// Vérifier une signature
static func verifySignature(for transaction: Transaction, signature: Data, publicKeyData: Data) -> Bool {
guard let publicKey = try? Curve25519.Signing.PublicKey(rawRepresentation: publicKeyData) else {
return false
}
return publicKey.isValidSignature(signature, for: transaction.messageToSign())
}
// Obtenir la clé publique en format Data
public func getPublicKeyData() -> Data {
return publicKey.rawRepresentation
}
}