فهرست منبع

Update Licenses

maxep 5 سال پیش
والد
کامیت
d1f86fce62
55فایلهای تغییر یافته به همراه409 افزوده شده و 353 حذف شده
  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(
         .target(
             name: "Twofish",
             name: "Twofish",
-            dependencies: []
+            dependencies: [],
+            exclude: ["LICENSE"]
         ),
         ),
     ]
     ]
 )
 )

+ 5 - 5
Sources/Binary/Bytes.swift

@@ -1,20 +1,20 @@
 // Bytes.swift
 // 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
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 // (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
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 // GNU General Public License for more details.
 //
 //
 // You should have received a copy of the GNU General Public License
 // 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
 import Foundation
 
 

+ 5 - 5
Sources/Binary/BytesRepresentable.swift

@@ -1,20 +1,20 @@
 // BytesRepresentable.swift
 // 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
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 // (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
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 // GNU General Public License for more details.
 //
 //
 // You should have received a copy of the GNU General Public License
 // 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
 import Foundation
 
 

+ 5 - 5
Sources/Binary/Error.swift

@@ -1,20 +1,20 @@
 // Error.swift
 // 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
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 // (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
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 // GNU General Public License for more details.
 //
 //
 // You should have received a copy of the GNU General Public License
 // 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
 import Foundation
 
 

+ 5 - 5
Sources/Binary/Input.swift

@@ -1,20 +1,20 @@
 // Input.swift
 // 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
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 // (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
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 // GNU General Public License for more details.
 //
 //
 // You should have received a copy of the GNU General Public License
 // 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
 import Foundation
 
 

+ 5 - 5
Sources/Binary/Output.swift

@@ -1,20 +1,20 @@
 // Output.swift
 // 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
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 // (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
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 // GNU General Public License for more details.
 //
 //
 // You should have received a copy of the GNU General Public License
 // 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
 import Foundation
 
 

+ 5 - 5
Sources/Binary/Streamable.swift

@@ -1,20 +1,20 @@
 // Streamable.swift
 // 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
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 // (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
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 // GNU General Public License for more details.
 //
 //
 // You should have received a copy of the GNU General Public License
 // 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
 import Foundation
 
 

+ 5 - 5
Sources/Binary/TLV.swift

@@ -1,20 +1,20 @@
 // TLV.swift
 // 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
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 // (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
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 // GNU General Public License for more details.
 //
 //
 // You should have received a copy of the GNU General Public License
 // 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
 import Foundation
 
 

+ 5 - 5
Sources/Crypto/AES.swift

@@ -1,20 +1,20 @@
 // AES.swift
 // 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
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 // (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
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 // GNU General Public License for more details.
 //
 //
 // You should have received a copy of the GNU General Public License
 // 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 Binary
 import CommonCrypto
 import CommonCrypto

+ 5 - 5
Sources/Crypto/Argon2.swift

@@ -1,20 +1,20 @@
 // Argon2.swift
 // 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
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 // (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
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 // GNU General Public License for more details.
 //
 //
 // You should have received a copy of the GNU General Public License
 // 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 Argon2
 import Binary
 import Binary

+ 5 - 5
Sources/Crypto/ChaCha20.swift

@@ -1,20 +1,20 @@
 // ChaCha20.swift
 // 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
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 // (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
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 // GNU General Public License for more details.
 //
 //
 // You should have received a copy of the GNU General Public License
 // 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 Binary
 import Foundation
 import Foundation

+ 5 - 5
Sources/Crypto/Cipher.swift

@@ -1,20 +1,20 @@
 // Cipher.swift
 // 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
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 // (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
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 // GNU General Public License for more details.
 //
 //
 // You should have received a copy of the GNU General Public License
 // 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 Binary
 import Foundation
 import Foundation

+ 5 - 5
Sources/Crypto/Error.swift

@@ -1,20 +1,20 @@
 // Error.swift
 // 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
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 // (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
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 // GNU General Public License for more details.
 //
 //
 // You should have received a copy of the GNU General Public License
 // 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 Argon2
 import CommonCrypto
 import CommonCrypto

+ 5 - 5
Sources/Crypto/Hash.swift

@@ -1,20 +1,20 @@
 // Hash.swift
 // 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
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 // (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
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 // GNU General Public License for more details.
 //
 //
 // You should have received a copy of the GNU General Public License
 // 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 Binary
 import Foundation
 import Foundation

+ 5 - 5
Sources/Crypto/KeyDerivation.swift

@@ -1,20 +1,20 @@
 // KeyDerivation.swift
 // 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
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 // (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
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 // GNU General Public License for more details.
 //
 //
 // You should have received a copy of the GNU General Public License
 // 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 Binary
 import Foundation
 import Foundation

