Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: add support for ecdsa dkg #87

Merged
merged 3 commits into from
Feb 6, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .nil-sdk.toml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
version = "v0.9.0-rc.60"
version = "v0.9.0-rc.61"
42 changes: 39 additions & 3 deletions client-vms/src/gen-proto/nillion/compute/v1/stream_pb.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@
// @generated from file nillion/compute/v1/stream.proto (package nillion.compute.v1.stream, syntax proto3)
/* eslint-disable */

import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
import type { Message } from "@bufbuild/protobuf";

/**
* Describes the file nillion/compute/v1/stream.proto.
*/
export const file_nillion_compute_v1_stream: GenFile = /*@__PURE__*/
fileDesc("Ch9uaWxsaW9uL2NvbXB1dGUvdjEvc3RyZWFtLnByb3RvEhluaWxsaW9uLmNvbXB1dGUudjEuc3RyZWFtIkMKFENvbXB1dGVTdHJlYW1NZXNzYWdlEhIKCmNvbXB1dGVfaWQYASABKAwSFwoPYmluY29kZV9tZXNzYWdlGAIgASgMQrQBCh1jb20ubmlsbGlvbi5jb21wdXRlLnYxLnN0cmVhbUILU3RyZWFtUHJvdG9QAaICBE5DVlOqAhlOaWxsaW9uLkNvbXB1dGUuVjEuU3RyZWFtygIZTmlsbGlvblxDb21wdXRlXFYxXFN0cmVhbeICJU5pbGxpb25cQ29tcHV0ZVxWMVxTdHJlYW1cR1BCTWV0YWRhdGHqAhxOaWxsaW9uOjpDb21wdXRlOjpWMTo6U3RyZWFtYgZwcm90bzM");
fileDesc("Ch9uaWxsaW9uL2NvbXB1dGUvdjEvc3RyZWFtLnByb3RvEhluaWxsaW9uLmNvbXB1dGUudjEuc3RyZWFtIoEBChRDb21wdXRlU3RyZWFtTWVzc2FnZRISCgpjb21wdXRlX2lkGAEgASgMEhcKD2JpbmNvZGVfbWVzc2FnZRgCIAEoDBI8Cgxjb21wdXRlX3R5cGUYAyABKA4yJi5uaWxsaW9uLmNvbXB1dGUudjEuc3RyZWFtLkNvbXB1dGVUeXBlKikKC0NvbXB1dGVUeXBlEgsKB0dFTkVSQUwQABINCglFQ0RTQV9ES0cQAUK0AQodY29tLm5pbGxpb24uY29tcHV0ZS52MS5zdHJlYW1CC1N0cmVhbVByb3RvUAGiAgROQ1ZTqgIZTmlsbGlvbi5Db21wdXRlLlYxLlN0cmVhbcoCGU5pbGxpb25cQ29tcHV0ZVxWMVxTdHJlYW3iAiVOaWxsaW9uXENvbXB1dGVcVjFcU3RyZWFtXEdQQk1ldGFkYXRh6gIcTmlsbGlvbjo6Q29tcHV0ZTo6VjE6OlN0cmVhbWIGcHJvdG8z");

/**
* A message for a compute stream.
Expand All @@ -34,6 +34,13 @@ export type ComputeStreamMessage = Message<"nillion.compute.v1.stream.ComputeStr
* @generated from field: bytes bincode_message = 2;
*/
bincodeMessage: Uint8Array;

/**
* The type of compute.
*
* @generated from field: nillion.compute.v1.stream.ComputeType compute_type = 3;
*/
computeType: ComputeType;
};

/**
Expand All @@ -43,3 +50,32 @@ export type ComputeStreamMessage = Message<"nillion.compute.v1.stream.ComputeStr
export const ComputeStreamMessageSchema: GenMessage<ComputeStreamMessage> = /*@__PURE__*/
messageDesc(file_nillion_compute_v1_stream, 0);

