Selaa lähdekoodia

Update Licenses

maxep 5 vuotta sitten
vanhempi
commit
d1f86fce62
55 muutettua tiedostoa jossa 409 lisäystä ja 353 poistoa
  1. 2 1
      Package.swift
  2. 5 5
      Sources/Binary/Bytes.swift
  3. 5 5
      Sources/Binary/BytesRepresentable.swift
  4. 5 5
      Sources/Binary/Error.swift
  5. 5 5
      Sources/Binary/Input.swift
  6. 5 5
      Sources/Binary/Output.swift
  7. 5 5
      Sources/Binary/Streamable.swift
  8. 5 5
      Sources/Binary/TLV.swift
  9. 5 5
      Sources/Crypto/AES.swift
  10. 5 5
      Sources/Crypto/Argon2.swift
  11. 5 5
      Sources/Crypto/ChaCha20.swift
  12. 5 5
      Sources/Crypto/Cipher.swift
  13. 5 5
      Sources/Crypto/Error.swift
  14. 5 5
      Sources/Crypto/Hash.swift
  15. 5 5
      Sources/Crypto/KeyDerivation.swift
  16. 5 5
      Sources/Crypto/Salsa20.swift
  17. 5 5
      Sources/Crypto/Twofish.swift
  18. 5 5
      Sources/KDB/CompositeKey.swift
  19. 5 5
      Sources/KDB/Database.swift
  20. 5 5
      Sources/KDB/Date.swift
  21. 5 5
      Sources/KDB/Entry.swift
  22. 5 5
      Sources/KDB/Error.swift
  23. 5 5
      Sources/KDB/Group.swift
  24. 5 5
      Sources/KDB/Header.swift
  25. 5 5
      Sources/KDB/Row.swift
  26. 5 5
      Sources/KDBX/Cipher.swift
  27. 5 5
      Sources/KDBX/CompositeKey.swift
  28. 5 5
      Sources/KDBX/Database.swift
  29. 1 1
      Sources/KDBX/Database0.swift
  30. 5 5
      Sources/KDBX/Database3.swift
  31. 5 5
      Sources/KDBX/Database4.swift
  32. 5 5
      Sources/KDBX/Error.swift
  33. 5 5
      Sources/KDBX/File.swift
  34. 5 5
      Sources/KDBX/Header.swift
  35. 5 5
      Sources/KDBX/KeyDerivation.swift
  36. 5 5
      Sources/KDBX/Variant.swift
  37. 1 1
      Sources/KeePass/CompositeKey.swift
  38. 1 1
      Sources/KeePass/Database.swift
  39. 1 1
      Sources/KeePass/Entry.swift
  40. 5 5
      Sources/KeePass/Error.swift
  41. 1 1
      Sources/KeePass/Field.swift
  42. 1 1
      Sources/KeePass/Group.swift
  43. 1 1
      Sources/KeePass/KDB.swift
  44. 1 1
      Sources/KeePass/KDBX.swift
  45. 5 5
      Sources/KeePass/KeePass.swift
  46. 1 1
      Sources/KeePass/Timestamp.swift
  47. 1 1
      Sources/KeePass/TypeErasure.swift
  48. 16 18
      Sources/Sodium/LICENSE
  49. 5 5
      Sources/Sodium/sodium.m
  50. 7 0
      Sources/Twofish/LICENSE
  51. 5 5
      Tests/CryptoTests/Chacha20Tests.swift
  52. 5 5
      Tests/CryptoTests/Salsa20Tests.swift
  53. 5 5
      Tests/CryptoTests/TwofishTests.swift
  54. 8 14
      Tests/GzipTests/GzipTests.swift
  55. 166 110
      Tests/XMLTests/XMLTests.swift

+ 2 - 1
Package.swift

@@ -118,7 +118,8 @@ let package = Package(
 
         .target(
             name: "Twofish",
-            dependencies: []
+            dependencies: [],
+            exclude: ["LICENSE"]
         ),
     ]
 )

+ 5 - 5
Sources/Binary/Bytes.swift

@@ -1,20 +1,20 @@
 // Bytes.swift
-// This file is part of MiKee.
+// This file is part of KeePass.swift
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
-// MiKee is free software: you can redistribute it and/or modify
+// KeePass.swift is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 //
-// MiKee is distributed in the hope that it will be useful,
+// KeePass.swift is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 //
 // You should have received a copy of the GNU General Public License
-// along with MiKee. If not, see <https://www.gnu.org/licenses/>.
+// along with KeePass.swift. If not, see <https://www.gnu.org/licenses/>.
 
 import Foundation
 

+ 5 - 5
Sources/Binary/BytesRepresentable.swift

@@ -1,20 +1,20 @@
 // BytesRepresentable.swift
-// This file is part of MiKee.
+// This file is part of KeePass.swift
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
-// MiKee is free software: you can redistribute it and/or modify
+// KeePass.swift is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 //
-// MiKee is distributed in the hope that it will be useful,
+// KeePass.swift is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 //
 // You should have received a copy of the GNU General Public License
-// along with MiKee. If not, see <https://www.gnu.org/licenses/>.
+// along with KeePass.swift. If not, see <https://www.gnu.org/licenses/>.
 
 import Foundation
 

+ 5 - 5
Sources/Binary/Error.swift

@@ -1,20 +1,20 @@
 // Error.swift
-// This file is part of MiKee.
+// This file is part of KeePass.swift
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
-// MiKee is free software: you can redistribute it and/or modify
+// KeePass.swift is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 //
-// MiKee is distributed in the hope that it will be useful,
+// KeePass.swift is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 //
 // You should have received a copy of the GNU General Public License
-// along with MiKee. If not, see <https://www.gnu.org/licenses/>.
+// along with KeePass.swift. If not, see <https://www.gnu.org/licenses/>.
 
 import Foundation
 

+ 5 - 5
Sources/Binary/Input.swift

@@ -1,20 +1,20 @@
 // Input.swift
-// This file is part of MiKee.
+// This file is part of KeePass.swift
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
-// MiKee is free software: you can redistribute it and/or modify
+// KeePass.swift is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 //
-// MiKee is distributed in the hope that it will be useful,
+// KeePass.swift is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 //
 // You should have received a copy of the GNU General Public License
-// along with MiKee. If not, see <https://www.gnu.org/licenses/>.
+// along with KeePass.swift. If not, see <https://www.gnu.org/licenses/>.
 
 import Foundation
 

+ 5 - 5
Sources/Binary/Output.swift

@@ -1,20 +1,20 @@
 // Output.swift
-// This file is part of MiKee.
+// This file is part of KeePass.swift
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
-// MiKee is free software: you can redistribute it and/or modify
+// KeePass.swift is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 //
-// MiKee is distributed in the hope that it will be useful,
+// KeePass.swift is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 //
 // You should have received a copy of the GNU General Public License
-// along with MiKee. If not, see <https://www.gnu.org/licenses/>.
+// along with KeePass.swift. If not, see <https://www.gnu.org/licenses/>.
 
 import Foundation
 

+ 5 - 5
Sources/Binary/Streamable.swift

@@ -1,20 +1,20 @@
 // Streamable.swift
-// This file is part of MiKee.
+// This file is part of KeePass.swift
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
-// MiKee is free software: you can redistribute it and/or modify
+// KeePass.swift is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 //
-// MiKee is distributed in the hope that it will be useful,
+// KeePass.swift is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 //
 // You should have received a copy of the GNU General Public License
-// along with MiKee. If not, see <https://www.gnu.org/licenses/>.
+// along with KeePass.swift. If not, see <https://www.gnu.org/licenses/>.
 
 import Foundation
 

+ 5 - 5
Sources/Binary/TLV.swift

@@ -1,20 +1,20 @@
 // TLV.swift
-// This file is part of MiKee.
+// This file is part of KeePass.swift
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
-// MiKee is free software: you can redistribute it and/or modify
+// KeePass.swift is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 //
-// MiKee is distributed in the hope that it will be useful,
+// KeePass.swift is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 //
 // You should have received a copy of the GNU General Public License
-// along with MiKee. If not, see <https://www.gnu.org/licenses/>.
+// along with KeePass.swift. If not, see <https://www.gnu.org/licenses/>.
 
 import Foundation
 

+ 5 - 5
Sources/Crypto/AES.swift

@@ -1,20 +1,20 @@
 // AES.swift
-// This file is part of KeePassKit.
+// This file is part of KeePass.swift
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
-// KeePassKit is free software: you can redistribute it and/or modify
+// KeePass.swift is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 //
-// KeePassKit is distributed in the hope that it will be useful,
+// KeePass.swift is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 //
 // You should have received a copy of the GNU General Public License
-// along with KeePassKit. If not, see <https://www.gnu.org/licenses/>.
+// along with KeePass.swift. If not, see <https://www.gnu.org/licenses/>.
 
 import Binary
 import CommonCrypto

+ 5 - 5
Sources/Crypto/Argon2.swift

@@ -1,20 +1,20 @@
 // Argon2.swift
-// This file is part of KeePassKit.
+// This file is part of KeePass.swift
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
-// KeePassKit is free software: you can redistribute it and/or modify
+// KeePass.swift is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 //
-// KeePassKit is distributed in the hope that it will be useful,
+// KeePass.swift is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 //
 // You should have received a copy of the GNU General Public License
-// along with KeePassKit. If not, see <https://www.gnu.org/licenses/>.
+// along with KeePass.swift. If not, see <https://www.gnu.org/licenses/>.
 
 import Argon2
 import Binary

+ 5 - 5
Sources/Crypto/ChaCha20.swift

@@ -1,20 +1,20 @@
 // ChaCha20.swift
-// This file is part of KeePassKit.
+// This file is part of KeePass.swift
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
-// KeePassKit is free software: you can redistribute it and/or modify
+// KeePass.swift is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 //
-// KeePassKit is distributed in the hope that it will be useful,
+// KeePass.swift is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 //
 // You should have received a copy of the GNU General Public License
-// along with KeePassKit. If not, see <https://www.gnu.org/licenses/>.
+// along with KeePass.swift. If not, see <https://www.gnu.org/licenses/>.
 
 import Binary
 import Foundation

+ 5 - 5
Sources/Crypto/Cipher.swift

@@ -1,20 +1,20 @@
 // Cipher.swift
-// This file is part of KeePassKit.
+// This file is part of KeePass.swift
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
-// KeePassKit is free software: you can redistribute it and/or modify
+// KeePass.swift is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 //
-// KeePassKit is distributed in the hope that it will be useful,
+// KeePass.swift is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 //
 // You should have received a copy of the GNU General Public License
-// along with KeePassKit. If not, see <https://www.gnu.org/licenses/>.
+// along with KeePass.swift. If not, see <https://www.gnu.org/licenses/>.
 
 import Binary
 import Foundation

+ 5 - 5
Sources/Crypto/Error.swift

@@ -1,20 +1,20 @@
 // Error.swift
-// This file is part of KeePassKit.
+// This file is part of KeePass.swift
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
-// KeePassKit is free software: you can redistribute it and/or modify
+// KeePass.swift is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 //
-// KeePassKit is distributed in the hope that it will be useful,
+// KeePass.swift is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 //
 // You should have received a copy of the GNU General Public License
-// along with KeePassKit. If not, see <https://www.gnu.org/licenses/>.
+// along with KeePass.swift. If not, see <https://www.gnu.org/licenses/>.
 
 import Argon2
 import CommonCrypto

+ 5 - 5
Sources/Crypto/Hash.swift

@@ -1,20 +1,20 @@
 // Hash.swift
-// This file is part of KeePassKit.
+// This file is part of KeePass.swift
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
-// KeePassKit is free software: you can redistribute it and/or modify
+// KeePass.swift is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 //
-// KeePassKit is distributed in the hope that it will be useful,
+// KeePass.swift is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 //
 // You should have received a copy of the GNU General Public License
-// along with KeePassKit. If not, see <https://www.gnu.org/licenses/>.
+// along with KeePass.swift. If not, see <https://www.gnu.org/licenses/>.
 
 import Binary
 import Foundation

+ 5 - 5
Sources/Crypto/KeyDerivation.swift

@@ -1,20 +1,20 @@
 // KeyDerivation.swift
-// This file is part of KeePassKit.
+// This file is part of KeePass.swift
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
-// KeePassKit is free software: you can redistribute it and/or modify
+// KeePass.swift is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 //
-// KeePassKit is distributed in the hope that it will be useful,
+// KeePass.swift is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 //
 // You should have received a copy of the GNU General Public License
-// along with KeePassKit. If not, see <https://www.gnu.org/licenses/>.
+// along with KeePass.swift. If not, see <https://www.gnu.org/licenses/>.
 
 import Binary
 import Foundation

+ 5 - 5
Sources/Crypto/Salsa20.swift

@@ -1,20 +1,20 @@
 // Salsa20.swift
-// This file is part of KeePassKit.
+// This file is part of KeePass.swift
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
-// KeePassKit is free software: you can redistribute it and/or modify
+// KeePass.swift is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 //
-// KeePassKit is distributed in the hope that it will be useful,
+// KeePass.swift is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 //
 // You should have received a copy of the GNU General Public License
-// along with KeePassKit. If not, see <https://www.gnu.org/licenses/>.
+// along with KeePass.swift. If not, see <https://www.gnu.org/licenses/>.
 
 import Binary
 import Foundation

+ 5 - 5
Sources/Crypto/Twofish.swift

@@ -1,20 +1,20 @@
 // Twofish.swift
-// This file is part of KeePassKit.
+// This file is part of KeePass.swift
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
-// KeePassKit is free software: you can redistribute it and/or modify
+// KeePass.swift is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 //
-// KeePassKit is distributed in the hope that it will be useful,
+// KeePass.swift is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 //
 // You should have received a copy of the GNU General Public License
-// along with KeePassKit. If not, see <https://www.gnu.org/licenses/>.
+// along with KeePass.swift. If not, see <https://www.gnu.org/licenses/>.
 
 import Binary
 import Foundation

+ 5 - 5
Sources/KDB/CompositeKey.swift

@@ -1,20 +1,20 @@
 // CompositeKey.swift
