• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

hyperledger / identus-cloud-agent / 9071512888

14 May 2024 12:04AM UTC coverage: 51.631% (+2.3%) from 49.381%
9071512888

Pull #1043

shotexa
Add changes

Signed-off-by: Shota Jolbordi <shota.jolbordi@iohk.io>
Pull Request #1043: refactor: remove usage of secp256r1 and demos

7344 of 14224 relevant lines covered (51.63%)

1.03 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

35.29
/pollux/core/src/main/scala/org/hyperledger/identus/pollux/core/model/IssueCredentialRecord.scala
1
package org.hyperledger.identus.pollux.core.model
2

3
import org.hyperledger.identus.castor.core.model.did.CanonicalPrismDID
4
import org.hyperledger.identus.mercury.protocol.issuecredential.{
5
  IssueCredential,
6
  IssueCredentialIssuedFormat,
7
  IssueCredentialOfferFormat,
8
  IssueCredentialRequestFormat,
9
  OfferCredential,
10
  RequestCredential
11
}
12
import org.hyperledger.identus.pollux.anoncreds.AnoncredCredentialRequestMetadata
13
import org.hyperledger.identus.pollux.core.model.IssueCredentialRecord.*
14

15
import java.time.Instant
16
import java.time.temporal.ChronoUnit
17
import java.util.UUID
18

19
final case class IssueCredentialRecord(
20
    id: DidCommID,
21
    createdAt: Instant,
22
    updatedAt: Option[Instant],
23
    thid: DidCommID,
24
    schemaUri: Option[String],
25
    credentialDefinitionId: Option[UUID],
26
    credentialDefinitionUri: Option[String],
27
    credentialFormat: CredentialFormat,
28
    role: Role,
29
    subjectId: Option[String],
30
    validityPeriod: Option[Double] = None,
×
31
    automaticIssuance: Option[Boolean],
32
    protocolState: ProtocolState,
33
    offerCredentialData: Option[OfferCredential],
34
    requestCredentialData: Option[RequestCredential],
35
    anonCredsRequestMetadata: Option[AnoncredCredentialRequestMetadata],
36
    issueCredentialData: Option[IssueCredential],
37
    issuedCredentialRaw: Option[String],
38
    issuingDID: Option[CanonicalPrismDID],
39
    metaRetries: Int,
40
    metaNextRetry: Option[Instant],
41
    metaLastFailure: Option[String],
42
) {
43
  def offerCredentialFormatAndData: Option[(IssueCredentialOfferFormat, OfferCredential)] =
2✔
44
    offerCredentialData.map { data =>
2✔
45
      credentialFormat.match
46
        case CredentialFormat.JWT       => (IssueCredentialOfferFormat.JWT, data)
2✔
47
        case CredentialFormat.AnonCreds => (IssueCredentialOfferFormat.Anoncred, data)
×
48
    }
49
  def requestCredentialFormatAndData: Option[(IssueCredentialRequestFormat, RequestCredential)] =
×
50
    requestCredentialData.map { data =>
×
51
      credentialFormat.match
52
        case CredentialFormat.JWT       => (IssueCredentialRequestFormat.JWT, data)
×
53
        case CredentialFormat.AnonCreds => (IssueCredentialRequestFormat.Anoncred, data)
×
54
    }
55
  def issuedCredentialFormatAndData: Option[(IssueCredentialIssuedFormat, IssueCredential)] =
×
56
    issueCredentialData.map { data =>
×
57
      credentialFormat.match
58
        case CredentialFormat.JWT       => (IssueCredentialIssuedFormat.JWT, data)
×
59
        case CredentialFormat.AnonCreds => (IssueCredentialIssuedFormat.Anoncred, data)
×
60
    }
61

62
  def withTruncatedTimestamp(unit: ChronoUnit = ChronoUnit.MICROS): IssueCredentialRecord =
2✔
63
    copy(
64
      createdAt = createdAt.truncatedTo(unit),
2✔
65
      updatedAt = updatedAt.map(_.truncatedTo(unit)),
×
66
      metaNextRetry = metaNextRetry.map(_.truncatedTo(unit)),
2✔
67
    )
68
}
69

70
final case class ValidIssuedCredentialRecord(
71
    id: DidCommID,
72
    issuedCredentialRaw: Option[String],
73
    credentialFormat: CredentialFormat,
74
    subjectId: Option[String]
75
)
76

77
final case class ValidFullIssuedCredentialRecord(
78
    id: DidCommID,
79
    issuedCredential: Option[IssueCredential],
80
    credentialFormat: CredentialFormat,
81
    schemaUri: Option[String],
82
    credentialDefinitionUri: Option[String],
83
    subjectId: Option[String]
84
)
85

86
object IssueCredentialRecord {
87

88
  enum Role:
89
    case Issuer extends Role
90
    case Holder extends Role
91

92
  enum ProtocolState:
93
    // Issuer has created an offer in a database, but it has not been sent yet (in Issuer DB)
94
    case OfferPending extends ProtocolState
95
    // Issuer has sent an offer to a holder (in Issuer DB)
96
    case OfferSent extends ProtocolState
97
    // Holder has received an offer (In Holder DB)
98
    case OfferReceived extends ProtocolState
99

100
    // Holder has reviewed and approved the offer (in Holder DB)
101
    case RequestPending extends ProtocolState
102
    // Holder has generated the request that that includes the subjectID and proofs (in Holder DB)
103
    case RequestGenerated extends ProtocolState
104
    // Holder has sent a request to a an Issuer (in Holder DB)
105
    case RequestSent extends ProtocolState
106
    // Issuer has received a request from the holder (In Issuer DB)
107
    case RequestReceived extends ProtocolState
108

109
    // Holder declined the offer sent by Issuer (Holder DB) or Issuer declined the proposal sent by Holder (Issuer DB)
110
    case ProblemReportPending extends ProtocolState
111
    // Holder has sent problem report to Issuer (Holder DB) or Issuer has sent problem report to Holder (Issuer DB)
112
    case ProblemReportSent extends ProtocolState
113
    // Holder has received problem resport from Issuer (Holder DB) or Issuer has received problem report from Holder (Issuer DB)
114
    case ProblemReportReceived extends ProtocolState
115

116
    // Issuer has "accepted" a credential request received from a Holder (Issuer DB)
117
    case CredentialPending extends ProtocolState
118
    // Issuer has generated (signed) the credential and is now ready to send it to the Holder (Issuer DB)
119
    case CredentialGenerated extends ProtocolState
120
    // The credential has been sent to the holder (In Issuer DB)
121
    case CredentialSent extends ProtocolState
122
    // Holder has received the credential (In Holder DB)
123
    case CredentialReceived extends ProtocolState
124

125
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc