veilidchat/packages/veilid_support/lib/proto/proto.dart

148 lines
3.9 KiB
Dart
Raw Normal View History

2023-07-17 01:41:40 +00:00
import 'dart:typed_data';
2023-12-28 03:56:24 +00:00
import '../veilid_support.dart' as veilid;
import 'veilid.pb.dart' as proto;
2023-07-17 01:41:40 +00:00
2023-12-28 03:56:24 +00:00
export 'veilid.pb.dart';
export 'veilid.pbenum.dart';
export 'veilid.pbjson.dart';
export 'veilid.pbserver.dart';
2023-07-26 18:20:29 +00:00
2023-07-17 01:41:40 +00:00
/// CryptoKey protobuf marshaling
///
2023-12-28 03:56:24 +00:00
extension CryptoKeyProto on veilid.CryptoKey {
2023-07-17 01:41:40 +00:00
proto.CryptoKey toProto() {
2023-08-03 04:49:48 +00:00
final b = decode().buffer.asByteData();
2023-07-26 21:42:11 +00:00
final out = proto.CryptoKey()
2023-08-03 04:49:48 +00:00
..u0 = b.getUint32(0 * 4)
..u1 = b.getUint32(1 * 4)
..u2 = b.getUint32(2 * 4)
..u3 = b.getUint32(3 * 4)
..u4 = b.getUint32(4 * 4)
..u5 = b.getUint32(5 * 4)
..u6 = b.getUint32(6 * 4)
..u7 = b.getUint32(7 * 4);
2023-07-17 01:41:40 +00:00
return out;
}
2023-12-28 03:56:24 +00:00
static veilid.CryptoKey fromProto(proto.CryptoKey p) {
2023-08-03 04:49:48 +00:00
final b = ByteData(32)
..setUint32(0 * 4, p.u0)
..setUint32(1 * 4, p.u1)
..setUint32(2 * 4, p.u2)
..setUint32(3 * 4, p.u3)
..setUint32(4 * 4, p.u4)
..setUint32(5 * 4, p.u5)
..setUint32(6 * 4, p.u6)
..setUint32(7 * 4, p.u7);
2023-12-28 03:56:24 +00:00
return veilid.CryptoKey.fromBytes(Uint8List.view(b.buffer));
2023-07-17 01:41:40 +00:00
}
}
/// Signature protobuf marshaling
///
2023-12-28 03:56:24 +00:00
extension SignatureProto on veilid.Signature {
2023-07-17 01:41:40 +00:00
proto.Signature toProto() {
2023-08-03 04:49:48 +00:00
final b = decode().buffer.asByteData();
2023-07-26 21:42:11 +00:00
final out = proto.Signature()
2023-08-03 04:49:48 +00:00
..u0 = b.getUint32(0 * 4)
..u1 = b.getUint32(1 * 4)
..u2 = b.getUint32(2 * 4)
..u3 = b.getUint32(3 * 4)
..u4 = b.getUint32(4 * 4)
..u5 = b.getUint32(5 * 4)
..u6 = b.getUint32(6 * 4)
..u7 = b.getUint32(7 * 4)
..u8 = b.getUint32(8 * 4)
..u9 = b.getUint32(9 * 4)
..u10 = b.getUint32(10 * 4)
..u11 = b.getUint32(11 * 4)
..u12 = b.getUint32(12 * 4)
..u13 = b.getUint32(13 * 4)
..u14 = b.getUint32(14 * 4)
..u15 = b.getUint32(15 * 4);
2023-07-17 01:41:40 +00:00
return out;
}
2023-12-28 03:56:24 +00:00
static veilid.Signature fromProto(proto.Signature p) {
2023-08-03 04:49:48 +00:00
final b = ByteData(64)
..setUint32(0 * 4, p.u0)
..setUint32(1 * 4, p.u1)
..setUint32(2 * 4, p.u2)
..setUint32(3 * 4, p.u3)
..setUint32(4 * 4, p.u4)
..setUint32(5 * 4, p.u5)
..setUint32(6 * 4, p.u6)
..setUint32(7 * 4, p.u7)
..setUint32(8 * 4, p.u8)
..setUint32(9 * 4, p.u9)
..setUint32(10 * 4, p.u10)
..setUint32(11 * 4, p.u11)
..setUint32(12 * 4, p.u12)
..setUint32(13 * 4, p.u13)
..setUint32(14 * 4, p.u14)
..setUint32(15 * 4, p.u15);
2023-12-28 03:56:24 +00:00
return veilid.Signature.fromBytes(Uint8List.view(b.buffer));
2023-07-17 01:41:40 +00:00
}
}
/// Nonce protobuf marshaling
///
2023-12-28 03:56:24 +00:00
extension NonceProto on veilid.Nonce {
2023-08-03 04:49:48 +00:00
proto.Nonce toProto() {
final b = decode().buffer.asByteData();
final out = proto.Nonce()
..u0 = b.getUint32(0 * 4)
..u1 = b.getUint32(1 * 4)
..u2 = b.getUint32(2 * 4)
..u3 = b.getUint32(3 * 4)
..u4 = b.getUint32(4 * 4)
..u5 = b.getUint32(5 * 4);
2023-07-17 01:41:40 +00:00
return out;
}
2024-02-12 04:18:20 +00:00
}
2023-07-17 01:41:40 +00:00
2024-02-12 04:18:20 +00:00
extension ProtoNonce on proto.Nonce {
veilid.Nonce toVeilid() {
2023-08-03 04:49:48 +00:00
final b = ByteData(24)
2024-02-12 04:18:20 +00:00
..setUint32(0 * 4, u0)
..setUint32(1 * 4, u1)
..setUint32(2 * 4, u2)
..setUint32(3 * 4, u3)
..setUint32(4 * 4, u4)
..setUint32(5 * 4, u5);
2023-12-28 03:56:24 +00:00
return veilid.Nonce.fromBytes(Uint8List.view(b.buffer));
2023-07-17 01:41:40 +00:00
}
}
/// TypedKey protobuf marshaling
///
2023-12-28 03:56:24 +00:00
extension TypedKeyProto on veilid.TypedKey {
2023-07-17 01:41:40 +00:00
proto.TypedKey toProto() {
2023-07-26 21:42:11 +00:00
final out = proto.TypedKey()
..kind = kind
..value = value.toProto();
2023-07-17 01:41:40 +00:00
return out;
}
2024-02-12 04:18:20 +00:00
}
2023-07-17 01:41:40 +00:00
2024-02-12 04:18:20 +00:00
extension ProtoTypedKey on proto.TypedKey {
veilid.TypedKey toVeilid() =>
veilid.TypedKey(kind: kind, value: CryptoKeyProto.fromProto(value));
2023-07-17 01:41:40 +00:00
}
2023-08-01 04:39:50 +00:00
/// KeyPair protobuf marshaling
///
2023-12-28 03:56:24 +00:00
extension KeyPairProto on veilid.KeyPair {
2023-08-01 04:39:50 +00:00
proto.KeyPair toProto() {
final out = proto.KeyPair()
..key = key.toProto()
..secret = secret.toProto();
return out;
}
2023-12-28 03:56:24 +00:00
static veilid.KeyPair fromProto(proto.KeyPair p) => veilid.KeyPair(
2023-08-01 04:39:50 +00:00
key: CryptoKeyProto.fromProto(p.key),
secret: CryptoKeyProto.fromProto(p.secret));
}