/**
* The type of compute performed. We currently support two types:
* - GENERAL: A general compute that computes some Nada program.
* - ECDSA_DKG: A specific compute operation for ECDSA distributed key generation.
*
* @generated from enum nillion.compute.v1.stream.ComputeType
*/
export enum ComputeType {
/**
* A general compute.
*
* @generated from enum value: GENERAL = 0;
*/
GENERAL = 0,

/**
* An ECDSA distributed key generation protocol.
*
* @generated from enum value: ECDSA_DKG = 1;
*/
ECDSA_DKG = 1,
}

/**
* Describes the enum nillion.compute.v1.stream.ComputeType.
*/
export const ComputeTypeSchema: GenEnum<ComputeType> = /*@__PURE__*/
enumDesc(file_nillion_compute_v1_stream, 0);

84 changes: 79 additions & 5 deletions client-vms/src/gen-proto/nillion/values/v1/value_pb.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import type { Message } from "@bufbuild/protobuf";
* Describes the file nillion/values/v1/value.proto.
*/
export const file_nillion_values_v1_value: GenFile = /*@__PURE__*/
fileDesc("Ch1uaWxsaW9uL3ZhbHVlcy92MS92YWx1ZS5wcm90bxIXbmlsbGlvbi52YWx1ZXMudjEudmFsdWUiSQoKTmFtZWRWYWx1ZRIMCgRuYW1lGAEgASgJEi0KBXZhbHVlGAIgASgLMh4ubmlsbGlvbi52YWx1ZXMudjEudmFsdWUuVmFsdWUi0wYKBVZhbHVlEkAKDnB1YmxpY19ib29sZWFuGAEgASgLMiYubmlsbGlvbi52YWx1ZXMudjEudmFsdWUuUHVibGljSW50ZWdlckgAEkAKDnB1YmxpY19pbnRlZ2VyGAIgASgLMiYubmlsbGlvbi52YWx1ZXMudjEudmFsdWUuUHVibGljSW50ZWdlckgAEkkKF3B1YmxpY191bnNpZ25lZF9pbnRlZ2VyGAMgASgLMiYubmlsbGlvbi52YWx1ZXMudjEudmFsdWUuUHVibGljSW50ZWdlckgAEkQKFHNoYW1pcl9zaGFyZV9ib29sZWFuGAQgASgLMiQubmlsbGlvbi52YWx1ZXMudjEudmFsdWUuU2hhbWlyU2hhcmVIABJEChRzaGFtaXJfc2hhcmVfaW50ZWdlchgFIAEoCzIkLm5pbGxpb24udmFsdWVzLnYxLnZhbHVlLlNoYW1pclNoYXJlSAASTQodc2hhbWlyX3NoYXJlX3Vuc2lnbmVkX2ludGVnZXIYBiABKAsyJC5uaWxsaW9uLnZhbHVlcy52MS52YWx1ZS5TaGFtaXJTaGFyZUgAEi8KBWFycmF5GAcgASgLMh4ubmlsbGlvbi52YWx1ZXMudjEudmFsdWUuQXJyYXlIABIvCgV0dXBsZRgIIAEoCzIeLm5pbGxpb24udmFsdWVzLnYxLnZhbHVlLlR1cGxlSAASRwoSc2hhbWlyX3NoYXJlc19ibG9iGAkgASgLMikubmlsbGlvbi52YWx1ZXMudjEudmFsdWUuU2hhbWlyU2hhcmVzQmxvYkgAElAKF2VjZHNhX3ByaXZhdGVfa2V5X3NoYXJlGAogASgLMi0ubmlsbGlvbi52YWx1ZXMudjEudmFsdWUuRWNkc2FQcml2YXRlS2V5U2hhcmVIABJNChVlY2RzYV9zaWduYXR1cmVfc2hhcmUYCyABKAsyLC5uaWxsaW9uLnZhbHVlcy52MS52YWx1ZS5FY2RzYVNpZ25hdHVyZVNoYXJlSAASSwoUZWNkc2FfbWVzc2FnZV9kaWdlc3QYDCABKAsyKy5uaWxsaW9uLnZhbHVlcy52MS52YWx1ZS5FY2RzYU1lc3NhZ2VEaWdlc3RIAEIHCgV2YWx1ZSIeCg1QdWJsaWNJbnRlZ2VyEg0KBXZhbHVlGAEgASgMIhwKC1NoYW1pclNoYXJlEg0KBXZhbHVlGAEgASgMIm8KBUFycmF5Ei4KBnZhbHVlcxgBIAMoCzIeLm5pbGxpb24udmFsdWVzLnYxLnZhbHVlLlZhbHVlEjYKCmlubmVyX3R5cGUYAiABKAsyIi5uaWxsaW9uLnZhbHVlcy52MS52YWx1ZS5WYWx1ZVR5cGUiZAoFVHVwbGUSLAoEbGVmdBgBIAEoCzIeLm5pbGxpb24udmFsdWVzLnYxLnZhbHVlLlZhbHVlEi0KBXJpZ2h0GAIgASgLMh4ubmlsbGlvbi52YWx1ZXMudjEudmFsdWUuVmFsdWUiXgoURWNkc2FQcml2YXRlS2V5U2hhcmUSCQoBaRgBIAEoDRIJCgF4GAIgASgMEhkKEXNoYXJlZF9wdWJsaWNfa2V5GAMgASgMEhUKDXB1YmxpY19zaGFyZXMYBCADKAwiLwoTRWNkc2FTaWduYXR1cmVTaGFyZRIJCgFyGAEgASgMEg0KBXNpZ21hGAIgASgMIiQKEkVjZHNhTWVzc2FnZURpZ2VzdBIOCgZkaWdlc3QYASABKAwiXwoQU2hhbWlyU2hhcmVzQmxvYhI0CgZzaGFyZXMYASADKAsyJC5uaWxsaW9uLnZhbHVlcy52MS52YWx1ZS5TaGFtaXJTaGFyZRIVCg1vcmlnaW5hbF9zaXplGAIgASgEIv8ECglWYWx1ZVR5cGUSMAoOcHVibGljX2ludGVnZXIYASABKAsyFi5nb29nbGUucHJvdG9idWYuRW1wdHlIABI5ChdwdWJsaWNfdW5zaWduZWRfaW50ZWdlchgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eUgAEjAKDnB1YmxpY19ib29sZWFuGAMgASgLMhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5SAASNgoUc2hhbWlyX3NoYXJlX2ludGVnZXIYBCABKAsyFi5nb29nbGUucHJvdG9idWYuRW1wdHlIABI/Ch1zaGFtaXJfc2hhcmVfdW5zaWduZWRfaW50ZWdlchgFIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eUgAEjYKFHNoYW1pcl9zaGFyZV9ib29sZWFuGAYgASgLMhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5SAASMwoFYXJyYXkYByABKAsyIi5uaWxsaW9uLnZhbHVlcy52MS52YWx1ZS5BcnJheVR5cGVIABIzCgV0dXBsZRgIIAEoCzIiLm5pbGxpb24udmFsdWVzLnYxLnZhbHVlLlR1cGxlVHlwZUgAEjkKF2VjZHNhX3ByaXZhdGVfa2V5X3NoYXJlGAkgASgLMhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5SAASNgoUZWNkc2FfbWVzc2FnZV9kaWdlc3QYCiABKAsyFi5nb29nbGUucHJvdG9idWYuRW1wdHlIABI3ChVlY2RzYV9zaWduYXR1cmVfc2hhcmUYCyABKAsyFi5nb29nbGUucHJvdG9idWYuRW1wdHlIAEIMCgp2YWx1ZV90eXBlIlEKCUFycmF5VHlwZRI2Cgppbm5lcl90eXBlGAEgASgLMiIubmlsbGlvbi52YWx1ZXMudjEudmFsdWUuVmFsdWVUeXBlEgwKBHNpemUYAiABKAQicAoJVHVwbGVUeXBlEjAKBGxlZnQYASABKAsyIi5uaWxsaW9uLnZhbHVlcy52MS52YWx1ZS5WYWx1ZVR5cGUSMQoFcmlnaHQYAiABKAsyIi5uaWxsaW9uLnZhbHVlcy52MS52YWx1ZS5WYWx1ZVR5cGVCqQEKG2NvbS5uaWxsaW9uLnZhbHVlcy52MS52YWx1ZUIKVmFsdWVQcm90b1ABogIETlZWVqoCF05pbGxpb24uVmFsdWVzLlYxLlZhbHVlygIXTmlsbGlvblxWYWx1ZXNcVjFcVmFsdWXiAiNOaWxsaW9uXFZhbHVlc1xWMVxWYWx1ZVxHUEJNZXRhZGF0YeoCGk5pbGxpb246OlZhbHVlczo6VjE6OlZhbHVlYgZwcm90bzM", [file_google_protobuf_empty]);
fileDesc("Ch1uaWxsaW9uL3ZhbHVlcy92MS92YWx1ZS5wcm90bxIXbmlsbGlvbi52YWx1ZXMudjEudmFsdWUiSQoKTmFtZWRWYWx1ZRIMCgRuYW1lGAEgASgJEi0KBXZhbHVlGAIgASgLMh4ubmlsbGlvbi52YWx1ZXMudjEudmFsdWUuVmFsdWUizgcKBVZhbHVlEkAKDnB1YmxpY19ib29sZWFuGAEgASgLMiYubmlsbGlvbi52YWx1ZXMudjEudmFsdWUuUHVibGljSW50ZWdlckgAEkAKDnB1YmxpY19pbnRlZ2VyGAIgASgLMiYubmlsbGlvbi52YWx1ZXMudjEudmFsdWUuUHVibGljSW50ZWdlckgAEkkKF3B1YmxpY191bnNpZ25lZF9pbnRlZ2VyGAMgASgLMiYubmlsbGlvbi52YWx1ZXMudjEudmFsdWUuUHVibGljSW50ZWdlckgAEkQKFHNoYW1pcl9zaGFyZV9ib29sZWFuGAQgASgLMiQubmlsbGlvbi52YWx1ZXMudjEudmFsdWUuU2hhbWlyU2hhcmVIABJEChRzaGFtaXJfc2hhcmVfaW50ZWdlchgFIAEoCzIkLm5pbGxpb24udmFsdWVzLnYxLnZhbHVlLlNoYW1pclNoYXJlSAASTQodc2hhbWlyX3NoYXJlX3Vuc2lnbmVkX2ludGVnZXIYBiABKAsyJC5uaWxsaW9uLnZhbHVlcy52MS52YWx1ZS5TaGFtaXJTaGFyZUgAEi8KBWFycmF5GAcgASgLMh4ubmlsbGlvbi52YWx1ZXMudjEudmFsdWUuQXJyYXlIABIvCgV0dXBsZRgIIAEoCzIeLm5pbGxpb24udmFsdWVzLnYxLnZhbHVlLlR1cGxlSAASRwoSc2hhbWlyX3NoYXJlc19ibG9iGAkgASgLMikubmlsbGlvbi52YWx1ZXMudjEudmFsdWUuU2hhbWlyU2hhcmVzQmxvYkgAElAKF2VjZHNhX3ByaXZhdGVfa2V5X3NoYXJlGAogASgLMi0ubmlsbGlvbi52YWx1ZXMudjEudmFsdWUuRWNkc2FQcml2YXRlS2V5U2hhcmVIABJNChVlY2RzYV9zaWduYXR1cmVfc2hhcmUYCyABKAsyLC5uaWxsaW9uLnZhbHVlcy52MS52YWx1ZS5FY2RzYVNpZ25hdHVyZVNoYXJlSAASSwoUZWNkc2FfbWVzc2FnZV9kaWdlc3QYDCABKAsyKy5uaWxsaW9uLnZhbHVlcy52MS52YWx1ZS5FY2RzYU1lc3NhZ2VEaWdlc3RIABJDChBlY2RzYV9wdWJsaWNfa2V5GA0gASgLMicubmlsbGlvbi52YWx1ZXMudjEudmFsdWUuRWNkc2FQdWJsaWNLZXlIABI0CghzdG9yZV9pZBgOIAEoCzIgLm5pbGxpb24udmFsdWVzLnYxLnZhbHVlLlN0b3JlSWRIAEIHCgV2YWx1ZSIeCg1QdWJsaWNJbnRlZ2VyEg0KBXZhbHVlGAEgASgMIhwKC1NoYW1pclNoYXJlEg0KBXZhbHVlGAEgASgMIm8KBUFycmF5Ei4KBnZhbHVlcxgBIAMoCzIeLm5pbGxpb24udmFsdWVzLnYxLnZhbHVlLlZhbHVlEjYKCmlubmVyX3R5cGUYAiABKAsyIi5uaWxsaW9uLnZhbHVlcy52MS52YWx1ZS5WYWx1ZVR5cGUiZAoFVHVwbGUSLAoEbGVmdBgBIAEoCzIeLm5pbGxpb24udmFsdWVzLnYxLnZhbHVlLlZhbHVlEi0KBXJpZ2h0GAIgASgLMh4ubmlsbGlvbi52YWx1ZXMudjEudmFsdWUuVmFsdWUiXgoURWNkc2FQcml2YXRlS2V5U2hhcmUSCQoBaRgBIAEoDRIJCgF4GAIgASgMEhkKEXNoYXJlZF9wdWJsaWNfa2V5GAMgASgMEhUKDXB1YmxpY19zaGFyZXMYBCADKAwiLwoTRWNkc2FTaWduYXR1cmVTaGFyZRIJCgFyGAEgASgMEg0KBXNpZ21hGAIgASgMIiQKEkVjZHNhTWVzc2FnZURpZ2VzdBIOCgZkaWdlc3QYASABKAwiJAoORWNkc2FQdWJsaWNLZXkSEgoKcHVibGljX2tleRgBIAEoDCIbCgdTdG9yZUlkEhAKCHN0b3JlX2lkGAEgASgMIl8KEFNoYW1pclNoYXJlc0Jsb2ISNAoGc2hhcmVzGAEgAygLMiQubmlsbGlvbi52YWx1ZXMudjEudmFsdWUuU2hhbWlyU2hhcmUSFQoNb3JpZ2luYWxfc2l6ZRgCIAEoBCLfBQoJVmFsdWVUeXBlEjAKDnB1YmxpY19pbnRlZ2VyGAEgASgLMhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5SAASOQoXcHVibGljX3Vuc2lnbmVkX2ludGVnZXIYAiABKAsyFi5nb29nbGUucHJvdG9idWYuRW1wdHlIABIwCg5wdWJsaWNfYm9vbGVhbhgDIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eUgAEjYKFHNoYW1pcl9zaGFyZV9pbnRlZ2VyGAQgASgLMhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5SAASPwodc2hhbWlyX3NoYXJlX3Vuc2lnbmVkX2ludGVnZXIYBSABKAsyFi5nb29nbGUucHJvdG9idWYuRW1wdHlIABI2ChRzaGFtaXJfc2hhcmVfYm9vbGVhbhgGIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eUgAEjMKBWFycmF5GAcgASgLMiIubmlsbGlvbi52YWx1ZXMudjEudmFsdWUuQXJyYXlUeXBlSAASMwoFdHVwbGUYCCABKAsyIi5uaWxsaW9uLnZhbHVlcy52MS52YWx1ZS5UdXBsZVR5cGVIABI5ChdlY2RzYV9wcml2YXRlX2tleV9zaGFyZRgJIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eUgAEjYKFGVjZHNhX21lc3NhZ2VfZGlnZXN0GAogASgLMhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5SAASNwoVZWNkc2Ffc2lnbmF0dXJlX3NoYXJlGAsgASgLMhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5SAASMgoQZWNkc2FfcHVibGljX2tleRgMIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eUgAEioKCHN0b3JlX2lkGA0gASgLMhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5SABCDAoKdmFsdWVfdHlwZSJRCglBcnJheVR5cGUSNgoKaW5uZXJfdHlwZRgBIAEoCzIiLm5pbGxpb24udmFsdWVzLnYxLnZhbHVlLlZhbHVlVHlwZRIMCgRzaXplGAIgASgEInAKCVR1cGxlVHlwZRIwCgRsZWZ0GAEgASgLMiIubmlsbGlvbi52YWx1ZXMudjEudmFsdWUuVmFsdWVUeXBlEjEKBXJpZ2h0GAIgASgLMiIubmlsbGlvbi52YWx1ZXMudjEudmFsdWUuVmFsdWVUeXBlQqkBChtjb20ubmlsbGlvbi52YWx1ZXMudjEudmFsdWVCClZhbHVlUHJvdG9QAaICBE5WVlaqAhdOaWxsaW9uLlZhbHVlcy5WMS5WYWx1ZcoCF05pbGxpb25cVmFsdWVzXFYxXFZhbHVl4gIjTmlsbGlvblxWYWx1ZXNcVjFcVmFsdWVcR1BCTWV0YWRhdGHqAhpOaWxsaW9uOjpWYWx1ZXM6OlYxOjpWYWx1ZWIGcHJvdG8z", [file_google_protobuf_empty]);

/**
* A named value.
Expand Down Expand Up @@ -147,6 +147,22 @@ export type Value = Message<"nillion.values.v1.value.Value"> & {
*/
value: EcdsaMessageDigest;
case: "ecdsaMessageDigest";
} | {
/**
* An ECDSA public key.
*
* @generated from field: nillion.values.v1.value.EcdsaPublicKey ecdsa_public_key = 13;
*/
value: EcdsaPublicKey;
case: "ecdsaPublicKey";
} | {
/**
* A store id.
*
* @generated from field: nillion.values.v1.value.StoreId store_id = 14;
*/
value: StoreId;
case: "storeId";
} | { case: undefined; value?: undefined };
};

Expand Down Expand Up @@ -348,6 +364,48 @@ export type EcdsaMessageDigest = Message<"nillion.values.v1.value.EcdsaMessageDi
export const EcdsaMessageDigestSchema: GenMessage<EcdsaMessageDigest> = /*@__PURE__*/
messageDesc(file_nillion_values_v1_value, 8);

/**
* An ECDSA public key.
*
* @generated from message nillion.values.v1.value.EcdsaPublicKey
*/
export type EcdsaPublicKey = Message<"nillion.values.v1.value.EcdsaPublicKey"> & {
/**
* The public key.
*
* @generated from field: bytes public_key = 1;
*/
publicKey: Uint8Array;
};

