@lindorm/aegis 0.4.3 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +32 -0
- package/__tests__/jwt-interop.test.ts +13 -10
- package/dist/classes/Aegis.d.ts +13 -20
- package/dist/classes/Aegis.d.ts.map +1 -1
- package/dist/classes/Aegis.js +34 -120
- package/dist/classes/Aegis.js.map +1 -1
- package/dist/classes/JweKit.d.ts +1 -0
- package/dist/classes/JweKit.d.ts.map +1 -1
- package/dist/classes/JweKit.js +66 -18
- package/dist/classes/JweKit.js.map +1 -1
- package/dist/classes/JwsKit.d.ts +1 -0
- package/dist/classes/JwsKit.d.ts.map +1 -1
- package/dist/classes/JwsKit.js +60 -18
- package/dist/classes/JwsKit.js.map +1 -1
- package/dist/classes/JwtKit.d.ts +2 -0
- package/dist/classes/JwtKit.d.ts.map +1 -1
- package/dist/classes/JwtKit.js +101 -22
- package/dist/classes/JwtKit.js.map +1 -1
- package/dist/classes/index.d.ts +0 -3
- package/dist/classes/index.d.ts.map +1 -1
- package/dist/classes/index.js +0 -3
- package/dist/classes/index.js.map +1 -1
- package/dist/constants/token-type.d.ts +6 -0
- package/dist/constants/token-type.d.ts.map +1 -0
- package/dist/constants/token-type.js +20 -0
- package/dist/constants/token-type.js.map +1 -0
- package/dist/errors/index.d.ts +0 -3
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/index.js +0 -3
- package/dist/errors/index.js.map +1 -1
- package/dist/guards/index.d.ts +3 -0
- package/dist/guards/index.d.ts.map +1 -0
- package/dist/{utils/private/cose → guards}/index.js +2 -2
- package/dist/guards/index.js.map +1 -0
- package/dist/guards/is-parsed-jws.d.ts +3 -0
- package/dist/guards/is-parsed-jws.d.ts.map +1 -0
- package/dist/guards/is-parsed-jws.js +6 -0
- package/dist/guards/is-parsed-jws.js.map +1 -0
- package/dist/guards/is-parsed-jwt.d.ts +3 -0
- package/dist/guards/is-parsed-jwt.d.ts.map +1 -0
- package/dist/guards/is-parsed-jwt.js +6 -0
- package/dist/guards/is-parsed-jwt.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces/Aegis.d.ts +8 -22
- package/dist/interfaces/Aegis.d.ts.map +1 -1
- package/dist/interfaces/index.d.ts +0 -3
- package/dist/interfaces/index.d.ts.map +1 -1
- package/dist/interfaces/index.js +0 -3
- package/dist/interfaces/index.js.map +1 -1
- package/dist/internal/constants/aegis-profile-keys.d.ts +2 -0
- package/dist/internal/constants/aegis-profile-keys.d.ts.map +1 -0
- package/dist/internal/constants/aegis-profile-keys.js +37 -0
- package/dist/internal/constants/aegis-profile-keys.js.map +1 -0
- package/dist/internal/constants/format.d.ts.map +1 -0
- package/dist/internal/constants/format.js.map +1 -0
- package/dist/{constants/private → internal/constants}/header.d.ts +1 -1
- package/dist/internal/constants/header.d.ts.map +1 -0
- package/dist/{constants/private → internal/constants}/header.js +0 -4
- package/dist/internal/constants/header.js.map +1 -0
- package/dist/internal/utils/compute-jwk-thumbprint.d.ts +4 -0
- package/dist/internal/utils/compute-jwk-thumbprint.d.ts.map +1 -0
- package/dist/internal/utils/compute-jwk-thumbprint.js +25 -0
- package/dist/internal/utils/compute-jwk-thumbprint.js.map +1 -0
- package/dist/internal/utils/compute-typ-header.d.ts +7 -0
- package/dist/internal/utils/compute-typ-header.d.ts.map +1 -0
- package/dist/internal/utils/compute-typ-header.js +68 -0
- package/dist/internal/utils/compute-typ-header.js.map +1 -0
- package/dist/internal/utils/create-hash.d.ts.map +1 -0
- package/dist/{utils/private → internal/utils}/create-hash.js +2 -2
- package/dist/internal/utils/create-hash.js.map +1 -0
- package/dist/internal/utils/extract-aegis-profile.d.ts +7 -0
- package/dist/internal/utils/extract-aegis-profile.d.ts.map +1 -0
- package/dist/internal/utils/extract-aegis-profile.js +34 -0
- package/dist/internal/utils/extract-aegis-profile.js.map +1 -0
- package/dist/internal/utils/extract-claims.d.ts +15 -0
- package/dist/internal/utils/extract-claims.d.ts.map +1 -0
- package/dist/internal/utils/extract-claims.js +201 -0
- package/dist/internal/utils/extract-claims.js.map +1 -0
- package/dist/internal/utils/extract-token-delegation.d.ts +6 -0
- package/dist/internal/utils/extract-token-delegation.d.ts.map +1 -0
- package/dist/internal/utils/extract-token-delegation.js +28 -0
- package/dist/internal/utils/extract-token-delegation.js.map +1 -0
- package/dist/internal/utils/generate-token-id.d.ts +2 -0
- package/dist/internal/utils/generate-token-id.d.ts.map +1 -0
- package/dist/internal/utils/generate-token-id.js +9 -0
- package/dist/internal/utils/generate-token-id.js.map +1 -0
- package/dist/internal/utils/jose-header.d.ts +4 -0
- package/dist/internal/utils/jose-header.d.ts.map +1 -0
- package/dist/{utils/private → internal/utils}/jose-header.js +12 -11
- package/dist/internal/utils/jose-header.js.map +1 -0
- package/dist/internal/utils/jose-signature.d.ts.map +1 -0
- package/dist/{utils/private → internal/utils}/jose-signature.js +3 -3
- package/dist/internal/utils/jose-signature.js.map +1 -0
- package/dist/internal/utils/jwt-payload.d.ts.map +1 -0
- package/dist/{utils/private → internal/utils}/jwt-payload.js +51 -44
- package/dist/internal/utils/jwt-payload.js.map +1 -0
- package/dist/internal/utils/jwt-validate.d.ts.map +1 -0
- package/dist/internal/utils/jwt-validate.js.map +1 -0
- package/dist/internal/utils/jwt-verify.d.ts.map +1 -0
- package/dist/{utils/private → internal/utils}/jwt-verify.js +30 -6
- package/dist/internal/utils/jwt-verify.js.map +1 -0
- package/dist/internal/utils/parse-introspection.d.ts +7 -0
- package/dist/internal/utils/parse-introspection.d.ts.map +1 -0
- package/dist/internal/utils/parse-introspection.js +28 -0
- package/dist/internal/utils/parse-introspection.js.map +1 -0
- package/dist/internal/utils/parse-userinfo.d.ts +5 -0
- package/dist/internal/utils/parse-userinfo.d.ts.map +1 -0
- package/dist/internal/utils/parse-userinfo.js +26 -0
- package/dist/internal/utils/parse-userinfo.js.map +1 -0
- package/dist/internal/utils/resolve-cert-binding.d.ts +4 -0
- package/dist/internal/utils/resolve-cert-binding.d.ts.map +1 -0
- package/dist/internal/utils/resolve-cert-binding.js +30 -0
- package/dist/internal/utils/resolve-cert-binding.js.map +1 -0
- package/dist/internal/utils/token-header.d.ts +4 -0
- package/dist/internal/utils/token-header.d.ts.map +1 -0
- package/dist/{utils/private → internal/utils}/token-header.js +5 -16
- package/dist/internal/utils/token-header.js.map +1 -0
- package/dist/internal/utils/validate-actor.d.ts +3 -0
- package/dist/internal/utils/validate-actor.d.ts.map +1 -0
- package/dist/internal/utils/validate-actor.js +27 -0
- package/dist/internal/utils/validate-actor.js.map +1 -0
- package/dist/internal/utils/validate-crit.d.ts +4 -0
- package/dist/internal/utils/validate-crit.d.ts.map +1 -0
- package/dist/internal/utils/validate-crit.js +55 -0
- package/dist/internal/utils/validate-crit.js.map +1 -0
- package/dist/internal/utils/validate.d.ts.map +1 -0
- package/dist/internal/utils/validate.js.map +1 -0
- package/dist/internal/utils/verify-cert-binding.d.ts +14 -0
- package/dist/internal/utils/verify-cert-binding.d.ts.map +1 -0
- package/dist/internal/utils/verify-cert-binding.js +25 -0
- package/dist/internal/utils/verify-cert-binding.js.map +1 -0
- package/dist/internal/utils/verify-dpop-proof.d.ts +10 -0
- package/dist/internal/utils/verify-dpop-proof.d.ts.map +1 -0
- package/dist/internal/utils/verify-dpop-proof.js +76 -0
- package/dist/internal/utils/verify-dpop-proof.js.map +1 -0
- package/dist/mocks/create-mock-aegis.d.ts +2 -1
- package/dist/mocks/create-mock-aegis.d.ts.map +1 -1
- package/dist/mocks/create-mock-aegis.js +49 -75
- package/dist/mocks/create-mock-aegis.js.map +1 -1
- package/dist/mocks/index.d.ts +1 -1
- package/dist/mocks/index.d.ts.map +1 -1
- package/dist/mocks/index.js +3 -15
- package/dist/mocks/index.js.map +1 -1
- package/dist/types/aegis.d.ts +3 -0
- package/dist/types/aegis.d.ts.map +1 -1
- package/dist/types/claims/act-claim.d.ts +8 -0
- package/dist/types/claims/act-claim.d.ts.map +1 -0
- package/dist/{interfaces/CwsKit.js → types/claims/act-claim.js} +1 -1
- package/dist/types/claims/act-claim.js.map +1 -0
- package/dist/types/claims/aegis-introspection.d.ts +16 -0
- package/dist/types/claims/aegis-introspection.d.ts.map +1 -0
- package/dist/types/claims/aegis-introspection.js +3 -0
- package/dist/types/claims/aegis-introspection.js.map +1 -0
- package/dist/types/claims/aegis-profile.d.ts +44 -0
- package/dist/types/claims/aegis-profile.d.ts.map +1 -0
- package/dist/types/claims/aegis-profile.js +3 -0
- package/dist/types/claims/aegis-profile.js.map +1 -0
- package/dist/types/claims/aegis-userinfo.d.ts +5 -0
- package/dist/types/claims/aegis-userinfo.d.ts.map +1 -0
- package/dist/types/claims/aegis-userinfo.js +3 -0
- package/dist/types/claims/aegis-userinfo.js.map +1 -0
- package/dist/types/claims/confirmation-claim.d.ts +9 -0
- package/dist/types/claims/confirmation-claim.d.ts.map +1 -0
- package/dist/types/claims/confirmation-claim.js +3 -0
- package/dist/types/claims/confirmation-claim.js.map +1 -0
- package/dist/types/claims/delegation-claims.d.ts +6 -0
- package/dist/types/claims/delegation-claims.d.ts.map +1 -0
- package/dist/types/claims/delegation-claims.js +3 -0
- package/dist/types/claims/delegation-claims.js.map +1 -0
- package/dist/types/claims/index.d.ts +13 -0
- package/dist/types/claims/index.d.ts.map +1 -0
- package/dist/types/{cws → claims}/index.js +12 -4
- package/dist/types/claims/index.js.map +1 -0
- package/dist/types/claims/jwt/act-claim-wire.d.ts +8 -0
- package/dist/types/claims/jwt/act-claim-wire.d.ts.map +1 -0
- package/dist/types/claims/jwt/act-claim-wire.js +3 -0
- package/dist/types/claims/jwt/act-claim-wire.js.map +1 -0
- package/dist/types/claims/jwt/confirmation-claim-wire.d.ts +9 -0
- package/dist/types/claims/jwt/confirmation-claim-wire.d.ts.map +1 -0
- package/dist/types/claims/jwt/confirmation-claim-wire.js +3 -0
- package/dist/types/claims/jwt/confirmation-claim-wire.js.map +1 -0
- package/dist/types/claims/jwt/delegation-claims-wire.d.ts +6 -0
- package/dist/types/claims/jwt/delegation-claims-wire.d.ts.map +1 -0
- package/dist/types/claims/jwt/delegation-claims-wire.js +3 -0
- package/dist/types/claims/jwt/delegation-claims-wire.js.map +1 -0
- package/dist/types/claims/jwt/index.d.ts +10 -0
- package/dist/types/claims/jwt/index.d.ts.map +1 -0
- package/dist/types/{cwe → claims/jwt}/index.js +9 -4
- package/dist/types/claims/jwt/index.js.map +1 -0
- package/dist/types/claims/jwt/jwt-claims.d.ts +8 -0
- package/dist/types/claims/jwt/jwt-claims.d.ts.map +1 -0
- package/dist/types/claims/jwt/jwt-claims.js.map +1 -0
- package/dist/types/claims/jwt/lindorm-claims-wire.d.ts +16 -0
- package/dist/types/claims/jwt/lindorm-claims-wire.d.ts.map +1 -0
- package/dist/types/claims/jwt/lindorm-claims-wire.js +3 -0
- package/dist/types/claims/jwt/lindorm-claims-wire.js.map +1 -0
- package/dist/types/claims/jwt/oauth-claims-wire.d.ts +6 -0
- package/dist/types/claims/jwt/oauth-claims-wire.d.ts.map +1 -0
- package/dist/types/claims/jwt/oauth-claims-wire.js +3 -0
- package/dist/types/claims/jwt/oauth-claims-wire.js.map +1 -0
- package/dist/types/claims/jwt/oidc-claims-wire.d.ts +11 -0
- package/dist/types/claims/jwt/oidc-claims-wire.d.ts.map +1 -0
- package/dist/types/claims/jwt/oidc-claims-wire.js +3 -0
- package/dist/types/claims/jwt/oidc-claims-wire.js.map +1 -0
- package/dist/types/claims/jwt/pop-claims-wire.d.ts +5 -0
- package/dist/types/claims/jwt/pop-claims-wire.d.ts.map +1 -0
- package/dist/types/claims/jwt/pop-claims-wire.js +3 -0
- package/dist/types/claims/jwt/pop-claims-wire.js.map +1 -0
- package/dist/types/claims/jwt/std-claims-wire.d.ts +10 -0
- package/dist/types/claims/jwt/std-claims-wire.d.ts.map +1 -0
- package/dist/types/claims/jwt/std-claims-wire.js +3 -0
- package/dist/types/claims/jwt/std-claims-wire.js.map +1 -0
- package/dist/types/claims/lindorm-claims.d.ts +18 -0
- package/dist/types/claims/lindorm-claims.d.ts.map +1 -0
- package/dist/types/claims/lindorm-claims.js +3 -0
- package/dist/types/claims/lindorm-claims.js.map +1 -0
- package/dist/types/claims/oauth-claims.d.ts +6 -0
- package/dist/types/claims/oauth-claims.d.ts.map +1 -0
- package/dist/types/claims/oauth-claims.js +3 -0
- package/dist/types/claims/oauth-claims.js.map +1 -0
- package/dist/types/claims/oidc-claims.d.ts +11 -0
- package/dist/types/claims/oidc-claims.d.ts.map +1 -0
- package/dist/types/{cose-target.js → claims/oidc-claims.js} +1 -1
- package/dist/types/claims/oidc-claims.js.map +1 -0
- package/dist/types/claims/pop-claims.d.ts +5 -0
- package/dist/types/claims/pop-claims.d.ts.map +1 -0
- package/dist/types/{cwe/cwe-decode.js → claims/pop-claims.js} +1 -1
- package/dist/types/claims/pop-claims.js.map +1 -0
- package/dist/types/claims/std-claims.d.ts +10 -0
- package/dist/types/claims/std-claims.d.ts.map +1 -0
- package/dist/{interfaces/CwtKit.js → types/claims/std-claims.js} +1 -1
- package/dist/types/claims/std-claims.js.map +1 -0
- package/dist/types/header.d.ts +15 -8
- package/dist/types/header.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -4
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -4
- package/dist/types/index.js.map +1 -1
- package/dist/types/jwe/jwe-decrypt.d.ts +2 -4
- package/dist/types/jwe/jwe-decrypt.d.ts.map +1 -1
- package/dist/types/jwe/jwe-encrypt.d.ts +4 -1
- package/dist/types/jwe/jwe-encrypt.d.ts.map +1 -1
- package/dist/types/jwe/jwe-kit.d.ts +2 -7
- package/dist/types/jwe/jwe-kit.d.ts.map +1 -1
- package/dist/types/jws/jws-kit.d.ts +2 -6
- package/dist/types/jws/jws-kit.d.ts.map +1 -1
- package/dist/types/jws/jws-parse.d.ts +2 -5
- package/dist/types/jws/jws-parse.d.ts.map +1 -1
- package/dist/types/jws/jws-sign.d.ts +5 -2
- package/dist/types/jws/jws-sign.d.ts.map +1 -1
- package/dist/types/jwt/index.d.ts +3 -1
- package/dist/types/jwt/index.d.ts.map +1 -1
- package/dist/types/jwt/index.js +3 -1
- package/dist/types/jwt/index.js.map +1 -1
- package/dist/types/jwt/jwt-claim-matchers.d.ts +28 -0
- package/dist/types/jwt/jwt-claim-matchers.d.ts.map +1 -0
- package/dist/types/jwt/jwt-claim-matchers.js +3 -0
- package/dist/types/jwt/jwt-claim-matchers.js.map +1 -0
- package/dist/types/jwt/jwt-decode.d.ts +1 -1
- package/dist/types/jwt/jwt-decode.d.ts.map +1 -1
- package/dist/types/jwt/jwt-delegation.d.ts +7 -0
- package/dist/types/jwt/jwt-delegation.d.ts.map +1 -0
- package/dist/types/jwt/jwt-delegation.js +3 -0
- package/dist/types/jwt/jwt-delegation.js.map +1 -0
- package/dist/types/jwt/jwt-dpop.d.ts +10 -0
- package/dist/types/jwt/jwt-dpop.d.ts.map +1 -0
- package/dist/types/{cwe/cwe-kit.js → jwt/jwt-dpop.js} +1 -1
- package/dist/types/jwt/jwt-dpop.js.map +1 -0
- package/dist/types/jwt/jwt-kit.d.ts +3 -5
- package/dist/types/jwt/jwt-kit.d.ts.map +1 -1
- package/dist/types/jwt/jwt-parse.d.ts +11 -27
- package/dist/types/jwt/jwt-parse.d.ts.map +1 -1
- package/dist/types/jwt/jwt-sign.d.ts +6 -23
- package/dist/types/jwt/jwt-sign.d.ts.map +1 -1
- package/dist/types/jwt/jwt-validate.d.ts +2 -23
- package/dist/types/jwt/jwt-validate.d.ts.map +1 -1
- package/dist/types/jwt/jwt-verify.d.ts +13 -25
- package/dist/types/jwt/jwt-verify.d.ts.map +1 -1
- package/dist/types/kit.d.ts +12 -0
- package/dist/types/kit.d.ts.map +1 -0
- package/dist/{interfaces/CweKit.js → types/kit.js} +1 -1
- package/dist/types/kit.js.map +1 -0
- package/dist/types/level-of-assurance.d.ts +1 -1
- package/dist/types/level-of-assurance.d.ts.map +1 -1
- package/package.json +39 -18
- package/tsconfig.interop.json +5 -1
- package/__tests__/cose-interop.test.ts +0 -1127
- package/dist/classes/CweKit.d.ts +0 -14
- package/dist/classes/CweKit.d.ts.map +0 -1
- package/dist/classes/CweKit.js +0 -149
- package/dist/classes/CweKit.js.map +0 -1
- package/dist/classes/CwsKit.d.ts +0 -13
- package/dist/classes/CwsKit.d.ts.map +0 -1
- package/dist/classes/CwsKit.js +0 -136
- package/dist/classes/CwsKit.js.map +0 -1
- package/dist/classes/CwtKit.d.ts +0 -17
- package/dist/classes/CwtKit.d.ts.map +0 -1
- package/dist/classes/CwtKit.js +0 -158
- package/dist/classes/CwtKit.js.map +0 -1
- package/dist/constants/private/cose.d.ts +0 -19
- package/dist/constants/private/cose.d.ts.map +0 -1
- package/dist/constants/private/cose.js +0 -116
- package/dist/constants/private/cose.js.map +0 -1
- package/dist/constants/private/format.d.ts.map +0 -1
- package/dist/constants/private/format.js.map +0 -1
- package/dist/constants/private/header.d.ts.map +0 -1
- package/dist/constants/private/header.js.map +0 -1
- package/dist/constants/private/index.d.ts +0 -4
- package/dist/constants/private/index.d.ts.map +0 -1
- package/dist/constants/private/index.js +0 -20
- package/dist/constants/private/index.js.map +0 -1
- package/dist/errors/CoseEncryptError.d.ts +0 -4
- package/dist/errors/CoseEncryptError.d.ts.map +0 -1
- package/dist/errors/CoseEncryptError.js +0 -8
- package/dist/errors/CoseEncryptError.js.map +0 -1
- package/dist/errors/CoseSignError.d.ts +0 -4
- package/dist/errors/CoseSignError.d.ts.map +0 -1
- package/dist/errors/CoseSignError.js +0 -8
- package/dist/errors/CoseSignError.js.map +0 -1
- package/dist/errors/CwtError.d.ts +0 -4
- package/dist/errors/CwtError.d.ts.map +0 -1
- package/dist/errors/CwtError.js +0 -8
- package/dist/errors/CwtError.js.map +0 -1
- package/dist/interfaces/CweKit.d.ts +0 -6
- package/dist/interfaces/CweKit.d.ts.map +0 -1
- package/dist/interfaces/CweKit.js.map +0 -1
- package/dist/interfaces/CwsKit.d.ts +0 -6
- package/dist/interfaces/CwsKit.d.ts.map +0 -1
- package/dist/interfaces/CwsKit.js.map +0 -1
- package/dist/interfaces/CwtKit.d.ts +0 -7
- package/dist/interfaces/CwtKit.d.ts.map +0 -1
- package/dist/interfaces/CwtKit.js.map +0 -1
- package/dist/types/cose-target.d.ts +0 -2
- package/dist/types/cose-target.d.ts.map +0 -1
- package/dist/types/cose-target.js.map +0 -1
- package/dist/types/cwe/cwe-decode.d.ts +0 -18
- package/dist/types/cwe/cwe-decode.d.ts.map +0 -1
- package/dist/types/cwe/cwe-decode.js.map +0 -1
- package/dist/types/cwe/cwe-decrypt.d.ts +0 -15
- package/dist/types/cwe/cwe-decrypt.d.ts.map +0 -1
- package/dist/types/cwe/cwe-decrypt.js +0 -3
- package/dist/types/cwe/cwe-decrypt.js.map +0 -1
- package/dist/types/cwe/cwe-encrypt.d.ts +0 -12
- package/dist/types/cwe/cwe-encrypt.d.ts.map +0 -1
- package/dist/types/cwe/cwe-encrypt.js +0 -3
- package/dist/types/cwe/cwe-encrypt.js.map +0 -1
- package/dist/types/cwe/cwe-kit.d.ts +0 -9
- package/dist/types/cwe/cwe-kit.d.ts.map +0 -1
- package/dist/types/cwe/cwe-kit.js.map +0 -1
- package/dist/types/cwe/index.d.ts +0 -5
- package/dist/types/cwe/index.d.ts.map +0 -1
- package/dist/types/cwe/index.js.map +0 -1
- package/dist/types/cws/cws-decode.d.ts +0 -9
- package/dist/types/cws/cws-decode.d.ts.map +0 -1
- package/dist/types/cws/cws-decode.js +0 -3
- package/dist/types/cws/cws-decode.js.map +0 -1
- package/dist/types/cws/cws-kit.d.ts +0 -8
- package/dist/types/cws/cws-kit.d.ts.map +0 -1
- package/dist/types/cws/cws-kit.js +0 -3
- package/dist/types/cws/cws-kit.js.map +0 -1
- package/dist/types/cws/cws-parse.d.ts +0 -14
- package/dist/types/cws/cws-parse.d.ts.map +0 -1
- package/dist/types/cws/cws-parse.js +0 -3
- package/dist/types/cws/cws-parse.js.map +0 -1
- package/dist/types/cws/cws-sign.d.ts +0 -14
- package/dist/types/cws/cws-sign.d.ts.map +0 -1
- package/dist/types/cws/cws-sign.js +0 -3
- package/dist/types/cws/cws-sign.js.map +0 -1
- package/dist/types/cws/index.d.ts +0 -5
- package/dist/types/cws/index.d.ts.map +0 -1
- package/dist/types/cws/index.js.map +0 -1
- package/dist/types/cwt/cwt-claims.d.ts +0 -3
- package/dist/types/cwt/cwt-claims.d.ts.map +0 -1
- package/dist/types/cwt/cwt-claims.js +0 -3
- package/dist/types/cwt/cwt-claims.js.map +0 -1
- package/dist/types/cwt/cwt-decode.d.ts +0 -10
- package/dist/types/cwt/cwt-decode.d.ts.map +0 -1
- package/dist/types/cwt/cwt-decode.js +0 -3
- package/dist/types/cwt/cwt-decode.js.map +0 -1
- package/dist/types/cwt/cwt-kit.d.ts +0 -3
- package/dist/types/cwt/cwt-kit.d.ts.map +0 -1
- package/dist/types/cwt/cwt-kit.js +0 -3
- package/dist/types/cwt/cwt-kit.js.map +0 -1
- package/dist/types/cwt/cwt-parse.d.ts +0 -15
- package/dist/types/cwt/cwt-parse.d.ts.map +0 -1
- package/dist/types/cwt/cwt-parse.js +0 -3
- package/dist/types/cwt/cwt-parse.js.map +0 -1
- package/dist/types/cwt/cwt-sign.d.ts +0 -17
- package/dist/types/cwt/cwt-sign.d.ts.map +0 -1
- package/dist/types/cwt/cwt-sign.js +0 -3
- package/dist/types/cwt/cwt-sign.js.map +0 -1
- package/dist/types/cwt/cwt-validate.d.ts +0 -3
- package/dist/types/cwt/cwt-validate.d.ts.map +0 -1
- package/dist/types/cwt/cwt-validate.js +0 -3
- package/dist/types/cwt/cwt-validate.js.map +0 -1
- package/dist/types/cwt/cwt-verify.d.ts +0 -3
- package/dist/types/cwt/cwt-verify.d.ts.map +0 -1
- package/dist/types/cwt/cwt-verify.js +0 -3
- package/dist/types/cwt/cwt-verify.js.map +0 -1
- package/dist/types/cwt/index.d.ts +0 -8
- package/dist/types/cwt/index.d.ts.map +0 -1
- package/dist/types/cwt/index.js +0 -24
- package/dist/types/cwt/index.js.map +0 -1
- package/dist/types/jwt/jwt-claims.d.ts +0 -38
- package/dist/types/jwt/jwt-claims.d.ts.map +0 -1
- package/dist/types/jwt/jwt-claims.js.map +0 -1
- package/dist/utils/private/auth-tag-length.d.ts +0 -3
- package/dist/utils/private/auth-tag-length.d.ts.map +0 -1
- package/dist/utils/private/auth-tag-length.js +0 -21
- package/dist/utils/private/auth-tag-length.js.map +0 -1
- package/dist/utils/private/cose/bstr.d.ts +0 -4
- package/dist/utils/private/cose/bstr.d.ts.map +0 -1
- package/dist/utils/private/cose/bstr.js +0 -18
- package/dist/utils/private/cose/bstr.js.map +0 -1
- package/dist/utils/private/cose/claims.d.ts +0 -5
- package/dist/utils/private/cose/claims.d.ts.map +0 -1
- package/dist/utils/private/cose/claims.js +0 -57
- package/dist/utils/private/cose/claims.js.map +0 -1
- package/dist/utils/private/cose/crit.d.ts +0 -3
- package/dist/utils/private/cose/crit.d.ts.map +0 -1
- package/dist/utils/private/cose/crit.js +0 -43
- package/dist/utils/private/cose/crit.js.map +0 -1
- package/dist/utils/private/cose/find.d.ts +0 -5
- package/dist/utils/private/cose/find.d.ts.map +0 -1
- package/dist/utils/private/cose/find.js +0 -37
- package/dist/utils/private/cose/find.js.map +0 -1
- package/dist/utils/private/cose/header.d.ts +0 -5
- package/dist/utils/private/cose/header.d.ts.map +0 -1
- package/dist/utils/private/cose/header.js +0 -81
- package/dist/utils/private/cose/header.js.map +0 -1
- package/dist/utils/private/cose/index.d.ts +0 -3
- package/dist/utils/private/cose/index.d.ts.map +0 -1
- package/dist/utils/private/cose/index.js.map +0 -1
- package/dist/utils/private/cose/key.d.ts +0 -4
- package/dist/utils/private/cose/key.d.ts.map +0 -1
- package/dist/utils/private/cose/key.js +0 -86
- package/dist/utils/private/cose/key.js.map +0 -1
- package/dist/utils/private/cose-sign-token.d.ts +0 -9
- package/dist/utils/private/cose-sign-token.d.ts.map +0 -1
- package/dist/utils/private/cose-sign-token.js +0 -12
- package/dist/utils/private/cose-sign-token.js.map +0 -1
- package/dist/utils/private/cose-signature.d.ts +0 -16
- package/dist/utils/private/cose-signature.d.ts.map +0 -1
- package/dist/utils/private/cose-signature.js +0 -17
- package/dist/utils/private/cose-signature.js.map +0 -1
- package/dist/utils/private/create-hash.d.ts.map +0 -1
- package/dist/utils/private/create-hash.js.map +0 -1
- package/dist/utils/private/index.d.ts +0 -13
- package/dist/utils/private/index.d.ts.map +0 -1
- package/dist/utils/private/index.js +0 -29
- package/dist/utils/private/index.js.map +0 -1
- package/dist/utils/private/jose-header.d.ts +0 -4
- package/dist/utils/private/jose-header.d.ts.map +0 -1
- package/dist/utils/private/jose-header.js.map +0 -1
- package/dist/utils/private/jose-signature.d.ts.map +0 -1
- package/dist/utils/private/jose-signature.js.map +0 -1
- package/dist/utils/private/jwt-payload.d.ts.map +0 -1
- package/dist/utils/private/jwt-payload.js.map +0 -1
- package/dist/utils/private/jwt-validate.d.ts.map +0 -1
- package/dist/utils/private/jwt-validate.js.map +0 -1
- package/dist/utils/private/jwt-verify.d.ts.map +0 -1
- package/dist/utils/private/jwt-verify.js.map +0 -1
- package/dist/utils/private/token-header.d.ts +0 -4
- package/dist/utils/private/token-header.d.ts.map +0 -1
- package/dist/utils/private/token-header.js.map +0 -1
- package/dist/utils/private/validate.d.ts.map +0 -1
- package/dist/utils/private/validate.js.map +0 -1
- /package/dist/{constants/private → internal/constants}/format.d.ts +0 -0
- /package/dist/{constants/private → internal/constants}/format.js +0 -0
- /package/dist/{utils/private → internal/utils}/create-hash.d.ts +0 -0
- /package/dist/{utils/private → internal/utils}/jose-signature.d.ts +0 -0
- /package/dist/{utils/private → internal/utils}/jwt-payload.d.ts +0 -0
- /package/dist/{utils/private → internal/utils}/jwt-validate.d.ts +0 -0
- /package/dist/{utils/private → internal/utils}/jwt-validate.js +0 -0
- /package/dist/{utils/private → internal/utils}/jwt-verify.d.ts +0 -0
- /package/dist/{utils/private → internal/utils}/validate.d.ts +0 -0
- /package/dist/{utils/private → internal/utils}/validate.js +0 -0
- /package/dist/types/{jwt → claims/jwt}/jwt-claims.js +0 -0
package/dist/classes/JweKit.js
CHANGED
|
@@ -4,11 +4,18 @@ exports.JweKit = void 0;
|
|
|
4
4
|
const aes_1 = require("@lindorm/aes");
|
|
5
5
|
const b64_1 = require("@lindorm/b64");
|
|
6
6
|
const is_1 = require("@lindorm/is");
|
|
7
|
-
const
|
|
8
|
-
const private_1 = require("../constants/private");
|
|
7
|
+
const format_1 = require("#internal/constants/format");
|
|
9
8
|
const errors_1 = require("../errors");
|
|
10
|
-
const
|
|
9
|
+
const compute_typ_header_1 = require("#internal/utils/compute-typ-header");
|
|
10
|
+
const jose_header_1 = require("#internal/utils/jose-header");
|
|
11
|
+
const token_header_1 = require("#internal/utils/token-header");
|
|
12
|
+
const resolve_cert_binding_1 = require("#internal/utils/resolve-cert-binding");
|
|
13
|
+
const verify_cert_binding_1 = require("#internal/utils/verify-cert-binding");
|
|
14
|
+
const validate_crit_1 = require("#internal/utils/validate-crit");
|
|
15
|
+
const JwsKit_1 = require("./JwsKit");
|
|
16
|
+
const JwtKit_1 = require("./JwtKit");
|
|
11
17
|
class JweKit {
|
|
18
|
+
certBindingMode;
|
|
12
19
|
encryption;
|
|
13
20
|
kryptos;
|
|
14
21
|
logger;
|
|
@@ -16,11 +23,12 @@ class JweKit {
|
|
|
16
23
|
this.logger = options.logger.child(["JweKit"]);
|
|
17
24
|
this.kryptos = options.kryptos;
|
|
18
25
|
this.encryption = options.encryption ?? options.kryptos.encryption ?? "A256GCM";
|
|
26
|
+
this.certBindingMode = options.certBindingMode ?? "strict";
|
|
19
27
|
}
|
|
20
28
|
encrypt(data, options = {}) {
|
|
21
29
|
const kit = new aes_1.AesKit({ encryption: this.encryption, kryptos: this.kryptos });
|
|
22
30
|
this.logger.debug("Encrypting token", { options });
|
|
23
|
-
const objectId = options.objectId
|
|
31
|
+
const objectId = options.objectId;
|
|
24
32
|
const prepared = kit.prepareEncryption();
|
|
25
33
|
const critical = [];
|
|
26
34
|
const headerOptions = {
|
|
@@ -29,7 +37,7 @@ class JweKit {
|
|
|
29
37
|
contentType: this.contentType(data),
|
|
30
38
|
...(critical.length ? { critical } : {}),
|
|
31
39
|
encryption: this.encryption,
|
|
32
|
-
headerType: "
|
|
40
|
+
headerType: (0, compute_typ_header_1.computeTypHeader)(options.tokenType, "jwe"),
|
|
33
41
|
initialisationVector: prepared.headerParams.publicEncryptionIv,
|
|
34
42
|
jwksUri: this.kryptos.jwksUri ?? undefined,
|
|
35
43
|
keyId: this.kryptos.id,
|
|
@@ -39,7 +47,8 @@ class JweKit {
|
|
|
39
47
|
publicEncryptionJwk: prepared.headerParams.publicEncryptionJwk,
|
|
40
48
|
publicEncryptionTag: prepared.headerParams.publicEncryptionTag,
|
|
41
49
|
};
|
|
42
|
-
const
|
|
50
|
+
const cert = (0, resolve_cert_binding_1.resolveCertBinding)(this.kryptos, options.bindCertificate);
|
|
51
|
+
const header = (0, jose_header_1.encodeJoseHeader)(headerOptions, cert);
|
|
43
52
|
const aad = Buffer.from(header, "ascii");
|
|
44
53
|
const { authTag, content, initialisationVector } = prepared.encrypt(data, { aad });
|
|
45
54
|
if (!authTag) {
|
|
@@ -47,10 +56,10 @@ class JweKit {
|
|
|
47
56
|
}
|
|
48
57
|
const token = [
|
|
49
58
|
header,
|
|
50
|
-
prepared.publicEncryptionKey ? b64_1.B64.encode(prepared.publicEncryptionKey,
|
|
51
|
-
b64_1.B64.encode(initialisationVector,
|
|
52
|
-
b64_1.B64.encode(content,
|
|
53
|
-
b64_1.B64.encode(authTag,
|
|
59
|
+
prepared.publicEncryptionKey ? b64_1.B64.encode(prepared.publicEncryptionKey, format_1.B64U) : "",
|
|
60
|
+
b64_1.B64.encode(initialisationVector, format_1.B64U),
|
|
61
|
+
b64_1.B64.encode(content, format_1.B64U),
|
|
62
|
+
b64_1.B64.encode(authTag, format_1.B64U),
|
|
54
63
|
].join(".");
|
|
55
64
|
this.logger.debug("Token encrypted", { token });
|
|
56
65
|
return { token };
|
|
@@ -59,9 +68,21 @@ class JweKit {
|
|
|
59
68
|
const kit = new aes_1.AesKit({ encryption: this.encryption, kryptos: this.kryptos });
|
|
60
69
|
this.logger.debug("Decrypting token", { token });
|
|
61
70
|
const decoded = JweKit.decode(token);
|
|
62
|
-
|
|
71
|
+
const typ = decoded.header.typ;
|
|
72
|
+
if (typ !== "JWE" && !(typeof typ === "string" && typ.endsWith("+jwe"))) {
|
|
63
73
|
throw new errors_1.JweError("Invalid token", {
|
|
64
|
-
data: { typ
|
|
74
|
+
data: { typ },
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
if (decoded.header.zip !== undefined) {
|
|
78
|
+
throw new errors_1.JweError("Compressed JWE payloads are not supported", {
|
|
79
|
+
data: { zip: decoded.header.zip },
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
const critError = (0, validate_crit_1.validateCrit)(decoded.header);
|
|
83
|
+
if (critError) {
|
|
84
|
+
throw new errors_1.JweError(`Invalid crit header: ${critError}`, {
|
|
85
|
+
data: { crit: decoded.header.crit },
|
|
65
86
|
});
|
|
66
87
|
}
|
|
67
88
|
if (this.kryptos.algorithm !== decoded.header.alg) {
|
|
@@ -70,7 +91,8 @@ class JweKit {
|
|
|
70
91
|
debug: { expected: this.kryptos.algorithm },
|
|
71
92
|
});
|
|
72
93
|
}
|
|
73
|
-
const header = (0,
|
|
94
|
+
const header = (0, token_header_1.parseTokenHeader)(decoded.header);
|
|
95
|
+
header.tokenType = (0, compute_typ_header_1.decodeTokenTypeFromTyp)(typ, "jwe");
|
|
74
96
|
if (header.encryption !== this.encryption) {
|
|
75
97
|
throw new errors_1.JweError("Unexpected encryption", {
|
|
76
98
|
debug: { actual: header.encryption, encryption: this.encryption },
|
|
@@ -87,7 +109,7 @@ class JweKit {
|
|
|
87
109
|
const content = b64_1.B64.toBuffer(decoded.content);
|
|
88
110
|
const initialisationVector = b64_1.B64.toBuffer(decoded.initialisationVector);
|
|
89
111
|
const pbkdfIterations = header.pbkdfIterations;
|
|
90
|
-
const pbkdfSalt = header.pbkdfSalt ? b64_1.B64.toBuffer(header.pbkdfSalt,
|
|
112
|
+
const pbkdfSalt = header.pbkdfSalt ? b64_1.B64.toBuffer(header.pbkdfSalt, format_1.B64U) : undefined;
|
|
91
113
|
const publicEncryptionIv = header.initialisationVector
|
|
92
114
|
? b64_1.B64.toBuffer(header.initialisationVector)
|
|
93
115
|
: undefined;
|
|
@@ -99,22 +121,48 @@ class JweKit {
|
|
|
99
121
|
? b64_1.B64.toBuffer(header.publicEncryptionTag)
|
|
100
122
|
: undefined;
|
|
101
123
|
const payload = kit.decrypt({
|
|
124
|
+
algorithm: header.algorithm,
|
|
102
125
|
authTag,
|
|
103
126
|
content,
|
|
127
|
+
contentType: "text/plain",
|
|
104
128
|
encryption: this.encryption,
|
|
105
129
|
initialisationVector,
|
|
130
|
+
keyId: header.keyId ?? this.kryptos.id,
|
|
106
131
|
pbkdfIterations,
|
|
107
132
|
pbkdfSalt,
|
|
108
133
|
publicEncryptionIv,
|
|
109
134
|
publicEncryptionJwk,
|
|
110
135
|
publicEncryptionKey,
|
|
111
136
|
publicEncryptionTag,
|
|
137
|
+
version: "1.0",
|
|
112
138
|
}, { aad });
|
|
139
|
+
(0, verify_cert_binding_1.verifyCertBinding)({
|
|
140
|
+
header: {
|
|
141
|
+
x5tS256: header.x5tS256,
|
|
142
|
+
},
|
|
143
|
+
kryptos: this.kryptos,
|
|
144
|
+
logger: this.logger,
|
|
145
|
+
mode: this.certBindingMode,
|
|
146
|
+
});
|
|
113
147
|
this.logger.debug("Token decrypted");
|
|
114
148
|
return { header, payload, decoded, token };
|
|
115
149
|
}
|
|
116
150
|
static isJwe(jwe) {
|
|
117
|
-
|
|
151
|
+
if (typeof jwe !== "string")
|
|
152
|
+
return false;
|
|
153
|
+
const parts = jwe.split(".");
|
|
154
|
+
if (parts.length !== 5)
|
|
155
|
+
return false;
|
|
156
|
+
try {
|
|
157
|
+
const header = (0, jose_header_1.decodeJoseHeader)(parts[0]);
|
|
158
|
+
if (typeof header.alg !== "string")
|
|
159
|
+
return false;
|
|
160
|
+
const typ = header.typ;
|
|
161
|
+
return typ === "JWE" || (typeof typ === "string" && typ.endsWith("+jwe"));
|
|
162
|
+
}
|
|
163
|
+
catch {
|
|
164
|
+
return false;
|
|
165
|
+
}
|
|
118
166
|
}
|
|
119
167
|
static decode(jwe) {
|
|
120
168
|
const parts = jwe.split(".");
|
|
@@ -123,7 +171,7 @@ class JweKit {
|
|
|
123
171
|
}
|
|
124
172
|
const [header, publicEncryptionKey, initialisationVector, content, authTag] = parts;
|
|
125
173
|
return {
|
|
126
|
-
header: (0,
|
|
174
|
+
header: (0, jose_header_1.decodeJoseHeader)(header),
|
|
127
175
|
publicEncryptionKey: publicEncryptionKey?.length ? publicEncryptionKey : undefined,
|
|
128
176
|
initialisationVector,
|
|
129
177
|
content,
|
|
@@ -131,10 +179,10 @@ class JweKit {
|
|
|
131
179
|
};
|
|
132
180
|
}
|
|
133
181
|
contentType(input) {
|
|
134
|
-
if (
|
|
182
|
+
if (JwsKit_1.JwsKit.isJws(input)) {
|
|
135
183
|
return "application/jws";
|
|
136
184
|
}
|
|
137
|
-
if (
|
|
185
|
+
if (JwtKit_1.JwtKit.isJwt(input)) {
|
|
138
186
|
return "application/jwt";
|
|
139
187
|
}
|
|
140
188
|
if (input.startsWith("{") && input.endsWith("}")) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JweKit.js","sourceRoot":"","sources":["../../src/classes/JweKit.ts"],"names":[],"mappings":";;;AAAA,sCAAsC;AACtC,sCAAmC;AACnC,
|
|
1
|
+
{"version":3,"file":"JweKit.js","sourceRoot":"","sources":["../../src/classes/JweKit.ts"],"names":[],"mappings":"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"}
|
package/dist/classes/JwsKit.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { IJwsKit } from "../interfaces";
|
|
2
2
|
import { DecodedJws, JwsKitOptions, ParsedJws, SignJwsOptions, SignedJws } from "../types";
|
|
3
3
|
export declare class JwsKit implements IJwsKit {
|
|
4
|
+
private readonly certBindingMode;
|
|
4
5
|
private readonly logger;
|
|
5
6
|
private readonly kryptos;
|
|
6
7
|
constructor(options: JwsKitOptions);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JwsKit.d.ts","sourceRoot":"","sources":["../../src/classes/JwsKit.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"JwsKit.d.ts","sourceRoot":"","sources":["../../src/classes/JwsKit.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAEL,UAAU,EACV,aAAa,EACb,SAAS,EAET,cAAc,EACd,SAAS,EAEV,MAAM,UAAU,CAAC;AAYlB,qBAAa,MAAO,YAAW,OAAO;IACpC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAW;gBAEhB,OAAO,EAAE,aAAa;IAMlC,IAAI,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EACnC,IAAI,EAAE,CAAC,EACP,OAAO,GAAE,cAAmB,GAC3B,SAAS;IAsCL,MAAM,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;WA+CvD,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;WAkB3B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU;WAc/B,KAAK,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;CAkC5E"}
|
package/dist/classes/JwsKit.js
CHANGED
|
@@ -3,20 +3,27 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.JwsKit = void 0;
|
|
4
4
|
const b64_1 = require("@lindorm/b64");
|
|
5
5
|
const is_1 = require("@lindorm/is");
|
|
6
|
-
const
|
|
7
|
-
const private_1 = require("../constants/private");
|
|
6
|
+
const format_1 = require("#internal/constants/format");
|
|
8
7
|
const errors_1 = require("../errors");
|
|
9
|
-
const
|
|
8
|
+
const compute_typ_header_1 = require("#internal/utils/compute-typ-header");
|
|
9
|
+
const jose_header_1 = require("#internal/utils/jose-header");
|
|
10
|
+
const jose_signature_1 = require("#internal/utils/jose-signature");
|
|
11
|
+
const token_header_1 = require("#internal/utils/token-header");
|
|
12
|
+
const resolve_cert_binding_1 = require("#internal/utils/resolve-cert-binding");
|
|
13
|
+
const verify_cert_binding_1 = require("#internal/utils/verify-cert-binding");
|
|
14
|
+
const validate_crit_1 = require("#internal/utils/validate-crit");
|
|
10
15
|
class JwsKit {
|
|
16
|
+
certBindingMode;
|
|
11
17
|
logger;
|
|
12
18
|
kryptos;
|
|
13
19
|
constructor(options) {
|
|
14
20
|
this.logger = options.logger.child(["JwsKit"]);
|
|
15
21
|
this.kryptos = options.kryptos;
|
|
22
|
+
this.certBindingMode = options.certBindingMode ?? "strict";
|
|
16
23
|
}
|
|
17
24
|
sign(data, options = {}) {
|
|
18
25
|
this.logger.debug("Signing token", { options });
|
|
19
|
-
const objectId = options.objectId
|
|
26
|
+
const objectId = options.objectId;
|
|
20
27
|
const headerOptions = {
|
|
21
28
|
...(options.header ?? {}),
|
|
22
29
|
algorithm: this.kryptos.algorithm,
|
|
@@ -25,14 +32,15 @@ class JwsKit {
|
|
|
25
32
|
: (0, is_1.isString)(data)
|
|
26
33
|
? "text/plain; charset=utf-8"
|
|
27
34
|
: "application/octet-stream",
|
|
28
|
-
headerType: "
|
|
35
|
+
headerType: (0, compute_typ_header_1.computeTypHeader)(options.tokenType, "jws"),
|
|
29
36
|
jwksUri: this.kryptos.jwksUri ?? undefined,
|
|
30
37
|
keyId: this.kryptos.id,
|
|
31
38
|
objectId,
|
|
32
39
|
};
|
|
33
|
-
const
|
|
34
|
-
const
|
|
35
|
-
const
|
|
40
|
+
const cert = (0, resolve_cert_binding_1.resolveCertBinding)(this.kryptos, options.bindCertificate);
|
|
41
|
+
const header = (0, jose_header_1.encodeJoseHeader)(headerOptions, cert);
|
|
42
|
+
const payload = (0, is_1.isBuffer)(data) ? data.toString(format_1.B64U) : b64_1.B64.encode(data, format_1.B64U);
|
|
43
|
+
const signature = (0, jose_signature_1.createJoseSignature)({
|
|
36
44
|
header,
|
|
37
45
|
payload,
|
|
38
46
|
kryptos: this.kryptos,
|
|
@@ -55,21 +63,45 @@ class JwsKit {
|
|
|
55
63
|
debug: { expected: this.kryptos.algorithm },
|
|
56
64
|
});
|
|
57
65
|
}
|
|
58
|
-
const verified = (0,
|
|
66
|
+
const verified = (0, jose_signature_1.verifyJoseSignature)(this.kryptos, token);
|
|
59
67
|
if (!verified) {
|
|
60
68
|
throw new errors_1.JwsError("Invalid token", {
|
|
61
69
|
data: { verified, token: token },
|
|
62
70
|
});
|
|
63
71
|
}
|
|
72
|
+
(0, verify_cert_binding_1.verifyCertBinding)({
|
|
73
|
+
header: {
|
|
74
|
+
x5tS256: parsed.header.x5tS256,
|
|
75
|
+
},
|
|
76
|
+
kryptos: this.kryptos,
|
|
77
|
+
logger: this.logger,
|
|
78
|
+
mode: this.certBindingMode,
|
|
79
|
+
});
|
|
64
80
|
this.logger.debug("Token verified");
|
|
65
81
|
return parsed;
|
|
66
82
|
}
|
|
67
83
|
static isJws(jws) {
|
|
68
|
-
|
|
84
|
+
if (typeof jws !== "string")
|
|
85
|
+
return false;
|
|
86
|
+
const parts = jws.split(".");
|
|
87
|
+
if (parts.length !== 3)
|
|
88
|
+
return false;
|
|
89
|
+
try {
|
|
90
|
+
const header = (0, jose_header_1.decodeJoseHeader)(parts[0]);
|
|
91
|
+
if (typeof header.alg !== "string")
|
|
92
|
+
return false;
|
|
93
|
+
const typ = header.typ;
|
|
94
|
+
return (typ === "JWS" ||
|
|
95
|
+
typ === "JOSE" ||
|
|
96
|
+
(typeof typ === "string" && typ.endsWith("+jws")));
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
69
101
|
}
|
|
70
102
|
static decode(jws) {
|
|
71
103
|
const [header, payload, signature] = jws.split(".");
|
|
72
|
-
const decodedHeader = (0,
|
|
104
|
+
const decodedHeader = (0, jose_header_1.decodeJoseHeader)(header);
|
|
73
105
|
return {
|
|
74
106
|
header: decodedHeader,
|
|
75
107
|
payload: decodedHeader.cty === "text/plain; charset=utf-8"
|
|
@@ -80,18 +112,28 @@ class JwsKit {
|
|
|
80
112
|
}
|
|
81
113
|
static parse(token) {
|
|
82
114
|
const decoded = JwsKit.decode(token);
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
115
|
+
const typ = decoded.header.typ;
|
|
116
|
+
if (typ !== undefined &&
|
|
117
|
+
typ !== "JWS" &&
|
|
118
|
+
typ !== "JOSE" &&
|
|
119
|
+
!(typeof typ === "string" && typ.endsWith("+jws"))) {
|
|
86
120
|
throw new errors_1.JwsError("Invalid token", {
|
|
87
|
-
data: { typ
|
|
88
|
-
details: "Header type must be JWS, JOSE, or undefined",
|
|
121
|
+
data: { typ },
|
|
122
|
+
details: "Header type must be JWS, JOSE, <type>+jws, or undefined",
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
const critError = (0, validate_crit_1.validateCrit)(decoded.header);
|
|
126
|
+
if (critError) {
|
|
127
|
+
throw new errors_1.JwsError(`Invalid crit header: ${critError}`, {
|
|
128
|
+
data: { crit: decoded.header.crit },
|
|
89
129
|
});
|
|
90
130
|
}
|
|
91
|
-
const header = (0,
|
|
131
|
+
const header = (0, token_header_1.parseTokenHeader)(decoded.header);
|
|
132
|
+
header.tokenType = (0, compute_typ_header_1.decodeTokenTypeFromTyp)(typ, "jws");
|
|
133
|
+
header.baseFormat = "JWS";
|
|
92
134
|
const payload = header.contentType === "text/plain; charset=utf-8"
|
|
93
135
|
? decoded.payload
|
|
94
|
-
: b64_1.B64.toBuffer(decoded.payload,
|
|
136
|
+
: b64_1.B64.toBuffer(decoded.payload, format_1.B64U);
|
|
95
137
|
return { decoded, header, payload, token };
|
|
96
138
|
}
|
|
97
139
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JwsKit.js","sourceRoot":"","sources":["../../src/classes/JwsKit.ts"],"names":[],"mappings":";;;AAAA,sCAAmC;AACnC,
|
|
1
|
+
{"version":3,"file":"JwsKit.js","sourceRoot":"","sources":["../../src/classes/JwsKit.ts"],"names":[],"mappings":"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"}
|
package/dist/classes/JwtKit.d.ts
CHANGED
|
@@ -2,7 +2,9 @@ import { Dict } from "@lindorm/types";
|
|
|
2
2
|
import { IJwtKit } from "../interfaces";
|
|
3
3
|
import { DecodedJwt, JwtKitOptions, ParsedJwt, ParsedJwtPayload, SignJwtContent, SignJwtOptions, SignedJwt, ValidateJwtOptions, VerifyJwtOptions } from "../types";
|
|
4
4
|
export declare class JwtKit implements IJwtKit {
|
|
5
|
+
private readonly certBindingMode;
|
|
5
6
|
private readonly clockTolerance;
|
|
7
|
+
private readonly dpopMaxSkew;
|
|
6
8
|
private readonly issuer;
|
|
7
9
|
private readonly logger;
|
|
8
10
|
private readonly kryptos;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JwtKit.d.ts","sourceRoot":"","sources":["../../src/classes/JwtKit.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"JwtKit.d.ts","sourceRoot":"","sources":["../../src/classes/JwtKit.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAUtC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAEL,UAAU,EACV,aAAa,EACb,SAAS,EAET,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,SAAS,EAET,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,UAAU,CAAC;AAiBlB,qBAAa,MAAO,YAAW,OAAO;IACpC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAW;gBAEhB,OAAO,EAAE,aAAa;IAUlC,IAAI,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI,EAC/B,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,EAC1B,OAAO,GAAE,cAAmB,GAC3B,SAAS;IA0CL,MAAM,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI,EACjC,KAAK,EAAE,MAAM,EACb,MAAM,GAAE,gBAAqB,GAC5B,SAAS,CAAC,CAAC,CAAC;WA0GD,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;WAc3B,MAAM,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC;WAUzD,KAAK,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;WAoCzD,QAAQ,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI,EAC1C,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAC5B,OAAO,EAAE,kBAAkB,GAC1B,IAAI;CAKR"}
|
package/dist/classes/JwtKit.js
CHANGED
|
@@ -1,12 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.JwtKit = void 0;
|
|
4
|
-
const is_1 = require("@lindorm/is");
|
|
5
|
-
const crypto_1 = require("crypto");
|
|
6
4
|
const errors_1 = require("../errors");
|
|
7
|
-
const
|
|
5
|
+
const compute_typ_header_1 = require("#internal/utils/compute-typ-header");
|
|
6
|
+
const extract_token_delegation_1 = require("#internal/utils/extract-token-delegation");
|
|
7
|
+
const validate_actor_1 = require("#internal/utils/validate-actor");
|
|
8
|
+
const validate_crit_1 = require("#internal/utils/validate-crit");
|
|
9
|
+
const verify_dpop_proof_1 = require("#internal/utils/verify-dpop-proof");
|
|
10
|
+
const jose_header_1 = require("#internal/utils/jose-header");
|
|
11
|
+
const jose_signature_1 = require("#internal/utils/jose-signature");
|
|
12
|
+
const jwt_validate_1 = require("#internal/utils/jwt-validate");
|
|
13
|
+
const jwt_payload_1 = require("#internal/utils/jwt-payload");
|
|
14
|
+
const jwt_verify_1 = require("#internal/utils/jwt-verify");
|
|
15
|
+
const token_header_1 = require("#internal/utils/token-header");
|
|
16
|
+
const resolve_cert_binding_1 = require("#internal/utils/resolve-cert-binding");
|
|
17
|
+
const verify_cert_binding_1 = require("#internal/utils/verify-cert-binding");
|
|
18
|
+
const validate_1 = require("#internal/utils/validate");
|
|
19
|
+
const DEFAULT_DPOP_MAX_SKEW = 60;
|
|
8
20
|
class JwtKit {
|
|
21
|
+
certBindingMode;
|
|
9
22
|
clockTolerance;
|
|
23
|
+
dpopMaxSkew;
|
|
10
24
|
issuer;
|
|
11
25
|
logger;
|
|
12
26
|
kryptos;
|
|
@@ -14,26 +28,29 @@ class JwtKit {
|
|
|
14
28
|
this.logger = options.logger.child(["JwtKit"]);
|
|
15
29
|
this.kryptos = options.kryptos;
|
|
16
30
|
this.issuer = options.issuer ?? null;
|
|
31
|
+
this.certBindingMode = options.certBindingMode ?? "strict";
|
|
17
32
|
this.clockTolerance = options.clockTolerance ?? 0;
|
|
33
|
+
this.dpopMaxSkew = options.dpopMaxSkew ?? DEFAULT_DPOP_MAX_SKEW;
|
|
18
34
|
}
|
|
19
35
|
sign(content, options = {}) {
|
|
20
36
|
this.logger.debug("Signing token", { content, options });
|
|
21
37
|
if (!this.issuer) {
|
|
22
38
|
throw new errors_1.JwtError("Issuer is required to sign JWT");
|
|
23
39
|
}
|
|
24
|
-
const objectId = options.objectId
|
|
40
|
+
const objectId = options.objectId;
|
|
25
41
|
const headerOptions = {
|
|
26
42
|
...(options.header ?? {}),
|
|
27
43
|
algorithm: this.kryptos.algorithm,
|
|
28
44
|
contentType: "application/json",
|
|
29
|
-
headerType: "
|
|
45
|
+
headerType: (0, compute_typ_header_1.computeTypHeader)(content.tokenType, "jwt"),
|
|
30
46
|
jwksUri: this.kryptos.jwksUri ?? undefined,
|
|
31
47
|
keyId: this.kryptos.id,
|
|
32
48
|
objectId,
|
|
33
49
|
};
|
|
34
|
-
const
|
|
35
|
-
const
|
|
36
|
-
const
|
|
50
|
+
const cert = (0, resolve_cert_binding_1.resolveCertBinding)(this.kryptos, options.bindCertificate);
|
|
51
|
+
const header = (0, jose_header_1.encodeJoseHeader)(headerOptions, cert);
|
|
52
|
+
const { expiresAt, expiresIn, expiresOn, payload, tokenId } = (0, jwt_payload_1.encodeJwtPayload)({ algorithm: this.kryptos.algorithm, issuer: this.issuer }, content, options);
|
|
53
|
+
const signature = (0, jose_signature_1.createJoseSignature)({
|
|
37
54
|
header,
|
|
38
55
|
payload,
|
|
39
56
|
kryptos: this.kryptos,
|
|
@@ -56,13 +73,30 @@ class JwtKit {
|
|
|
56
73
|
debug: { expected: this.kryptos.algorithm },
|
|
57
74
|
});
|
|
58
75
|
}
|
|
59
|
-
|
|
76
|
+
if (verify.tokenType !== undefined) {
|
|
77
|
+
const expectedTyp = (0, compute_typ_header_1.computeTypHeader)(verify.tokenType, "jwt");
|
|
78
|
+
if (parsed.decoded.header.typ !== expectedTyp) {
|
|
79
|
+
throw new errors_1.JwtError("Invalid token", {
|
|
80
|
+
data: { typ: parsed.decoded.header.typ },
|
|
81
|
+
debug: { expected: expectedTyp },
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
const verified = (0, jose_signature_1.verifyJoseSignature)(this.kryptos, token);
|
|
60
86
|
if (!verified) {
|
|
61
87
|
throw new errors_1.JwtError("Invalid token", {
|
|
62
88
|
data: { verified, token: token },
|
|
63
89
|
});
|
|
64
90
|
}
|
|
65
|
-
|
|
91
|
+
(0, verify_cert_binding_1.verifyCertBinding)({
|
|
92
|
+
header: {
|
|
93
|
+
x5tS256: parsed.header.x5tS256,
|
|
94
|
+
},
|
|
95
|
+
kryptos: this.kryptos,
|
|
96
|
+
logger: this.logger,
|
|
97
|
+
mode: this.certBindingMode,
|
|
98
|
+
});
|
|
99
|
+
const predicate = (0, jwt_verify_1.createJwtVerify)(this.kryptos.algorithm, verify, this.clockTolerance);
|
|
66
100
|
const { decoded: { payload }, } = parsed;
|
|
67
101
|
const withDates = {
|
|
68
102
|
...payload,
|
|
@@ -72,31 +106,73 @@ class JwtKit {
|
|
|
72
106
|
auth_time: payload.auth_time ? new Date(payload.auth_time * 1000) : undefined,
|
|
73
107
|
};
|
|
74
108
|
try {
|
|
75
|
-
(0,
|
|
109
|
+
(0, validate_1.validate)(withDates, predicate);
|
|
76
110
|
}
|
|
77
111
|
catch (err) {
|
|
78
112
|
throw new errors_1.JwtError("Invalid token", { data: err.data });
|
|
79
113
|
}
|
|
114
|
+
const actorError = (0, validate_actor_1.validateActor)(parsed.delegation, verify.actor);
|
|
115
|
+
if (actorError) {
|
|
116
|
+
throw new errors_1.JwtError(actorError);
|
|
117
|
+
}
|
|
118
|
+
const boundThumbprint = parsed.payload.confirmation?.thumbprint;
|
|
119
|
+
if (verify.dpopProof !== undefined) {
|
|
120
|
+
if (!boundThumbprint) {
|
|
121
|
+
throw new errors_1.JwtError("Invalid token: DPoP proof provided but token is not bound", {
|
|
122
|
+
debug: { confirmation: parsed.payload.confirmation },
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
parsed.dpop = (0, verify_dpop_proof_1.verifyDpopProof)({
|
|
126
|
+
proof: verify.dpopProof,
|
|
127
|
+
accessToken: token,
|
|
128
|
+
expectedThumbprint: boundThumbprint,
|
|
129
|
+
dpopMaxSkew: this.dpopMaxSkew,
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
else if (boundThumbprint && !verify.trustBoundThumbprint) {
|
|
133
|
+
throw new errors_1.JwtError("Invalid token: token is DPoP-bound but no DPoP proof was provided");
|
|
134
|
+
}
|
|
80
135
|
this.logger.debug("Token verified");
|
|
81
136
|
return parsed;
|
|
82
137
|
}
|
|
83
138
|
static isJwt(jwt) {
|
|
84
|
-
|
|
139
|
+
if (typeof jwt !== "string")
|
|
140
|
+
return false;
|
|
141
|
+
const parts = jwt.split(".");
|
|
142
|
+
if (parts.length !== 3)
|
|
143
|
+
return false;
|
|
144
|
+
try {
|
|
145
|
+
const header = (0, jose_header_1.decodeJoseHeader)(parts[0]);
|
|
146
|
+
if (typeof header.alg !== "string")
|
|
147
|
+
return false;
|
|
148
|
+
const typ = header.typ;
|
|
149
|
+
return typ === "JWT" || (typeof typ === "string" && typ.endsWith("+jwt"));
|
|
150
|
+
}
|
|
151
|
+
catch {
|
|
152
|
+
return false;
|
|
153
|
+
}
|
|
85
154
|
}
|
|
86
155
|
static decode(jwt) {
|
|
87
156
|
const [header, payload, signature] = jwt.split(".");
|
|
88
157
|
return {
|
|
89
|
-
header: (0,
|
|
90
|
-
payload: (0,
|
|
158
|
+
header: (0, jose_header_1.decodeJoseHeader)(header),
|
|
159
|
+
payload: (0, jwt_payload_1.decodeJwtPayload)(payload),
|
|
91
160
|
signature,
|
|
92
161
|
};
|
|
93
162
|
}
|
|
94
163
|
static parse(token) {
|
|
95
164
|
const decoded = JwtKit.decode(token);
|
|
96
|
-
|
|
165
|
+
const typ = decoded.header.typ;
|
|
166
|
+
if (typ !== "JWT" && !(typeof typ === "string" && typ.endsWith("+jwt"))) {
|
|
97
167
|
throw new errors_1.JwtError("Invalid token", {
|
|
98
|
-
data: { typ
|
|
99
|
-
details: "Header type must be JWT",
|
|
168
|
+
data: { typ },
|
|
169
|
+
details: "Header type must be JWT or <type>+jwt",
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
const critError = (0, validate_crit_1.validateCrit)(decoded.header);
|
|
173
|
+
if (critError) {
|
|
174
|
+
throw new errors_1.JwtError(`Invalid crit header: ${critError}`, {
|
|
175
|
+
data: { crit: decoded.header.crit },
|
|
100
176
|
});
|
|
101
177
|
}
|
|
102
178
|
if (!decoded.payload.iss) {
|
|
@@ -105,13 +181,16 @@ class JwtKit {
|
|
|
105
181
|
details: "Issuer is required to decode JWT",
|
|
106
182
|
});
|
|
107
183
|
}
|
|
108
|
-
const header = (0,
|
|
109
|
-
|
|
110
|
-
|
|
184
|
+
const header = (0, token_header_1.parseTokenHeader)(decoded.header);
|
|
185
|
+
header.tokenType = (0, compute_typ_header_1.decodeTokenTypeFromTyp)(typ, "jwt");
|
|
186
|
+
header.baseFormat = "JWT";
|
|
187
|
+
const payload = (0, jwt_payload_1.parseTokenPayload)(decoded.payload);
|
|
188
|
+
const delegation = (0, extract_token_delegation_1.extractTokenDelegation)(decoded.payload);
|
|
189
|
+
return { decoded, delegation, header, payload, token };
|
|
111
190
|
}
|
|
112
191
|
static validate(payload, options) {
|
|
113
|
-
const operators = (0,
|
|
114
|
-
(0,
|
|
192
|
+
const operators = (0, jwt_validate_1.createJwtValidate)(options);
|
|
193
|
+
(0, validate_1.validate)(payload, operators);
|
|
115
194
|
}
|
|
116
195
|
}
|
|
117
196
|
exports.JwtKit = JwtKit;
|