Skip to content

Conversation

@lescuer97
Copy link
Contributor

@lescuer97 lescuer97 commented Apr 23, 2025

This is a standard for Mints to be able to communicate with a remote signer for cryptographic operations as well as keyset information.

Their is also a standard way for signers to derive their keysets from their master key.

The goal of this nut is to better isolate the private keys of the mint and standardize the communications between the signer and mint.

Implementations:

@lescuer97
Copy link
Contributor Author

I still need to add test vectors for the key derivation

change tittle

Co-authored-by: Pavol Rusnak <[email protected]>
@thesimplekid thesimplekid requested a review from crodas April 23, 2025 11:55
grammar correction

Co-authored-by: lollerfirst <[email protected]>
@lescuer97 lescuer97 marked this pull request as ready for review April 28, 2025 10:04
crodas added a commit to crodas/cdk that referenced this pull request May 5, 2025
crodas added a commit to crodas/cdk that referenced this pull request May 5, 2025
crodas added a commit to crodas/cdk that referenced this pull request May 5, 2025
crodas added a commit to crodas/cdk that referenced this pull request May 5, 2025
crodas added a commit to crodas/cdk that referenced this pull request May 5, 2025
crodas added a commit to crodas/cdk that referenced this pull request May 5, 2025
crodas added a commit to crodas/cdk that referenced this pull request May 6, 2025
crodas added a commit to crodas/cdk that referenced this pull request May 9, 2025
@thesimplekid
Copy link
Collaborator

@crodas Can you look at where cdk deviates from this and bring the two in line?

Also we should use a common proto file. Think it would be best to create a cashubtc repo for the proto files and remove it from the nuts directly and instead link to it. Think @lollerfirst did one for the management rpc.

bool active = 3;
uint64 input_fee_ppk = 4;
Keys keys = 5;
uint64 version = 6;
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The final_expiry is needed

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added it to the structure and the keyset rotation call

}

// Witness type
message Witness {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@lescuer97
Copy link
Contributor Author

@crodas I added the final_expiry to be optional

@crodas
Copy link

crodas commented Oct 6, 2025

I will apply the changes we discussed in CDK this week, specially whatever is in here and dropping the redundant amount field.

@crodas
Copy link

crodas commented Oct 9, 2025

@lescuer97 I think cashubtc/cdk#1179 was the thing we discussed, is there anything else missing? /cc @thesimplekid

@vnprc
Copy link

vnprc commented Nov 17, 2025

There are a number of gaps and vulnerabilities in the deterministic derivation path function that are addressed in this proposed NUT spec: #292

Namely, leading and trailing whitespace, capitalization differences, and functionally equivalent unicode character sequences can cause visually identical currency units to hash to different derivation paths. Also, the lack of a reserved range for currently hard coded currency unit derivation paths could lead to backwards incompatible derivation path conflicts. These properties could be exploited by attackers using specially crafted currency unit strings.

If y'all would like to review PR 292 I think it would be complementary to this spec proposal and they could potentially go at the same time.

@lescuer97
Copy link
Contributor Author

@thesimplekid @vnprc added some features form this #292 pr. should have the details that we discussed

@lescuer97
Copy link
Contributor Author

@callebtc

@ye0man ye0man added this to nuts Jan 13, 2026
@github-project-automation github-project-automation bot moved this to Backlog in nuts Jan 13, 2026
@ye0man ye0man moved this from Backlog to Todo in nuts Jan 15, 2026
@ye0man ye0man moved this from Todo to Backlog in nuts Jan 15, 2026
@ye0man ye0man moved this from Backlog to Needs Review in nuts Jan 15, 2026
@lescuer97
Copy link
Contributor Author

demo showing the spec with 3 signers:

remote_signer_demo_compresed_free_convert.mp4

2. Apply Unicode Normalization Form C (NFC).
3. Convert the normalized string to uppercase using Unicode-aware semantics.

| Input unit | Canonical form | Index |

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When you say 'index' here, do you mean 'unit reference'? This is essentially the first mention of 'index' in this doc, and I don't know what it is.

(I see many others have commented already. Apologies in advance if I now ask a few questions that have already been answered 😀)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hi! it just talks about the actual index number that is going to be used later on the derivation path

Copy link
Contributor Author

@lescuer97 lescuer97 Jan 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hi! it just talks about the actual index number that is going to be used later on the derivation path.

Should probably use better naming

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Needs Review

Development

Successfully merging this pull request may close these issues.

10 participants