Skip to content

Commit

Permalink
add all tests cases (#18)
Browse files Browse the repository at this point in the history
* add all tests cases

* fixes

* negative test cases

* outline missing tests

* all jose tests working

* add all test cases

* all working
  • Loading branch information
decentralgabe authored Dec 16, 2024
1 parent a3d7321 commit 002d730
Show file tree
Hide file tree
Showing 36 changed files with 423 additions and 171 deletions.
3 changes: 2 additions & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ jobs:
run: npm run lint
test-node:
if: ${{ github.event_name == 'schedule' ||
github.event_name == 'workflow_dispatch' }}
github.event_name == 'workflow_dispatch'||
github.event_name == 'push' }}
runs-on: ubuntu-latest
timeout-minutes: 15
strategy:
Expand Down
20 changes: 15 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,15 +49,25 @@ This file defines the structure of the test suite. It exports two main objects:
2. `TestMapping`: A mapping of test names to their configurations. Each test configuration includes:
- `number`: A unique identifier for the test
- `input_file`: The name of the input file to be used, representing:
- For issuance, a JSON unsigned Verifiable Credential or Presentation
- For issuance, a JSON unsigned Verifiable Credential or Presentation (a .json file)
- For verification, a signed Verifiable Credential or Presentation, encoded as a JWT string (JOSE),
Base64 string (COSE), or SD-JWT string (Selective Disclosure JWT)
- `key_file`: The name of the key file to be used, representing a Verification Method
Base64 string (COSE), or SD-JWT string (Selective Disclosure JWT) (a .txt file)
- `key_file`: The name of the key file to be used, representing a Verification Method (a .json file)
- `fn`: The function being tested either `issue` or `verify`
- `disclosure_paths`: An array of paths to be disclosed in a Selective Disclosure JWT (e.g. `["issuer", "validFrom", "credentialSubject.id"]`)
- `disclosure_paths`: An array of paths to be disclosed in a Selective Disclosure JWT (e.g. a JSON array like
`["issuer", "validFrom", "credentialSubject.id"]`)
- `feature`: The function being tested, one of `credential_jose`, `credential_cose`, `credential_sdjwt`,
`presentation_jose`, `presentation_cose`, or `presentation_sdjwt`
- `expected_result`: The expected outcome of the test
- `expected_result`: The expected outcome of the test written to a file of the following format:

```json
{
"result": "success",
"data": "..."
}
```
Where `result` is one of `success`, `failure`, `indeterminate`, or `error`, and `data` is a string containing a
signed and encoded credential or presentation.

### test-runner.js

Expand Down
2 changes: 1 addition & 1 deletion implementations/independent/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ module github.com/w3c/vc-test-suite-template
go 1.23.3

