Files
QuickDrop/NearbyShare/Data+Extensions.swift
T
2025-05-14 15:06:32 +02:00

48 lines
1.2 KiB
Swift

//
// Data+Extensions.swift
// QuickDrop
//
// Created by Grishka on 08.04.2023.
//
import CoreFoundation
import Foundation
extension Data {
func urlSafeBase64EncodedString() -> String {
return String(base64EncodedString().replacingOccurrences(of: "=", with: "").map {
if $0 == "/" {
return "_"
} else if $0 == "+" {
return "-"
} else {
return $0
}
})
}
static func randomData(length: Int) -> Data {
var data = Data(count: length)
data.withUnsafeMutableBytes {
guard SecRandomCopyBytes(kSecRandomDefault, length, $0.baseAddress!) == 0 else { fatalError() }
}
return data
}
static func dataFromUrlSafeBase64(_ str: String) -> Data? {
var regularB64 = String(str.map {
if $0 == "_" {
return "/"
} else if $0 == "-" {
return "+"
} else {
return $0
}
})
while (regularB64.count % 4) != 0 {
regularB64 = regularB64 + "="
}
return Data(base64Encoded: regularB64, options: .ignoreUnknownCharacters)
}
}