-
Notifications
You must be signed in to change notification settings - Fork 520
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
Add did:indy transaction version 2 support #3253
Conversation
The security alerts are nothing. http used in the scenario tests. Not sure how to ignore it yet. |
I like what you're doing in this PR -- really appreciate the wallet startup cleanup as well. Question: how do we get the DID onto the ledger? Are we saying this is handled out of band? |
It's the same way as a did:sov. You use the /did/indy/create and then post it to /wallet/did/public. There's no way to start up a fresh agent with a seed and a did:indy currently. Doing that with a seed still creates a did:sov. Edit: oh, to get it on the ledger you just post the did:indy:12345 and the verkey. So, yes I think that would be out of band. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Couple of quick comments but otherwise looks good!
|
a226b5f
to
0ff3979
Compare
Given the 5 errors found (examples with an “http” protocol instead of “https” — would it be easiest to just add an “s” in the indicated places, even though it is irrelevant? |
I think we should be able to disable this rule in the sonarcloud account or |
I think the sonarcloud should just be safe to ignore. It's annoying, because we should be able to mark things a safe in sonarcloud but it requires an admin configuring things. Might try and figure it out on a personal account and then ping Ry. |
|
I agree with pretty much all the points here, except a couple small points:
I'll do a bit of work here and try and add the extra create options as minimally as possible so they can be changed without too much trouble. |
What's the use-case for this ? As we already feed the seed when calling /did/indy/create, and, thus, the key pair already generated, it seems redundant to feed it again at startup after the did has been provisionned post-deployment via the API. Or am I missing something here ? |
If you have multiple local dids, you can tell it which one to use as the public did with the seed when starting up. So you could create a did:sov and a did:indy and tell it which one should be the public (active) did on startup. Do you want to start a brand new agent with the seed option and have it create the did locally at the same time? This is so you can avoid doing it with the endpoints when you initialize an agent? If that's the case I think it will need to be addressed with #3240. |
That's how we use --seed and how I interpreted its intent. I thought the public did status was stored and persisted and once a did had been promoted to public, it would stay public even after agent was restarted. Then again, what SHOULD the --seed parameter be used for. As you'll read in my comments on issue 3240, for pretty much any did methods other than sov or indy, the association between seed and did/NYM makes no sens at all. seed, at its core, is a notion purely related to the generation of key pairs. ONLY did:indy (and to some extent did:sov) can manage to mix seed and did (via the NYM beeing generated from the public key part of the key pair) |
Even there, if I have multiple local did, and I want to specify the one I want to use as public, then I should specify the did to promote public rather than the seed. You're right that this is probably better suited in 3240. In the scope of this PR, I'd just exclude anything related with --seed (and indy) and consider --seed to be a pure did:sov parameter for now. And then see what happens in 3240. Otherwise it easily gets confusing for those who do use --seed to provision a new (public) did and expect it to work for a did:indy. |
I don't really think the --seed parameter should be used, but I'm not really sure of the history of it. I think that's what that ticket #3240 is trying to figure out. I think the agent controller should create or ensure the did's are correct on startup. That's what the demo and integration tests do. The public did is persisted, but it can be changed from one did to another. If you wanted to ensure a particular did:indy was the public did on startup you could use the --seed parameter. But yes, if you want to startup and create the did using the --seed parameter on a brand new agent then it would still create a did:sov. This PR was mostly focused on adding the ability to create and use did:indy dids and allowing the seed parameter was a bit of an aside. So maybe that could get removed. |
When I create a NYM transaction on an indy ledger with NYM transaction version == 2 To keep it simple for now, a suggestion would be for the 'seed' parameter to be mandatory when the 'did' parameter is included in a given |
Most probably this is out of scope for this PR but here's my thoughts. Please let me know if I should document this elsewhere. Given I start acapy not providing the A did:indy is necessarely a public DID. Unless I'm mistaken, there is no use-case (and technically no logic) in a private did:indy. Since now One could even argue that having to POST on |
I'm reopening this as there was another request to get it included in acapy. Allows the creation of did:indy did's which are generated with a slightly different algorithm then did:sov's. Because I don't know when the did and key management stuff will be tackled I think we should just get this in for now and it can be addressed along with the other types in the future. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code looks good to me. I can't speak about the specifics though as I am not close enough to the concepts to assess the implementation itself so will leave final approval to another maintainer.
3fb3bc6
to
8e87d99
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM 👍 just a few recommendations
Changed quite a few other error responses in wallet routes to BadRequest. I agree Forbidden didn't make sense for almost all of them. |
I think it may be better to handle the HTTPForbidden -> BadRequest refactoring in a separate PR. There are quite a few instances being updated, and it's technically a breaking change ... since it's a change to the 'server contract'. Idk how significant it is, given I can't tell when those errors would be raised. But that's why it feels worth isolating to make it clearer and easier to review. It was mainly just the new error being raised that I thought was best as a 400 |
Sounds good. I reverted the other error responses other than the one I added in this PR. Will create separate issue to review the Forbidden responses. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added some pedantic notes ...
The one about the "StartupError" -- Not sure if there's anything wrong there, was kinda just thinking out loud.
I'll go over this wallet startup stuff again. I was intending to refactor it without changing any behavior. But from the comments there is still some improvements that should be made. |
Signed-off-by: jamshale <[email protected]>
Signed-off-by: jamshale <[email protected]>
Signed-off-by: jamshale <[email protected]>
Approved but there's BDD tests failing... |
|
* Add did:indy support Signed-off-by: jamshale <[email protected]> * Update from review comments Signed-off-by: jamshale <[email protected]> * Some refactoring and cleanup from comments Signed-off-by: jamshale <[email protected]> --------- Signed-off-by: jamshale <[email protected]> Co-authored-by: Stephen Curran <[email protected]> Signed-off-by: ff137 <[email protected]>
…tion#3253)" This reverts commit 39429a1.
* Add did:indy support Signed-off-by: jamshale <[email protected]> * Update from review comments Signed-off-by: jamshale <[email protected]> * Some refactoring and cleanup from comments Signed-off-by: jamshale <[email protected]> --------- Signed-off-by: jamshale <[email protected]> Co-authored-by: Stephen Curran <[email protected]> Signed-off-by: ff137 <[email protected]>
This adds the ability to create a
did:indy
with transaction version 2 algorithm. https://hyperledger.github.io/indy-did-method/#nym-transaction-version.indy
method not supported (same as before) and tell them to use the new endpoint.