/**
* Describes the message nillion.values.v1.value.EcdsaPublicKey.
* Use `create(EcdsaPublicKeySchema)` to create a new message.
*/
export const EcdsaPublicKeySchema: GenMessage<EcdsaPublicKey> = /*@__PURE__*/
messageDesc(file_nillion_values_v1_value, 9);

/**
* A store id.
*
* @generated from message nillion.values.v1.value.StoreId
*/
export type StoreId = Message<"nillion.values.v1.value.StoreId"> & {
/**
* The store id.
*
* @generated from field: bytes store_id = 1;
*/
storeId: Uint8Array;
};

/**
* Describes the message nillion.values.v1.value.StoreId.
* Use `create(StoreIdSchema)` to create a new message.
*/
export const StoreIdSchema: GenMessage<StoreId> = /*@__PURE__*/
messageDesc(file_nillion_values_v1_value, 10);

/**
* Shamir shares of a blob.
*
Expand All @@ -374,7 +432,7 @@ export type ShamirSharesBlob = Message<"nillion.values.v1.value.ShamirSharesBlob
* Use `create(ShamirSharesBlobSchema)` to create a new message.
*/
export const ShamirSharesBlobSchema: GenMessage<ShamirSharesBlob> = /*@__PURE__*/
messageDesc(file_nillion_values_v1_value, 9);
messageDesc(file_nillion_values_v1_value, 11);

/**
* A type of a value.
Expand Down Expand Up @@ -473,6 +531,22 @@ export type ValueType = Message<"nillion.values.v1.value.ValueType"> & {
*/
value: Empty;
case: "ecdsaSignatureShare";
} | {
/**
* An ECDSA public key.
*
* @generated from field: google.protobuf.Empty ecdsa_public_key = 12;
*/
value: Empty;
case: "ecdsaPublicKey";
} | {
/**
* A store id.
*
* @generated from field: google.protobuf.Empty store_id = 13;
*/
value: Empty;
case: "storeId";
} | { case: undefined; value?: undefined };
};

Expand All @@ -481,7 +555,7 @@ export type ValueType = Message<"nillion.values.v1.value.ValueType"> & {
* Use `create(ValueTypeSchema)` to create a new message.
*/
export const ValueTypeSchema: GenMessage<ValueType> = /*@__PURE__*/
messageDesc(file_nillion_values_v1_value, 10);
messageDesc(file_nillion_values_v1_value, 12);

/**
* An array.
Expand Down Expand Up @@ -509,7 +583,7 @@ export type ArrayType = Message<"nillion.values.v1.value.ArrayType"> & {
* Use `create(ArrayTypeSchema)` to create a new message.
*/
export const ArrayTypeSchema: GenMessage<ArrayType> = /*@__PURE__*/
messageDesc(file_nillion_values_v1_value, 11);
messageDesc(file_nillion_values_v1_value, 13);

/**
* A tuple.
Expand Down Expand Up @@ -537,5 +611,5 @@ export type TupleType = Message<"nillion.values.v1.value.TupleType"> & {
* Use `create(TupleTypeSchema)` to create a new message.
*/
export const TupleTypeSchema: GenMessage<TupleType> = /*@__PURE__*/
messageDesc(file_nillion_values_v1_value, 12);
messageDesc(file_nillion_values_v1_value, 14);

8 changes: 8 additions & 0 deletions client-vms/src/types/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,14 @@ export const EncryptedNadaValueRecord = z.discriminatedUnion("type", [
r: z.instanceof(Uint8Array),
sigma: z.instanceof(Uint8Array),
}),
z.object({
type: z.literal("EcdsaPublicKey"),
publicKey: z.instanceof(Uint8Array),
}),
z.object({
type: z.literal("StoreId"),
storeId: z.instanceof(Uint8Array),
}),
]);
export type EncryptedNadaValueRecord = z.infer<typeof EncryptedNadaValueRecord>;
export const EncryptedNadaValuesRecord = z.record(
Expand Down
30 changes: 30 additions & 0 deletions client-vms/src/vm/values.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,14 @@ import type { PartyShares } from "@nillion/client-wasm";
import {
EcdsaMessageDigestSchema,
EcdsaPrivateKeyShareSchema,
EcdsaPublicKeySchema,
EcdsaSignatureShareSchema,
type NamedValue,
NamedValueSchema,
PublicIntegerSchema,
ShamirShareSchema,
ShamirSharesBlobSchema,
StoreIdSchema,
type Value,
ValueSchema,
} from "#/gen-proto/nillion/values/v1/value_pb";
Expand Down Expand Up @@ -116,6 +118,24 @@ function nadaValueToProto(nadaValue: EncryptedNadaValueRecord): Value {
}),
},
});
case "EcdsaPublicKey":
return create(ValueSchema, {
value: {
case: "ecdsaPublicKey",
value: create(EcdsaPublicKeySchema, {
publicKey: nadaValue.publicKey,
}),
},
});
case "StoreId":
return create(ValueSchema, {
value: {
case: "storeId",
value: create(StoreIdSchema, {
storeId: nadaValue.storeId,
}),
},
});
}
}