+ 5 - 5
Sources/Crypto/Salsa20.swift

@@ -1,20 +1,20 @@
 // Salsa20.swift
 // 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
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 // (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
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 // GNU General Public License for more details.
 //
 //
 // You should have received a copy of the GNU General Public License
 // 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 Binary
 import Foundation
 import Foundation

+ 5 - 5
Sources/Crypto/Twofish.swift

@@ -1,20 +1,20 @@
 // Twofish.swift
 // 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
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 // (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
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 // GNU General Public License for more details.
 //
 //
 // You should have received a copy of the GNU General Public License
 // 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 Binary
 import Foundation
 import Foundation

+ 5 - 5
Sources/KDB/CompositeKey.swift

@@ -1,20 +1,20 @@
 // CompositeKey.swift
 // 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
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 // (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
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 // GNU General Public License for more details.
 //
 //
 // You should have received a copy of the GNU General Public License
 // 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 Binary
 import Crypto
 import Crypto

+ 5 - 5
Sources/KDB/Database.swift

@@ -1,20 +1,20 @@
 // Database.swift
 // 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
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 // (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
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 // GNU General Public License for more details.
 //
 //
 // You should have received a copy of the GNU General Public License
 // 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 Binary
 import Crypto
 import Crypto

+ 5 - 5
Sources/KDB/Date.swift

@@ -1,20 +1,20 @@
 // Date.swift
 // 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
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 // (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
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 // GNU General Public License for more details.
 //
 //
 // You should have received a copy of the GNU General Public License
 // 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 Binary
 import Foundation
 import Foundation

+ 5 - 5
Sources/KDB/Entry.swift

@@ -1,20 +1,20 @@
 // Entry.swift
 // 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
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 // (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
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 // GNU General Public License for more details.
 //
 //
 // You should have received a copy of the GNU General Public License
 // 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 Binary
 import Foundation
 import Foundation

+ 5 - 5
Sources/KDB/Error.swift

@@ -1,20 +1,20 @@
 // Error.swift
 // 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
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 // (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
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 // GNU General Public License for more details.
 //
 //
 // You should have received a copy of the GNU General Public License
 // 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
 import Foundation
 
 

+ 5 - 5
Sources/KDB/Group.swift

@@ -1,20 +1,20 @@
 // Group.swift
 // 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
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 // (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
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 // GNU General Public License for more details.
 //
 //
 // You should have received a copy of the GNU General Public License
 // 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 Binary
 import Foundation
 import Foundation

+ 5 - 5
Sources/KDB/Header.swift

@@ -1,20 +1,20 @@
 // Header.swift
 // 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
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 // (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
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 // GNU General Public License for more details.
 //
 //
 // You should have received a copy of the GNU General Public License
 // 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 Binary
 import Crypto
 import Crypto

+ 5 - 5
Sources/KDB/Row.swift

@@ -1,20 +1,20 @@
 // Row.swift
 // 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
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 // (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
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 // GNU General Public License for more details.
 //
 //
 // You should have received a copy of the GNU General Public License
 // 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 Binary
 import Foundation
 import Foundation

+ 5 - 5
Sources/KDBX/Cipher.swift

@@ -1,20 +1,20 @@
 // Cipher.swift
 // 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
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 // (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
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 // GNU General Public License for more details.
 //
 //
 // You should have received a copy of the GNU General Public License
 // 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 Crypto
 import Foundation
 import Foundation

+ 5 - 5
Sources/KDBX/CompositeKey.swift

@@ -1,20 +1,20 @@
 // CompositeKey.swift
 // 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
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 // (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
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 // GNU General Public License for more details.
 //
 //
 // You should have received a copy of the GNU General Public License
 // 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 Binary
 import Crypto
 import Crypto

+ 5 - 5
Sources/KDBX/Database.swift

@@ -1,20 +1,20 @@
 // Database.swift
 // 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
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 // (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
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 // GNU General Public License for more details.
 //
 //
 // You should have received a copy of the GNU General Public License
 // 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 Binary
 import Foundation
 import Foundation

+ 1 - 1
Sources/KDBX/Database0.swift

@@ -1,7 +1,7 @@
 // Database0.swift
 // Database0.swift
 // This file is part of KeePass.
 // 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
 // KeePass is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // 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
 // 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
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 // (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
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 // GNU General Public License for more details.
 //
 //
 // You should have received a copy of the GNU General Public License
 // 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 Binary
 import Crypto
 import Crypto

+ 5 - 5
Sources/KDBX/Database4.swift

@@ -1,20 +1,20 @@
 // Database4.swift
 // 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
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 // (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
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 // GNU General Public License for more details.
 //
 //
 // You should have received a copy of the GNU General Public License
 // 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 Binary
 import Crypto
 import Crypto

