本文整理汇总了C#中KeePassLib.PwDatabase类的典型用法代码示例。如果您正苦于以下问题:C# PwDatabase类的具体用法?C# PwDatabase怎么用?C# PwDatabase使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
PwDatabase类属于KeePassLib命名空间,在下文中一共展示了PwDatabase类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Copy
public static bool Copy(ProtectedString psToCopy, bool bIsEntryInfo,
PwEntry peEntryInfo, PwDatabase pwReferenceSource)
{
if(psToCopy == null) throw new ArgumentNullException("psToCopy");
return Copy(psToCopy.ReadString(), true, bIsEntryInfo, peEntryInfo,
pwReferenceSource, IntPtr.Zero);
}
示例2: Import
public static bool? Import(PwDatabase pwStorage, out bool bAppendedToRootOnly,
Form fParent)
{
bAppendedToRootOnly = false;
if(pwStorage == null) throw new ArgumentNullException("pwStorage");
if(!pwStorage.IsOpen) return null;
if(!AppPolicy.Try(AppPolicyId.Import)) return null;
ExchangeDataForm dlgFmt = new ExchangeDataForm();
dlgFmt.InitEx(false, pwStorage, pwStorage.RootGroup);
if(dlgFmt.ShowDialog() == DialogResult.OK)
{
Debug.Assert(dlgFmt.ResultFormat != null);
if(dlgFmt.ResultFormat == null)
{
MessageService.ShowWarning(KPRes.ImportFailed);
return false;
}
bAppendedToRootOnly = dlgFmt.ResultFormat.ImportAppendsToRootGroupOnly;
List<IOConnectionInfo> lConnections = new List<IOConnectionInfo>();
foreach(string strSelFile in dlgFmt.ResultFiles)
lConnections.Add(IOConnectionInfo.FromPath(strSelFile));
return Import(pwStorage, dlgFmt.ResultFormat, lConnections.ToArray(),
false, null, false, fParent);
}
return null;
}
示例3: ImportRecord
private static void ImportRecord(Node<BaseRecord> currentNode, PwGroup groupAddTo, PwDatabase pwStorage)
{
BaseRecord record = currentNode.AssociatedObject;
if (record.GetType() == typeof(FolderRecord))
{
FolderRecord folderRecord = (FolderRecord)record;
var folder = CreateFolder(groupAddTo, folderRecord);
foreach (var node in currentNode.Nodes)
{
ImportRecord(node, folder, pwStorage);
}
}
else if (record.GetType() == typeof(WebFormRecord))
{
WebFormRecord webForm = (WebFormRecord)record;
CreateWebForm(groupAddTo, pwStorage, webForm);
}
else if (record.GetType() == typeof(BaseRecord))
{
//Trace.WriteLine(String.Format("Error. Can't import unknown record type: {0}", record.RawJson));
}
else if (record.GetType() == typeof(UnknownRecord))
{
//CreateUnknown(groupAddTo, pwStorage, record as UnknownRecord);
}
}
示例4: ProcessCsvLine
private static void ProcessCsvLine(string strLine, PwDatabase pwStorage)
{
List<string> list = ImportUtil.SplitCsvLine(strLine, ",");
Debug.Assert(list.Count == 5);
PwEntry pe = new PwEntry(true, true);
pwStorage.RootGroup.AddEntry(pe, true);
if(list.Count == 5)
{
pe.Strings.Set(PwDefs.TitleField, new ProtectedString(
pwStorage.MemoryProtection.ProtectTitle,
ProcessCsvWord(list[0])));
pe.Strings.Set(PwDefs.UserNameField, new ProtectedString(
pwStorage.MemoryProtection.ProtectUserName,
ProcessCsvWord(list[1])));
pe.Strings.Set(PwDefs.PasswordField, new ProtectedString(
pwStorage.MemoryProtection.ProtectPassword,
ProcessCsvWord(list[2])));
pe.Strings.Set(PwDefs.UrlField, new ProtectedString(
pwStorage.MemoryProtection.ProtectUrl,
ProcessCsvWord(list[3])));
pe.Strings.Set(PwDefs.NotesField, new ProtectedString(
pwStorage.MemoryProtection.ProtectNotes,
ProcessCsvWord(list[4])));
}
else throw new FormatException("Invalid field count!");
}
示例5: InitEx
public void InitEx(bool bCreatingNew, PwDatabase pwDatabase)
{
m_bCreatingNew = bCreatingNew;
Debug.Assert(pwDatabase != null); if(pwDatabase == null) throw new ArgumentNullException("pwDatabase");
m_pwDatabase = pwDatabase;
}
示例6: Main
public static void Main(string[] args)
{
CompositeKey key = new CompositeKey();
KcpPassword pw = new KcpPassword("12345");
key.AddUserKey(pw);
byte[] pwdata = pw.KeyData.ReadData();
Console.WriteLine("PW data:");
Console.WriteLine(string.Join(",", pwdata.Select(x => "0x" + x.ToString("x"))));
byte[] keydata = key.GenerateKey32(pwdata, 6000).ReadData();
Console.WriteLine("Key data:");
Console.WriteLine(string.Join(",", keydata.Select(x => "0x" + x.ToString("x"))));
PwDatabase db = new PwDatabase();
db.MasterKey = key;
KdbxFile kdbx = new KdbxFile(db);
kdbx.Load(@"..\resources\test.kdbx", KdbxFormat.Default, null);
var groups = db.RootGroup.GetGroups(true);
Console.WriteLine("Group count: " + groups.UCount);
var entries = db.RootGroup.GetEntries(true);
Console.WriteLine("Entry count: " + entries.UCount);
CompositeKey key2 = new CompositeKey();
key2.AddUserKey(pw);
KcpKeyFile keyfile = new KcpKeyFile(@"..\resources\keyfile.key");
key2.AddUserKey(keyfile);
byte[] keyfiledata = keyfile.KeyData.ReadData();
Console.WriteLine("Key file data:");
Console.WriteLine(string.Join(",", keyfiledata.Select(x => "0x" + x.ToString("x"))));
Console.WriteLine("Composite Key data:");
byte[] key2data = key2.GenerateKey32(keyfiledata, 6000).ReadData();
Console.WriteLine(string.Join(",", key2data.Select(x => "0x" + x.ToString("x"))));
}
示例7: Copy
public static bool Copy(ProtectedString psToCopy, bool bIsEntryInfo,
PwEntry peEntryInfo, PwDatabase pwReferenceSource)
{
Debug.Assert(psToCopy != null);
if(psToCopy == null) throw new ArgumentNullException("psToCopy");
if(bIsEntryInfo && !AppPolicy.Try(AppPolicyId.CopyToClipboard))
return false;
string strData = SprEngine.Compile(psToCopy.ReadString(), false,
peEntryInfo, pwReferenceSource, false, false);
try
{
ClipboardUtil.Clear();
DataObject doData = CreateProtectedDataObject(strData);
Clipboard.SetDataObject(doData);
m_pbDataHash32 = HashClipboard();
m_strFormat = null;
RaiseCopyEvent(bIsEntryInfo, strData);
}
catch(Exception) { Debug.Assert(false); return false; }
if(peEntryInfo != null) peEntryInfo.Touch(false);
// SprEngine.Compile might have modified the database
Program.MainForm.UpdateUI(false, null, false, null, false, null, false);
return true;
}
示例8: Import
public override void Import(PwDatabase pwStorage, Stream sInput,
IStatusLogger slLogger)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(sInput);
XmlNode xmlRoot = xmlDoc.DocumentElement;
Debug.Assert(xmlRoot.Name == ElemRoot);
Stack<PwGroup> vGroups = new Stack<PwGroup>();
vGroups.Push(pwStorage.RootGroup);
int nNodeCount = xmlRoot.ChildNodes.Count;
for(int i = 0; i < nNodeCount; ++i)
{
XmlNode xmlChild = xmlRoot.ChildNodes[i];
if(xmlChild.Name == ElemGroup)
ReadGroup(xmlChild, vGroups, pwStorage);
else { Debug.Assert(false); }
if(slLogger != null)
slLogger.SetProgress((uint)(((i + 1) * 100) / nNodeCount));
}
}
示例9: Copy
public static bool Copy(string strToCopy, bool bIsEntryInfo,
PwEntry peEntryInfo, PwDatabase pwReferenceSource)
{
Debug.Assert(strToCopy != null);
if(strToCopy == null) throw new ArgumentNullException("strToCopy");
if(bIsEntryInfo && !AppPolicy.Try(AppPolicyId.CopyToClipboard))
return false;
string strData = SprEngine.Compile(strToCopy, false, peEntryInfo,
pwReferenceSource, false, false);
try
{
Clipboard.Clear();
DataObject doData = CreateProtectedDataObject(strData);
Clipboard.SetDataObject(doData);
m_pbDataHash32 = HashClipboard();
m_strFormat = null;
}
catch(Exception) { Debug.Assert(false); return false; }
return true;
}
示例10: SetEntry
public void SetEntry(PwEntry e)
{
KpDatabase = new PwDatabase();
KpDatabase.New(new IOConnectionInfo(), new CompositeKey());
KpDatabase.RootGroup.AddEntry(e, true);
}
示例11: Synchronize
public static bool? Synchronize(PwDatabase pwStorage, IUIOperations uiOps,
bool bOpenFromUrl, Form fParent)
{
if(pwStorage == null) throw new ArgumentNullException("pwStorage");
if(!pwStorage.IsOpen) return null;
if(!AppPolicy.Try(AppPolicyId.Import)) return null;
List<IOConnectionInfo> vConnections = new List<IOConnectionInfo>();
if(bOpenFromUrl == false)
{
OpenFileDialog ofd = UIUtil.CreateOpenFileDialog(KPRes.Synchronize,
UIUtil.CreateFileTypeFilter(null, null, true), 1, null, true, true);
if(ofd.ShowDialog() != DialogResult.OK) return null;
foreach(string strSelFile in ofd.FileNames)
vConnections.Add(IOConnectionInfo.FromPath(strSelFile));
}
else // Open URL
{
IOConnectionForm iocf = new IOConnectionForm();
iocf.InitEx(false, new IOConnectionInfo(), true, true);
if(iocf.ShowDialog() != DialogResult.OK) return null;
vConnections.Add(iocf.IOConnectionInfo);
}
return Import(pwStorage, new KeePassKdb2x(), vConnections.ToArray(),
true, uiOps, false, fParent);
}
示例12: Import
public override void Import(PwDatabase pwStorage, Stream sInput,
IStatusLogger slLogger)
{
StreamReader sr = new StreamReader(sInput, StrUtil.Utf8);
string strDoc = sr.ReadToEnd();
sr.Close();
XmlDocument doc = new XmlDocument();
doc.LoadXml(strDoc);
XmlElement xmlRoot = doc.DocumentElement;
Debug.Assert(xmlRoot.Name == ElemRoot);
PwGroup pgRoot = pwStorage.RootGroup;
foreach(XmlNode xmlChild in xmlRoot.ChildNodes)
{
if(xmlChild.Name == ElemGroup)
ImportGroup(xmlChild, pgRoot, pwStorage, false);
else if(xmlChild.Name == ElemRecycleBin)
ImportGroup(xmlChild, pgRoot, pwStorage, true);
else if(xmlChild.Name == ElemEntry)
ImportEntry(xmlChild, pgRoot, pwStorage);
else { Debug.Assert(false); }
}
}
示例13: Import
/// <summary>
/// The function tries to merge possible updates from the deltaDB into
/// the actual database. If there was made changes to the actualDB, then
/// the function fires a event, which cause the KeePass UI to update and
/// show the "save"-button.
/// </summary>
public void Import(object sender, SyncSource source)
{
Debug.Assert(source.DestinationDB != null && source.DestinationDB.RootGroup != null);
//merge all updates in
PwDatabase deltaDB = new PwDatabase();
try
{
deltaDB.Open(IOConnectionInfo.FromPath(source.Location), source.Key, null);
}
catch (InvalidCompositeKeyException e)
{
Debug.WriteLine("Wrong key! exception was: " + e.Message);
//brand this entry as a false one => red bg-color and "X" as group icon
ShowErrorHighlight(source.DestinationDB, source.Uuid);
if (Imported != null) Imported.Invoke(this, source.DestinationDB.RootGroup);
return;
}
catch (Exception e)
{
Debug.WriteLine("Standard exception was thrown during deltaDB.Open(): " + e.Message);
//maybe the process has not finished writing to our file, but the filewtcher fires our event
//sourceEntryUuid we have to ignore it and wait for the next one.
return;
}
HideErrorHighlight(source.DestinationDB, source.Uuid);
MergeIn(source.DestinationDB, deltaDB);
deltaDB.Close();
}
示例14: ImportEntry
private static void ImportEntry(XmlNode xmlNode, PwDatabase pwStorage,
Dictionary<string, PwGroup> dGroups)
{
PwEntry pe = new PwEntry(true, true);
string strGroup = string.Empty;
foreach(XmlNode xmlChild in xmlNode)
{
string strInner = XmlUtil.SafeInnerText(xmlChild);
if(xmlChild.Name == ElemCategory)
strGroup = strInner;
else if(xmlChild.Name == ElemTitle)
pe.Strings.Set(PwDefs.TitleField, new ProtectedString(
pwStorage.MemoryProtection.ProtectTitle, strInner));
else if(xmlChild.Name == ElemNotes)
pe.Strings.Set(PwDefs.NotesField, new ProtectedString(
pwStorage.MemoryProtection.ProtectNotes, strInner));
}
PwGroup pg;
dGroups.TryGetValue(strGroup, out pg);
if(pg == null)
{
pg = new PwGroup(true, true);
pg.Name = strGroup;
dGroups[string.Empty].AddGroup(pg, true);
dGroups[strGroup] = pg;
}
pg.AddEntry(pe, true);
}
示例15: CreateAndSaveLocal
public void CreateAndSaveLocal()
{
IKp2aApp app = new TestKp2aApp();
IOConnectionInfo ioc = new IOConnectionInfo {Path = DefaultFilename};
File outputDir = new File(DefaultDirectory);
outputDir.Mkdirs();
File targetFile = new File(ioc.Path);
if (targetFile.Exists())
targetFile.Delete();
bool createSuccesful = false;
//create the task:
CreateDb createDb = new CreateDb(app, Application.Context, ioc, new ActionOnFinish((success, message) =>
{ createSuccesful = success;
if (!success)
Android.Util.Log.Debug("KP2A_Test", message);
}), false);
//run it:
createDb.Run();
//check expectations:
Assert.IsTrue(createSuccesful);
Assert.IsNotNull(app.GetDb());
Assert.IsNotNull(app.GetDb().KpDatabase);
//the create task should create two groups:
Assert.AreEqual(2, app.GetDb().KpDatabase.RootGroup.Groups.Count());
//ensure the the database can be loaded from file:
PwDatabase loadedDb = new PwDatabase();
loadedDb.Open(ioc, new CompositeKey(), null, new KdbxDatabaseFormat(KdbxFormat.Default));
//Check whether the databases are equal
AssertDatabasesAreEqual(loadedDb, app.GetDb().KpDatabase);
}