-// This file is part of KeePassKit.
+// This file is part of KeePass.swift
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
-// KeePassKit is free software: you can redistribute it and/or modify
+// KeePass.swift is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 //
-// KeePassKit is distributed in the hope that it will be useful,
+// KeePass.swift is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 //
 // You should have received a copy of the GNU General Public License
-// along with KeePassKit. If not, see <https://www.gnu.org/licenses/>.
+// along with KeePass.swift. If not, see <https://www.gnu.org/licenses/>.
 
 import Binary
 import Crypto

+ 5 - 5
Sources/KDB/Database.swift

@@ -1,20 +1,20 @@
 // Database.swift
-// This file is part of KeePassKit.
+// This file is part of KeePass.swift
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
-// KeePassKit is free software: you can redistribute it and/or modify
+// KeePass.swift is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 //
-// KeePassKit is distributed in the hope that it will be useful,
+// KeePass.swift is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 //
 // You should have received a copy of the GNU General Public License
-// along with KeePassKit. If not, see <https://www.gnu.org/licenses/>.
+// along with KeePass.swift. If not, see <https://www.gnu.org/licenses/>.
 
 import Binary
 import Crypto

+ 5 - 5
Sources/KDB/Date.swift

@@ -1,20 +1,20 @@
 // Date.swift
-// This file is part of KeePassKit.
+// This file is part of KeePass.swift
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
-// KeePassKit is free software: you can redistribute it and/or modify
+// KeePass.swift is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 //
-// KeePassKit is distributed in the hope that it will be useful,
+// KeePass.swift is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 //
 // You should have received a copy of the GNU General Public License
-// along with KeePassKit. If not, see <https://www.gnu.org/licenses/>.
+// along with KeePass.swift. If not, see <https://www.gnu.org/licenses/>.
 
 import Binary
 import Foundation

+ 5 - 5
Sources/KDB/Entry.swift

@@ -1,20 +1,20 @@
 // Entry.swift
-// This file is part of KeePassKit.
+// This file is part of KeePass.swift
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
-// KeePassKit is free software: you can redistribute it and/or modify
+// KeePass.swift is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 //
-// KeePassKit is distributed in the hope that it will be useful,
+// KeePass.swift is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 //
 // You should have received a copy of the GNU General Public License
-// along with KeePassKit. If not, see <https://www.gnu.org/licenses/>.
+// along with KeePass.swift. If not, see <https://www.gnu.org/licenses/>.
 
 import Binary
 import Foundation

+ 5 - 5
Sources/KDB/Error.swift

@@ -1,20 +1,20 @@
 // Error.swift
-// This file is part of KeePassKit.
+// This file is part of KeePass.swift
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
-// KeePassKit is free software: you can redistribute it and/or modify
+// KeePass.swift is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 //
-// KeePassKit is distributed in the hope that it will be useful,
+// KeePass.swift is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 //
 // You should have received a copy of the GNU General Public License
-// along with KeePassKit. If not, see <https://www.gnu.org/licenses/>.
+// along with KeePass.swift. If not, see <https://www.gnu.org/licenses/>.
 
 import Foundation
 

+ 5 - 5
Sources/KDB/Group.swift

@@ -1,20 +1,20 @@
 // Group.swift
-// This file is part of KeePassKit.
+// This file is part of KeePass.swift
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
-// KeePassKit is free software: you can redistribute it and/or modify
+// KeePass.swift is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 //
-// KeePassKit is distributed in the hope that it will be useful,
+// KeePass.swift is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 //
 // You should have received a copy of the GNU General Public License
-// along with KeePassKit. If not, see <https://www.gnu.org/licenses/>.
+// along with KeePass.swift. If not, see <https://www.gnu.org/licenses/>.
 
 import Binary
 import Foundation

+ 5 - 5
Sources/KDB/Header.swift

@@ -1,20 +1,20 @@
 // Header.swift
-// This file is part of KeePassKit.
+// This file is part of KeePass.swift
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
-// KeePassKit is free software: you can redistribute it and/or modify
+// KeePass.swift is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 //
-// KeePassKit is distributed in the hope that it will be useful,
+// KeePass.swift is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 //
 // You should have received a copy of the GNU General Public License
-// along with KeePassKit. If not, see <https://www.gnu.org/licenses/>.
+// along with KeePass.swift. If not, see <https://www.gnu.org/licenses/>.
 
 import Binary
 import Crypto

+ 5 - 5
Sources/KDB/Row.swift

@@ -1,20 +1,20 @@
 // Row.swift
-// This file is part of KeePassKit.
+// This file is part of KeePass.swift
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
-// KeePassKit is free software: you can redistribute it and/or modify
+// KeePass.swift is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 //
-// KeePassKit is distributed in the hope that it will be useful,
+// KeePass.swift is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 //
 // You should have received a copy of the GNU General Public License
-// along with KeePassKit. If not, see <https://www.gnu.org/licenses/>.
+// along with KeePass.swift. If not, see <https://www.gnu.org/licenses/>.
 
 import Binary
 import Foundation

+ 5 - 5
Sources/KDBX/Cipher.swift

@@ -1,20 +1,20 @@
 // Cipher.swift
-// This file is part of KeePassKit.
+// This file is part of KeePass.swift
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
-// KeePassKit is free software: you can redistribute it and/or modify
+// KeePass.swift is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 //
-// KeePassKit is distributed in the hope that it will be useful,
+// KeePass.swift is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 //
 // You should have received a copy of the GNU General Public License
-// along with KeePassKit. If not, see <https://www.gnu.org/licenses/>.
+// along with KeePass.swift. If not, see <https://www.gnu.org/licenses/>.
 
 import Crypto
 import Foundation

+ 5 - 5
Sources/KDBX/CompositeKey.swift

@@ -1,20 +1,20 @@
 // CompositeKey.swift
-// This file is part of KeePassKit.
+// This file is part of KeePass.swift
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
-// KeePassKit is free software: you can redistribute it and/or modify
+// KeePass.swift is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 //
-// KeePassKit is distributed in the hope that it will be useful,
+// KeePass.swift is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 //
 // You should have received a copy of the GNU General Public License
-// along with KeePassKit. If not, see <https://www.gnu.org/licenses/>.
+// along with KeePass.swift. If not, see <https://www.gnu.org/licenses/>.
 
 import Binary
 import Crypto

+ 5 - 5
Sources/KDBX/Database.swift

@@ -1,20 +1,20 @@
 // Database.swift
-// This file is part of KeePassKit.
+// This file is part of KeePass.swift
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
-// KeePassKit is free software: you can redistribute it and/or modify
+// KeePass.swift is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 //
-// KeePassKit is distributed in the hope that it will be useful,
+// KeePass.swift is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 //
 // You should have received a copy of the GNU General Public License
-// along with KeePassKit. If not, see <https://www.gnu.org/licenses/>.
+// along with KeePass.swift. If not, see <https://www.gnu.org/licenses/>.
 
 import Binary
 import Foundation

+ 1 - 1
Sources/KDBX/Database0.swift

@@ -1,7 +1,7 @@
 // Database0.swift
 // This file is part of KeePass.
 //
-// Copyright © 2019 ___ORGANIZATIONNAME___. All rights reserved.
+// Copyright © 2019 Maxime Epain. All rights reserved.
 //
 // KeePass is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by

