-
Notifications
You must be signed in to change notification settings - Fork 204
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 support for postgres wallet type #699
feat: add support for postgres wallet type #699
Conversation
Signed-off-by: Sai Ranjit Tummalapalli <[email protected]>
Signed-off-by: Sai Ranjit Tummalapalli <[email protected]>
Codecov Report
@@ Coverage Diff @@
## main #699 +/- ##
==========================================
+ Coverage 86.71% 86.72% +0.01%
==========================================
Files 393 393
Lines 9207 9222 +15
Branches 1622 1629 +7
==========================================
+ Hits 7984 7998 +14
- Misses 1161 1162 +1
Partials 62 62
Continue to review full report at Codecov.
|
Signed-off-by: Sai Ranjit Tummalapalli <[email protected]>
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.
Thanks for the great contribution @sairanjitAW! I left a few notes, mainly about keeping the api generic for other wallet types / storage types coming in the near future.
@blu3beri could you take a look at the postgres binary initialization and see if that looks good?
if (walletConfig.storageConfig && walletConfig.storageCreds && fileSystem?.loadPostgresPlugin) { | ||
fileSystem?.loadPostgresPlugin(walletConfig.storageConfig, walletConfig.storageCreds) | ||
} |
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.
If the wallet storage is set to postgres, I think we should throw an error if the required parameters are not set. I think we should also throw an error if loadPostgresPlugin
is not defined and wallet storage type is postgres.
packages/core/tests/agents.test.ts
Outdated
@@ -77,3 +83,65 @@ describe('agents', () => { | |||
expect(aliceAgent.isInitialized).toBe(true) | |||
}) | |||
}) | |||
|
|||
describe('postgres agents', () => { |
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.
Maybe we can extract this to a separate postgres.test.ts?
loadPostgresPlugin?(storageConfig: WalletStorageConfig, storageCreds: WalletStorageCreds): Promise<boolean> | ||
} | ||
|
||
export enum WalletScheme { | ||
DatabasePerWallet = 'DatabasePerWallet', | ||
MultiWalletSingleTable = 'MultiWalletSingleTable', | ||
MultiWalletSingleTableSharedPool = 'MultiWalletSingleTableSharedPool', | ||
} | ||
|
||
export interface StorageConfig { | ||
url: string | ||
wallet_scheme?: WalletScheme | ||
path?: string | undefined | ||
} | ||
|
||
export interface WalletStorageCreds { | ||
[key: string]: unknown | ||
} | ||
|
||
export interface StorageCreds { | ||
account: string | ||
password: string | ||
admin_account: string | ||
admin_password: string | ||
} |
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.
The postgres plugin is related to the environment and the wallet type (in this case indy-sdk). I'm not sure the file system is the best place to add this, mainly because the filesystem stays the same if we support something different than indy-sdk.
Maybe we can keep it a bit more generic. Maybe later we can integrate more, but for now maybe can approach it like this:
import { Agent } from '@aries-framework/core'
import { agentDependencies, loadPostgresPlugin } from '@aries-framework/node'
async function run() {
const storageConfig = {}
const storageCreds = {}
await loadPostgresPlugin(storageConfig, storageCreds)
const agent = new Agent({
walletConfig: {
id: 'id',
key: 'key',
storageConfig,
storageCreds,
storageType: 'postgres'
})
}
run()
packages/core/src/types.ts
Outdated
storageType?: WalletStorageType | ||
storageConfig?: WalletStorageConfig | ||
storageCreds?: WalletStorageCreds |
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.
Maybe we can chamge the interface of this to be not 100% what indy expects, but more how we would want the user of the framework to provide the values. Mainly with the addition of other wallet types I'm not sure if this approach fits nicely. I was thinking about something like this:
// defined in types.ts
export interface WalletConfig {
id: string
key: string
keyDerivationMethod?: KeyDerivationMethod
storage?: {
type: string
[key: string]: unknown
}
}
// defined in @aries-framework/node package
interface IndyPostgresStorageConfig {
type: 'postgres',
config: {
// .. parameters needed for postgres plugin
},
credentials: {
// .. parameters needed for postgres plugin
}
}
It can then be used like this:
import { IndyPostgresStorageConfig } from '@aries-framework/core'
const storageConfig: IndyPostgresStorageConfig = {
type: 'postgres',
// other required fields
}
await loadPostgresPlugin()
const agent = new Agent({
walletConfig: {
// other required fields
storage: storageConfig
}
})
await agent.initialize()
packages/node/package.json
Outdated
"ws": "^7.5.3" | ||
"ref-napi": "^3.0.3", | ||
"ws": "^7.5.3", | ||
"os": "^0.1.2" |
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.
This is a node core module, we don't need to add it to the dependencies
"os": "^0.1.2" |
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.
Great addition! Just 1 comment on the initialisation of the postgres plugin.
"ws": "^7.5.3" | ||
"ref-napi": "^3.0.3", | ||
"ws": "^7.5.3", | ||
"os": "^0.1.2" | ||
}, | ||
"devDependencies": { | ||
"@types/express": "^4.17.13", |
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.
missing @types/ref-napi
packages/node/src/NodeFileSystem.ts
Outdated
@@ -69,4 +72,10 @@ export class NodeFileSystem implements FileSystem { | |||
}) | |||
}) | |||
} | |||
|
|||
public async loadPostgresPlugin(storageConfig: WalletStorageConfig, storageCreds: WalletStorageCreds) { | |||
await storagePlugin.postgresstorage_init() |
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.
I don't believe this is asynchronous. Could be wrong, but by default ffi-napi
is sync.
packages/node/src/postgres.plugin.ts
Outdated
init_storagetype: [int, ['string', 'string']], | ||
}) | ||
|
||
export default storagePlugin |
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.
I have done this once and created a slightly more extensible / safer way. It also allows loading the library via an environment variable which can be useful for systems we did not account for.
import { Library } from 'ffi-napi'
import fs from 'fs'
import os from 'os'
import path from 'path'
const LIBNAME = 'indystrgpostgres'
const ENV_VAR = 'LIB_INDY_STRG_POSTGRES'
type Platform = 'darwin' | 'linux' | 'win32'
type ExtensionMap = Record<Platform, { prefix?: string; extension: string }>
const extensions: ExtensionMap = {
darwin: { prefix: 'lib', extension: '.dylib' },
linux: { prefix: 'lib', extension: '.so' },
win32: { extension: '.dll' },
}
const libPaths: Record<Platform, Array<string>> = {
darwin: ['/usr/local/lib/', '/usr/lib/', '/opt/homebrew/opt/'],
linux: ['/usr/lib/', '/usr/local/lib/'],
win32: ['c:\\windows\\system32\\'],
}
// Alias for a simple function to check if the path exists
const doesPathExist = fs.existsSync
const getLibrary = () => {
// Detect OS; darwin, linux and windows are only supported
const platform = os.platform()
if (platform !== 'linux' && platform !== 'win32' && platform !== 'darwin')
throw new Error(`Unsupported platform: ${platform}. linux, win32 and darwin are supported.`)
// Get a potential path from the environment variable
const pathFromEnvironment = process.env[ENV_VAR]
// Get the paths specific to the users operating system
const platformPaths = libPaths[platform]
// Check if the path from the environment variable is supplied and add it
// We use unshift here so that when we want to get a valid library path this will be the first to resolve
if (pathFromEnvironment) platformPaths.unshift(pathFromEnvironment)
// Create the path + file
const libraries = platformPaths.map((p) =>
path.join(p, `${extensions[platform].prefix ?? ''}${LIBNAME}${extensions[platform].extension}`)
)
// Gaurd so we quit if there is no valid path for the library
if (!libraries.some(doesPathExist))
throw new Error(`Could not find ${LIBNAME} with these paths: ${libraries.join(' ')}`)
// Get the first valid library
// Casting here as a string because there is a guard of none of the paths
// would be valid
const validLibraryPath = libraries.find(doesPathExist) as string
return Library(validLibraryPath, {
postgresstorage_init: [int, []],
init_storagetype: [int, ['string', 'string']],
})
}
type NativeIndyPostgres = {
postgresstorage_init: () => number,
init_storagetype: (arg0: string, arg1: string) => number,
}
export const indyPostgresStorage = getLibrary() as NativeIndyPostgres
Signed-off-by: Sai Ranjit Tummalapalli <[email protected]>
Signed-off-by: Sai Ranjit Tummalapalli <[email protected]>
…jitAW/aries-framework-javascript into feat/add-postgres-support
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.
Really nice improvements @sairanjitAW, left some minor nits, but should be good to go afterwards 👍
packages/core/src/types.ts
Outdated
export enum WalletScheme { | ||
DatabasePerWallet = 'DatabasePerWallet', | ||
MultiWalletSingleTable = 'MultiWalletSingleTable', | ||
MultiWalletSingleTableSharedPool = 'MultiWalletSingleTableSharedPool', | ||
} |
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.
This is a postgres wallet feature, so maybe we can also move this to the node package?
packages/core/src/types.ts
Outdated
} | ||
} | ||
|
||
export interface WalletStorageCreds { |
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.
Same here, I think we can leave this out
packages/core/src/types.ts
Outdated
@@ -47,6 +61,11 @@ export enum DidCommMimeType { | |||
V1 = 'application/didcomm-envelope-enc', | |||
} | |||
|
|||
export enum WalletStorageType { |
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.
This can also be removed now
walletCredentials.rekey_derivation_method = rekeyDerivation | ||
} | ||
if (walletConfig.storage?.credentials) { | ||
walletCredentials.storage_credentials = walletConfig.storage?.credentials as WalletStorageCreds |
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.
walletCredentials.storage_credentials = walletConfig.storage?.credentials as WalletStorageCreds | |
walletCredentials.storage_credentials = walletConfig.storage?.credentials as Record<string, unknown> |
packages/node/src/PostgresPlugin.ts
Outdated
config: WalletStorageConfig | ||
credentials: { | ||
[key: string]: unknown | ||
} |
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.
I think we can type this more strictly as this is for postgres only? So add the config and credential parameters strictly
Signed-off-by: Sai Ranjit Tummalapalli <[email protected]>
Signed-off-by: Sai Ranjit Tummalapalli <[email protected]>
Signed-off-by: Sai Ranjit Tummalapalli <[email protected]>
…jitAW/aries-framework-javascript into feat/add-postgres-support
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.
Nice, this looks go to me!
I'll leave to @blu3beri to give the final review on the loading of the postgres library
Signed-off-by: Sai Ranjit Tummalapalli <[email protected]>
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
Signed-off-by: Sai Ranjit Tummalapalli [email protected]
Related issue: #553