KeepassX format implementation in pure dart.
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
import 'package:meta/meta.dart';
|
|
|
|
import 'package:uuid/uuid.dart';
|
|
|
|
import 'package:xml/xml.dart';
|
|
|
|
|
|
|
|
class KdbxTimes {
|
|
|
|
KdbxTimes.read(this.node);
|
|
|
|
|
|
|
|
XmlElement node;
|
|
|
|
|
|
|
|
DateTime get creationTime => _readTime('CreationTime');
|
|
|
|
|
|
|
|
DateTime _readTime(String nodeName) =>
|
|
|
|
DateTime.parse(node.findElements(nodeName).single.text);
|
|
|
|
}
|
|
|
|
|
|
|
|
abstract class KdbxNode {
|
|
|
|
KdbxNode.create(String nodeName) : node = XmlElement(XmlName(nodeName));
|
|
|
|
KdbxNode.read(this.node);
|
|
|
|
|
|
|
|
final XmlElement node;
|
|
|
|
|
|
|
|
@protected
|
|
|
|
String text(String nodeName) => _opt(nodeName)?.text;
|
|
|
|
|
|
|
|
XmlElement _opt(String nodeName) =>
|
|
|
|
node.findElements(nodeName).singleWhere((x) => true, orElse: () => null);
|
|
|
|
}
|
|
|
|
|
|
|
|
abstract class KdbxObject extends KdbxNode {
|
|
|
|
KdbxObject.create(String nodeName)
|
|
|
|
: uuid = Uuid().v4(),
|
|
|
|
super.create(nodeName);
|
|
|
|
|
|
|
|
KdbxObject.read(XmlElement node) : super.read(node) {
|
|
|
|
uuid = node.findElements('UUID').single.text;
|
|
|
|
}
|
|
|
|
|
|
|
|
String uuid;
|
|
|
|
}
|