syntax = "proto3";

package quilibrium.node.keys.pb;

option go_package = "source.quilibrium.com/quilibrium/monorepo/node/protobufs";

// Describes a raw Ed448 public key
message Ed448PublicKey {
  bytes key_value = 1; // 57 byte value
}

// Describes a raw Ed448 private key – notably this is post-derivation,
// not the seed.
message Ed448PrivateKey {
  bytes key_value = 1; // 57 byte value
  Ed448PublicKey public_key = 2;
}

// Describes a raw Ed448 signature
message Ed448Signature {
  bytes signature = 1; // 114 byte value
  Ed448PublicKey public_key = 2;
}

// Describes a raw X448 public key
message X448PublicKey {
  bytes key_value = 1; // 57 byte value
}

// Describes a raw X448 private key – notably this is post-derivation,
// not the seed.
message X448PrivateKey {
  bytes key_value = 1; // 57 byte value
  X448PublicKey public_key = 2;
}

// Describes a raw PCAS public key
message PCASPublicKey {
  bytes key_value = 1; // 256 kilobyte value
}

// Describes a raw PCAS private key
message PCASPrivateKey {
  bytes key_value = 1; // 256 byte value
  PCASPublicKey public_key = 2;
}

// Describes a raw compressed BLS48-581 G1 public key
message BLS48581G1PublicKey {
  bytes key_value = 1; // 74 byte value
}

// Describes a raw BLS48-581 private key, with corresponding G1 public key
message BLS48581G1PrivateKey {
  bytes key_value = 1; // 73 byte value
  BLS48581G1PublicKey public_key = 2;
}

// Describes a raw compressed BLS48-581 G2 public key
message BLS48581G2PublicKey {
  bytes key_value = 1; // 585 byte value
}

// Describes a raw BLS48-581 private key, with corresponding G2 public key
message BLS48581G2PrivateKey {
  bytes key_value = 1; // 73 byte value
  BLS48581G2PublicKey public_key = 2;
}

// Describes a raw BLS48-581 signature, minimal signature size variant
message BLS48581Signature {
  bytes signature = 1; // 74 byte value
  BLS48581G2PublicKey public_key = 2;
}