Skip to content

Commit

Permalink
fix(anoncreds): include prover_did for legacy indy (openwallet-founda…
Browse files Browse the repository at this point in the history
…tion#1342)

Signed-off-by: Ariel Gentile <gentilester@gmail.com>
  • Loading branch information
genaris committed Feb 24, 2023
1 parent da8f2ad commit d38ecb1
Show file tree
Hide file tree
Showing 8 changed files with 20 additions and 4 deletions.
2 changes: 1 addition & 1 deletion DEVREADME.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ GENESIS_TXN_PATH=network/genesis/local-genesis.txn TEST_AGENT_PUBLIC_DID_SEED=00
Locally, you might want to run the tests without postgres tests. You can do that by ignoring the tests:

```sh
yarn test --testPathIgnorePatterns ./packages/core/tests/postgres.e2e.test.ts -u
yarn test --testPathIgnorePatterns ./packages/indy-sdk/tests/postgres.e2e.test.ts -u
```

In case you run into trouble running the tests, e.g. complaining about snapshots not being up-to-date, you can try and remove the data stored for the indy-client. On a Unix system with default setup you achieve this by running:
Expand Down
4 changes: 4 additions & 0 deletions packages/anoncreds-rs/tests/indy-flow.test.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import type { AnonCredsCredentialRequest } from '@aries-framework/anoncreds'
import type { Wallet } from '@aries-framework/core'

import {
Expand Down Expand Up @@ -225,6 +226,9 @@ describe('Legacy indy format services using anoncreds-rs', () => {
},
})

// Make sure the request contains a prover_did field
expect((requestAttachment.getDataAsJson() as AnonCredsCredentialRequest).prover_did).toBeDefined()

// Issuer processes and accepts request
await legacyIndyCredentialFormatService.processRequest(agentContext, {
credentialRecord: issuerCredentialRecord,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ import {
createAndLinkAttachmentsToPreview,
} from '../utils/credential'
import { AnonCredsCredentialMetadataKey, AnonCredsCredentialRequestMetadataKey } from '../utils/metadata'
import { generateLegacyProverDidLikeString } from '../utils/proverDid'

const INDY_CRED_ABSTRACT = 'hlindy/cred-abstract@v2.0'
const INDY_CRED_REQUEST = 'hlindy/cred-req@v2.0'
Expand Down Expand Up @@ -244,6 +245,12 @@ export class LegacyIndyCredentialFormatService implements CredentialFormatServic
linkSecretId: credentialFormats?.indy?.linkSecretId,
})

if (!credentialRequest.prover_did) {
// We just generate a prover did like string, as it's not used for anything and we don't need
// to prove ownership of the did. It's deprecated in AnonCreds v1, but kept for backwards compatibility
credentialRequest.prover_did = generateLegacyProverDidLikeString()
}

credentialRecord.metadata.set<AnonCredsCredentialRequestMetadata>(
AnonCredsCredentialRequestMetadataKey,
credentialRequestMetadata
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import type { AnonCredsCredentialRequest } from '../../models'

import {
CredentialState,
CredentialExchangeRecord,
Expand Down Expand Up @@ -187,6 +189,9 @@ describe('Legacy indy format services', () => {
offerAttachment,
})

// Make sure the request contains a prover_did field
expect((requestAttachment.getDataAsJson() as AnonCredsCredentialRequest).prover_did).toBeDefined()

// Issuer processes and accepts request
await indyCredentialFormatService.processRequest(agentContext, {
credentialRecord: issuerCredentialRecord,
Expand Down
1 change: 1 addition & 0 deletions packages/anoncreds/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,4 @@ export { AnonCredsModule } from './AnonCredsModule'
export { AnonCredsModuleConfig, AnonCredsModuleConfigOptions } from './AnonCredsModuleConfig'
export { AnonCredsApi } from './AnonCredsApi'
export * from './AnonCredsApiOptions'
export { generateLegacyProverDidLikeString } from './utils/proverDid'
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,13 @@ import type {
IndyProofRequest,
} from 'indy-sdk'

import { AnonCredsLinkSecretRepository } from '@aries-framework/anoncreds'
import { AnonCredsLinkSecretRepository, generateLegacyProverDidLikeString } from '@aries-framework/anoncreds'
import { AriesFrameworkError, injectable, inject, utils } from '@aries-framework/core'

import { IndySdkError, isIndyError } from '../../error'
import { IndySdk, IndySdkSymbol } from '../../types'
import { assertIndySdkWallet } from '../../utils/assertIndySdkWallet'
import { getIndySeqNoFromUnqualifiedCredentialDefinitionId } from '../utils/identifiers'
import { generateLegacyProverDidLikeString } from '../utils/proverDid'
import {
indySdkCredentialDefinitionFromAnonCreds,
indySdkRevocationRegistryDefinitionFromAnonCreds,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,12 @@ import type {
} from '@aries-framework/anoncreds'
import type { AgentContext } from '@aries-framework/core'

import { generateLegacyProverDidLikeString } from '@aries-framework/anoncreds'
import { injectable, AriesFrameworkError, inject } from '@aries-framework/core'

import { IndySdkError, isIndyError } from '../../error'
import { IndySdk, IndySdkSymbol } from '../../types'
import { assertIndySdkWallet } from '../../utils/assertIndySdkWallet'
import { generateLegacyProverDidLikeString } from '../utils/proverDid'
import { createTailsReader } from '../utils/tails'
import { indySdkSchemaFromAnonCreds } from '../utils/transform'

Expand Down

0 comments on commit d38ecb1

Please sign in to comment.