feat: add VaultSession (vault lifecycle and entry CRUD)

This commit is contained in:
2026-05-22 14:56:53 +02:00
parent 33b670510c
commit 838e078304
1284 changed files with 6589 additions and 0 deletions
+1
View File
@@ -0,0 +1 @@
15943
@@ -0,0 +1,15 @@
#if __OBJC__
#import <Foundation/Foundation.h>
#if __cplusplus
extern "C" {
#endif
NSBundle* KeePassKit_SWIFTPM_MODULE_BUNDLE(void);
#define SWIFTPM_MODULE_BUNDLE KeePassKit_SWIFTPM_MODULE_BUNDLE()
#if __cplusplus
}
#endif
#endif
@@ -0,0 +1,12 @@
#import <Foundation/Foundation.h>
NSBundle* KeePassKit_SWIFTPM_MODULE_BUNDLE() {
NSURL *bundleURL = [[[NSBundle mainBundle] bundleURL] URLByAppendingPathComponent:@"KeePassKit_KeePassKit.bundle"];
NSBundle *preferredBundle = [NSBundle bundleWithURL:bundleURL];
if (preferredBundle == nil) {
return [NSBundle bundleWithPath:@"/Users/kriss/Dev/local/MyPass/MyPassCore/.build/arm64-apple-macosx/debug/KeePassKit_KeePassKit.bundle"];
}
return preferredBundle;
}
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
</dict>
</plist>
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
</dict>
</plist>
@@ -0,0 +1,6 @@
/* Bundle name */
"CFBundleName" = "KeePassKit";
/* Copyright (human-readable) */
"NSHumanReadableCopyright" = "Copyright 2013-2021 HicknHack Software GmbH. Alle Rechte vorbehalten.";
@@ -0,0 +1,268 @@
/* Action name for adding a customt icon. */
"ADD_CUSTOM_ICON" = "Icon hinzufügen";
/* Error description */
"Alignment Error" = "Speicherausrichtungsfehler";
/* Error description */
"Buffer Too Small" = "Puffer zu klein";
/* Default title for KDBX databases
Title for the root group created for KDB files */
"DATABASE" = "Datenbank";
/* Error description */
"Decode Error" = "Dekodierungsfehler";
/* Action name for deleting a custom icon */
"DELETE_CUSTOM_ICON" = "Icon entfernen";
/* EMail */
"EMAIL" = "E-Mail";
/* No comment provided by engineer. */
"ERROR_AES_DECRYPTION_FAILED" = "AES Entschlüsselung fehlgeschlagen";
/* No comment provided by engineer. */
"ERROR_AES_ENCRYPTION_FAILED" = "AES Verschlüsselung ist fehlgeschlagen";
/* No comment provided by engineer. */
"ERROR_ATTRIBUTE_KEY_VALIDATION_FAILED" = "Bezeichnung wird bereits verwendet!";
/* (No Comment) */
"ERROR_AUTOTYPE_SEQUENCE_VALIDATION_FAILED" = "Die Autotype-Sequenz ist fehlerhaft!";
/* (No Comment) */
"ERROR_CORRUPT_TREE" = "Interne Datenstruktur defekt!";
/* No comment provided by engineer. */
"ERROR_DECRYPTION_FAILED" = "Entschlüsseln fehlgeschlagen";
/* No comment provided by engineer. */
"ERROR_ENCRYPTION_FAILED" = "Verschlüsseln fehlgeschlafen";
/* No comment provided by engineer. */
"ERROR_GROUP_ELEMENT_MISSING" = "Datenbank-XML enthält kein Group-Element";
/* (No Comment) */
"ERROR_HEADER_CORRUPTED" = "Header-Daten sind beschädigt";
/* (No Comment) */
"ERROR_HEADER_HASH_MISSMATCH" = "Fehlerhafte Datei: Header-Hash stimmt nicht mit Daten überein.";
/* No comment provided by engineer. */
"ERROR_HEADER_HASH_VERIFICATION_FAILED" = "Datenbank-Hash falsch. Datenintegrität ist möglicherweise verletzt!";
/* No comment provided by engineer. */
"ERROR_INTEGRITY_CHECK_FAILED" = "Die Integrität der Datei konnte nicht sichergestellt werden";
/* No comment provided by engineer. */
"ERROR_INVALID_FIELD_SIZE" = "Datenfeld mit falscher Größe. Password falsch?";
/* No comment provided by engineer. */
"ERROR_INVALID_FIELD_TYPE" = "Unbekanntes Datenfeld. Password falsch?";
/* No comment provided by engineer. */
"ERROR_INVALID_HEADER_FIELD_SIZE" = "Falsche Größe eines Header-Feldes";
/* No comment provided by engineer. */
"ERROR_INVALID_HEADER_FIELD_TYPE" = "Falscher Typ eines Header-Feldes";
/* No comment provided by engineer. */
"ERROR_INVALID_HEADER_IV_SIZE" = "Falsche Größe des Initalisierungs-Vektor im Header";
/* No comment provided by engineer. */
"ERROR_KDB_CORRUPT_TREE" = "Defekter KDB-Baum";
/* No comment provided by engineer. */
"ERROR_KDB_FILE_HEADER_TRUNCATED" = "KDB-Header unvollständig";
/* No comment provided by engineer. */
"ERROR_KDBX_CORRUPTED_CONTENT_STREAM" = "Die Inhaltsdaten sind fehlerhaft.";
/* No comment provided by engineer. */
"ERROR_KDBX_CORRUPTED_ENCRYPTION_STREAM" = "Die verschlüsselten Daten sind fehlerhaft.";
/* No comment provided by engineer. */
"ERROR_KDBX_CORRUPTED_INNER_HEADER" = "Der innere Header ist fehlerhaft.";
/* No comment provided by engineer. */
"ERROR_KDBX_CORRUPTED_PUBLIC_CUSTOM_DATA" = "Die unverschlüsselten öffentlichen Daten sind fehlerhaft.";
/* No comment provided by engineer. */
"ERROR_KDBX_INVALID_INNER_HEADER_FIELD" = "Der innere Header enthält ein unbekanntes Feld";
/* No comment provided by engineer. */
"ERROR_KDBX_INVALID_KEY_DERIVATION_DATA" = "Die Daten zur Schlüsselherleitung sind nicht fehlerhaft";
/* No comment provided by engineer. */
"ERROR_KEEPASSFILE_ELEMENT_MISSING" = "Datenbank-XML enthält keine KeePassFile-Elemente";
/* No comment provided by engineer. */
"ERROR_KEY_DERIVATION_FAILED" = "Schlüsselherleitung fehlgeschlagen";
/* No comment provided by engineer. */
"ERROR_META_ELEMENT_MISSING" = "Datenbank-XML enthält kein Meta-Element";
/* No comment provided by engineer. */
"ERROR_NO_DATA" = "Keine Daten";
/* No comment provided by engineer. */
"ERROR_NO_KEY_DATA" = "Die Schlüsseldatei enthält keine Daten";
/* No comment provided by engineer. */
"ERROR_NO_XML_DATA" = "Die Schlüsseldatei ist keine Xml Datei";
/* No comment provided by engineer. */
"ERROR_PASSWORD_OR_KEYFILE_WRONG" = "Falsche Password und/oder die Schlüsseldatei";
/* No comment provided by engineer. */
"ERROR_ROOT_ELEMENT_MISSING" = "Datenbank-XML enthält kein Root-Elementen";
/* Error message for unknown error code */
"ERROR_UNKNOWN_ERROR_CODE" = "Ein unbekannter Fehler ist aufgetreten";
/* No comment provided by engineer. */
"ERROR_UNKNOWN_FILE_FORMAT" = "Unbekanntes Dateiformat";
/* (No Comment) */
"ERROR_UNSUPPORTED_CHIPHER" = "Verschlüsselungsalgorithmus wird nicht unterstützt";
/* No comment provided by engineer. */
"ERROR_UNSUPPORTED_CIPHER" = "Verschlüsselungsalgorithmus wird nicht unterstützt";
/* No comment provided by engineer. */
"ERROR_UNSUPPORTED_DATABASER_VERSION" = "Datenbankformat wird nicht unterstützt";
/* No comment provided by engineer. */
"ERROR_UNSUPPORTED_KDBX_COMPRESSION_ALGORITHM" = "Kompressionsalgorithmus wird nicht unterstützt";
/* No comment provided by engineer. */
"ERROR_UNSUPPORTED_KDBX_RANDOM_STREAM" = "Format des Zufallsdatenstroms wird nicht unterstützt";
/* No comment provided by engineer. */
"ERROR_UNSUPPORTED_KEYDERIVATION" = "Schlüsselherleitungsalgorithmus wird nicht unterstützt";
/* No comment provided by engineer. */
"ERROR_WINDOW_TITLE_VALIDATION_FAILED" = "Format des Fenstertitles ist fehlerhaft!";
/* No comment provided by engineer. */
"ERROR_XML_KEYFILE_CORRUPTED" = "Schlüssel-XML-Datei ist beschädigt!";
/* No comment provided by engineer. */
"ERROR_XML_KEYFILE_DATA_PARSING_ERROR" = "Daten des Schlüssels nicht lesbar";
/* No comment provided by engineer. */
"ERROR_XML_KEYFILE_UNSUPPORTED_VERSION" = "Schlüssel-XML-Datei Version wird nicht unterstützt";
/* No comment provided by engineer. */
"ERROR_XML_KEYFILE_WITHOUT_DATA_ELEMENT" = "Schlüssel-XML-Datei enhält kein Data-Element";
/* No comment provided by engineer. */
"ERROR_XML_KEYFILE_WITHOUT_HASH_ATTRIBUTE" = "Schlüssel-XML-Datei ohne Hash-Attribut!";
/* No comment provided by engineer. */
"ERROR_XML_KEYFILE_WITHOUT_KEY_ELEMENT" = "Schlüssel-XML-Datei enthält kein Key-Element";
/* No comment provided by engineer. */
"ERROR_XML_KEYFILE_WITHOUT_KEYFILE_ELEMENT" = "Schlüssel-XML-Datei ohne KeyFile-Element";
/* No comment provided by engineer. */
"ERROR_XML_KEYFILE_WITHOUT_META_ELEMENT" = "Schlüssel-XML-Datei enthält kein Meta-Element";
/* No comment provided by engineer. */
"ERROR_XML_KEYFILE_WRONG_HASH_SIZE" = "Hash-Element in Schlüssel-XML-Datei hat die falsche Länge";
/* No comment provided by engineer. */
"ERRROR_XML_STRUCUTRE_MALFORMED" = "Datenbank-XML Struktur ist fehlerhaft";
/* Error reason */
"Failed to allocate memory" = "Konnte keinen Speicher belegen";
/* Error reason */
"Function not implemented for the current algorithm" = "Funktion ist im aktuellen Algorithmus nicht implementiert";
/* General */
"GENERAL" = "Allgemein";
/* Homebanking */
"HOMEBANKING" = "Homebanking";
/* Error reason */
"Illegal parameter supplied to encryption/decryption algorithm" = "Falscher Parameter wurde für Ver-/Entschlüsselung übergeben";
/* Error reason */
"Input data did not decode or decrypt correctly" = "Eingangsdaten konnten nicht Dekodiert oder korrekt entschlüsselt werden";
/* Error reason */
"Input size to encryption algorithm was not aligned correctly" = "Eingabegröße für Verschlüsselung ist nicht korrekt auf Algorithmus ausgerichtet";
/* Error reason */
"Insufficient buffer provided for specified operation" = "Zu kleiner Puffer für Operation zur Verfügung";
/* Internet */
"INTERNET" = "Internet";
/* Title format for a copie of an entry. Contains a %@ placeholder */
"KPK_ENTRY_COPY_%@" = "Kopie von %@";
/* Title format for a copie of a group. Contains a %@ placeholder */
"KPK_GROUP_COPY_%@" = "Kopie von %@";
/* Error description */
"Memory Failure" = "Speicherfehler";
/* Network */
"NETWORK" = "Netzwerk";
/* Error description */
"Parameter Error" = "Parameterfehler";
/* Action name for setting a custom string value protected */
"PROTECT_%@" = "%@ schützen";
/* Action name for setting the background color of an enty */
"SET_BACKGROUND_COLOR" = "Hintergrundfarbe festlegen";
/* Action name for setting value of a custom attribute. Contains %@ placeholder */
"SET_CUSTOM_ATTTRIBUTE_%@" = "Benutzerdefinierten Werte festlegen";
/* Action name for setting the foreground color of an enty */
"SET_FOREGROUND_COLOR" = "Vordergrundfarbe festlegen";
/* Action name for setting the notes of an enty */
"SET_NOTES" = "Notizen festlegen";
/* Action name for setting the password of an enty */
"SET_PASSWORD" = "Password festlegen";
/* Action name for setting the tags of an enty */
"SET_TAGS" = "Tags festlegen";
/* Action name for setting the title of an enty */
"SET_TITLE" = "Titel festlegen";
/* Action name for setting the url of an enty */
"SET_URL" = "URL festlegen";
/* Action name for setting the username of an enty */
"SET_USERNAME" = "Benutzername festlegen";
/* Error description */
"Success" = "Erfolgreich";
/* Name for the trash group */
"TRASH" = "Papierkorb";
/* Error description */
"Unimplemented Function" = "Funktion nicht implementiert";
/* Error description */
"Unknown Error" = "Unbekannter Fehler";
/* Action name for setting a custom string value non-protected */
"UNPROTECT_%@" = "%@ nicht schützen";
/* Windows */
"WINDOWS" = "Windows";
@@ -0,0 +1,268 @@
/* Action name for adding a customt icon. */
"ADD_CUSTOM_ICON" = "Add Custom Icon";
/* Error description */
"Alignment Error" = "Alignment Error";
/* Error description */
"Buffer Too Small" = "Buffer Too Small";
/* Default title for KDBX databases
Title for the root group created for KDB files */
"DATABASE" = "Database";
/* Error description */
"Decode Error" = "Decode Error";
/* Action name for deleting a custom icon */
"DELETE_CUSTOM_ICON" = "Delete Custom Icon";
/* EMail */
"EMAIL" = "EMail";
/* No comment provided by engineer. */
"ERROR_AES_DECRYPTION_FAILED" = "AES decryption failed";
/* No comment provided by engineer. */
"ERROR_AES_ENCRYPTION_FAILED" = "AES encryption failed";
/* No comment provided by engineer. */
"ERROR_ATTRIBUTE_KEY_VALIDATION_FAILED" = "The attribute key is not unique!";
/* (No Comment) */
"ERROR_AUTOTYPE_SEQUENCE_VALIDATION_FAILED" = "The autotype sequence is not valid!";
/* (No Comment) */
"ERROR_CORRUPT_TREE" = "The internal file structure is corrupted!";
/* No comment provided by engineer. */
"ERROR_DECRYPTION_FAILED" = "Decryption failed";
/* No comment provided by engineer. */
"ERROR_ENCRYPTION_FAILED" = "Encryption failed";
/* No comment provided by engineer. */
"ERROR_GROUP_ELEMENT_MISSING" = "The XML file contains no group node";
/* (No Comment) */
"ERROR_HEADER_CORRUPTED" = "Header is corrupted";
/* (No Comment) */
"ERROR_HEADER_HASH_MISSMATCH" = "The header hash doesn't match. File corrupted";
/* No comment provided by engineer. */
"ERROR_HEADER_HASH_VERIFICATION_FAILED" = "The database header hash is wrong. Data integrity might be broken!";
/* No comment provided by engineer. */
"ERROR_INTEGRITY_CHECK_FAILED" = "The database integrity isn't ensured";
/* No comment provided by engineer. */
"ERROR_INVALID_FIELD_SIZE" = "Incorrect size at data field. Password wrong?";
/* No comment provided by engineer. */
"ERROR_INVALID_FIELD_TYPE" = "Unknown data field. Password wrong?";
/* No comment provided by engineer. */
"ERROR_INVALID_HEADER_FIELD_SIZE" = "Invalid header field size";
/* No comment provided by engineer. */
"ERROR_INVALID_HEADER_FIELD_TYPE" = "Invalid header field type";
/* No comment provided by engineer. */
"ERROR_INVALID_HEADER_IV_SIZE" = "Invalid header initalization vector size";
/* No comment provided by engineer. */
"ERROR_KDB_CORRUPT_TREE" = "Corrupted KDB tree";
/* No comment provided by engineer. */
"ERROR_KDB_FILE_HEADER_TRUNCATED" = "KDB header truncated";
/* No comment provided by engineer. */
"ERROR_KDBX_CORRUPTED_CONTENT_STREAM" = "The content stream is corrupted";
/* No comment provided by engineer. */
"ERROR_KDBX_CORRUPTED_ENCRYPTION_STREAM" = "The encrypted stream is corrupted";
/* No comment provided by engineer. */
"ERROR_KDBX_CORRUPTED_INNER_HEADER" = "The inner header data is corrupted";
/* No comment provided by engineer. */
"ERROR_KDBX_CORRUPTED_PUBLIC_CUSTOM_DATA" = "The public custom data is corrupted";
/* No comment provided by engineer. */
"ERROR_KDBX_INVALID_INNER_HEADER_FIELD" = "The inner header contains an invalid field";
/* No comment provided by engineer. */
"ERROR_KDBX_INVALID_KEY_DERIVATION_DATA" = "The key derivation data is invalid";
/* No comment provided by engineer. */
"ERROR_KEEPASSFILE_ELEMENT_MISSING" = "The XML file is missing the KeePassFile element";
/* No comment provided by engineer. */
"ERROR_KEY_DERIVATION_FAILED" = "Key derivation failed";
/* No comment provided by engineer. */
"ERROR_META_ELEMENT_MISSING" = "Meta XML element is missing";
/* No comment provided by engineer. */
"ERROR_NO_DATA" = "No data";
/* No comment provided by engineer. */
"ERROR_NO_KEY_DATA" = "The key file contains no data";
/* No comment provided by engineer. */
"ERROR_NO_XML_DATA" = "No XML file data";
/* No comment provided by engineer. */
"ERROR_PASSWORD_OR_KEYFILE_WRONG" = "The password and/or the keyfile is wrong";
/* No comment provided by engineer. */
"ERROR_ROOT_ELEMENT_MISSING" = "The XML file contains no Root node";
/* Error message for unknown error code */
"ERROR_UNKNOWN_ERROR_CODE" = "An unknown error occured";
/* No comment provided by engineer. */
"ERROR_UNKNOWN_FILE_FORMAT" = "Unknown file format";
/* (No Comment) */
"ERROR_UNSUPPORTED_CHIPHER" = "Unsupported cipher algorithm";
/* No comment provided by engineer. */
"ERROR_UNSUPPORTED_CIPHER" = "Unsupported cipher";
/* No comment provided by engineer. */
"ERROR_UNSUPPORTED_DATABASER_VERSION" = "The Database version is not supported";
/* No comment provided by engineer. */
"ERROR_UNSUPPORTED_KDBX_COMPRESSION_ALGORITHM" = "Unsupported compression algorithm";
/* No comment provided by engineer. */
"ERROR_UNSUPPORTED_KDBX_RANDOM_STREAM" = "Unsupported random stream type";
/* No comment provided by engineer. */
"ERROR_UNSUPPORTED_KEYDERIVATION" = "Unsupported key derivation";
/* No comment provided by engineer. */
"ERROR_WINDOW_TITLE_VALIDATION_FAILED" = "The Format of the Window Title is not valid!";
/* No comment provided by engineer. */
"ERROR_XML_KEYFILE_CORRUPTED" = "Unable to load corrupted key file";
/* No comment provided by engineer. */
"ERROR_XML_KEYFILE_DATA_PARSING_ERROR" = "Unable to read the data of the XML keyfile";
/* No comment provided by engineer. */
"ERROR_XML_KEYFILE_UNSUPPORTED_VERSION" = "Unsupported XML key file version";
/* No comment provided by engineer. */
"ERROR_XML_KEYFILE_WITHOUT_DATA_ELEMENT" = "The XML keyfile is missing the data element";
/* No comment provided by engineer. */
"ERROR_XML_KEYFILE_WITHOUT_HASH_ATTRIBUTE" = "Unable to load key file. Hash is missing.";
/* No comment provided by engineer. */
"ERROR_XML_KEYFILE_WITHOUT_KEY_ELEMENT" = "The XML keyfile is missing the key element";
/* No comment provided by engineer. */
"ERROR_XML_KEYFILE_WITHOUT_KEYFILE_ELEMENT" = "The XML keyfile is missing the key file element";
/* No comment provided by engineer. */
"ERROR_XML_KEYFILE_WITHOUT_META_ELEMENT" = "The Xml keyfile is missing the meta element";
/* No comment provided by engineer. */
"ERROR_XML_KEYFILE_WRONG_HASH_SIZE" = "The Xml key file has the wrong hash size";
/* No comment provided by engineer. */
"ERRROR_XML_STRUCUTRE_MALFORMED" = "Malformed XML structure";
/* Error reason */
"Failed to allocate memory" = "Failed to allocate memory";
/* Error reason */
"Function not implemented for the current algorithm" = "Function not implemented for the current algorithm";
/* General */
"GENERAL" = "General";
/* Homebanking */
"HOMEBANKING" = "Homebanking";
/* Error reason */
"Illegal parameter supplied to encryption/decryption algorithm" = "Illegal parameter supplied to encryption/decryption algorithm";
/* Error reason */
"Input data did not decode or decrypt correctly" = "Input data did not decode or decrypt correctly";
/* Error reason */
"Input size to encryption algorithm was not aligned correctly" = "Input size to encryption algorithm was not aligned correctly";
/* Error reason */
"Insufficient buffer provided for specified operation" = "Insufficient buffer provided for specified operation";
/* Internet */
"INTERNET" = "Internet";
/* Title format for a copie of an entry. Contains a %@ placeholder */
"KPK_ENTRY_COPY_%@" = "%@ copy";
/* Title format for a copie of a group. Contains a %@ placeholder */
"KPK_GROUP_COPY_%@" = "%@ copy";
/* Error description */
"Memory Failure" = "Memory Failure";
/* Network */
"NETWORK" = "Network";
/* Error description */
"Parameter Error" = "Parameter Error";
/* Action name for setting a custom string value protected */
"PROTECT_%@" = "Protect %@";
/* Action name for setting the background color of an enty */
"SET_BACKGROUND_COLOR" = "Set Background Color";
/* Action name for setting value of a custom attribute. Contains %@ placeholder */
"SET_CUSTOM_ATTTRIBUTE_%@" = "Set Custom Attribute %@";
/* Action name for setting the foreground color of an enty */
"SET_FOREGROUND_COLOR" = "Set Foreground Color";
/* Action name for setting the notes of an enty */
"SET_NOTES" = "Set Notes";
/* Action name for setting the password of an enty */
"SET_PASSWORD" = "Set Password";
/* Action name for setting the tags of an enty */
"SET_TAGS" = "Set Tags";
/* Action name for setting the title of an enty */
"SET_TITLE" = "Set Title";
/* Action name for setting the url of an enty */
"SET_URL" = "Set URL";
/* Action name for setting the username of an enty */
"SET_USERNAME" = "Set Username";
/* Error description */
"Success" = "Success";
/* Name for the trash group */
"TRASH" = "Trash";
/* Error description */
"Unimplemented Function" = "Unimplemented Function";
/* Error description */
"Unknown Error" = "Unknown Error";
/* Action name for setting a custom string value non-protected */
"UNPROTECT_%@" = "Unprotect %@";
/* Windows */
"WINDOWS" = "Windows";
@@ -0,0 +1,52 @@
/*
KPKLocalizable.strings
MacPass
Created by Michael Starke on 20/12/13.
Copyright (c) 2013 HicknHack Software GmbH. All rights reserved.
*/
"SET_TITLE" = "Editar Título";
"SET_USERNAME" = "Editar Nombre de Usuario";
"SET_PASSWORD" = "Editar Contraseña";
"SET_URL" = "Editar URL";
"SET_NOTES" = "Editar Notas";
"DATABASE" = "Base de Datos";
"EMAIL" = "EMail";
"GENERAL" = "General";
"HOMEBANKING" = "Bancos";
"INTERNET" = "Internet";
"NETWORK" = "Red";
"TRASH" = "Papelera";
"WINDOWS" = "Windows";
/* Copy */
"KPK_GROUP_COPY_%@" = "Copia %@";
"KPK_ENTRY_COPY_%@" = "Copia %@";
/* Validation Errors */
"ERROR_WINDOW_TITLE_VALIDATION_FAILED" = "El formato del título no es válido.";
"ERROR_ATTRIBUTE_KEY_VALIDATION_FAILED" = "La llave de atributo no es única.";
"ERROR_AUTOTYPE_SEQUENCE_VALIDATION_FAILED" = "La secuenta de Autotype no es válida.";
/* Errors */
"ERROR_CORRUPT_TREE" = "La estructura interna del archivo está corrupta.";
"ERROR_INVALID_FIELD_SIZE" = "La longitud del campo no es válida. ¿Contraseña incorrecta?";
"ERROR_INVALID_FIELD_TYPE" = "Valor desconocido. ¿Contraseña incorrecta?";
"ERROR_UNSUPPORTED_DATABASER_VERSION" = "La versión de la base de datos no es soportada.";
"ERROR_UNSUPPORTED_CHIPHER" = "Algoritmo de encriptación no soportado";
"ERROR_UNKNOWN_FILE_FORMAT" = "Formato de archivo desconocido";
"ERROR_HEADER_CORRUPTED" = "Cabecera corrupta";
"ERROR_UNSUPPORTED_KDBX_COMPRESSION_ALGORITHM" = "Algoritmo de compresión no soportado";
"ERROR_UNSUPPORTED_KDBX_RANDOM_STREAM" = "Tipo de random stream no soportado";
"ERROR_INTEGRITY_CHECK_FAILED" = "No se puede verificar la integridad de la base de datos";
"ERROR_PASSWORD_OR_KEYFILE_WRONG" = "La contraseña o el KeePassFile son incorrectos";
"ERROR_KEEPASSFILE_ELEMENT_MISSING" = "El archivo XML no contiene el elemento KeePassFile";
"ERROR_ROOT_ELEMENT_MISSING" = "El archivo XML no contiene el nodo Root";
"ERROR_GROUP_ELEMENT_MISSING" = "El archivo XML no contiene el nodo Group";
"ERROR_HEADER_HASH_MISSMATCH" = "El hash del header no coincide. Archivo corrupto";
"ERROR_XML_KEYFILE_WITHOUT_KEY_ELEMENT" = "El archivo XML no contiene el elemento key";
"ERROR_XML_KEYFILE_WITHOUT_DATA_ELEMENT" = "El archivo XML no contiene el elemento data";
"ERROR_XML_KEYFILE_DATA_PARSING_ERROR" = "No es posible leer la información del archivo XML.";
"ERROR_HEADER_HASH_VERIFICATION_FAILED" = "El hash de la cabecera de la base de datos es incorrecto. La integridad puede estar en riesgo.";
@@ -0,0 +1,52 @@
/*
KPKLocalizable.strings
MacPass
Created by Michael Starke on 20/12/13.
Copyright (c) 2013 HicknHack Software GmbH. All rights reserved.
*/
"SET_TITLE" = "Modifier le titre";
"SET_USERNAME" = "Modifier utilisateur";
"SET_PASSWORD" = "Modifier mot de passe";
"SET_NOTES" = "Modifier notes";
"SET_URL" = "Modifier URL";
"DATABASE" = "Base de données";
"EMAIL" = "Courrier électronique";
"GENERAL" = "Général";
"HOMEBANKING" = "Banque";
"INTERNET" = "Internet";
"NETWORK" = "Réseau";
"TRASH" = "Corbeille";
"WINDOWS" = "Windows";
/* Copy */
"KPK_GROUP_COPY_%@" = "%@ copy";
"KPK_ENTRY_COPY_%@" = "%@ copy";
/* Validation Errors */
"ERROR_WINDOW_TITLE_VALIDATION_FAILED" = "Le format du titre de la fenêtre n'est pas valide !";
"ERROR_ATTRIBUTE_KEY_VALIDATION_FAILED" = "La clé d'attribut n'est pas unique";
"ERROR_AUTOTYPE_SEQUENCE_VALIDATION_FAILED" = "La séquence de saisie automatique n'est pas valide !";
/* Errors */
"ERROR_CORRUPT_TREE" = "La structure interne du fichier est corrompue !";
"ERROR_INVALID_FIELD_SIZE" = "Taille incorrecte dans le champ. Mauvais mot de passe ?";
"ERROR_INVALID_FIELD_TYPE" = "Champ inconnu. Mauvais mot de passe ?";
"ERROR_UNSUPPORTED_DATABASER_VERSION" = "Version de la base de données non prise en charge";
"ERROR_UNSUPPORTED_CHIPHER" = "Algorithme de chiffrement non pris en charge";
"ERROR_UNKNOWN_FILE_FORMAT" = "Format de fichier inconnu";
"ERROR_HEADER_CORRUPTED" = "En-tête de fichier corrompue";
"ERROR_UNSUPPORTED_KDBX_COMPRESSION_ALGORITHM" = "Algorithme de compression non pris en charge";
"ERROR_UNSUPPORTED_KDBX_RANDOM_STREAM" = "Type de flux aléatoire non pris en charge";
"ERROR_INTEGRITY_CHECK_FAILED" = "L'intégrité de la base de données n'est pas assurée";
"ERROR_PASSWORD_OR_KEYFILE_WRONG" = "Mauvais mot de passe et/ou fichier clé";
"ERROR_KEEPASSFILE_ELEMENT_MISSING" = "Le fichier XML ne contient pas d'élément KeePassFile";
"ERROR_ROOT_ELEMENT_MISSING" = "Le fichier XML ne contient pas de nœud 'root'";
"ERROR_GROUP_ELEMENT_MISSING" = "Le fichier XML ne contient pas de nœud 'Groupe'";
"ERROR_HEADER_HASH_MISSMATCH" = "Le hash de l'en-tête ne correspond pas. Fichier corrompu";
"ERROR_XML_KEYFILE_WITHOUT_KEY_ELEMENT" = "Le fichier XML ne contient pas d'élément clé";
"ERROR_XML_KEYFILE_WITHOUT_DATA_ELEMENT" = "Le fichier clé XML ne contient pas d'élément de données";
"ERROR_XML_KEYFILE_DATA_PARSING_ERROR" = "Impossible de lire les données du fichier clé XML";
"ERROR_HEADER_HASH_VERIFICATION_FAILED" = "Le hash de l'en-tête n'est pas bon. Les données peuvent être corrompues !";
@@ -0,0 +1,52 @@
/*
KPKLocalizable.strings
MacPass
Created by Michael Starke on 20/12/13.
Copyright (c) 2013 HicknHack Software GmbH. All rights reserved.
*/
"SET_TITLE" = "Modifica Titolo";
"SET_USERNAME" = "Modifica Nome Utente";
"SET_PASSWORD" = "Modifica Password";
"SET_URL" = "Modifica URL";
"SET_NOTES" = "Modifica Note";
"DATABASE" = "Database";
"EMAIL" = "EMail";
"GENERAL" = "Generale";
"HOMEBANKING" = "Homebanking";
"INTERNET" = "Internet";
"NETWORK" = "Rete";
"TRASH" = "Cestino";
"WINDOWS" = "Windows";
/* Copy */
"KPK_GROUP_COPY_%@" = "%@ Copia";
"KPK_ENTRY_COPY_%@" = "%@ Copia";
/* Validation Errors */
"ERROR_WINDOW_TITLE_VALIDATION_FAILED" = "Il Formato del Titolo della Finestra non é Valido!";
"ERROR_ATTRIBUTE_KEY_VALIDATION_FAILED" = "The Attribute Key is not unique!";
"ERROR_AUTOTYPE_SEQUENCE_VALIDATION_FAILED" = "Sequenza di AutoType non Valida!";
/* Errors */
"ERROR_CORRUPT_TREE" = "La struttura interna del file é corrotta!";
"ERROR_INVALID_FIELD_SIZE" = "Taglia dati incorretta. Password errata?";
"ERROR_INVALID_FIELD_TYPE" = "Campo dati sconosciuto. Password errata?";
"ERROR_UNSUPPORTED_DATABASER_VERSION" = "Versione del database non supportata";
"ERROR_UNSUPPORTED_CHIPHER" = "Algoritmo di cifratura non supportato";
"ERROR_UNKNOWN_FILE_FORMAT" = "Formato del file sconosciuto";
"ERROR_HEADER_CORRUPTED" = "Intestazione corrotta";
"ERROR_UNSUPPORTED_KDBX_COMPRESSION_ALGORITHM" = "Algoritmo di compressione non supportato";
"ERROR_UNSUPPORTED_KDBX_RANDOM_STREAM" = "Flusso aleatorio non supportato";
"ERROR_INTEGRITY_CHECK_FAILED" = "L'integrità del database non é assicurata";
"ERROR_PASSWORD_OR_KEYFILE_WRONG" = "La password e/o la chiave sono errati";
"ERROR_KEEPASSFILE_ELEMENT_MISSING" = "Elemento KeePassFile mancante dal file XML";
"ERROR_ROOT_ELEMENT_MISSING" = "Il file XML non contiene un nodo root";
"ERROR_GROUP_ELEMENT_MISSING" = "Il file XML non contiene un nodo Gruppo";
"ERROR_HEADER_HASH_MISSMATCH" = "La hash dell'intestazione non corrisponde. File corrotto";
"ERROR_XML_KEYFILE_WITHOUT_KEY_ELEMENT" = "Il file chiave XML non contiene l'elemento chiave";
"ERROR_XML_KEYFILE_WITHOUT_DATA_ELEMENT" = "Il file chiave XML non contiene l'elemento dati";
"ERROR_XML_KEYFILE_DATA_PARSING_ERROR" = "Impossibile leggere i dati dal file chiave XML";
"ERROR_HEADER_HASH_VERIFICATION_FAILED" = "La hash dell'intestazione del database é errata, l'integrità dei dati potrebbe essere compromessa!";
@@ -0,0 +1,52 @@
/*
KPKLocalizable.strings
MacPass
Created by Michael Starke on 20/12/13.
Copyright (c) 2013 HicknHack Software GmbH. All rights reserved.
*/
"SET_TITLE" = "Wijzig Titel";
"SET_USERNAME" = "Wijzig Gebruikersnaam";
"SET_PASSWORD" = "Wijzig Wachtwoord";
"SET_URL" = "Wijzig URL";
"SET_NOTES" = "Wijzig Notities";
"DATABASE" = "Database";
"EMAIL" = "E-Mail";
"INTERNET" = "Internet";
"GENERAL" = "Algemeen";
"HOMEBANKING" = "Thuisbankieren";
"NETWORK" = "Netwerk";
"TRASH" = "Prullenmand";
"WINDOWS" = "Windows";
/* Copy */
"KPK_GROUP_COPY_%@" = "%@ Kopieer";
"KPK_ENTRY_COPY_%@" = "%@ Kopieer";
/* Validation Errors */
"ERROR_WINDOW_TITLE_VALIDATION_FAILED" = "Het Formaat van de Venster Titel is ongeldig!";
"ERROR_ATTRIBUTE_KEY_VALIDATION_FAILED" = "De Attribuutkey is niet uniek!";
"ERROR_AUTOTYPE_SEQUENCE_VALIDATION_FAILED" = "De Autotype Sequentie is niet geldig!";
/* Errors */
"ERROR_CORRUPT_TREE" = "De interne bestandsstructuur is corrupt!";
"ERROR_INVALID_FIELD_SIZE" = "Verkeerde grootte op dataveld. Verkeerd wachtwoord?";
"ERROR_INVALID_FIELD_TYPE" = "Onbekend databeld. Verkeerd wachtwoord?";
"ERROR_UNSUPPORTED_DATABASER_VERSION" = "De databaseversie wordt niet ondersteund";
"ERROR_UNSUPPORTED_CHIPHER" = "Niet ondersteund chipher algoritmd";
"ERROR_UNKNOWN_FILE_FORMAT" = "Onbekend bestandsformaat";
"ERROR_HEADER_CORRUPTED" = "Header is corrupt";
"ERROR_UNSUPPORTED_KDBX_COMPRESSION_ALGORITHM" = "Niet ondersteund compressie-algoritme";
"ERROR_UNSUPPORTED_KDBX_RANDOM_STREAM" = "Niet ondersteund random stream type";
"ERROR_INTEGRITY_CHECK_FAILED" = "De intergriteit van de database is niet verzekerd";
"ERROR_PASSWORD_OR_KEYFILE_WRONG" = "Het wachtwoord en/of de keyfile is niet correct";
"ERROR_KEEPASSFILE_ELEMENT_MISSING" = "Het XML-bestand mist het KeePassFile-element";
"ERROR_ROOT_ELEMENT_MISSING" = "Het XML-bestand bevat geen Root node";
"ERROR_GROUP_ELEMENT_MISSING" = "Het XML-bestand bevat geen Groep node";
"ERROR_HEADER_HASH_MISSMATCH" = "De header hash komt niet overeen. Bestand corrupt";
"ERROR_XML_KEYFILE_WITHOUT_KEY_ELEMENT" = "De XML-keyfile mist het key element";
"ERROR_XML_KEYFILE_WITHOUT_DATA_ELEMENT" = "De XML-keyfile mist the data element";
"ERROR_XML_KEYFILE_DATA_PARSING_ERROR" = "Kan geen data van de XML-keyfile lezen";
"ERROR_HEADER_HASH_VERIFICATION_FAILED" = "The database header hash is wrong. Data integritiy might be broken!";
@@ -0,0 +1,110 @@
/* Default name database */
"DATABASE" = "Baza danych";
/* (No Comment) */
"EMAIL" = "E-mail";
/* (No Comment) */
"ERROR_ATTRIBUTE_KEY_VALIDATION_FAILED" = "Atrybut klucza nie jest unikatowy!";
/* (No Comment) */
"ERROR_AUTOTYPE_SEQUENCE_VALIDATION_FAILED" = "Sekwencja autouzupełnienia jest nieprawidłowa!";
/* (No Comment) */
"ERROR_CORRUPT_TREE" = "Struktura pliku jest uszkodzona!";
/* (No Comment) */
"ERROR_GROUP_ELEMENT_MISSING" = "Plik XML file contains no Group node";
/* (No Comment) */
"ERROR_HEADER_CORRUPTED" = "Nagłówek jest uszkodzony";
/* (No Comment) */
"ERROR_HEADER_HASH_MISSMATCH" = "Suma kontrolna nagłówka jest nieprawidłowa. Plik jest uszkodzony";
/* (No Comment) */
"ERROR_HEADER_HASH_VERIFICATION_FAILED" = "Nagłówek bazy danych jest nieprawidłowy. Spójność danych może nie być zachowana!";
/* (No Comment) */
"ERROR_INTEGRITY_CHECK_FAILED" = "Integralność bazy danych jest wątpliwa";
/* (No Comment) */
"ERROR_INVALID_FIELD_SIZE" = "Niewłaściwy rozmiar pola danych. Nieprawidłowe hasło?";
/* (No Comment) */
"ERROR_INVALID_FIELD_TYPE" = "Nieznane pole danych. Nieprawidłowe hasło?";
/* (No Comment) */
"ERROR_KEEPASSFILE_ELEMENT_MISSING" = "Plik XML nie zawiera elementu KeePass";
/* (No Comment) */
"ERROR_PASSWORD_OR_KEYFILE_WRONG" = "Hasło i/lub plik klucza jest nieprawidłowe";
/* (No Comment) */
"ERROR_ROOT_ELEMENT_MISSING" = "Plik XML nie zawiera głównego węzła";
/* (No Comment) */
"ERROR_UNKNOWN_FILE_FORMAT" = "Nieznany format pliku";
/* (No Comment) */
"ERROR_UNSUPPORTED_CHIPHER" = "Nieznany algorytm szyfrowania";
/* (No Comment) */
"ERROR_UNSUPPORTED_DATABASER_VERSION" = "Ta wersja bazy danych nie jest wspierana";
/* (No Comment) */
"ERROR_UNSUPPORTED_KDBX_COMPRESSION_ALGORITHM" = "Nieobsługiwany algorytm kompresji";
/* (No Comment) */
"ERROR_UNSUPPORTED_KDBX_RANDOM_STREAM" = "Niewspierany typ generatora pseudolosowego";
/* (No Comment) */
"ERROR_WINDOW_TITLE_VALIDATION_FAILED" = "Format nazwy okna jest nieprawidłowy!";
/* (No Comment) */
"ERROR_XML_KEYFILE_DATA_PARSING_ERROR" = "Nie można odczytać danych XML z pliku klucza";
/* (No Comment) */
"ERROR_XML_KEYFILE_WITHOUT_DATA_ELEMENT" = "XML pliku z kliczem nie zawiera danych";
/* (No Comment) */
"ERROR_XML_KEYFILE_WITHOUT_KEY_ELEMENT" = "XML pliku z kluczem nie zawiera elementu klucza";
/* (No Comment) */
"GENERAL" = "Ogólne";
/* (No Comment) */
"HOMEBANKING" = "Homebanking";
/* (No Comment) */
"INTERNET" = "Internet";
/* (No Comment) */
"KPK_ENTRY_COPY_%@" = "%@ kopiuj";
/* (No Comment) */
"KPK_GROUP_COPY_%@" = "%@ kopiuj";
/* (No Comment) */
"NETWORK" = "Sieć";
/* (No Comment) */
"SET_NOTES" = "Edit Notes";
/* (No Comment) */
"SET_PASSWORD" = "Edit Password";
/* (No Comment) */
"SET_TITLE" = "Edit Title";
/* (No Comment) */
"SET_URL" = "Edit URL";
/* (No Comment) */
"SET_USERNAME" = "Edit Username";
/* (No Comment) */
"TRASH" = "Kosz";
/* (No Comment) */
"WINDOWS" = "Windows";
@@ -0,0 +1,52 @@
/*
KPKLocalizable.strings
MacPass
Created by Michael Starke on 20/12/13.
Copyright (c) 2013 HicknHack Software GmbH. All rights reserved.
*/
"SET_TITLE" = "Изменить Заголовок";
"SET_USERNAME" = "Изменить Имя пользователя";
"SET_PASSWORD" = "Изменить Пароль";
"SET_URL" = "Изменить URL";
"SET_NOTES" = "Изменить Заметки";
"DATABASE" = "База данных";
"EMAIL" = "EMail";
"GENERAL" = "Общие";
"HOMEBANKING" = "Домашний банк";
"INTERNET" = "Интернет";
"NETWORK" = "Сеть";
"TRASH" = "Удалить";
"WINDOWS" = "Windows";
/* Copy */
"KPK_GROUP_COPY_%@" = "%@ копия";
"KPK_ENTRY_COPY_%@" = "%@ копия";
/* Validation Errors */
"ERROR_WINDOW_TITLE_VALIDATION_FAILED" = "Формат окна заголовка не верный!";
"ERROR_ATTRIBUTE_KEY_VALIDATION_FAILED" = "Ключ аттрибута не уникален!";
"ERROR_AUTOTYPE_SEQUENCE_VALIDATION_FAILED" = "Эта последовательность автоввода неверна!";
/* Errors */
"ERROR_CORRUPT_TREE" = "Повреждена внутренняя структура файла!";
"ERROR_INVALID_FIELD_SIZE" = "Неверный размер поля данных. Пароль неверный?";
"ERROR_INVALID_FIELD_TYPE" = "Неизвестное поле данных. Пароль неверный?";
"ERROR_UNSUPPORTED_DATABASER_VERSION" = "Версия базы данных не поддерживается";
"ERROR_UNSUPPORTED_CHIPHER" = "Не поддерживается алгоритм шифрования";
"ERROR_UNKNOWN_FILE_FORMAT" = "Неизвестный формат файла";
"ERROR_HEADER_CORRUPTED" = "Заголовк поврежден";
"ERROR_UNSUPPORTED_KDBX_COMPRESSION_ALGORITHM" = "Не поддерживается алгоритм сжатия";
"ERROR_UNSUPPORTED_KDBX_RANDOM_STREAM" = "Не поддерживается случайный тип потока";
"ERROR_INTEGRITY_CHECK_FAILED" = "Целостность базы данных не гарантируется";
"ERROR_PASSWORD_OR_KEYFILE_WRONG" = "Пароль и/или файл ключа неверный";
"ERROR_KEEPASSFILE_ELEMENT_MISSING" = "XML файл не содержит KeePassFile элемент";
"ERROR_ROOT_ELEMENT_MISSING" = "XML файл не содержит корневой узел";
"ERROR_GROUP_ELEMENT_MISSING" = "XML файл не содержит узел Group";
"ERROR_HEADER_HASH_MISSMATCH" = "Неверный хэш заголовка. Файл поврежеден.";
"ERROR_XML_KEYFILE_WITHOUT_KEY_ELEMENT" = " XML файл ключа не содержит элемента ключа";
"ERROR_XML_KEYFILE_WITHOUT_DATA_ELEMENT" = "XML файл ключа не содержит элемента данных";
"ERROR_XML_KEYFILE_DATA_PARSING_ERROR" = "Не могу прочитать данные в XML файле ключа";
"ERROR_HEADER_HASH_VERIFICATION_FAILED" = "Хэш заголовка базы данных неверный. Целостность данных может быть нарушена!";
@@ -0,0 +1,52 @@
/*
KPKLocalizable.strings
MacPass
Created by Michael Starke on 20/12/13.
Copyright (c) 2013 HicknHack Software GmbH. All rights reserved.
*/
"SET_TITLE" = "编辑标题";
"SET_USERNAME" = "编辑用户名";
"SET_PASSWORD" = "编辑密码";
"SET_URL" = "编辑 URL";
"SET_NOTES" = "编辑注释";
"DATABASE" = "数据库";
"GENERAL" = "通用";
"EMAIL" = "电子邮件";
"HOMEBANKING" = "家庭银行";
"INTERNET" = "互联网";
"NETWORK" = "网络";
"TRASH" = "废纸篓";
"WINDOWS" = "Windows";
/* Copy */
"KPK_GROUP_COPY_%@" = "%@ 拷贝";
"KPK_ENTRY_COPY_%@" = "%@ 拷贝";
/* Validation Errors */
"ERROR_WINDOW_TITLE_VALIDATION_FAILED" = "窗口标题格式不正确!";
"ERROR_ATTRIBUTE_KEY_VALIDATION_FAILED" = "属性键 (Attribute Key) 不唯一!";
"ERROR_AUTOTYPE_SEQUENCE_VALIDATION_FAILED" = "自动键入序列不正确!";
/* Errors */
"ERROR_CORRUPT_TREE" = "内部文件结构已损坏!";
"ERROR_INVALID_FIELD_SIZE" = "数据字段大小错误,可能是由于密码错误。";
"ERROR_INVALID_FIELD_TYPE" = "未知数据字段,可能是由于密码错误。";
"ERROR_UNSUPPORTED_DATABASER_VERSION" = "不支持的数据库版本";
"ERROR_UNSUPPORTED_CHIPHER" = "不支持的密码算法";
"ERROR_UNKNOWN_FILE_FORMAT" = "未知文件格式";
"ERROR_HEADER_CORRUPTED" = "文件头已损坏";
"ERROR_UNSUPPORTED_KDBX_COMPRESSION_ALGORITHM" = "不支持的压缩算法";
"ERROR_UNSUPPORTED_KDBX_RANDOM_STREAM" = "不支持的随机流 (random stream) 种类";
"ERROR_INTEGRITY_CHECK_FAILED" = "数据库完整性已被破坏";
"ERROR_PASSWORD_OR_KEYFILE_WRONG" = "密码与/或密钥文件错误";
"ERROR_KEEPASSFILE_ELEMENT_MISSING" = "XML 文件缺少 KeePassFile 元素";
"ERROR_ROOT_ELEMENT_MISSING" = "XML 文件未包含根节点";
"ERROR_GROUP_ELEMENT_MISSING" = "XML 文件未包含组节点";
"ERROR_HEADER_HASH_MISSMATCH" = "文件头哈希不匹配,文件已损坏";
"ERROR_XML_KEYFILE_WITHOUT_KEY_ELEMENT" = "XML 密钥文件缺少键 (key) 元素";
"ERROR_XML_KEYFILE_WITHOUT_DATA_ELEMENT" = "XML 密钥文件缺少数据 (data) 元素";
"ERROR_XML_KEYFILE_DATA_PARSING_ERROR" = "无法读取 XML 密钥文件的数据";
"ERROR_HEADER_HASH_VERIFICATION_FAILED" = "数据库文件头哈希错误,数据可能已经被破坏!";
@@ -0,0 +1 @@
/Users/kriss/Dev/local/MyPass/MyPassCore/.build/arm64-apple-macosx/debug/ModuleCache/19PO9S6FE9ZXX/modules.idx.lock-e1ceaeda
@@ -0,0 +1,3 @@
module MyPassCore {
header "/Users/kriss/Dev/local/MyPass/MyPassCore/.build/arm64-apple-macosx/debug/MyPassCore.build/include/MyPassCore-Swift.h"
}
@@ -0,0 +1,12 @@
{
"": {
"swift-dependencies": "/Users/kriss/Dev/local/MyPass/MyPassCore/.build/arm64-apple-macosx/debug/MyPassCore.build/primary.swiftdeps"
},
"/Users/kriss/Dev/local/MyPass/MyPassCore/Sources/MyPassCore/Models/ProtectedString.swift": {
"dependencies": "/Users/kriss/Dev/local/MyPass/MyPassCore/.build/arm64-apple-macosx/debug/MyPassCore.build/ProtectedString.d",
"object": "/Users/kriss/Dev/local/MyPass/MyPassCore/.build/arm64-apple-macosx/debug/MyPassCore.build/ProtectedString.swift.o",
"swiftmodule": "/Users/kriss/Dev/local/MyPass/MyPassCore/.build/arm64-apple-macosx/debug/MyPassCore.build/ProtectedString~partial.swiftmodule",
"swift-dependencies": "/Users/kriss/Dev/local/MyPass/MyPassCore/.build/arm64-apple-macosx/debug/MyPassCore.build/ProtectedString.swiftdeps",
"diagnostics": "/Users/kriss/Dev/local/MyPass/MyPassCore/.build/arm64-apple-macosx/debug/MyPassCore.build/ProtectedString.dia"
}
}
@@ -0,0 +1 @@
/Users/kriss/Dev/local/MyPass/MyPassCore/Sources/MyPassCore/Models/ProtectedString.swift
@@ -0,0 +1,3 @@
module MyPassCorePackageTests {
header "/Users/kriss/Dev/local/MyPass/MyPassCore/.build/arm64-apple-macosx/debug/MyPassCorePackageTests.build/include/MyPassCorePackageTests-Swift.h"
}
@@ -0,0 +1,12 @@
{
"": {
"swift-dependencies": "/Users/kriss/Dev/local/MyPass/MyPassCore/.build/arm64-apple-macosx/debug/MyPassCorePackageTests.build/primary.swiftdeps"
},
"/Users/kriss/Dev/local/MyPass/MyPassCore/.build/arm64-apple-macosx/debug/MyPassCorePackageTests.derived/runner.swift": {
"dependencies": "/Users/kriss/Dev/local/MyPass/MyPassCore/.build/arm64-apple-macosx/debug/MyPassCorePackageTests.build/runner.d",
"object": "/Users/kriss/Dev/local/MyPass/MyPassCore/.build/arm64-apple-macosx/debug/MyPassCorePackageTests.build/runner.swift.o",
"swiftmodule": "/Users/kriss/Dev/local/MyPass/MyPassCore/.build/arm64-apple-macosx/debug/MyPassCorePackageTests.build/runner~partial.swiftmodule",
"swift-dependencies": "/Users/kriss/Dev/local/MyPass/MyPassCore/.build/arm64-apple-macosx/debug/MyPassCorePackageTests.build/runner.swiftdeps",
"diagnostics": "/Users/kriss/Dev/local/MyPass/MyPassCore/.build/arm64-apple-macosx/debug/MyPassCorePackageTests.build/runner.dia"
}
}
@@ -0,0 +1 @@
/Users/kriss/Dev/local/MyPass/MyPassCore/.build/arm64-apple-macosx/debug/MyPassCorePackageTests.derived/runner.swift
@@ -0,0 +1,547 @@
#if canImport(Testing)
import Testing
#endif
#if false
import Foundation
import XCTest
public final class SwiftPMXCTestObserver: NSObject {
public override init() {
super.init()
XCTestObservationCenter.shared.addTestObserver(self)
}
}
extension SwiftPMXCTestObserver: XCTestObservation {
var testOutputPath: String {
return "/Users/kriss/Dev/local/MyPass/MyPassCore/.build/arm64-apple-macosx/debug/testOutput.txt"
}
private func write(record: any Encodable) {
let lock = FileLock(at: URL(fileURLWithPath: self.testOutputPath + ".lock"))
_ = try? lock.withLock {
self._write(record: record)
}
}
private func _write(record: any Encodable) {
if let data = try? JSONEncoder().encode(record) {
if let fileHandle = FileHandle(forWritingAtPath: self.testOutputPath) {
defer { fileHandle.closeFile() }
fileHandle.seekToEndOfFile()
fileHandle.write("\n".data(using: .utf8)!)
fileHandle.write(data)
} else {
_ = try? data.write(to: URL(fileURLWithPath: self.testOutputPath))
}
}
}
public func testBundleWillStart(_ testBundle: Bundle) {
let record = TestBundleEventRecord(bundle: .init(testBundle), event: .start)
write(record: TestEventRecord(bundleEvent: record))
}
public func testSuiteWillStart(_ testSuite: XCTestSuite) {
let record = TestSuiteEventRecord(suite: .init(testSuite), event: .start)
write(record: TestEventRecord(suiteEvent: record))
}
public func testCaseWillStart(_ testCase: XCTestCase) {
let record = TestCaseEventRecord(testCase: .init(testCase), event: .start)
write(record: TestEventRecord(caseEvent: record))
}
#if canImport(Darwin)
public func testCase(_ testCase: XCTestCase, didRecord issue: XCTIssue) {
let record = TestCaseFailureRecord(testCase: .init(testCase), issue: .init(issue), failureKind: .unexpected)
write(record: TestEventRecord(caseFailure: record))
}
public func testCase(_ testCase: XCTestCase, didRecord expectedFailure: XCTExpectedFailure) {
let record = TestCaseFailureRecord(testCase: .init(testCase), issue: .init(expectedFailure.issue), failureKind: .expected(failureReason: expectedFailure.failureReason))
write(record: TestEventRecord(caseFailure: record))
}
#else
public func testCase(_ testCase: XCTestCase, didFailWithDescription description: String, inFile filePath: String?, atLine lineNumber: Int) {
let issue = TestIssue(description: description, inFile: filePath, atLine: lineNumber)
let record = TestCaseFailureRecord(testCase: .init(testCase), issue: issue, failureKind: .unexpected)
write(record: TestEventRecord(caseFailure: record))
}
#endif
public func testCaseDidFinish(_ testCase: XCTestCase) {
let record = TestCaseEventRecord(testCase: .init(testCase), event: .finish)
write(record: TestEventRecord(caseEvent: record))
}
#if canImport(Darwin)
public func testSuite(_ testSuite: XCTestSuite, didRecord issue: XCTIssue) {
let record = TestSuiteFailureRecord(suite: .init(testSuite), issue: .init(issue), failureKind: .unexpected)
write(record: TestEventRecord(suiteFailure: record))
}
public func testSuite(_ testSuite: XCTestSuite, didRecord expectedFailure: XCTExpectedFailure) {
let record = TestSuiteFailureRecord(suite: .init(testSuite), issue: .init(expectedFailure.issue), failureKind: .expected(failureReason: expectedFailure.failureReason))
write(record: TestEventRecord(suiteFailure: record))
}
#else
public func testSuite(_ testSuite: XCTestSuite, didFailWithDescription description: String, inFile filePath: String?, atLine lineNumber: Int) {
let issue = TestIssue(description: description, inFile: filePath, atLine: lineNumber)
let record = TestSuiteFailureRecord(suite: .init(testSuite), issue: issue, failureKind: .unexpected)
write(record: TestEventRecord(suiteFailure: record))
}
#endif
public func testSuiteDidFinish(_ testSuite: XCTestSuite) {
let record = TestSuiteEventRecord(suite: .init(testSuite), event: .finish)
write(record: TestEventRecord(suiteEvent: record))
}
public func testBundleDidFinish(_ testBundle: Bundle) {
let record = TestBundleEventRecord(bundle: .init(testBundle), event: .finish)
write(record: TestEventRecord(bundleEvent: record))
}
}
// FIXME: Copied from `Lock.swift` in TSCBasic, would be nice if we had a better way
#if canImport(Glibc)
@_exported import Glibc
#elseif canImport(Musl)
@_exported import Musl
#elseif os(Windows)
@_exported import CRT
@_exported import WinSDK
#elseif os(WASI)
@_exported import WASILibc
#elseif canImport(Android)
@_exported import Android
#else
@_exported import Darwin.C
#endif
import Foundation
public final class FileLock {
#if os(Windows)
private var handle: HANDLE?
#else
private var fileDescriptor: CInt?
#endif
private let lockFile: URL
public init(at lockFile: URL) {
self.lockFile = lockFile
}
public func lock() throws {
#if os(Windows)
if handle == nil {
let h: HANDLE = lockFile.path.withCString(encodedAs: UTF16.self, {
CreateFileW(
$0,
UInt32(GENERIC_READ) | UInt32(GENERIC_WRITE),
UInt32(FILE_SHARE_READ) | UInt32(FILE_SHARE_WRITE),
nil,
DWORD(OPEN_ALWAYS),
DWORD(FILE_ATTRIBUTE_NORMAL),
nil
)
})
if h == INVALID_HANDLE_VALUE {
throw FileSystemError(errno: Int32(GetLastError()), lockFile)
}
self.handle = h
}
var overlapped = OVERLAPPED()
overlapped.Offset = 0
overlapped.OffsetHigh = 0
overlapped.hEvent = nil
if !LockFileEx(handle, DWORD(LOCKFILE_EXCLUSIVE_LOCK), 0,
UInt32.max, UInt32.max, &overlapped) {
throw ProcessLockError.unableToAquireLock(errno: Int32(GetLastError()))
}
#elseif os(WASI)
// WASI doesn't support flock
#else
if fileDescriptor == nil {
let fd = open(lockFile.path, O_WRONLY | O_CREAT | O_CLOEXEC, 0o666)
if fd == -1 {
fatalError("errno: \(errno), lockFile: \(lockFile)")
}
self.fileDescriptor = fd
}
while true {
if flock(fileDescriptor!, LOCK_EX) == 0 {
break
}
if errno == EINTR { continue }
fatalError("unable to acquire lock, errno: \(errno)")
}
#endif
}
public func unlock() {
#if os(Windows)
var overlapped = OVERLAPPED()
overlapped.Offset = 0
overlapped.OffsetHigh = 0
overlapped.hEvent = nil
UnlockFileEx(handle, 0, UInt32.max, UInt32.max, &overlapped)
#elseif os(WASI)
// WASI doesn't support flock
#else
guard let fd = fileDescriptor else { return }
flock(fd, LOCK_UN)
#endif
}
deinit {
#if os(Windows)
guard let handle = handle else { return }
CloseHandle(handle)
#elseif os(WASI)
// WASI doesn't support flock
#else
guard let fd = fileDescriptor else { return }
close(fd)
#endif
}
public func withLock<T>(_ body: () throws -> T) throws -> T {
try lock()
defer { unlock() }
return try body()
}
public func withLock<T>(_ body: () async throws -> T) async throws -> T {
try lock()
defer { unlock() }
return try await body()
}
}
// FIXME: Copied from `XCTEvents.swift`, would be nice if we had a better way
struct TestEventRecord: Codable {
let caseFailure: TestCaseFailureRecord?
let suiteFailure: TestSuiteFailureRecord?
let bundleEvent: TestBundleEventRecord?
let suiteEvent: TestSuiteEventRecord?
let caseEvent: TestCaseEventRecord?
init(
caseFailure: TestCaseFailureRecord? = nil,
suiteFailure: TestSuiteFailureRecord? = nil,
bundleEvent: TestBundleEventRecord? = nil,
suiteEvent: TestSuiteEventRecord? = nil,
caseEvent: TestCaseEventRecord? = nil
) {
self.caseFailure = caseFailure
self.suiteFailure = suiteFailure
self.bundleEvent = bundleEvent
self.suiteEvent = suiteEvent
self.caseEvent = caseEvent
}
}
// MARK: - Records
struct TestAttachment: Codable {
let name: String?
// TODO: Handle `userInfo: [AnyHashable : Any]?`
let uniformTypeIdentifier: String
let payload: Data?
}
struct TestBundleEventRecord: Codable {
let bundle: TestBundle
let event: TestEvent
}
struct TestCaseEventRecord: Codable {
let testCase: TestCase
let event: TestEvent
}
struct TestCaseFailureRecord: Codable, CustomStringConvertible {
let testCase: TestCase
let issue: TestIssue
let failureKind: TestFailureKind
var description: String {
return "\(issue.sourceCodeContext.description)\(testCase) \(issue.compactDescription)"
}
}
struct TestSuiteEventRecord: Codable {
let suite: TestSuiteRecord
let event: TestEvent
}
struct TestSuiteFailureRecord: Codable {
let suite: TestSuiteRecord
let issue: TestIssue
let failureKind: TestFailureKind
}
// MARK: Primitives
struct TestBundle: Codable {
let bundleIdentifier: String?
let bundlePath: String
}
struct TestCase: Codable {
let name: String
}
struct TestErrorInfo: Codable {
let description: String
let type: String
}
enum TestEvent: Codable {
case start
case finish
}
enum TestFailureKind: Codable, Equatable {
case unexpected
case expected(failureReason: String?)
var isExpected: Bool {
switch self {
case .expected: return true
case .unexpected: return false
}
}
}
struct TestIssue: Codable {
let type: TestIssueType
let compactDescription: String
let detailedDescription: String?
let associatedError: TestErrorInfo?
let sourceCodeContext: TestSourceCodeContext
let attachments: [TestAttachment]
}
enum TestIssueType: Codable {
case assertionFailure
case performanceRegression
case system
case thrownError
case uncaughtException
case unmatchedExpectedFailure
case unknown
}
struct TestLocation: Codable, CustomStringConvertible {
let file: String
let line: Int
var description: String {
return "\(file):\(line) "
}
}
struct TestSourceCodeContext: Codable, CustomStringConvertible {
let callStack: [TestSourceCodeFrame]
let location: TestLocation?
var description: String {
return location?.description ?? ""
}
}
struct TestSourceCodeFrame: Codable {
let address: UInt64
let symbolInfo: TestSourceCodeSymbolInfo?
let symbolicationError: TestErrorInfo?
}
struct TestSourceCodeSymbolInfo: Codable {
let imageName: String
let symbolName: String
let location: TestLocation?
}
struct TestSuiteRecord: Codable {
let name: String
}
// MARK: XCTest compatibility
extension TestIssue {
init(description: String, inFile filePath: String?, atLine lineNumber: Int) {
let location: TestLocation?
if let filePath = filePath {
location = .init(file: filePath, line: lineNumber)
} else {
location = nil
}
self.init(type: .assertionFailure, compactDescription: description, detailedDescription: description, associatedError: nil, sourceCodeContext: .init(callStack: [], location: location), attachments: [])
}
}
import XCTest
#if canImport(Darwin) // XCTAttachment is unavailable in swift-corelibs-xctest.
extension TestAttachment {
init(_ attachment: XCTAttachment) {
self.init(
name: attachment.name,
uniformTypeIdentifier: attachment.uniformTypeIdentifier,
payload: attachment.value(forKey: "payload") as? Data
)
}
}
#endif
extension TestBundle {
init(_ testBundle: Bundle) {
self.init(
bundleIdentifier: testBundle.bundleIdentifier,
bundlePath: testBundle.bundlePath
)
}
}
extension TestCase {
init(_ testCase: XCTestCase) {
self.init(name: testCase.name)
}
}
extension TestErrorInfo {
init(_ error: any Swift.Error) {
self.init(description: "\(error)", type: "\(Swift.type(of: error))")
}
}
#if canImport(Darwin) // XCTIssue is unavailable in swift-corelibs-xctest.
extension TestIssue {
init(_ issue: XCTIssue) {
self.init(
type: .init(issue.type),
compactDescription: issue.compactDescription,
detailedDescription: issue.detailedDescription,
associatedError: issue.associatedError.map { .init($0) },
sourceCodeContext: .init(issue.sourceCodeContext),
attachments: issue.attachments.map { .init($0) }
)
}
}
extension TestIssueType {
init(_ type: XCTIssue.IssueType) {
switch type {
case .assertionFailure: self = .assertionFailure
case .thrownError: self = .thrownError
case .uncaughtException: self = .uncaughtException
case .performanceRegression: self = .performanceRegression
case .system: self = .system
case .unmatchedExpectedFailure: self = .unmatchedExpectedFailure
@unknown default: self = .unknown
}
}
}
#endif
#if canImport(Darwin) // XCTSourceCodeLocation/XCTSourceCodeContext/XCTSourceCodeFrame/XCTSourceCodeSymbolInfo is unavailable in swift-corelibs-xctest.
extension TestLocation {
init(_ location: XCTSourceCodeLocation) {
self.init(
file: location.fileURL.absoluteString,
line: location.lineNumber
)
}
}
extension TestSourceCodeContext {
init(_ context: XCTSourceCodeContext) {
self.init(
callStack: context.callStack.map { .init($0) },
location: context.location.map { .init($0) }
)
}
}
extension TestSourceCodeFrame {
init(_ frame: XCTSourceCodeFrame) {
self.init(
address: frame.address,
symbolInfo: (try? frame.symbolInfo()).map { .init($0) },
symbolicationError: frame.symbolicationError.map { .init($0) }
)
}
}
extension TestSourceCodeSymbolInfo {
init(_ symbolInfo: XCTSourceCodeSymbolInfo) {
self.init(
imageName: symbolInfo.imageName,
symbolName: symbolInfo.symbolName,
location: symbolInfo.location.map { .init($0) }
)
}
}
#endif
extension TestSuiteRecord {
init(_ testSuite: XCTestSuite) {
self.init(name: testSuite.name)
}
}
import XCTest
#endif
@main
@available(macOS 10.15, iOS 11, watchOS 4, tvOS 11, *)
@available(*, deprecated, message: "Not actually deprecated. Marked as deprecated to allow inclusion of deprecated tests (which test deprecated functionality) without warnings")
struct Runner {
private static func testingLibrary() -> String {
var iterator = CommandLine.arguments.makeIterator()
while let argument = iterator.next() {
if argument == "--testing-library", let libraryName = iterator.next() {
return libraryName.lowercased()
}
}
// Fallback if not specified: run XCTest (legacy behavior)
return "xctest"
}
#if false
@_silgen_name("$ss13_runAsyncMainyyyyYaKcF")
private static func _runAsyncMain(_ asyncFun: @Sendable @escaping () async throws -> ())
#endif
static func main() async {
let testingLibrary = Self.testingLibrary()
#if canImport(Testing)
if testingLibrary == "swift-testing" {
#if false
_runAsyncMain {
await Testing.__swiftPMEntryPoint() as Never
}
#else
await Testing.__swiftPMEntryPoint() as Never
#endif
}
#endif
#if false
if testingLibrary == "xctest" {
XCTMain(__allDiscoveredTests()) as Never
}
#endif
}
}
@@ -0,0 +1,17 @@
import Foundation
extension Foundation.Bundle {
static let module: Bundle = {
let mainPath = Bundle.main.bundleURL.appendingPathComponent("MyPassCore_MyPassCoreTests.bundle").path
let buildPath = "/Users/kriss/Dev/local/MyPass/MyPassCore/.build/arm64-apple-macosx/debug/MyPassCore_MyPassCoreTests.bundle"
let preferredBundle = Bundle(path: mainPath)
guard let bundle = preferredBundle ?? Bundle(path: buildPath) else {
// Users can write a function called fatalError themselves, we should be resilient against that.
Swift.fatalError("could not load resource bundle: from \(mainPath) or \(buildPath)")
}
return bundle
}()
}
@@ -0,0 +1,19 @@
{
"": {
"swift-dependencies": "/Users/kriss/Dev/local/MyPass/MyPassCore/.build/arm64-apple-macosx/debug/MyPassCoreTests.build/primary.swiftdeps"
},
"/Users/kriss/Dev/local/MyPass/MyPassCore/Tests/MyPassCoreTests/ProtectedStringTests.swift": {
"dependencies": "/Users/kriss/Dev/local/MyPass/MyPassCore/.build/arm64-apple-macosx/debug/MyPassCoreTests.build/ProtectedStringTests.d",
"object": "/Users/kriss/Dev/local/MyPass/MyPassCore/.build/arm64-apple-macosx/debug/MyPassCoreTests.build/ProtectedStringTests.swift.o",
"swiftmodule": "/Users/kriss/Dev/local/MyPass/MyPassCore/.build/arm64-apple-macosx/debug/MyPassCoreTests.build/ProtectedStringTests~partial.swiftmodule",
"swift-dependencies": "/Users/kriss/Dev/local/MyPass/MyPassCore/.build/arm64-apple-macosx/debug/MyPassCoreTests.build/ProtectedStringTests.swiftdeps",
"diagnostics": "/Users/kriss/Dev/local/MyPass/MyPassCore/.build/arm64-apple-macosx/debug/MyPassCoreTests.build/ProtectedStringTests.dia"
},
"/Users/kriss/Dev/local/MyPass/MyPassCore/.build/arm64-apple-macosx/debug/MyPassCoreTests.build/DerivedSources/resource_bundle_accessor.swift": {
"dependencies": "/Users/kriss/Dev/local/MyPass/MyPassCore/.build/arm64-apple-macosx/debug/MyPassCoreTests.build/resource_bundle_accessor.d",
"object": "/Users/kriss/Dev/local/MyPass/MyPassCore/.build/arm64-apple-macosx/debug/MyPassCoreTests.build/resource_bundle_accessor.swift.o",
"swiftmodule": "/Users/kriss/Dev/local/MyPass/MyPassCore/.build/arm64-apple-macosx/debug/MyPassCoreTests.build/resource_bundle_accessor~partial.swiftmodule",
"swift-dependencies": "/Users/kriss/Dev/local/MyPass/MyPassCore/.build/arm64-apple-macosx/debug/MyPassCoreTests.build/resource_bundle_accessor.swiftdeps",
"diagnostics": "/Users/kriss/Dev/local/MyPass/MyPassCore/.build/arm64-apple-macosx/debug/MyPassCoreTests.build/resource_bundle_accessor.dia"
}
}
@@ -0,0 +1,2 @@
/Users/kriss/Dev/local/MyPass/MyPassCore/Tests/MyPassCoreTests/ProtectedStringTests.swift
/Users/kriss/Dev/local/MyPass/MyPassCore/.build/arm64-apple-macosx/debug/MyPassCoreTests.build/DerivedSources/resource_bundle_accessor.swift
File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More