@@ -4,7 +4,10 @@ import Foundation
4
4
/// URI Safe base64 encode
5
5
func base64encode( _ input: Data ) -> String {
6
6
let data = input. base64EncodedData ( options: NSData . Base64EncodingOptions ( rawValue: 0 ) )
7
- let string = String ( describing: NSString ( data: data, encoding: String . Encoding. utf8. rawValue) )
7
+ guard let cocoaString = NSString ( data: data, encoding: String . Encoding. utf8. rawValue) else {
8
+ return " "
9
+ }
10
+ let string = String ( describing: cocoaString)
8
11
return string
9
12
. replacingOccurrences ( of: " + " , with: " - " , options: NSString . CompareOptions ( rawValue: 0 ) , range: nil )
10
13
. replacingOccurrences ( of: " / " , with: " _ " , options: NSString . CompareOptions ( rawValue: 0 ) , range: nil )
@@ -14,15 +17,15 @@ func base64encode(_ input:Data) -> String {
14
17
/// URI Safe base64 decode
15
18
func base64decode( _ input: String ) -> Data ? {
16
19
let rem = input. characters. count % 4
17
-
20
+
18
21
var ending = " "
19
22
if rem > 0 {
20
23
let amount = 4 - rem
21
24
ending = String ( repeating: " = " , count: amount)
22
25
}
23
-
26
+
24
27
let base64 = input. replacingOccurrences ( of: " - " , with: " + " , options: NSString . CompareOptions ( rawValue: 0 ) , range: nil )
25
28
. replacingOccurrences ( of: " _ " , with: " / " , options: NSString . CompareOptions ( rawValue: 0 ) , range: nil ) + ending
26
-
29
+
27
30
return Data ( base64Encoded: base64, options: NSData . Base64DecodingOptions ( rawValue: 0 ) )
28
31
}
0 commit comments