require (
github.com/decentralgabe/vc-jose-cose-go v0.0.0-20241210221305-008380bea39c
github.com/decentralgabe/vc-jose-cose-go v0.0.0-20241216012356-6bf57d050c12
github.com/goccy/go-json v0.10.3
github.com/lestrrat-go/jwx/v2 v2.1.3
github.com/pkg/errors v0.9.1
Expand Down
4 changes: 2 additions & 2 deletions implementations/independent/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ github.com/btcsuite/btcd/btcec/v2 v2.3.4/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/decentralgabe/vc-jose-cose-go v0.0.0-20241210221305-008380bea39c h1:Xpa6CwuulzHDq2Pme8q+Myw/3DXRy6MkeqtBd3r9VSY=
github.com/decentralgabe/vc-jose-cose-go v0.0.0-20241210221305-008380bea39c/go.mod h1:ZOHYH9iQGJdawl1+iSfzrfQQxPHrDVL/rpZRc5z9okI=
github.com/decentralgabe/vc-jose-cose-go v0.0.0-20241216012356-6bf57d050c12 h1:eLh0ogePK0KeJo89twWOk+WJg7BDvFH6hKFo/88UdAw=
github.com/decentralgabe/vc-jose-cose-go v0.0.0-20241216012356-6bf57d050c12/go.mod h1:ZOHYH9iQGJdawl1+iSfzrfQQxPHrDVL/rpZRc5z9okI=
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 h1:rpfIENRNNilwHwZeG5+P150SMrnNEcHYvcCuK6dPZSg=
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0=
github.com/fxamacker/cbor/v2 v2.5.0 h1:oHsG0V/Q6E/wqTS2O1Cozzsy69nqCiguo5Q1a1ADivE=
Expand Down
29 changes: 16 additions & 13 deletions implementations/independent/issue.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
"github.com/decentralgabe/vc-jose-cose-go/credential"
"github.com/decentralgabe/vc-jose-cose-go/jose"
"github.com/decentralgabe/vc-jose-cose-go/sdjwt"
"github.com/decentralgabe/vc-jose-cose-go/validation"
"github.com/goccy/go-json"
"github.com/lestrrat-go/jwx/v2/jwk"
"os"
Expand Down Expand Up @@ -47,33 +48,35 @@ func Issue(inputFile, keyFile string, disclosures []string, feature Feature) (*R
}

func IssueCredential(credBytes []byte, disclosures []string, keyBytes []byte, feature Feature) (*Result, error) {
var cred credential.VerifiableCredential
if err := json.Unmarshal(credBytes, &cred); err != nil {
return nil, fmt.Errorf("error unmarshaling credential: %v", err)
// Unmarshal the payload into VerifiableCredential
cred, err := validation.DecodeVC(credBytes)
if err != nil {
return nil, fmt.Errorf("failed to unmarshal VerifiableCredential: %w", err)
}

var vm cid.VerificationMethod
if err := json.Unmarshal(keyBytes, &vm); err != nil {
return nil, fmt.Errorf("error unmarshaling verifcation method: %v", err)
return nil, fmt.Errorf("error unmarshaling verification method: %v", err)
}

switch feature {
case JOSECredential:
return IssueJOSECredential(cred, vm.SecretKeyJWK)
return IssueJOSECredential(*cred, vm.SecretKeyJWK)
case COSECredential:
return IssueCOSECredential(cred, vm.SecretKeyJWK)
return IssueCOSECredential(*cred, vm.SecretKeyJWK)
case SDJWTCredential:
return IssueSDJWTCredential(cred, disclosures, vm.SecretKeyJWK)
return IssueSDJWTCredential(*cred, disclosures, vm.SecretKeyJWK)
default:
fmt.Printf("unsupported credential feature: %s\n", feature)
return &Result{Result: Indeterminate}, nil
}
}

func IssuePresentation(presBytes []byte, disclosures []string, keyBytes []byte, feature Feature) (*Result, error) {
var pres credential.VerifiablePresentation
if err := json.Unmarshal(presBytes, &pres); err != nil {
return nil, fmt.Errorf("error unmarshaling presentation: %v", err)
// Unmarshal the payload into VerifiablePresentation
pres, err := validation.DecodeVP(presBytes)
if err != nil {
return nil, fmt.Errorf("failed to unmarshal VerifiablePresentation: %w", err)
}

var vm cid.VerificationMethod
Expand All @@ -83,11 +86,11 @@ func IssuePresentation(presBytes []byte, disclosures []string, keyBytes []byte,

switch feature {
case JOSEPresentation:
return IssueJOSEPresentation(pres, vm.SecretKeyJWK)
return IssueJOSEPresentation(*pres, vm.SecretKeyJWK)
case COSEPresentation:
return IssueCOSEPresentation(pres, vm.SecretKeyJWK)
return IssueCOSEPresentation(*pres, vm.SecretKeyJWK)
case SDJWTPresentation:
return IssueSDJWTPresentation(pres, disclosures, vm.SecretKeyJWK)
return IssueSDJWTPresentation(*pres, disclosures, vm.SecretKeyJWK)
default:
fmt.Printf("unsupported presentation feature: %s\n", feature)
return &Result{Result: Indeterminate}, nil
Expand Down
166 changes: 116 additions & 50 deletions tests/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,125 +74,191 @@ Following, are a set of test cases which describe how the statements are to be t

#### Issuance Tests

1. Basic Credential Issuance
1. JWT Basic Credential Issuance
* Input: Minimal credential with only required fields (type, issuer, credentialSubject)
* Format: jose
* Covers: 1, 4
* Covers: 1, 4, 27, 28, 34

2. Credential with All Optional Fields
2. JWT Credential Issuance with All Optional Fields
* Input: Credential containing all optional fields (evidence, termsOfUse, etc.)
* Format: jose
* Covers: 1, 4
* Covers: 1, 4, 27, 28, 34

3. Basic Presentation Issuance
3. JWT Basic Presentation Issuance
* Input: Presentation containing single credential
* Format: jose
* Covers: 5, 7, 8
* Covers: 5, 7, 8, 27, 28, 34

4. Complex Presentation Issuance
4. JWT Complex Presentation Issuance
* Input: Presentation containing multiple credentials with different types
* Format: jose
* Covers: 5, 7, 8
* Covers: 5, 7, 8, 13, 14, 20, 21, 27, 28, 34

5. JWT Issuance With Unknown Extensions
* Input: Unsigned credential with unknown extensions
* Format: jose
* Covers: 26, 27, 28, 31, 33

#### Verification Tests

5. Basic Credential Verification
6. JWT Basic Credential Verification
* Input: Signed minimal credential
* Format: jose
* Covers: 2, 3, 29, 30, 31, 32
* Covers: 2, 3, 27, 28, 29, 30, 31, 32, 34

6. Presentation Verification
7. JWT Presentation Verification
* Input: Signed presentation with multiple credentials
* Format: jose
* Covers: 6, 7, 8
* Covers: 6, 7, 8, 27, 28, 34

7. Issuer Match Verification
8. JWT Issuer Match Verification
* Input: Credential with string issuer and matching iss claim
* Format: jose
* Covers: 24, 25
* Covers: 24, 25, 27, 28, 34

9. JWT Verification With Unknown Extensions
* Input: Signed JOSE credential with unknown extensions
* Format: jose
* Covers: 26, 27, 28, 31, 33

10. JWT Unsecured Credential Verification
* Input: Unsecured credential with no integrity protection
* Format: jose
* Covers: 3

11. JWT Unsecured Presentation Verification
* Input: Unsecured presentation with no integrity protection
* Format: jose
* Covers: 3
*
12. JWT Credential with an Invalid Signature
* Input: Credential with an invalid signature
* Format: jose
* Covers: 1, 2

13. JWT Credential with an Invalid Media Type
* Input: Credential with an invalid media type
* Format: jose
* Covers: 23, 29

14. JWT Presentation with an Invalid Media Type
* Input: Presentation with an invalid media type
* Format: jose
* Covers: 23, 29

8. URL Method Resolution
* Input: Credential using URL identifiers without iss
15. JWT Credential with vc and vp Claims
* Input: Credential with vc and vp claims
* Format: jose
* Covers: 27, 28
* Covers: 4

16. JWT Presentation with Invalid Credentials
* Input: Presentation with invalid credentials (unsecured, wrong type)
* Format: jose
* Covers: 7, 8

### SD-JWT Tests

#### Issuance Tests

9. Basic SD-JWT Credential
17. Basic SD-JWT Credential Issuance
* Input: Credential with simple selective disclosure claims
* Format: sd-jwt
* Covers: 9
* Covers: 9, 27, 28, 35

10. Complex SD-JWT Credential
18. Complex SD-JWT Credential Issuance
* Input: Credential with nested selective disclosure claims
* Format: sd-jwt
* Covers: 9
* Covers: 9, 27, 28, 35

11. SD-JWT Presentation
19. SD-JWT Presentation Issuance
* Input: Presentation containing SD-JWT credentials
* Format: sd-jwt
* Covers: 11, 13, 14

* Covers: 11, 13, 14, 27, 28, 35
#### Verification Tests

12. Basic SD-JWT Verification
20. Basic SD-JWT Credential Verification
* Input: SD-JWT credential with mix of disclosed/undisclosed claims
* Format: sd-jwt
* Covers: 10, 26, 31
* Covers: 10, 26, 27, 28, 31, 35

13. Complex SD-JWT Verification
21. Complex SD-JWT Credential Verification
* Input: SD-JWT credential with nested disclosures
* Format: sd-jwt
* Covers: 10, 26, 31
* Covers: 10, 26, 27, 28, 31, 35

14. SD-JWT Presentation Verification
22. SD-JWT Presentation Verification
* Input: Presentation with multiple SD-JWT credentials
* Format: sd-jwt
* Covers: 12, 13, 14
* Covers: 12, 13, 14, 27, 28, 35

23. SD-JWT Credential With an Invalid Signature
* Input: Credential with an invalid signature
* Format: sd-jwt
* Covers: 9, 10

24. SD-JWT Credential with an Invalid Media Type
* Input: Credential with an invalid media type
* Format: sd-jwt
* Covers: 23, 29

25. SD-JWT Presentation with an Invalid Media Type
* Input: Presentation with an invalid media type
* Format: sd-jwt
* Covers: 23, 29

26. SD-JWT Presentation with Invalid Credentials
* Input: Presentation with invalid credentials (unsecured, wrong type)
* Format: sd-jwt
* Covers: 13, 14

### COSE Tests

#### Issuance Tests

15. Basic COSE Credential
27. Basic COSE Credential
* Input: Standard credential with required fields
* Format: cose
* Covers: 15, 22

16. COSE Presentation
28. COSE Presentation
* Input: Presentation containing COSE credentials
* Format: cose
* Covers: 18, 20, 21
* Covers: 18, 20, 21, 27, 28

#### Verification Tests

17. Basic COSE Verification
29. Basic COSE Credential Verification
* Input: Signed COSE credential
* Format: cose
* Covers: 16, 29, 30, 31, 32
* Covers: 16, 27, 28, 29, 30, 31, 32

18. Base64 Encoding Verification
30. COSE Credential Verification Incorrect Encoding
* Input: COSE credential in presentation with base64 encoding
* Format: cose
* Covers: 17, 20, 21
* Covers: 17, 20, 21, 27, 28

19. COSE Presentation Verification
31. COSE Presentation Verification
* Input: Presentation with multiple COSE credentials
* Format: cose
* Covers: 19, 20, 21

### Cross-Format Tests
* Covers: 19, 20, 21, 27, 28

#### Verification Tests
32. COSE Credential With an Invalid Signature
* Input: Credential with an invalid signature
* Format: cose
* Covers: 15, 16

20. Multi-format Presentation
* Input: Presentation containing JWT, SD-JWT, and COSE credentials
* Format: jose, cose, sd-jwt
* Covers: 7, 8, 13, 14, 20, 21
33. COSE Credential with an Invalid Media Type
* Input: Credential with an invalid media type
* Format: cose
* Covers: 23, 29

21. Extension Processing
* Input: Credentials of different formats with unknown extensions
* Format: jose, cose, sd-jwt
* Covers: 26, 31, 33
34. COSE Presentation with an Invalid Media Type
* Input: Presentation with an invalid media type
* Format: cose
* Covers: 23, 29
*
35. COSE Presentation with Invalid Credentials
* Input: Presentation with invalid credentials (unsecured, wrong type)
* Format: cose
* Covers: 23, 29
1 change: 1 addition & 0 deletions tests/input/credential-cose-bad-media-type.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0oRYSKQBOCIDaHZlcnkvYmFkBFgrOTZxQm5EcHZTNng4WVNDSF94bW5MbFhaTWtEaEhCcjhsajk5dTVhb2c3cxBqcmVhbGx5L2JhZKBZAfJ7IkBjb250ZXh0IjpbImh0dHBzOi8vd3d3LnczLm9yZy9ucy9jcmVkZW50aWFscy92MiIsImh0dHBzOi8vd3d3LnczLm9yZy9ucy9jcmVkZW50aWFscy9leGFtcGxlcy92MiJdLCJ0eXBlIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwiRXhhbXBsZUFsdW1uaUNyZWRlbnRpYWwiXSwiaWQiOiJodHRwOi8vdW5pdmVyc2l0eS5leGFtcGxlL2NyZWRlbnRpYWxzLzE4NzIiLCJpc3N1ZXIiOiJodHRwczovL2V4YW1wbGUuaXNzdWVyL3ZjLWpvc2UtY29zZSIsInZhbGlkRnJvbSI6IjIwMTAtMDEtMDFUMTk6MjM6MjRaIiwiY3JlZGVudGlhbFN1YmplY3QiOnsiZGVncmVlIjp7Im5hbWUiOiJCYWNoZWxvciBvZiBTY2llbmNlIGFuZCBBcnRzIiwidHlwZSI6IkJhY2hlbG9yRGVncmVlIn0sImlkIjoiZGlkOmV4YW1wbGU6MTIzIn0sImNyZWRlbnRpYWxTY2hlbWEiOnsiaWQiOiJodHRwczovL2V4YW1wbGUub3JnL2V4YW1wbGVzL2RlZ3JlZS5qc29uIiwidHlwZSI6Ikpzb25TY2hlbWEifX1YYPTKiZkxA1XUBgMqJ/eX5cpijouAd2ButW2pHrXxSAn7RwysI8wVcEBm29St1db5pWqHPMBE+Fxmeh6Qmw/V5tY25w9g36J4bkd3MmbmFHo3dXUiADBCI/Ae+b8WxKltQg
1 change: 1 addition & 0 deletions tests/input/credential-cose-bad-signature.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0oRYVqQBJwNuYXBwbGljYXRpb24vdmMEWCsyYU9IYVF4c1dWVDRtTHNVa2R0bENuVVYtYXUwQkJSLTV5UFlhUGFDYzVrEHNhcHBsaWNhdGlvbi92Yytjb3NloFkB8nsiQGNvbnRleHQiOlsiaHR0cHM6Ly93d3cudzMub3JnL25zL2NyZWRlbnRpYWxzL3YyIiwiaHR0cHM6Ly93d3cudzMub3JnL25zL2NyZWRlbnRpYWxzL2V4YW1wbGVzL3YyIl0sInR5cGUiOlsiVmVyaWZpYWJsZUNyZWRlbnRpYWwiLCJFeGFtcGxlQWx1bW5pQ3JlZGVudGlhbCJdLCJpZCI6Imh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMTg3MiIsImlzc3VlciI6Imh0dHBzOi8vZXhhbXBsZS5pc3N1ZXIvdmMtam9zZS1jb3NlIiwidmFsaWRGcm9tIjoiMjAxMC0wMS0wMVQxOToyMzoyNFoiLCJjcmVkZW50aWFsU3ViamVjdCI6eyJkZWdyZWUiOnsibmFtZSI6IkJhY2hlbG9yIG9mIFNjaWVuY2UgYW5kIEFydHMiLCJ0eXBlIjoiQmFjaGVsb3JEZWdyZWUifSwiaWQiOiJkaWQ6ZXhhbXBsZToxMjMifSwiY3JlZGVudGlhbFNjaGVtYSI6eyJpZCI6Imh0dHBzOi8vZXhhbXBsZS5vcmcvZXhhbXBsZXMvZGVncmVlLmpzb24iLCJ0eXBlIjoiSnNvblNjaGVtYSJ9fVhAtLDz68qCDkCrNpejCv8h3QI4ArJlsbea2TqHGAGAjHAvCvG+mntYFHN4ONiqhn/U8NHUQ+h8e5SY1gI7o7R1BA
1 change: 1 addition & 0 deletions tests/input/credential-cose-minimal-not-base64.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
d2845856a40126036e6170706c69636174696f6e2f766304582b3733766f4d58464e6d4e6c4f4570755943534a6c6838654e30647363796b6f4f366742756b67525331755510736170706c69636174696f6e2f76632b636f7365a05901f27b2240636f6e74657874223a5b2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f7632222c2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f6578616d706c65732f7632225d2c2274797065223a5b2256657269666961626c6543726564656e7469616c222c224578616d706c65416c756d6e6943726564656e7469616c225d2c226964223a22687474703a2f2f756e69766572736974792e6578616d706c652f63726564656e7469616c732f31383732222c22697373756572223a2268747470733a2f2f6578616d706c652e6973737565722f76632d6a6f73652d636f7365222c2276616c696446726f6d223a22323031302d30312d30315431393a32333a32345a222c2263726564656e7469616c5375626a656374223a7b22646567726565223a7b226e616d65223a2242616368656c6f72206f6620536369656e636520616e642041727473222c2274797065223a2242616368656c6f72446567726565227d2c226964223a226469643a6578616d706c653a313233227d2c2263726564656e7469616c536368656d61223a7b226964223a2268747470733a2f2f6578616d706c652e6f72672f6578616d706c65732f6465677265652e6a736f6e222c2274797065223a224a736f6e536368656d61227d7d5840b375b558df37c95bbf1e813260ccbb4dc9ae6fdccbe793c39df731e721b8d814ded20750f84d15f41dc1d60319cadf5d0c4199549ca777cbf3b5656bedde0a93
File renamed without changes.
1 change: 1 addition & 0 deletions tests/input/credential-jose-bad-media-type.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
eyJhbGciOiJFZERTQSIsImN0eSI6ImJhZCtjdHkiLCJraWQiOiIyYU9IYVF4c1dWVDRtTHNVa2R0bENuVVYtYXUwQkJSLTV5UFlhUGFDYzVrIiwidHlwIjoiYmFkK3R5cCJ9.eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiY3JlZGVudGlhbFNjaGVtYSI6eyJpZCI6Imh0dHBzOi8vZXhhbXBsZS5vcmcvZXhhbXBsZXMvZGVncmVlLmpzb24iLCJ0eXBlIjoiSnNvblNjaGVtYSJ9LCJjcmVkZW50aWFsU3ViamVjdCI6eyJkZWdyZWUiOnsibmFtZSI6IkJhY2hlbG9yIG9mIFNjaWVuY2UgYW5kIEFydHMiLCJ0eXBlIjoiQmFjaGVsb3JEZWdyZWUifSwiaWQiOiJkaWQ6ZXhhbXBsZToxMjMifSwiaWF0IjoiMjAxMC0wMS0wMVQxOToyMzoyNFoiLCJpZCI6Imh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMTg3MiIsImlzcyI6Imh0dHBzOi8vZXhhbXBsZS5pc3N1ZXIvdmMtam9zZS1jb3NlIiwiaXNzdWVyIjoiaHR0cHM6Ly9leGFtcGxlLmlzc3Vlci92Yy1qb3NlLWNvc2UiLCJqdGkiOiJodHRwOi8vdW5pdmVyc2l0eS5leGFtcGxlL2NyZWRlbnRpYWxzLzE4NzIiLCJ0eXBlIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwiRXhhbXBsZUFsdW1uaUNyZWRlbnRpYWwiXSwidmFsaWRGcm9tIjoiMjAxMC0wMS0wMVQxOToyMzoyNFoifQ.w3QGXwK2TGiE25U4Ul55i4Bq4hS0RC9dqa9uKHLSQaOjtIi4eprUBgAXt6wxgEmnhM-SKrTzKfeOipPF-vESDA
1 change: 1 addition & 0 deletions tests/input/credential-jose-bad-signature.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
eyJhbGciOiJFZERTQSIsImN0eSI6InZjIiwia2lkIjoiMmFPSGFReHNXVlQ0bUxzVWtkdGxDblVWLWF1MEJCUi01eVBZYVBhQ2M1ayIsInR5cCI6InZjK2p3dCJ9.eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiY3JlZGVudGlhbFNjaGVtYSI6eyJpZCI6Imh0dHBzOi8vZXhhbXBsZS5vcmcvZXhhbXBsZXMvZGVncmVlLmpzb24iLCJ0eXBlIjoiSnNvblNjaGVtYSJ9LCJjcmVkZW50aWFsU3ViamVjdCI6eyJkZWdyZWUiOnsibmFtZSI6IkJhY2hlbG9yIG9mIFNjaWVuY2UgYW5kIEFydHMiLCJ0eXBlIjoiQmFjaGVsb3JEZWdyZWUifSwiaWQiOiJkaWQ6ZXhhbXBsZToxMjMifSwiaWF0IjoiMjAxMC0wMS0wMVQxOToyMzoyNFoiLCJpZCI6Imh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMTg3MiIsImlzcyI6Imh0dHBzOi8vZXhhbXBsZS5pc3N1ZXIvdmMtam9zZS1jb3NlIiwiaXNzdWVyIjoiaHR0cHM6Ly9leGFtcGxlLmlzc3Vlci92Yy1qb3NlLWNvc2UiLCJqdGkiOiJodHRwOi8vdW5pdmVyc2l0eS5leGFtcGxlL2NyZWRlbnRpYWxzLzE4NzIiLCJ0eXBlIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwiRXhhbXBsZUFsdW1uaUNyZWRlbnRpYWwiXSwidmFsaWRGcm9tIjoiMjAxMC0wMS0wMVQxOToyMzoyNFoifQ.CAJ3jlPCjXpZyAr5NiKs71n_mfFSghy-cPjIRu96mF46XnNZ5QaqGvLrtHjI2pwbG055JDSPGFU2j9X0W3Kfuw
Loading

0 comments on commit 002d730

Please sign in to comment.