+ 5 - 5
Sources/KDBX/Error.swift

@@ -1,20 +1,20 @@
 // Error.swift
 // 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
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 // (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
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 // GNU General Public License for more details.
 //
 //
 // You should have received a copy of the GNU General Public License
 // 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
 import Foundation
 
 

+ 5 - 5
Sources/KDBX/File.swift

@@ -1,20 +1,20 @@
 // File.swift
 // 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
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 // (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
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 // GNU General Public License for more details.
 //
 //
 // You should have received a copy of the GNU General Public License
 // 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 Binary
 import Foundation
 import Foundation

+ 5 - 5
Sources/KDBX/Header.swift

@@ -1,20 +1,20 @@
 // Header.swift
 // 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
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 // (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
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 // GNU General Public License for more details.
 //
 //
 // You should have received a copy of the GNU General Public License
 // 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 Binary
 import Crypto
 import Crypto

+ 5 - 5
Sources/KDBX/KeyDerivation.swift

@@ -1,20 +1,20 @@
 // KeyDerivation.swift
 // 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
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 // (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
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 // GNU General Public License for more details.
 //
 //
 // You should have received a copy of the GNU General Public License
 // 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 Crypto
 import Foundation
 import Foundation

+ 5 - 5
Sources/KDBX/Variant.swift

@@ -1,20 +1,20 @@
 // Variant.swift
 // 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
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 // (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
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 // GNU General Public License for more details.
 //
 //
 // You should have received a copy of the GNU General Public License
 // 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 Binary
 import Foundation
 import Foundation

+ 1 - 1
Sources/KeePass/CompositeKey.swift

@@ -1,7 +1,7 @@
 // CompositeKey.swift
 // CompositeKey.swift
 // This file is part of KeePass.
 // 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
 // KeePass is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // 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
 // Database.swift
 // This file is part of KeePass.
 // 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
 // KeePass is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // 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
 // Entry.swift
 // This file is part of KeePass.
 // 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
 // KeePass is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // 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
 // 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
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 // (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
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 // GNU General Public License for more details.
 //
 //
 // You should have received a copy of the GNU General Public License
 // 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
 import Foundation
 
 

+ 1 - 1
Sources/KeePass/Field.swift

@@ -1,7 +1,7 @@
 // Field.swift
 // Field.swift
 // This file is part of KeePass.
 // 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
 // KeePass is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // 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
 // Group.swift
 // This file is part of KeePass.
 // 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
 // KeePass is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // 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
 // KDB.swift
 // This file is part of KeePass.
 // 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
 // KeePass is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // 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
 // KDBX.swift
 // This file is part of KeePass.
 // 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
 // KeePass is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // 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
 // 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
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 // (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
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 // GNU General Public License for more details.
 //
 //
 // You should have received a copy of the GNU General Public License
 // 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 Binary
 import Foundation
 import Foundation

+ 1 - 1
Sources/KeePass/Timestamp.swift

@@ -1,7 +1,7 @@
 // Timestamp.swift
 // Timestamp.swift
 // This file is part of KeePass.
 // 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
 // KeePass is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // 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
 // TypeErasure.swift
 // This file is part of KeePass.
 // 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
 // KeePass is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // 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
 // 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
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 // (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
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 // GNU General Public License for more details.
 //
 //
 // You should have received a copy of the GNU General Public License
 // 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 <Foundation/Foundation.h>
 #import "sodium.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
 // 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
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 // (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
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 // GNU General Public License for more details.
 //
 //
 // You should have received a copy of the GNU General Public License
 // 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 Binary
 import XCTest
 import XCTest

+ 5 - 5
Tests/CryptoTests/Salsa20Tests.swift

@@ -1,20 +1,20 @@
 // Salsa20Tests.swift
 // 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
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 // (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
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 // GNU General Public License for more details.
 //
 //
 // You should have received a copy of the GNU General Public License
 // 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 Binary
 import XCTest
 import XCTest

+ 5 - 5
Tests/CryptoTests/TwofishTests.swift

@@ -1,20 +1,20 @@
 // TwofishTests.swift
 // 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
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation, either version 3 of the License, or
 // the Free Software Foundation, either version 3 of the License, or
 // (at your option) any later version.
 // (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
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 // GNU General Public License for more details.
 // GNU General Public License for more details.
 //
 //
 // You should have received a copy of the GNU General Public License
 // 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 Binary
 import XCTest
 import XCTest

+ 8 - 14
Tests/GzipTests/GzipTests.swift

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

+ 166 - 110
Tests/XMLTests/XMLTests.swift

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