Expand Down Expand Up @@ -170,6 +190,16 @@ function nadaValueFromProto(
r: value.value.value.r,
sigma: value.value.value.sigma,
};
case "ecdsaPublicKey":
return {
type: "EcdsaPublicKey",
publicKey: value.value.value.publicKey,
};
case "storeId":
return {
type: "StoreId",
storeId: value.value.value.storeId,
};
}
}

Expand Down
38 changes: 36 additions & 2 deletions client-vms/tests/client.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,18 @@ describe("Client", () => {
const barExpectedName = "bar";
const barExpectedValue = Uint8Array.from([45, 18, 122]);
const bazExpectedName = "baz";
const bazExpectedValue = true;
const bazExpectedValue = "true";
const publicKeyName = "publicKey";
const publicKeyExpectedValue = Uint8Array.from([
186, 236, 247, 198, 7, 225, 204, 147, 116, 47, 207, 45, 149, 49, 212, 168,
136, 145, 98, 150, 152, 122, 50, 91, 141, 227, 182, 233, 8, 245, 72, 38,
56,
]);
const storeIdName = "storeId";
const storeIdExpectedValue = Uint8Array.from([
186, 236, 247, 198, 7, 225, 204, 147, 116, 47, 207, 45, 149, 49, 212, 168,
]);

let expectedPermissions: ValuesPermissions;
let expectedId: string;

Expand All @@ -54,7 +65,15 @@ describe("Client", () => {
.ttl(1)
.value(fooExpectedName, NadaValue.new_secret_integer(fooExpectedValue))
.value(barExpectedName, NadaValue.new_secret_blob(barExpectedValue))
.value(bazExpectedName, NadaValue.new_secret_boolean(bazExpectedValue))
.value(
bazExpectedName,
NadaValue.new_secret_boolean(bazExpectedValue === "true"),
)
.value(
publicKeyName,
NadaValue.new_ecdsa_public_key(publicKeyExpectedValue),
)
.value(storeIdName, NadaValue.new_store_id(storeIdExpectedValue))
.build()
.invoke();
expect(expectedId).toHaveLength(36);
Expand All @@ -76,6 +95,21 @@ describe("Client", () => {
expect(bar).toBeDefined();
expect(bar.type).toBe("SecretBlob");
expect(bar.value).toStrictEqual(barExpectedValue);

const baz = data[bazExpectedName]!;
expect(baz).toBeDefined();
expect(baz.type).toBe("SecretBoolean");
expect(baz.value).toStrictEqual(bazExpectedValue);

const publicKey = data[publicKeyName]!;
expect(publicKey).toBeDefined();
expect(publicKey.type).toBe("EcdsaPublicKey");
expect(publicKey.value).toStrictEqual(publicKeyExpectedValue);

const storeId = data[storeIdName]!;
expect(storeId).toBeDefined();
expect(storeId.type).toBe("StoreId");
expect(storeId.value).toStrictEqual(storeIdExpectedValue);
});

it("can update", async () => {
Expand Down
21 changes: 21 additions & 0 deletions client-vms/tests/wasm.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,15 @@ const byteArray = Uint8Array.from([
136, 145, 98, 150, 152, 122, 50, 91, 141, 227, 182, 233, 8, 245, 72, 38,
]);

const pubKey = Uint8Array.from([
186, 236, 247, 198, 7, 225, 204, 147, 116, 47, 207, 45, 149, 49, 212, 168,
136, 145, 98, 150, 152, 122, 50, 91, 141, 227, 182, 233, 8, 245, 72, 38, 56,
]);

const storeId = Uint8Array.from([
186, 236, 247, 198, 7, 225, 204, 147, 116, 47, 207, 45, 149, 49, 212, 168,
]);

const digestMessage = "A deep message with a deep number: 42";

const data = [
Expand Down Expand Up @@ -84,6 +93,18 @@ const data = [
value: byteArray,
nadaValue: NadaValue.new_ecdsa_signature(byteArray, byteArray),
},
{
type: "EcdsaPublicKey",
name: "k",
value: pubKey,
nadaValue: NadaValue.new_ecdsa_public_key(pubKey),
},
{
type: "StoreId",
name: "l",
value: storeId,
nadaValue: NadaValue.new_store_id(storeId),
},
];

describe("Wasm compatability", () => {
Expand Down
Loading