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

feat: add out-of-band and did exchange #717

Merged
merged 75 commits into from
May 13, 2022
Merged

feat: add out-of-band and did exchange #717

merged 75 commits into from
May 13, 2022

Conversation

jakubkoci
Copy link
Contributor

@jakubkoci jakubkoci commented Apr 22, 2022

Todo

  • API
    • refactor(api): Change acceptInvitation param from oob record to record id (directly pushed to this branch)
    • feat(api): Expose remove, find, getAll oob methods (directly pushed to this branch)
  • Implement handshake reuse handler and event emitter to react on handshake (pushed directly to this branch)
  • Store the old did in metadata (this can have impact to migration scripts) (feat: 0.2.0 connection migration script #731)
  • Connection record migration script @TimoGlastra (feat: 0.2.0 connection migration script #731)
  • Reuse oob invitation keys also for multiuse invitation (?)
    • @TimoGlastra Currently, I'm still creating new keys when it's multiuse invitation. I assume we don't want to do that, right?
  • Add oob record state and role checks
  • Emit oob state change event
    • TODO: may need some extra tests in the connection/didexchange handlers to test whether updateState is called
  • Resolve key from reference (?)
  • Align connection and did-exchange protocol states @TimoGlastra Could you look at this, please? I don't see it as entirely beneficial and you already have an idea of how to do it in your mind. (refactor: unify connection record state and role #732)
  • API
    • refactor(api): Rename outOfBandMessage to outOfBandInvitation (directly pushed to this branch)
    • feat(api): store more from receiveInvitation config into a record and allow override in acceptInvitation
  • refactor(core): Change did to unqualifiedSovDid or maybe unqualifiedIndyDid
  • refactor(core): Extract connection protocol methods from service to protocol class
  • Throw an error if there is more then one rule resolved by state machine
    • But I actually didn’t find beneficial the way how I implemented the did exchange state machine
  • Fix naming caused by DecryptedMessageContext vs. UnpackedMessageContext
  • refactor: Rename XxxMessageOptions to XxxMessageProps (useful outside of oob, extracted to separate issue: refactor: Rename XxxMessageOptions to XxxMessageProps #750)

I ordered it approximately by priority. The first half before the second API point seems to be quite important, and the rest is more a nice-to-have.

I assigned names based on notes from our AFJ call last week https://wiki.hyperledger.org/display/ARIES/2022-04-14+Aries+Framework+JS+Meeting+notes, please raise your hand if it doesn't suit you. I can look at the rest of the tasks. I welcome some feedback on what you think is important and what is not.

Is there any task from the Todo list I should look at even before merging?

@jakubkoci jakubkoci requested a review from a team as a code owner April 22, 2022 08:16
Copy link
Contributor

@TimoGlastra TimoGlastra left a comment

Choose a reason for hiding this comment

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

Really great work @jakubkoci. I've left quite some comments, interested to hear what you think!

Will take a look at the todo's over the next couple of days

packages/core/src/agent/MessageReceiver.ts Outdated Show resolved Hide resolved
packages/core/src/agent/MessageReceiver.ts Outdated Show resolved Hide resolved
packages/core/src/agent/MessageReceiver.ts Outdated Show resolved Hide resolved
@@ -160,7 +164,7 @@ export class MessageSender {
transportPriority?: TransportPriorityOptions
}
) {
const { connection, payload } = outboundMessage
const { connection, outOfBand, payload } = outboundMessage
Copy link
Contributor

Choose a reason for hiding this comment

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

Nit, but I think using connection was probably a mistake and we should use outOfBandRecord and connectionRecord everywhere. I think outOfBand as property name is not quite explicit of what it is (a record).

Suggested change
const { connection, outOfBand, payload } = outboundMessage
const { connection, outOfBandRecord, payload } = outboundMessage

packages/core/src/agent/MessageSender.ts Outdated Show resolved Hide resolved
packages/core/tests/setup.ts Outdated Show resolved Hide resolved
packages/core/tests/oob.test.ts Outdated Show resolved Hide resolved
// The credential should be processed when connection is made. It asynchronous so it can take a moment.
let credentials: CredentialRecord[] = []
while (credentials.length < 1) {
credentials = await aliceAgent.credentials.getAll()
Copy link
Contributor

Choose a reason for hiding this comment

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

Would be better to do this using an event listener

Comment on lines +280 to +302
const autoAcceptInvitation = config.autoAcceptInvitation ?? true
const autoAcceptConnection = config.autoAcceptConnection ?? true
Copy link
Contributor

Choose a reason for hiding this comment

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

Should this be true? It's the opposite of what we've done in the past where the default is always false.

In addition, we should maybe also take the agentConfig autoAcceptInivtation into account here?

Copy link
Contributor

Choose a reason for hiding this comment

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

I think this one is important to change, or we should otherwise at least be very clear in documentation that this is the inverse of what we've done in the past. Any comments on this one @jakubkoci?

Comment on lines 386 to 453
this.connectionsModule
.returnWhenIsConnected(connectionRecord.id)
.then((connectionRecord) => this.emitWithConnection(connectionRecord, messages))
.catch((error) => {
if (error instanceof EmptyError) {
this.logger.warn(
`Agent unsubscribed before connection got into ${ConnectionState.Complete} state`,
error
)
} else {
this.logger.error('Promise waiting for the connection to be complete failed.', error)
}
})
Copy link
Contributor

Choose a reason for hiding this comment

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

Not for now, but we should update this to an event listener so it survives an agent shutdown.

@codecov-commenter
Copy link

codecov-commenter commented Apr 30, 2022

Codecov Report

Merging #717 (d7fd2d2) into main (cbdff28) will increase coverage by 0.46%.
The diff coverage is 87.45%.

@@            Coverage Diff             @@
##             main     #717      +/-   ##
==========================================
+ Coverage   86.92%   87.39%   +0.46%     
==========================================
  Files         393      430      +37     
  Lines        9227    10488    +1261     
  Branches     1624     1822     +198     
==========================================
+ Hits         8021     9166    +1145     
- Misses       1147     1259     +112     
- Partials       59       63       +4     
Impacted Files Coverage Δ
packages/core/src/agent/Dispatcher.ts 80.70% <0.00%> (-2.94%) ⬇️
packages/core/src/agent/Events.ts 100.00% <ø> (ø)
...s/core/src/modules/connections/ConnectionEvents.ts 100.00% <ø> (ø)
...les/connections/repository/ConnectionRepository.ts 83.33% <ø> (+5.55%) ⬆️
.../core/src/modules/credentials/CredentialsModule.ts 91.70% <ø> (+1.03%) ⬆️
...s/protocol/v1/handlers/V1IssueCredentialHandler.ts 92.59% <ø> (ø)
...s/protocol/v1/handlers/V1OfferCredentialHandler.ts 71.05% <ø> (ø)
...protocol/v1/handlers/V1RequestCredentialHandler.ts 97.67% <ø> (ø)
...s/protocol/v2/handlers/V2IssueCredentialHandler.ts 93.10% <ø> (ø)
...s/protocol/v2/handlers/V2OfferCredentialHandler.ts 71.79% <ø> (ø)
... and 104 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update cbdff28...d7fd2d2. Read the comment docs.

@TimoGlastra
Copy link
Contributor

@TimoGlastra Currently, I'm still creating new keys when it's multiuse invitation. I assume we don't want to do that, right?

Not sure I fully understand. Where are you creating new keys? I think we should create new keys for each new connection, but we can reuse the same keys for everyone that uses the invitation (we must because otherwise the invitation becomes invalid).

@TimoGlastra
Copy link
Contributor

TimoGlastra commented Apr 30, 2022

While writing the migration scripts I found some issues, I'll start working on them one by one, but just to let you know (maybe you have some comments on the points):

  • update messageId to invitationId
  • OOB state should be set to done once we send or receive the first non-oob message (so after sending or receiving the didexchange / connection request message)
    • Currently done in response / complete handlers
  • convertToNewInvitation should transform the verkeys into did:key (directly pushed to feat: add out-of-band and did exchange #717)
  • key encoding in recipientKeys and routingKeys is not in line with the RFCs: (fix: always encode keys according to RFCs #733)
    • According to rfc:
      • oob service should always use did:key
      • did-communication service: should always use did:example:123#key-id references (or #key-id references in peer did doc)
        • for routingKeys if we don't have the did, we transform the raw key into a did:key with key reference
      • IndyAgent: raw publicKeyBase58 for both routing and recipient keys
      • 0160 invitation service: raw publicKeyBase58 for both routing and recipient keys
    • update recipientKeys in the did document
      • Should normalize the values (to a key?)
        • as you can see above there's three different ways to encode keys into a didcomm service, we should normailze the value before storing it as recipient key (otherwise it will be really hard to know which format to query in later on)
        • if the key in the service is a local reference we should actually extract the key from the verificationMethod / authentication array objects
        • if the key is an external reference we should probably resolve it? Not sure we need this as we only ned to store the recipientKeys and those will always be local key references I think
      • What to do if DIDComm v2 service is present? Should we store all recipientKeys?
        • Probably not because in didcomm v2 the other agent will indicate the did they're using to send the message. Let's skip this for now
  • convertToNewDidDoc (directly pushed to branch)
    • Should convert the id and controller values
    • May be other items that should be converted
  • Store legacy did and did document string in did record after converting to new did document (needs changes from feat: 0.2.0 connection migration script #731)
  • We can probably remove some props from the connection record over time? E.g. multiUseInvitation (in oob record) and mediatorId (in oob record)
  • out of band record only storing first recipient key as tag
    • STILL TODO: Also, if we're connecting using a public did we should store the key of the did public did also probably? In that case we should probably set the tag outside of the oob record as we need to resolve the did document.
  • associating out of band recor with session and finding it based on that can maybe be insecure, as there's multiple entities that can act on the same oob record when using multi use invitations. Is this true?
  • differentiate between stored and resolved version of peer did document
  • demo is broken
  • connectionless should be integrated with oob, also we should allow for connection reuse when doing connectionless.
    • the oob offer/request will not have a connection id when we receive the first reply. we must set it on the record
  • creating an out of band offer/request will currently create keys, and the oob invitation will also create keys. I propose the following flow:
    1. create oob offer/request no keys will be created, no ~service is present
    2. call oob.createInvitation to create oob invitation containing the offer/request
    3. OR call oob.createLegacyConnectionlessInvitation (naming not final yet, but you get the idea) that will generate a key and set the ~service decorator. This makes the process two steps, but I think the api is nice enough to do that.

@TimoGlastra
Copy link
Contributor

TimoGlastra commented May 2, 2022

Already merged #736 into this branch because it contains fixes needed for this branch to work with pickup v2

@TimoGlastra
Copy link
Contributor

What do you mean by this task @jakubkoci?

Resolve key from reference (?)

@jakubkoci
Copy link
Contributor Author

What do you mean by this task @jakubkoci?

Resolve key from reference (?)

I think I meant if there is a recipient key in a form of reference in service recipient keys array, then we must resolve the key.

@TimoGlastra
Copy link
Contributor

I think I meant if there is a recipient key in a form of reference in service recipient keys array, then we must resolve the key.

This has been solved in this PR I think: #733

@TimoGlastra
Copy link
Contributor

Also, I'm not 100% sure what you mean by this:

Reuse oob invitation keys also for multiuse invitation (?)
@TimoGlastra Currently, I'm still creating new keys when it's multiuse invitation. I assume we don't want to do that, right?

I think we should use new keys for each connection, but the invitation will use the same invitation keys for everyone connecting

Signed-off-by: Jakub Koci <[email protected]>
Signed-off-by: Jakub Koci <[email protected]>
TimoGlastra and others added 15 commits May 12, 2022 12:01
Signed-off-by: Timo Glastra <[email protected]>
Signed-off-by: Timo Glastra <[email protected]>
Signed-off-by: Timo Glastra <[email protected]>
Signed-off-by: Jakub Koci <[email protected]>
Signed-off-by: Jakub Koci <[email protected]>
Copy link
Contributor

@TimoGlastra TimoGlastra left a comment

Choose a reason for hiding this comment

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

Wohoo 🎉

@TimoGlastra
Copy link
Contributor

I'll write a release notes / breaking changes message in a bit and then merge

Signed-off-by: Timo Glastra <[email protected]>
@TimoGlastra TimoGlastra enabled auto-merge (squash) May 13, 2022 08:02
@TimoGlastra TimoGlastra merged commit 16c6d60 into main May 13, 2022
@TimoGlastra TimoGlastra deleted the feat/out-of-band branch May 13, 2022 08:12
karimStekelenburg added a commit to animo/aries-framework-javascript that referenced this pull request May 19, 2022
fix(core): expose record metadata types (openwallet-foundation#556)

Signed-off-by: Berend Sliedrecht <[email protected]>
Co-authored-by: Timo Glastra <[email protected]>
ci: create non-annotated tags (openwallet-foundation#559)

Signed-off-by: Timo Glastra <[email protected]>
style: non-null assertions and newline import (openwallet-foundation#561)

Signed-off-by: Timo Glastra <[email protected]>
chore: disable unnecessary type check in Dispatcher test (openwallet-foundation#565)

Signed-off-by: Jakub Koci <[email protected]>
ci: add continuous deployment scripts (openwallet-foundation#552)

Signed-off-by: Timo Glastra <[email protected]>
feat: expose wallet API (openwallet-foundation#566)

This commit also contains the following changes:
* Create a master secret when creating a wallet.
* Do not delete wallet when shutdown is called on agent.
* Expose the whole wallet API, which also contains methods that should be used only inside the framework. We need to improve that in the future.

Signed-off-by: Jakub Koci <[email protected]>

BREAKING CHANGE: The agent’s `shutdown` method does not delete the wallet anymore. If you want to delete the wallet, you can do it via exposed wallet API.
build: add arm test ledger setup (openwallet-foundation#573)

Signed-off-by: Timo Glastra <[email protected]>
feat: add problem report protocol (openwallet-foundation#560)

Signed-off-by: Amit Padmani <[email protected]>
docs: added report problem protocol to README (openwallet-foundation#574)

Signed-off-by: Berend Sliedrecht <[email protected]>
fix: support mediation for connectionless exchange (openwallet-foundation#577)

Signed-off-by: Timo Glastra <[email protected]>
refactor(core): separate logic for inbound plaintext and encrypted message (openwallet-foundation#581)

* rename wire message to encrypted message

Signed-off-by: Jakub Koci <[email protected]>
feat: generic attachment handler (openwallet-foundation#578)

Signed-off-by: morrieinmaas <[email protected]>
Co-authored-by: annelein <[email protected]>
refactor: resolve feedback for problem report (openwallet-foundation#584)

Signed-off-by: Amit Padmani <[email protected]>
fix(core)!: Improved typing on metadata api (openwallet-foundation#585)

Signed-off-by: Berend Sliedrecht <[email protected]>

BREAKING CHANGE: removed the getAll() function.
chore(release): v0.1.0 (openwallet-foundation#571)

Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
docs(apple-silicon): update OpenSSL instructions (openwallet-foundation#590)

* docs(apple-silicon): update openssl install instructions

Signed-off-by: Karim Stekelenburg <[email protected]>

* docs(apple-silicon): add missing 'add to path' commands

Signed-off-by: Karim Stekelenburg <[email protected]>

* docs(apple-silicon): run prettier

Signed-off-by: Karim Stekelenburg <[email protected]>
feat(core): allow to set auto accept connetion exchange when accepting invitation (openwallet-foundation#589)

Signed-off-by: Jakub Koci <[email protected]>
feat: ledger connections happen on agent init in background (openwallet-foundation#580)

* Connects to ledger on agent init by default, ledger calls will wait for connections to be complete if so
* Updated version of indy-sdk-react-native to 0.1.16

Signed-off-by: Patrick Kenyon <[email protected]>
feat: add generic did resolver (openwallet-foundation#554)

* feat: did:key, did:web, did:sov resolver

Signed-off-by: Timo Glastra <[email protected]>
feat: add support for signed attachments (openwallet-foundation#595)

Signed-off-by: Timo Glastra <[email protected]>

BREAKING CHANGE: attachment method `getDataAsJson` is now located one level up. So instead of `attachment.data.getDataAsJson()` you should now call `attachment.getDataAsJson()`
build(deps): bump shelljs from 0.8.4 to 0.8.5 (openwallet-foundation#598)

Signed-off-by: dependabot[bot] <[email protected]>
feat: add didcomm message record (openwallet-foundation#593)

Signed-off-by: Timo Glastra <[email protected]>
fix: disallow usage of global buffer (openwallet-foundation#601)

fix: verify jws contains at least 1 signature (openwallet-foundation#600)

feat(core): added timeOut to the module level (openwallet-foundation#603)

* fix(core): added timeOut to the module level

Signed-off-by: Berend Sliedrecht <[email protected]>
feat: add support for did:peer (openwallet-foundation#608)

Signed-off-by: Timo Glastra <[email protected]>
feat: support new did document in didcomm message exchange (openwallet-foundation#609)

* refactor: unify did document services
* feat: integrate did resolver with message sender
* feat: support new did docoument for msg receiver

Signed-off-by: Timo Glastra <[email protected]>
docs: proofs (openwallet-foundation#564)

Signed-off-by: Mostafa <[email protected]>
fix: incorrect encoding of services for did:peer (openwallet-foundation#610)

Signed-off-by: Timo Glastra <[email protected]>
ci: get last alpha package version from npm (openwallet-foundation#611)

We currently use the commit number, but this is incorrect as the number will be reset to 0 again when the next minor version is released.

Signed-off-by: Timo Glastra <[email protected]>
chore: regenerate yarn.lock for security updates (openwallet-foundation#616)

Signed-off-by: Timo Glastra <[email protected]>
ci: prepend v to alpha releases for consistency (openwallet-foundation#617)

Signed-off-by: Timo Glastra <[email protected]>
feat: add find and save/update methods to DidCommMessageRepository (openwallet-foundation#620)

Signed-off-by: NB-Karim <[email protected]>
feat: update recursive backoff & trust ping record updates (openwallet-foundation#631)

Signed-off-by: James Ebert <[email protected]>
fix: leading zeros in credential value encoding (openwallet-foundation#632)

Signed-off-by: James Ebert <[email protected]>
feat: indy revocation (prover & verifier) (openwallet-foundation#592)

* Added recepientRevocation for createProof

Signed-off-by: Patrick Kenyon <[email protected]>

* Initial revocation functions for getRequestedCredentialsForProofRequest

Signed-off-by: Patrick Kenyon <[email protected]>

* Added option to check for revocation status in getRequestedCredentials

Signed-off-by: Patrick Kenyon <[email protected]>

* sorted transports

Signed-off-by: Adam Burdett <[email protected]>

* broken message sender tests

Signed-off-by: Adam Burdett <[email protected]>

* structure fix

Signed-off-by: Adam Burdett <[email protected]>

* lint import ordering

Signed-off-by: Adam Burdett <[email protected]>

* if(0) does not work.

Signed-off-by: Adam Burdett <[email protected]>

* utf-8 decode ws event.data

Signed-off-by: Adam Burdett <[email protected]>

* indy wallet friendly bits

Signed-off-by: Adam Burdett <[email protected]>

* correct protocal type

Signed-off-by: Adam Burdett <[email protected]>

* check invite during init

Signed-off-by: Adam Burdett <[email protected]>

* id check

Signed-off-by: Adam Burdett <[email protected]>

* keep sockets with mediators open

Signed-off-by: Adam Burdett <[email protected]>

* recursive backoff

Signed-off-by: Adam Burdett <[email protected]>

* timeout

Signed-off-by: Adam Burdett <[email protected]>

* timeout time

Signed-off-by: Adam Burdett <[email protected]>

* logger

Signed-off-by: Adam Burdett <[email protected]>

* propper recursive backoff

Signed-off-by: Adam Burdett <[email protected]>

* multiple socket timeout support

Signed-off-by: Adam Burdett <[email protected]>

* Code cleanup

Signed-off-by: Patrick Kenyon <[email protected]>

* Fix tests and types

Signed-off-by: Patrick Kenyon <[email protected]>

* Formatting and type fixes

Signed-off-by: Patrick Kenyon <[email protected]>

* revocation fixes

Signed-off-by: Patrick Kenyon <[email protected]>

* ran prettier

Signed-off-by: Patrick Kenyon <[email protected]>

* chore: add ts ignore until types are updated

Signed-off-by: James Ebert <[email protected]>

* feat: updated tails download to utilize axios and added inline docs

Signed-off-by: James Ebert <[email protected]>

* chore: fixed formatting

Signed-off-by: James Ebert <[email protected]>

* chore: removed husky

Signed-off-by: James Ebert <[email protected]>

* fix: add back husky pre-push

Signed-off-by: James Ebert <[email protected]>

* chore: formatting

Signed-off-by: James Ebert <[email protected]>

* fix: fixed error imports

Signed-off-by: James Ebert <[email protected]>

* chore: resolve dependency loop issues

Signed-off-by: James Ebert <[email protected]>

* chore: formatting

Signed-off-by: James Ebert <[email protected]>

* feature: revocation ledger methods & proof get requested credentials revoked status

Signed-off-by: James Ebert <[email protected]>

* feature: added revocation state creation

Signed-off-by: James Ebert <[email protected]>

* fix: small tweaks and fixes for revocation

Signed-off-by: James Ebert <[email protected]>

* feature: takes into account referent revocation intervals

Signed-off-by: James Ebert <[email protected]>

* chore: cleanup & prettier

Signed-off-by: James Ebert <[email protected]>

* fix: fixed createrevocationstate types & initial rev reg def caching

Signed-off-by: James Ebert <[email protected]>

* chore: formatting

Signed-off-by: James Ebert <[email protected]>

* fix: fixed proofservice test mock

Signed-off-by: James Ebert <[email protected]>

* chore: minor cleanup

Signed-off-by: James Ebert <[email protected]>

* chore: rename indyutilitiesservice

Signed-off-by: James Ebert <[email protected]>

* chore: troubleshooting revocation, added ledger methods for verifying proof of non revocation

Signed-off-by: James Ebert <[email protected]>

* chore: cleanup & credential storage w/revocation

Signed-off-by: James Ebert <[email protected]>

* feat: add download to file method to file system

Signed-off-by: Timo Glastra <[email protected]>

* refactor: use rnfs for react native

Signed-off-by: Timo Glastra <[email protected]>

* chore: cleanup & log adjustments

Signed-off-by: James Ebert <[email protected]>

* chore: formatting

Signed-off-by: James Ebert <[email protected]>

* feat: verify proofs containing proof of non_revocation

Signed-off-by: James Ebert <[email protected]>

* chore: formatting

Signed-off-by: James Ebert <[email protected]>

* chore: update indy-sdk-react-native & indy-sdk types

Signed-off-by: James Ebert <[email protected]>

* chore: adjusts names to be consistent & removing abbreviations

Signed-off-by: James Ebert <[email protected]>

* chore: updated indy-sdk types to fix proof identifier types

Signed-off-by: James Ebert <[email protected]>

* fix: indyverifierservice prototype pollution

Signed-off-by: James Ebert <[email protected]>

Co-authored-by: Patrick Kenyon <[email protected]>
Co-authored-by: Adam Burdett <[email protected]>
Co-authored-by: Timo Glastra <[email protected]>
fix: check for "REQNACK" response from indy ledger (openwallet-foundation#626)

Signed-off-by: annelein <[email protected]>
fix: credential preview attributes mismatch schema attributes (openwallet-foundation#625)

Signed-off-by: annelein <[email protected]>
docs: add cli demo (openwallet-foundation#619)

Signed-off-by: annelein <[email protected]>
fix: check proof request group names do not overlap (openwallet-foundation#638)

Signed-off-by: annelein <[email protected]>
fix(core): error if unpacked message does not match JWE structure (openwallet-foundation#639)

Signed-off-by: annelein <[email protected]>
feat: filter retrieved credential by revocation state (openwallet-foundation#641)

Signed-off-by: Timo Glastra <[email protected]>
docs: cleanup demo (openwallet-foundation#645)

Signed-off-by: Berend Sliedrecht <[email protected]>
feat(crypto): add abstract KeyPair class

Signed-off-by: NB-Karim <[email protected]>

feat(crypto): move Key class to crypto directory

Signed-off-by: NB-Karim <[email protected]>

feat(crypto): move multiCodecKey to crypto folder

Signed-off-by: NB-Karim <[email protected]>

feat(crypto): add WalletKeyPair

Signed-off-by: NB-Karim <[email protected]>

style: fix formatting issues

Signed-off-by: NB-Karim <[email protected]>

feat: add wallet key derivation method option (openwallet-foundation#650)

Signed-off-by: Timo Glastra <[email protected]>
fix: issue where attributes and predicates match (openwallet-foundation#640)

Signed-off-by: annelein <[email protected]>
fix(basic-message): assert connection is ready (openwallet-foundation#657)

Signed-off-by: Karim <[email protected]>
test: minor wallet test changes (openwallet-foundation#660)

Signed-off-by: Niall Shaw <[email protected]>
feat: add wallet module with import export (openwallet-foundation#652)

Signed-off-by: Timo Glastra <[email protected]>
refactor(proofs): remove unused method from service (openwallet-foundation#663)

Signed-off-by: Timo Glastra <[email protected]>
fix: agent isinitialized on shutdown (openwallet-foundation#665)

Signed-off-by: Niall Shaw <[email protected]>
fix(routing): remove sentTime from request message (openwallet-foundation#670)

Signed-off-by: Timo Glastra <[email protected]>
feat: add w3c credential models

Signed-off-by: Karim <[email protected]>

feat: add mock W3cCredentialService

Signed-off-by: Karim <[email protected]>

feat: keyPair record

Signed-off-by: Berend Sliedrecht <[email protected]>

feat: generic wallet interface for key types

Signed-off-by: Timo Glastra <[email protected]>

fix: renamed secretKey -> privateKey

Signed-off-by: Berend Sliedrecht <[email protected]>

fix: dependency cycles

Signed-off-by: Karim <[email protected]>

feat: KeyPairRepository

Signed-off-by: Berend Sliedrecht <[email protected]>

docs: improved tsdoc for repository

Signed-off-by: Berend Sliedrecht <[email protected]>

feat: restructured wallet api

Signed-off-by: Berend Sliedrecht <[email protected]>

feat: createKey switch

Signed-off-by: Berend Sliedrecht <[email protected]>

feat: added switch to sign and verify

Signed-off-by: Berend Sliedrecht <[email protected]>

style: added tsdoc

Signed-off-by: Berend Sliedrecht <[email protected]>

fix: remove deprecated multibase and multihash (openwallet-foundation#674)

Signed-off-by: Timo Glastra <[email protected]>
feat(crypto): add abstract KeyPair class

Signed-off-by: NB-Karim <[email protected]>

feat(crypto): add WalletKeyPair

Signed-off-by: NB-Karim <[email protected]>

style: fix formatting issues

Signed-off-by: NB-Karim <[email protected]>

feat: add dependency .d.ts files

Signed-off-by: Karim <[email protected]>

feat: implemented create key in wallet

Signed-off-by: Berend Sliedrecht <[email protected]>

Merge branch 'main' into feat/next-signatures

feat: implemented sign and verify

Signed-off-by: Berend Sliedrecht <[email protected]>

feat: implementation done, still need record retrieval

Signed-off-by: Berend Sliedrecht <[email protected]>

fix: casing

Signed-off-by: Berend Sliedrecht <[email protected]>

refactor: remove keypairrecord and keypairrepository

Signed-off-by: Berend Sliedrecht <[email protected]>

fix: merge

Merge branch 'feat/Ed25519Signature2018' of github.com:animo/aries-framework-javascript into feat/next-signatures

Merge branch 'feat/next-signatures' of github.com:animo/aries-framework-javascript into feat/next-signatures

feat: finished without test

Signed-off-by: Berend Sliedrecht <[email protected]>

fix(routing): mediation recipient role for recipient (openwallet-foundation#661)

Signed-off-by: Timo Glastra <[email protected]>
refactor(core): renamed BufferEncoder to TypedArrayEncoder (openwallet-foundation#675)

Signed-off-by: Berend Sliedrecht <[email protected]>
feat: add Ed25519Signature2018

Signed-off-by: Karim <[email protected]>

feat: finished WalletKeyPair implementation

Signed-off-by: Karim <[email protected]>

Merge branch 'main' into feat/W3cCredentialService

Merge branch 'main' into feat/next-signatures

Merge branch 'feat/next-signatures' into feat/W3cCredentialService

fix: do not use basic message id as record id (openwallet-foundation#677)

Signed-off-by: Timo Glastra <[email protected]>
docs: inline and dev docs added

Signed-off-by: Berend Sliedrecht <[email protected]>

Merge remote-tracking branch 'origin' into feat/bbs

fix: cleanup

Signed-off-by: Berend Sliedrecht <[email protected]>

fix: using typedarrayencoder now

Signed-off-by: Berend Sliedrecht <[email protected]>

tests: started on IndyWallet test

Signed-off-by: Berend Sliedrecht <[email protected]>

tests: test sign function

Signed-off-by: Berend Sliedrecht <[email protected]>

build(deps): bump minimist from 1.2.5 to 1.2.6 (openwallet-foundation#682)

feat: improved tests

Signed-off-by: Berend Sliedrecht <[email protected]>

feat: check if array is typedarray

Signed-off-by: Berend Sliedrecht <[email protected]>

feat: added react native setup

Signed-off-by: Berend Sliedrecht <[email protected]>

docs: updated diff syntax

Signed-off-by: Berend Sliedrecht <[email protected]>

build(deps): bump plist from 3.0.4 to 3.0.5 (openwallet-foundation#683)

feat(routing): allow to discover mediator pickup strategy (openwallet-foundation#669)

Signed-off-by: Timo Glastra <[email protected]>
tests: test isTypedArray

Signed-off-by: Berend Sliedrecht <[email protected]>

fix: resolved feedback

Signed-off-by: Berend Sliedrecht <[email protected]>

build: decremented core build version

Signed-off-by: Berend Sliedrecht <[email protected]>

fix: update inbound message validation  (openwallet-foundation#678)

Changed isPlaintextMessage error handling, and removed logic from isEncryptedMessage
Use isValidJweStructure

Signed-off-by: Niall Shaw <[email protected]>
feat: add sign method

Signed-off-by: Karim <[email protected]>

Merge branch 'main' into feat/W3cCredentialService

feat: added w3c record and repository

Signed-off-by: Berend Sliedrecht <[email protected]>

feat: working repository and record

Signed-off-by: Berend Sliedrecht <[email protected]>

Merge pull request #17 from blu3beri/feat/w3crecord

feat(core): w3cCredentialRecord and w3cCredentialRepository
fix(core): set tags in MediationRecord constructor (openwallet-foundation#686)

Signed-off-by: Ariel Gentile <[email protected]>
Merge branch 'main' into feat/W3cCredentialService

feat: implement verifyCredential

Signed-off-by: Karim <[email protected]>

feat: createPresentation

Signed-off-by: Karim <[email protected]>

feat: implemented SignatureSuiteRegistry

Signed-off-by: Karim <[email protected]>

feat: finish signPres and verifyPres

Signed-off-by: Karim <[email protected]>

refactor: clean-up directory structure

Signed-off-by: Karim <[email protected]>

feat: add BbsBlsSiganture2020 to sig-registry

Signed-off-by: Karim <[email protected]>

Merge branch 'main' into feat/bbs

Merge branch 'feat/bbs' into feat/jsonld-credentials

feat: implement sign for bbs

Signed-off-by: Karim <[email protected]>

refactor: clean-up W3cCredentialService options

Signed-off-by: Karim <[email protected]>

refactor: switched to mattr jsonld-signatures bbs

Signed-off-by: Karim <[email protected]>

feat: regex for schemaVersion, issuerDid, credDefId, schemaId, schemaIssuerDid (openwallet-foundation#679)

Signed-off-by: annelein <[email protected]>
feat: support wallet key rotation (openwallet-foundation#672)

Signed-off-by: Mostafa <[email protected]>
feat: add role and method to did record tags (openwallet-foundation#692)

Signed-off-by: Timo Glastra <[email protected]>
feat: delete credential from wallet (openwallet-foundation#691)

Signed-off-by: Jan <[email protected]>
feat: extension module creation (openwallet-foundation#688)

Signed-off-by: Ariel Gentile <[email protected]>
refactor: restructured fixtures and more

Signed-off-by: Karim <[email protected]>

Merge branch 'main' into feat/jsonld-credentials

fix: disallow floating promises (openwallet-foundation#704)

Signed-off-by: Timo Glastra <[email protected]>
feat: bbs verification

Signed-off-by: Karim <[email protected]>

Merge branch 'main' into feat/jsonld-credentials

refactor: start and stop transports in parallel (openwallet-foundation#705)

Signed-off-by: Timo Glastra <[email protected]>
ci: add yml for postgres setup (openwallet-foundation#703)

Signed-off-by: Sai Ranjit Tummalapalli <[email protected]>
fix: did sov service type resolving (openwallet-foundation#689)

Signed-off-by: James Ebert <[email protected]>
test: add test assets

Signed-off-by: Karim <[email protected]>

test(vc): add caching documentLoader for tests

Signed-off-by: Karim <[email protected]>

build(deps): bump async from 2.6.3 to 2.6.4 (openwallet-foundation#710)

feat: add update assistant for storage migrations (openwallet-foundation#690)

Signed-off-by: Timo Glastra <[email protected]>
feat: support revocation notification messages (openwallet-foundation#579)

Signed-off-by: Patrick Kenyon <[email protected]>

Co-authored-by: James Ebert <[email protected]>
fix: disallow floating promises (openwallet-foundation#704)

Signed-off-by: Timo Glastra <[email protected]>
test: add test assets

Signed-off-by: Karim <[email protected]>

test(vc): add caching documentLoader for tests

Signed-off-by: Karim <[email protected]>

Merge branch 'karim/test' into feat/jsonld-credentials

refactor: start and stop transports in parallel (openwallet-foundation#705)

Signed-off-by: Timo Glastra <[email protected]>
ci: add yml for postgres setup (openwallet-foundation#703)

Signed-off-by: Sai Ranjit Tummalapalli <[email protected]>
fix: did sov service type resolving (openwallet-foundation#689)

Signed-off-by: James Ebert <[email protected]>
build(deps): bump async from 2.6.3 to 2.6.4 (openwallet-foundation#710)

feat: add update assistant for storage migrations (openwallet-foundation#690)

Signed-off-by: Timo Glastra <[email protected]>

feat: support revocation notification messages (openwallet-foundation#579)

Signed-off-by: Patrick Kenyon <[email protected]>

Co-authored-by: James Ebert <[email protected]>
fix: yarn.lock conflict

Merge branch 'main' into feat/jsonld-credentials

refactor: replace message type constant with string literal (openwallet-foundation#721)

Signed-off-by: Jakub Koci <[email protected]>
test: add local did fixtures

feat: add credential fetch methods

Signed-off-by: Karim <[email protected]>

feat: add react native documentLoader

Signed-off-by: Karim <[email protected]>

style: fix styling issues (eslint, ts, etc.)

Signed-off-by: Karim <[email protected]>

Merge branch 'main' into feat/jsonld-credentials
fix: allow agent without inbound endpoint to connect when using multi-use invitation (openwallet-foundation#712)

Previously the session is only stored by the connection id, but this is not always enough for the session to be reused. When using a multi-use invitation the connection id will change while processing the message, meaning the session cannot be reused. This also helps with cases where no connection is established. Fixes openwallet-foundation#483

Signed-off-by: Timo Glastra <[email protected]>
fix: close session early if no return route (openwallet-foundation#715)

This adds a `close` method to all transport sessions so it can be closed from within the agent. This allows us to close the session early if the message doesn't have return routing enabled

Signed-off-by: Timo Glastra <[email protected]>
ci: add node 18 to test matrix (openwallet-foundation#735)

Signed-off-by: Timo Glastra <[email protected]>
feat: pickup v2 protocol (openwallet-foundation#711)

Signed-off-by: KolbyRKunz <[email protected]>

BREAKING CHANGE: The mediator pickup strategy enum value `MediatorPickupStrategy.Explicit` has been renamed to `MediatorPickupStrategy.PickUpV1` to better align with the naming of the new `MediatorPickupStrategy.PickUpV2`
Merge branch 'main' into feat/jsonld-credentials

fix: dropped unused dependency

Signed-off-by: Karim <[email protected]>

fix: error typo

Co-authored-by: Timo Glastra <[email protected]>
fix: simplify keyType declaration

Co-authored-by: Timo Glastra <[email protected]>
fix: optional fields in did document (openwallet-foundation#726)

Signed-off-by: Timo Glastra <[email protected]>
fix: dropped ed25519 ctx deps

Signed-off-by: Karim <[email protected]>

fix: removed unused type def

Signed-off-by: Karim <[email protected]>

fix: remove unnecesarry transformer

Signed-off-by: Karim <[email protected]>

fix: broken import

Signed-off-by: Karim <[email protected]>

fix: remove unnecessary W3cCredentialState

Signed-off-by: Karim <[email protected]>

fix: doc typo

Co-authored-by: Timo Glastra <[email protected]>

Signed-off-by: Karim Stekelenburg <[email protected]>
fix: remove commented code

Signed-off-by: Karim <[email protected]>

fix: remove unnecessary comment

Signed-off-by: Karim <[email protected]>

fix: rename confusing context vs context url

Signed-off-by: Karim <[email protected]>

fix: moved jsonld related types and code to utils file

Signed-off-by: Karim <[email protected]>

fix: replaced inline urls with local constants

Signed-off-by: Karim <[email protected]>

fix: broken imports

Signed-off-by: Karim <[email protected]>

fix: eslint issues

Signed-off-by: Karim <[email protected]>

fix: eslint issues

Signed-off-by: Karim <[email protected]>

fix: remove unnecessary assignment

Signed-off-by: Karim <[email protected]>

fix: replace faulty challenge assignment

Signed-off-by: Karim <[email protected]>

fix: inverted statement

Signed-off-by: Karim <[email protected]>

fix: remove unused revoked options

Signed-off-by: Karim <[email protected]>

fix: uuid challenge and presentation suites

Signed-off-by: Karim <[email protected]>

test: add missing test for bbs verify pres

Signed-off-by: Karim <[email protected]>

refactor: add custom ed25519 2020 to 2018 impl

Signed-off-by: Karim <[email protected]>

fix: unclear variable name

Signed-off-by: Karim <[email protected]>

feat: add issue credential v2 (openwallet-foundation#745)

Signed-off-by: Mike Richardson <[email protected]>
fix: removed unused props from docs

Signed-off-by: Karim <[email protected]>

refactor: rename utilities.ts to bbs-utils.ts

Signed-off-by: Karim <[email protected]>

feat: add additional W3cCredentialRecord tags

Signed-off-by: Karim <[email protected]>

fix: removed duplicate function

Signed-off-by: Karim <[email protected]>

fix: do not import test logger in src (openwallet-foundation#746)

Signed-off-by: Timo Glastra <[email protected]>
fix: do not import from src dir (openwallet-foundation#748)

Signed-off-by: Timo Glastra <[email protected]>
refactor: rewrite conversion method

Signed-off-by: Karim Stekelenburg <[email protected]>

feat: add givenId as W3cCredentialRecord tag

Signed-off-by: Karim Stekelenburg <[email protected]>

fix: convert any types

Signed-off-by: Karim Stekelenburg <[email protected]>

chore!: update indy-sdk-react-native version to 0.2.0 (openwallet-foundation#754)

Signed-off-by: Amit <[email protected]>

BREAKING CHANGE: indy-sdk-react-native has been updated to 0.2.0. The new version now depends on libindy version 1.16 and requires you to update the binaries in your react-native application. See the [indy-sdk-react-native](https://github.com/hyperledger/indy-sdk-react-native) repository for instructions on how to get the latest binaries for both iOS and Android.
fix: typings

Signed-off-by: Karim Stekelenburg <[email protected]>

fix: typings

Signed-off-by: Karim <[email protected]>

fix: typings & drop jsonld bbs dep

Signed-off-by: Karim <[email protected]>

fix: remove commented code

Signed-off-by: Karim <[email protected]>

fix: typing and faulty context

Signed-off-by: Karim <[email protected]>

fix: remove keyAgreement

Signed-off-by: Karim <[email protected]>

fix: remove unused typing file

Signed-off-by: Karim <[email protected]>

fix: rename map variable

Signed-off-by: Karim <[email protected]>

fix: use w3cDate

Signed-off-by: Karim <[email protected]>

fix: rename map variable

Signed-off-by: Karim <[email protected]>

style: clean map syntax

Signed-off-by: Karim <[email protected]>

fix: typo

Signed-off-by: Karim <[email protected]>

fix: remove commented code

Signed-off-by: Karim <[email protected]>

feat(core): add support for postgres wallet type (openwallet-foundation#699)

Signed-off-by: Sai Ranjit Tummalapalli <[email protected]>

Co-authored-by: Timo Glastra <[email protected]>
fix: add g1 and g2 contexts

Signed-off-by: Karim <[email protected]>

fix: add X25519  contexts

Signed-off-by: Karim <[email protected]>

fix(node): allow to import node package without postgres (openwallet-foundation#757)

Signed-off-by: Timo Glastra <[email protected]>
fix: mediation record checks for pickup v2 (openwallet-foundation#736)

Signed-off-by: Timo Glastra <[email protected]>
Merge branch 'main' into feat/jsonld-credentials

fix: Key imports

Signed-off-by: Karim <[email protected]>

fix: change invalid g1 g2 contexts to bbs

Signed-off-by: Karim <[email protected]>

fix: remove invalid contexts

Signed-off-by: Karim <[email protected]>

fix: delete credentials (openwallet-foundation#766)

Signed-off-by: Mike Richardson <[email protected]>
fix: various

Signed-off-by: Karim <[email protected]>

test: do not use indy ledgers in wallet test

Signed-off-by: Timo Glastra <[email protected]>

fix: add jsonld.expand typedef

Signed-off-by: Karim <[email protected]>

Merge branch 'main' into feat/jsonld-credentials

fix: add additional typedefs

Signed-off-by: Karim <[email protected]>

feat: add out-of-band and did exchange (openwallet-foundation#717)

Signed-off-by: Jakub Koci <[email protected]>
Co-authored-by: Timo Glastra <[email protected]>

BREAKING CHANGE: the connections module has been extended with an out of band module and support for the DID Exchange protocol. Some methods have been moved to the out of band module, see [Migrating from AFJ 0.1.0 to 0.2.x](https://github.com/hyperledger/aries-framework-javascript/blob/main/docs/migration/0.1-to-0.2.md) for detailed migration instructions.
feat: support handling messages with different minor version (openwallet-foundation#714)

Signed-off-by: Timo Glastra <[email protected]>
fix: relax validation of thread id in revocation notification (openwallet-foundation#768)

Signed-off-by: Blazej Marcinkiewicz <[email protected]>
fix: typing issues with jsonld

Signed-off-by: Timo Glastra <[email protected]>

feat: ability to add generic records (openwallet-foundation#702)

feat: extension module creation (openwallet-foundation#688)

Co-authored-by: Berend Sliedrecht <[email protected]>
Co-authored-by: Timo Glastra <[email protected]>
Merge pull request #21 from TimoGlastra/fix/jsonld-types-issues

fix: typing issues with jsonld
fix: propose payload attachment in in snake_case JSON format (openwallet-foundation#775)

Signed-off-by: Mike Richardson <[email protected]>
fix: typing issues

Signed-off-by: Karim <[email protected]>

fix: delete credentials (openwallet-foundation#770)

Signed-off-by: Mike Richardson <[email protected]>
fix: type issues

Signed-off-by: Karim <[email protected]>

test: use event listener instead of while loop (openwallet-foundation#778)

Signed-off-by: Timo Glastra <[email protected]>
feat: bbs createKey, sign and verify (openwallet-foundation#684)

Signed-off-by: Berend Sliedrecht <[email protected]>

Merge branch '0.3.0-pre' into feat/jsonld-credentials
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants