Skip to content

Commit f9492da

Browse files
committed
refactor(credential): add utility to extract proof
1 parent 018b077 commit f9492da

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

credential/errors.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ const (
88
ErrExpired MessageError = "verifiable credential expired"
99
ErrIssued MessageError = "verifiable credential issued in the future"
1010
ErrMissingProof MessageError = "missing verifiable credential proof"
11+
ErrInvalidProof MessageError = "invalid verifiable credential proof"
1112
ErrMalformedSubject MessageError = "malformed verifiable credential subject"
1213
ErrExpectSingleClaim MessageError = "expect a single verifiable credential claim"
1314
ErrExtractClaim MessageError = "failed to extract claim"

credential/parser.go

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package credential
33
import (
44
"crypto/ecdsa"
55
"fmt"
6+
"github.com/hyperledger/aries-framework-go/component/models/ld/proof"
67
"time"
78

89
"github.com/btcsuite/btcd/btcec"
@@ -75,9 +76,10 @@ func withCheck(vc *verifiable.Credential) (*verifiable.Credential, error) {
7576
return nil, NewVCError(ErrIssued, fmt.Errorf("%s", vc.Issued.Time))
7677
}
7778

78-
if len(vc.Proofs) == 0 {
79-
return nil, NewVCError(ErrMissingProof, nil)
79+
if _, err := extractProof(vc); err != nil {
80+
return nil, err
8081
}
82+
8183
return vc, nil
8284
}
8385

@@ -132,3 +134,15 @@ func extractCustomStringClaim(claim *verifiable.Subject, key string) (string, er
132134
}
133135
return strField, nil
134136
}
137+
138+
func extractProof(vc *verifiable.Credential) (*proof.Proof, error) {
139+
if len(vc.Proofs) == 0 {
140+
return nil, NewVCError(ErrMissingProof, nil)
141+
}
142+
143+
pf, err := proof.NewProof(vc.Proofs[0])
144+
if err != nil {
145+
return nil, NewVCError(ErrInvalidProof, err)
146+
}
147+
return pf, nil
148+
}

0 commit comments

Comments
 (0)