+ 5 - 5
Sources/KDBX/Database3.swift

@@ -1,20 +1,20 @@
 // Database3.swift
-// This file is part of KeePassKit.
+// This file is part of KeePass.swift
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
-// KeePassKit is free software: you can redistribute it and/or modify
+// KeePass.swift is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 //
-// KeePassKit is distributed in the hope that it will be useful,
+// KeePass.swift is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 //
 // You should have received a copy of the GNU General Public License
-// along with KeePassKit. If not, see <https://www.gnu.org/licenses/>.
+// along with KeePass.swift. If not, see <https://www.gnu.org/licenses/>.
 
 import Binary
 import Crypto

+ 5 - 5
Sources/KDBX/Database4.swift

@@ -1,20 +1,20 @@
 // Database4.swift
-// This file is part of KeePassKit.
+// This file is part of KeePass.swift
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
-// KeePassKit is free software: you can redistribute it and/or modify
+// KeePass.swift is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 //
-// KeePassKit is distributed in the hope that it will be useful,
+// KeePass.swift is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 //
 // You should have received a copy of the GNU General Public License
-// along with KeePassKit. If not, see <https://www.gnu.org/licenses/>.
+// along with KeePass.swift. If not, see <https://www.gnu.org/licenses/>.
 
 import Binary
 import Crypto

+ 5 - 5
Sources/KDBX/Error.swift

@@ -1,20 +1,20 @@
 // Error.swift
-// This file is part of KeePassKit.
+// This file is part of KeePass.swift
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
-// KeePassKit is free software: you can redistribute it and/or modify
+// KeePass.swift is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 //
-// KeePassKit is distributed in the hope that it will be useful,
+// KeePass.swift is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 //
 // You should have received a copy of the GNU General Public License
-// along with KeePassKit. If not, see <https://www.gnu.org/licenses/>.
+// along with KeePass.swift. If not, see <https://www.gnu.org/licenses/>.
 
 import Foundation
 

+ 5 - 5
Sources/KDBX/File.swift

@@ -1,20 +1,20 @@
 // File.swift
-// This file is part of KeePassKit.
+// This file is part of KeePass.swift
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
-// KeePassKit is free software: you can redistribute it and/or modify
+// KeePass.swift is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 //
-// KeePassKit is distributed in the hope that it will be useful,
+// KeePass.swift is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 //
 // You should have received a copy of the GNU General Public License
-// along with KeePassKit. If not, see <https://www.gnu.org/licenses/>.
+// along with KeePass.swift. If not, see <https://www.gnu.org/licenses/>.
 
 import Binary
 import Foundation

+ 5 - 5
Sources/KDBX/Header.swift

@@ -1,20 +1,20 @@
 // Header.swift
-// This file is part of KeePassKit.
+// This file is part of KeePass.swift
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
-// KeePassKit is free software: you can redistribute it and/or modify
+// KeePass.swift is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 //
-// KeePassKit is distributed in the hope that it will be useful,
+// KeePass.swift is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 //
 // You should have received a copy of the GNU General Public License
-// along with KeePassKit. If not, see <https://www.gnu.org/licenses/>.
+// along with KeePass.swift. If not, see <https://www.gnu.org/licenses/>.
 
 import Binary
 import Crypto

+ 5 - 5
Sources/KDBX/KeyDerivation.swift

@@ -1,20 +1,20 @@
 // KeyDerivation.swift
-// This file is part of KeePassKit.
+// This file is part of KeePass.swift
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
-// KeePassKit is free software: you can redistribute it and/or modify
+// KeePass.swift is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 //
-// KeePassKit is distributed in the hope that it will be useful,
+// KeePass.swift is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 //
 // You should have received a copy of the GNU General Public License
-// along with KeePassKit. If not, see <https://www.gnu.org/licenses/>.
+// along with KeePass.swift. If not, see <https://www.gnu.org/licenses/>.
 
 import Crypto
 import Foundation

+ 5 - 5
Sources/KDBX/Variant.swift

@@ -1,20 +1,20 @@
 // Variant.swift
-// This file is part of KeePassKit.
+// This file is part of KeePass.swift
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
-// KeePassKit is free software: you can redistribute it and/or modify
+// KeePass.swift is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 //
-// KeePassKit is distributed in the hope that it will be useful,
+// KeePass.swift is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 //
 // You should have received a copy of the GNU General Public License
-// along with KeePassKit. If not, see <https://www.gnu.org/licenses/>.
+// along with KeePass.swift. If not, see <https://www.gnu.org/licenses/>.
 
 import Binary
 import Foundation

+ 1 - 1
Sources/KeePass/CompositeKey.swift

@@ -1,7 +1,7 @@
 // CompositeKey.swift
 // This file is part of KeePass.
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
 // KeePass is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by

+ 1 - 1
Sources/KeePass/Database.swift

@@ -1,7 +1,7 @@
 // Database.swift
 // This file is part of KeePass.
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
 // KeePass is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by

+ 1 - 1
Sources/KeePass/Entry.swift

@@ -1,7 +1,7 @@
 // Entry.swift
 // This file is part of KeePass.
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
 // KeePass is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by

+ 5 - 5
Sources/KeePass/Error.swift

@@ -1,20 +1,20 @@
 // Error.swift
-// This file is part of KeePassKit.
+// This file is part of KeePass.swift
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
-// KeePassKit is free software: you can redistribute it and/or modify
+// KeePass.swift is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 //
-// KeePassKit is distributed in the hope that it will be useful,
+// KeePass.swift is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 //
 // You should have received a copy of the GNU General Public License
-// along with KeePassKit. If not, see <https://www.gnu.org/licenses/>.
+// along with KeePass.swift. If not, see <https://www.gnu.org/licenses/>.
 
 import Foundation
 

+ 1 - 1
Sources/KeePass/Field.swift

@@ -1,7 +1,7 @@
 // Field.swift
 // This file is part of KeePass.
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
 // KeePass is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by

+ 1 - 1
Sources/KeePass/Group.swift

@@ -1,7 +1,7 @@
 // Group.swift
 // This file is part of KeePass.
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
 // KeePass is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by

+ 1 - 1
Sources/KeePass/KDB.swift

@@ -1,7 +1,7 @@
 // KDB.swift
 // This file is part of KeePass.
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
 // KeePass is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by

+ 1 - 1
Sources/KeePass/KDBX.swift

@@ -1,7 +1,7 @@
 // KDBX.swift
 // This file is part of KeePass.
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
 // KeePass is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by

+ 5 - 5
Sources/KeePass/KeePass.swift

@@ -1,20 +1,20 @@
 // KeePass.swift
-// This file is part of KeePassKit.
+// This file is part of KeePass.swift
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
-// KeePassKit is free software: you can redistribute it and/or modify
+// KeePass.swift is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 //
-// KeePassKit is distributed in the hope that it will be useful,
+// KeePass.swift is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 //
 // You should have received a copy of the GNU General Public License
-// along with KeePassKit. If not, see <https://www.gnu.org/licenses/>.
+// along with KeePass.swift. If not, see <https://www.gnu.org/licenses/>.
 
 import Binary
 import Foundation

+ 1 - 1
Sources/KeePass/Timestamp.swift

@@ -1,7 +1,7 @@
 // Timestamp.swift
 // This file is part of KeePass.
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
 // KeePass is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by

+ 1 - 1
Sources/KeePass/TypeErasure.swift

@@ -1,7 +1,7 @@
 // TypeErasure.swift
 // This file is part of KeePass.
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
 // KeePass is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by

+ 16 - 18
Sources/Sodium/LICENSE

@@ -1,18 +1,16 @@
-/*
- * ISC License
- *
- * Copyright (c) 2013-2021
- * Frank Denis <j at pureftpd dot org>
- *
- * Permission to use, copy, modify, and/or distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
+ISC License
+
+Copyright (c) 2013-2021
+Frank Denis <j at pureftpd dot org>
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

+ 5 - 5
Sources/Sodium/sodium.m

@@ -1,20 +1,20 @@
 // sodium.m
-// This file is part of KeePassKit.
+// This file is part of KeePass.swift
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
-// KeePassKit is free software: you can redistribute it and/or modify
+// KeePass.swift is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 //
-// KeePassKit is distributed in the hope that it will be useful,
+// KeePass.swift is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 //
 // You should have received a copy of the GNU General Public License
-// along with KeePassKit. If not, see <https://www.gnu.org/licenses/>.
+// along with KeePass.swift. If not, see <https://www.gnu.org/licenses/>.
 
 #import <Foundation/Foundation.h>
 #import "sodium.h"

+ 7 - 0
Sources/Twofish/LICENSE

@@ -0,0 +1,7 @@
+Fast, portable, and easy-to-use Twofish implementation,
+Version 0.3.
+Copyright (c) 2002 by Niels Ferguson.
+
+The author hereby grants a perpetual license to everybody to
+use this code for any purpose as long as the copyright message is included
+in the source code of this or any derived work.

+ 5 - 5
Tests/CryptoTests/Chacha20Tests.swift

@@ -1,20 +1,20 @@
 // Chacha20Tests.swift
-// This file is part of KeePassKit.
+// This file is part of KeePass.swift
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
-// KeePassKit is free software: you can redistribute it and/or modify
+// KeePass.swift is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 //
-// KeePassKit is distributed in the hope that it will be useful,
+// KeePass.swift is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 //
 // You should have received a copy of the GNU General Public License
-// along with KeePassKit. If not, see <https://www.gnu.org/licenses/>.
+// along with KeePass.swift. If not, see <https://www.gnu.org/licenses/>.
 
 import Binary
 import XCTest

+ 5 - 5
Tests/CryptoTests/Salsa20Tests.swift

@@ -1,20 +1,20 @@
 // Salsa20Tests.swift
-// This file is part of KeePassKit.
+// This file is part of KeePass.swift
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
-// KeePassKit is free software: you can redistribute it and/or modify
+// KeePass.swift is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 //
-// KeePassKit is distributed in the hope that it will be useful,
+// KeePass.swift is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 //
 // You should have received a copy of the GNU General Public License
-// along with KeePassKit. If not, see <https://www.gnu.org/licenses/>.
+// along with KeePass.swift. If not, see <https://www.gnu.org/licenses/>.
 
 import Binary
 import XCTest

+ 5 - 5
Tests/CryptoTests/TwofishTests.swift

@@ -1,20 +1,20 @@
 // TwofishTests.swift
-// This file is part of KeePassKit.
+// This file is part of KeePass.swift
 //
-// Copyright © 2019 Maxime Epain. All rights reserved.
+// Copyright © 2021 Maxime Epain. All rights reserved.
 //
-// KeePassKit is free software: you can redistribute it and/or modify
+// KeePass.swift is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 //
-// KeePassKit is distributed in the hope that it will be useful,
+// KeePass.swift is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 //
 // You should have received a copy of the GNU General Public License
-// along with KeePassKit. If not, see <https://www.gnu.org/licenses/>.
+// along with KeePass.swift. If not, see <https://www.gnu.org/licenses/>.
 
 import Binary
 import XCTest

+ 8 - 14
Tests/GzipTests/GzipTests.swift

@@ -28,16 +28,16 @@
  THE SOFTWARE.
  */
 
-import XCTest
 import Binary
 import Gzip
