mirror of
https://github.com/leonboe1/QuickDrop.git
synced 2026-11-11 19:11:10 +00:00
48 lines
1.2 KiB
Swift
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)
|
|
}
|
|
}
|