+import XCTest
 
 final class GzipTests: XCTestCase {
 
     func testGZip() throws {
 
-        for _ in 0..<10 {
-            let testSentence = String.lorem(length: Int.random(in: 1..<100_000))
+        for _ in 0 ..< 10 {
+            let testSentence = String.lorem(length: Int.random(in: 1 ..< 100_000))
 
             let bytes = testSentence.bytes(using: .utf8)!
             let gzipped = try bytes.gzipped()
@@ -53,7 +53,6 @@ final class GzipTests: XCTestCase {
         }
     }
 
-
     func testZeroLength() throws {
 
         let zeroLengthBytes = Bytes()
@@ -63,7 +62,6 @@ final class GzipTests: XCTestCase {
         XCTAssertFalse(zeroLengthBytes.isGzipped)
     }
 
-
     func testWrongUngzip() {
 
         // data not compressed
@@ -84,7 +82,6 @@ final class GzipTests: XCTestCase {
         XCTAssertNil(uncompressed)
     }
 
-
     func testCompressionLevel() throws {
 
         let bytes = String.lorem(length: 100_000).bytes(using: .utf8)!
@@ -93,7 +90,6 @@ final class GzipTests: XCTestCase {
                              try bytes.gzipped(level: .bestCompression).count)
     }
 
-
     func testFileDecompression() throws {
 
         let url = self.bundleFile(name: "test.txt.gz")
@@ -103,15 +99,14 @@ final class GzipTests: XCTestCase {
         XCTAssertTrue(bytes.isGzipped)
         XCTAssertEqual(String(bytes: uncompressed, encoding: .utf8), "test")
     }
-
 }
 
-private extension XCTestCase {
+extension XCTestCase {
 
     /// Create URL for bundled test file considering platform.
     ///
     /// - Parameter name: The file name to load in resources.
-    func bundleFile(name: String) -> URL {
+    fileprivate func bundleFile(name: String) -> URL {
         guard let url = Bundle.module.url(forResource: name, withExtension: nil) else {
             fatalError("can't find resource named: '\(name)'")
         }
@@ -120,16 +115,15 @@ private extension XCTestCase {
     }
 }
 
-private extension String {
+extension String {
 
     /// Generate random letters string for test.
-    static func lorem(length: Int) -> String {
+    fileprivate static func lorem(length: Int) -> String {
 
         let letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 "
 
-        return (0..<length).reduce(into: "") { (string, _) in
+        return (0 ..< length).reduce(into: "") { string, _ in
             string.append(letters.randomElement()!)
         }
     }
-
 }

+ 166 - 110
Tests/XMLTests/XMLTests.swift

@@ -13,64 +13,64 @@ import XCTest
 @testable import XML
 
 class XMLTests: XCTestCase {
-    
+
     // MARK: - Properties
-    
+
     var exampleDocument = Document()
     var plantsDocument = Document()
-    
+
     // MARK: - Helpers
-    
+
     func URLForResource(fileName: String, withExtension ext: String) -> URL {
         guard let url = Bundle.module.url(forResource: fileName, withExtension: ext) else {
             fatalError("can't find resource named: '\(fileName)'")
         }
         return url
     }
-    
+
     func xmlDocumentFromURL(url: URL) -> Document {
         var xmlDocument = Document()
-        
+
         do {
-            let data = try Data.init(contentsOf: url)
+            let data = try Data(contentsOf: url)
             xmlDocument = try Document(xml: data)
         } catch {
             print(error)
         }
-        
+
         return xmlDocument
     }
-    
+
     func readXMLFromFile(filename: String) -> Document {
         let url = URLForResource(fileName: filename, withExtension: "xml")
         return xmlDocumentFromURL(url: url)
     }
-    
+
     // MARK: - Setup & Teardown
-    
+
     override func setUp() {
         super.setUp()
-        
+
         // create some sample xml documents
         exampleDocument = readXMLFromFile(filename: "example")
         plantsDocument = readXMLFromFile(filename: "plant_catalog")
     }
-    
+
     override func tearDown() {
         // reset sample xml document
         exampleDocument = Document()
         plantsDocument = Document()
-        
+
         super.tearDown()
     }
-    
+
     // MARK: - XML Document
-    
+
     func testXMLDocumentManualDataLoading() {
         do {
             let url = URLForResource(fileName: "example", withExtension: "xml")
-            let data = try Data.init(contentsOf: url)
-            
+            let data = try Data(contentsOf: url)
+
             let testDocument = Document()
             try testDocument.load(data)
             XCTAssertEqual(testDocument.root.name, "animals", "Should be able to find root element.")
@@ -78,7 +78,7 @@ class XMLTests: XCTestCase {
             XCTFail("Should be able to load XML Document with given Data.")
         }
     }
-    
+
     func testXMLDocumentInitFromString() {
         do {
             let testDocument = try Document(xml: exampleDocument.xml)
@@ -87,66 +87,69 @@ class XMLTests: XCTestCase {
             XCTFail("Should be able to initialize XML Document from XML String.")
         }
     }
-    
+
     func testXMLOptions() {
         do {
             var options = Options()
             options.documentHeader.version = 2.0
             options.documentHeader.encoding = "utf-16"
             options.documentHeader.standalone = "yes"
-            
+
             let testDocument = try Document(xml: "<foo><bar>hello</bar></foo>", options: options)
-            XCTAssertEqual(testDocument.xml, "<?xml version=\"2.0\" encoding=\"utf-16\" standalone=\"yes\"?>\n<foo>\n\t<bar>hello</bar>\n</foo>")
+            XCTAssertEqual(
+                testDocument.xml,
+                "<?xml version=\"2.0\" encoding=\"utf-16\" standalone=\"yes\"?>\n<foo>\n\t<bar>hello</bar>\n</foo>"
+            )
             XCTAssertEqual(try testDocument.root.bar.first?.get(), "hello")
         } catch {
             XCTFail("Should be able to initialize XML Document with custom Options.")
         }
     }
-    
+
     func testXMLParser() {
         do {
             let testDocument = Document()
             let url = URLForResource(fileName: "example", withExtension: "xml")
-            let data = try Data.init(contentsOf: url)
-            
+            let data = try Data(contentsOf: url)
+
             let parser = Parser(document: testDocument, data: data)
             try parser.parse()
-            
+
             XCTAssertEqual(testDocument.root.name, "animals", "Should be able to find root element.")
         } catch {
             XCTFail("Should be able to parse XML Data into XML Document without throwing error.")
         }
     }
-    
+
     func testXMLParserTrimsWhitespace() {
         let result = whitespaceResult(shouldTrimWhitespace: true)
         XCTAssertEqual(result, "Hello,")
     }
-    
+
     func testXMLParserWithoutTrimmingWhitespace() {
         let result = whitespaceResult(shouldTrimWhitespace: false)
         XCTAssertEqual(result, "Hello, ")
     }
-    
+
     private func whitespaceResult(shouldTrimWhitespace: Bool) -> String? {
         do {
             var options = Options()
             options.parserSettings.shouldTrimWhitespace = shouldTrimWhitespace
-            
+
             let testDocument = Document(options: options)
             let url = URLForResource(fileName: "whitespace_examples", withExtension: "xml")
-            let data = try Data.init(contentsOf: url)
-            
+            let data = try Data(contentsOf: url)
+
             let parser = Parser(document: testDocument, data: data)
             try parser.parse()
-            
+
             return testDocument.root.text.first?.value
         } catch {
             XCTFail("Should be able to parse XML without throwing an error")
         }
         return nil
     }
-    
+
     func testXMLParserError() {
         do {
             let testDocument = Document()
@@ -157,21 +160,21 @@ class XMLTests: XCTestCase {
             XCTAssertEqual(error.localizedDescription, XMLError.parsingFailed.localizedDescription)
         }
     }
-    
+
     // MARK: - XML Read
-    
+
     func testRootElement() {
         XCTAssertEqual(exampleDocument.root.name, "animals", "Should be able to find root element.")
-        
+
         let documentWithoutRootElement = Document()
         let rootElement = documentWithoutRootElement.root
         XCTAssertEqual(rootElement.error, XMLError.rootElementMissing, "Should have RootElementMissing error.")
     }
-    
+
     func testParentElement() {
         XCTAssertEqual(exampleDocument.root.cats.parent?.name, "animals", "Should be able to find parent element.")
     }
-    
+
     func testChildrenElements() {
         var count = 0
         for _ in exampleDocument.root.cats.children {
@@ -179,31 +182,31 @@ class XMLTests: XCTestCase {
         }
         XCTAssertEqual(count, 4, "Should be able to iterate children elements")
     }
-    
+
     func testName() {
         let secondChildElementName = exampleDocument.root.children[1].name
         XCTAssertEqual(secondChildElementName, "dogs", "Should be able to return element name.")
     }
-    
+
     func testAttributes() {
         let firstCatAttributes = exampleDocument.root.cats.cat.attributes
         XCTAssertEqual(firstCatAttributes["breed"], "Siberian", "Should be able to return attribute value.")
     }
-    
+
     func testValue() {
         let firstPlant = plantsDocument.root.PLANT
         XCTAssertEqual(firstPlant.COMMON, "Bloodroot", "Should be able to return element value as optional string.")
         XCTAssertNil(firstPlant.ELEMENTWITHOUTVALUE.value, "Should be able to have nil value.")
         XCTAssertNil(firstPlant.EMPTYELEMENT.value, "Should be able to have nil value.")
     }
-    
+
     func testStringValue() {
         let firstPlant = plantsDocument.root.PLANT
         XCTAssertEqual(firstPlant.COMMON.value, "Bloodroot", "Should be able to return element value as string.")
         XCTAssertNil(firstPlant.ELEMENTWITHOUTVALUE.value, "Should be able to return nil if element has no value.")
         XCTAssertNil(firstPlant.EMPTYELEMENT.value, "Should be able to return nil if element has no value.")
     }
-    
+
     func testBoolValue() {
         XCTAssertEqual(plantsDocument.root.PLANT.TRUESTRING, true, "Should be able to cast element value as Bool.")
         XCTAssertEqual(plantsDocument.root.PLANT.FALSESTRING, false, "Should be able to cast element value as Bool.")
@@ -211,23 +214,39 @@ class XMLTests: XCTestCase {
 //        XCTAssertEqual(plantsDocument.root.PLANT.FALSESTRING2, false, "Should be able to cast element value as Bool.")
 //        XCTAssertEqual(plantsDocument.root.PLANT.TRUEINT, true, "Should be able to cast element value as Bool.")
 //        XCTAssertEqual(plantsDocument.root.PLANT.FALSEINT, false, "Should be able to cast element value as Bool.")
-        XCTAssertNil(plantsDocument.root.ELEMENTWITHOUTVALUE as Bool?, "Should be able to return nil if value can't be represented as Bool.")
+        XCTAssertNil(
+            plantsDocument.root.ELEMENTWITHOUTVALUE as Bool?,
+            "Should be able to return nil if value can't be represented as Bool."
+        )
     }
-    
+
     func testIntValue() throws {
         XCTAssertEqual(plantsDocument.root.PLANT.ZONE, 4, "Should be able to cast element value as Integer.")
-        XCTAssertNil(plantsDocument.root.PLANT.ELEMENTWITHOUTVALUE as Int?, "Should be able to return nil if value can't be represented as Integer.")
+        XCTAssertNil(
+            plantsDocument.root.PLANT.ELEMENTWITHOUTVALUE as Int?,
+            "Should be able to return nil if value can't be represented as Integer."
+        )
     }
-    
+
     func testDoubleValue() throws {
         XCTAssertEqual(plantsDocument.root.PLANT.PRICE, 2.44, "Should be able to cast element value as Double.")
-        XCTAssertNil(plantsDocument.root.PLANT.ELEMENTWITHOUTVALUE as Double?, "Should be able to return nil if value can't be represented as Double.")
+        XCTAssertNil(
+            plantsDocument.root.PLANT.ELEMENTWITHOUTVALUE as Double?,
+            "Should be able to return nil if value can't be represented as Double."
+        )
     }
 
     func testNotExistingElement() throws {
         // non-optional
-        XCTAssertNotNil(exampleDocument.root.ducks.duck.error, "Should contain error inside element which does not exist.")
-        XCTAssertEqual(exampleDocument.root.ducks.duck.error, XMLError.elementNotFound, "Should have ElementNotFound error.")
+        XCTAssertNotNil(
+            exampleDocument.root.ducks.duck.error,
+            "Should contain error inside element which does not exist."
+        )
+        XCTAssertEqual(
+            exampleDocument.root.ducks.duck.error,
+            XMLError.elementNotFound,
+            "Should have ElementNotFound error."
+        )
         XCTAssertNil(exampleDocument.root.ducks.duck.value, "Should have empty value.")
         XCTAssertNil(exampleDocument.root.ducks.duck.first, "Should not be able to find ducks here.")
     }
@@ -242,22 +261,30 @@ class XMLTests: XCTestCase {
         }
         XCTAssertEqual(count, 4, "Should be able to iterate all elements")
     }
-    
+
     func testFirstElement() throws {
         let catElement = exampleDocument.root.cats.cat
         let firstCatExpectedValue = "Tinna"
-        
+
         // non-optional
-        XCTAssertEqual(try catElement.get(), firstCatExpectedValue, "Should be able to find the first element as non-optional.")
-        
+        XCTAssertEqual(
+            try catElement.get(),
+            firstCatExpectedValue,
+            "Should be able to find the first element as non-optional."
+        )
+
         // optional
         if let cat = catElement.first {
-            XCTAssertEqual(try cat.get(), firstCatExpectedValue, "Should be able to find the first element as optional.")
+            XCTAssertEqual(
+                try cat.get(),
+                firstCatExpectedValue,
+                "Should be able to find the first element as optional."
+            )
         } else {
             XCTFail("Should be able to find the first element.")
         }
     }
-    
+
     func testLastElement() throws {
         if let dog = exampleDocument.root.dogs.dog.last {
             XCTAssertEqual(try dog.get(), "Kika", "Should be able to find the last element.")
@@ -265,16 +292,16 @@ class XMLTests: XCTestCase {
             XCTFail("Should be able to find the last element.")
         }
     }
-    
+
     func testCountElements() {
         let dogsCount = exampleDocument.root.dogs.dog.count
         XCTAssertEqual(dogsCount, 4, "Should be able to count elements.")
     }
-    
+
     func testAllWithValue() {
         let cats = exampleDocument.root.cats
         cats.addChild(name: "cat", value: "Tinna")
-        
+
         var count = 0
         if let tinnas = cats["cat"].all(withValue: "Tinna") {
             for _ in tinnas {
@@ -283,17 +310,17 @@ class XMLTests: XCTestCase {
         }
         XCTAssertEqual(count, 2, "Should be able to return elements with given value.")
     }
-    
+
     func testAllWithAttributes() {
         var count = 0
-        if let bulls = exampleDocument.root.dogs.dog.all(withAttributes: ["color" : "white"]) {
+        if let bulls = exampleDocument.root.dogs.dog.all(withAttributes: ["color": "white"]) {
             for _ in bulls {
                 count += 1
             }
         }
         XCTAssertEqual(count, 2, "Should be able to return elements with given attributes.")
     }
-    
+
     func testAllContainingAttributes() {
         var count = 0
         if let bulls = exampleDocument.root.dogs.dog.all(containingAttributeKeys: ["gender"]) {
@@ -303,66 +330,80 @@ class XMLTests: XCTestCase {
         }
         XCTAssertEqual(count, 2, "Should be able to return elements with given attribute keys.")
     }
-    
+
     func testAllDescendantsWherePredicate() {
         let children = exampleDocument.allDescendants { $0.attributes["color"] == "yellow" }
-        
+
         XCTAssertEqual(children.count, 2, "Should be able to return elements matching predicate.")
     }
-    
+
     func testFirstDescendantWherePredicate() {
-        let descendant = plantsDocument.root.firstDescendant { $0.hasDescendant { $0.name == "LIGHT" && $0.value == "Sunny" } }
+        let descendant = plantsDocument.root
+            .firstDescendant { $0.hasDescendant { $0.name == "LIGHT" && $0.value == "Sunny" } }
         let plantName = descendant?["COMMON"].value
-        
+
         XCTAssertEqual(plantName, "Black-Eyed Susan", "Should be able to find first child satisfying predicate.")
     }
-    
+
     func testHasDescendantWherePredicate() throws {
         let hasDescendant = plantsDocument.hasDescendant { $0.name == "AVAILABILITY" && $0.value == "030699" }
         XCTAssert(hasDescendant, "Should be able to determine that document has a child satisfying predicate.")
     }
-    
+
     func testSpecialCharacterTrimRead() {
-        let expected = "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<elements>\n\t<string name=\"this_and_that\">This &amp; that</string>\n</elements>"
-        
+        let expected =
+            "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<elements>\n\t<string name=\"this_and_that\">This &amp; that</string>\n</elements>"
+
         let readerDocument = try! Document(xml: expected)
         let readerXml = readerDocument.xml
         XCTAssertEqual(readerXml, expected, "Should be able to print XML formatted string.")
     }
-    
+
     // MARK: - XML Write
-    
+
     func testAddChild() throws {
         let ducks = exampleDocument.root.addChild(name: "ducks")
         ducks.addChild(name: "duck", value: "Donald")
         ducks.addChild(name: "duck", value: "Daisy")
         ducks.addChild(name: "duck", value: "Scrooge")
-        
+
         let animalsCount = exampleDocument.root.children.count
         XCTAssertEqual(animalsCount, 3, "Should be able to add child elements to an element.")
-        XCTAssertEqual(try exampleDocument.root["ducks"]["duck"].last?.get(), "Scrooge", "Should be able to iterate ducks now.")
+        XCTAssertEqual(
+            try exampleDocument.root["ducks"]["duck"].last?.get(),
+            "Scrooge",
+            "Should be able to iterate ducks now."
+        )
     }
-    
+
     func testAddChildWithAttributes() throws {
         let cats = exampleDocument.root.cats
         let dogs = exampleDocument.root.dogs
-        
-        cats.addChild(name: "cat", value: "Garfield", attributes: ["breed" : "tabby", "color" : "orange"])
-        dogs.addChild(name: "dog", value: "Snoopy", attributes: ["breed" : "beagle", "color" : "white"])
-        
+
+        cats.addChild(name: "cat", value: "Garfield", attributes: ["breed": "tabby", "color": "orange"])
+        dogs.addChild(name: "dog", value: "Snoopy", attributes: ["breed": "beagle", "color": "white"])
+
         let catsCount = cats["cat"].count
         let dogsCount = dogs["dog"].count
-        
+
         let lastCat = cats["cat"].last!
         let penultDog = dogs.children[3]
-        
+
         XCTAssertEqual(catsCount, 5, "Should be able to add child element with attributes to an element.")
         XCTAssertEqual(dogsCount, 5, "Should be able to add child element with attributes to an element.")
-        
-        XCTAssertEqual(lastCat.attributes["color"], "orange", "Should be able to get attribute value from added element.")
-        XCTAssertEqual(try penultDog.get(), "Kika", "Should be able to add child with attributes without overwrites existing elements. (Github Issue #28)")
+
+        XCTAssertEqual(
+            lastCat.attributes["color"],
+            "orange",
+            "Should be able to get attribute value from added element."
+        )
+        XCTAssertEqual(
+            try penultDog.get(),
+            "Kika",
+            "Should be able to add child with attributes without overwrites existing elements. (Github Issue #28)"
+        )
     }
-    
+
     func testAddChildren() {
         let animals: [Element] = [
             Element(name: "dinosaurs"),
@@ -370,68 +411,83 @@ class XMLTests: XCTestCase {
             Element(name: "bugs"),
         ]
         exampleDocument.root.addChildren(animals)
-        
+
         let animalsCount = exampleDocument.root.children.count
         XCTAssertEqual(animalsCount, 5, "Should be able to add children elements to an element.")
     }
-    
+
     func testAddAttributes() {
         let firstCat = exampleDocument.root.cats.cat
 
         firstCat.attributes["funny"] = "true"
         firstCat.attributes["speed"] = "fast"
         firstCat.attributes["years"] = "7"
-        
+
         XCTAssertEqual(firstCat.attributes.count, 5, "Should be able to add attributes to an element.")
         XCTAssertEqual(Int(firstCat.attributes["years"]!), 7, "Should be able to get any attribute value now.")
     }
-    
+
     func testRemoveChild() throws {
         let cats = exampleDocument.root.cats
         let lastCat = cats["cat"].last!
-        let duplicateCat = cats.addChild(name: "cat", value: "Tinna", attributes: ["breed" : "Siberian", "color" : "lightgray"])
-        
+        let duplicateCat = cats.addChild(
+            name: "cat",
+            value: "Tinna",
+            attributes: ["breed": "Siberian", "color": "lightgray"]
+        )
+
         lastCat.removeFromParent()
         duplicateCat.removeFromParent()
-        
+
         let catsCount = cats["cat"].count
         let firstCat = cats["cat"]
         XCTAssertEqual(catsCount, 3, "Should be able to remove element from parent.")
         XCTAssertEqual(try firstCat.get(), "Tinna", "Should be able to remove the exact element from parent.")
     }
-    
+
     func testXMLEscapedString() {
         let string = "&<>'\""
         let escapedString = string.xmlEscaped
         XCTAssertEqual(escapedString, "&amp;&lt;&gt;&apos;&quot;")
     }
-    
+
     func testXMLString() {
         let testDocument = Document()
         let children = testDocument.addChild(name: "children")
-        children.addChild(name: "child", value: "value", attributes: ["attribute" : "attributeValue<&>"])
+        children.addChild(name: "child", value: "value", attributes: ["attribute": "attributeValue<&>"])
         children.addChild(name: "child")
         children.addChild(name: "child", value: "&<>'\"")
-        
-        XCTAssertEqual(testDocument.xml, "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<children>\n\t<child attribute=\"attributeValue&lt;&amp;&gt;\">value</child>\n\t<child />\n\t<child>&amp;&lt;&gt;&apos;&quot;</child>\n</children>", "Should be able to print XML formatted string.")
-        
-        XCTAssertEqual(testDocument.xmlCompact, "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?><children><child attribute=\"attributeValue&lt;&amp;&gt;\">value</child><child /><child>&amp;&lt;&gt;&apos;&quot;</child></children>", "Should be able to print compact XML string.")
-        
-        XCTAssertEqual(testDocument.xmlSpaces, "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<children>\n    <child attribute=\"attributeValue&lt;&amp;&gt;\">value</child>\n    <child />\n    <child>&amp;&lt;&gt;&apos;&quot;</child>\n</children>", "Should be able to print XML formatted string.")
-    }
-    
+
+        XCTAssertEqual(
+            testDocument.xml,
+            "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<children>\n\t<child attribute=\"attributeValue&lt;&amp;&gt;\">value</child>\n\t<child />\n\t<child>&amp;&lt;&gt;&apos;&quot;</child>\n</children>",
+            "Should be able to print XML formatted string."
+        )
+
+        XCTAssertEqual(
+            testDocument.xmlCompact,
+            "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?><children><child attribute=\"attributeValue&lt;&amp;&gt;\">value</child><child /><child>&amp;&lt;&gt;&apos;&quot;</child></children>",
+            "Should be able to print compact XML string."
+        )
+
+        XCTAssertEqual(
+            testDocument.xmlSpaces,
+            "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<children>\n    <child attribute=\"attributeValue&lt;&amp;&gt;\">value</child>\n    <child />\n    <child>&amp;&lt;&gt;&apos;&quot;</child>\n</children>",
+            "Should be able to print XML formatted string."
+        )
+    }
+
     // MARK: - XML Parse Performance
-    
+
     func testReadXMLPerformance() {
-        self.measure() {
+        self.measure {
             _ = self.readXMLFromFile(filename: "plant_catalog")
         }
     }
-    
+
     func testWriteXMLPerformance() {
-        self.measure() {
+        self.measure {
             _ = self.plantsDocument.xml
         }
     }
-    
 }