@pagopa/io-react-native-jwt 0.6.2 → 0.6.4
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/lib/commonjs/index.js +12 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/jwt/sign.js +3 -2
- package/lib/commonjs/jwt/sign.js.map +1 -1
- package/lib/commonjs/utils/asn1.js +1 -1
- package/lib/commonjs/utils/asn1.js.map +1 -1
- package/lib/module/index.js +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/jwt/sign.js +4 -3
- package/lib/module/jwt/sign.js.map +1 -1
- package/lib/module/utils/asn1.js +1 -1
- package/lib/module/utils/asn1.js.map +1 -1
- package/lib/typescript/index.d.ts +1 -1
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/jwt/sign.d.ts.map +1 -1
- package/lib/typescript/utils/asn1.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +6 -1
- package/src/jwt/sign.ts +5 -3
- package/src/utils/asn1.ts +4 -1
package/lib/commonjs/index.js
CHANGED
|
@@ -27,6 +27,12 @@ Object.defineProperty(exports, "UnsecuredJWT", {
|
|
|
27
27
|
return _unsecured.UnsecuredJWT;
|
|
28
28
|
}
|
|
29
29
|
});
|
|
30
|
+
Object.defineProperty(exports, "addPadding", {
|
|
31
|
+
enumerable: true,
|
|
32
|
+
get: function () {
|
|
33
|
+
return _base.addPadding;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
30
36
|
Object.defineProperty(exports, "decode", {
|
|
31
37
|
enumerable: true,
|
|
32
38
|
get: function () {
|
|
@@ -69,6 +75,12 @@ Object.defineProperty(exports, "isSignatureValid", {
|
|
|
69
75
|
return _index2.isSignatureValid;
|
|
70
76
|
}
|
|
71
77
|
});
|
|
78
|
+
Object.defineProperty(exports, "removePadding", {
|
|
79
|
+
enumerable: true,
|
|
80
|
+
get: function () {
|
|
81
|
+
return _base.removePadding;
|
|
82
|
+
}
|
|
83
|
+
});
|
|
72
84
|
Object.defineProperty(exports, "sha256ToBase64", {
|
|
73
85
|
enumerable: true,
|
|
74
86
|
get: function () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_index","require","_index2","_index3","_produce","_sign","_unsecured","_asn","_base","_hash"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"
|
|
1
|
+
{"version":3,"names":["_index","require","_index2","_index3","_produce","_sign","_unsecured","_asn","_base","_hash"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAMA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AACA,IAAAI,KAAA,GAAAJ,OAAA;AACA,IAAAK,UAAA,GAAAL,OAAA;AAGA,IAAAM,IAAA,GAAAN,OAAA;AACA,IAAAO,KAAA,GAAAP,OAAA;AAMA,IAAAQ,KAAA,GAAAR,OAAA"}
|
package/lib/commonjs/jwt/sign.js
CHANGED
|
@@ -75,10 +75,11 @@ class SignJWT extends _produce.ProduceJWT {
|
|
|
75
75
|
if (signature === '') throw new _errors.JWSInvalid('Invalid signature');
|
|
76
76
|
const jwtDecoded = SignJWT.decodeJwtWithoutSignature(jwtWithoutSignature);
|
|
77
77
|
const alg = jwtDecoded.header.alg;
|
|
78
|
-
|
|
78
|
+
const kty = (0, _algorithms.getKtyFromAlg)(alg);
|
|
79
|
+
if (kty === 'EC') {
|
|
79
80
|
const encodedJws = await (0, _asn.derToJose)(signature, alg);
|
|
80
81
|
return `${jwtWithoutSignature}.${encodedJws}`;
|
|
81
|
-
}
|
|
82
|
+
} else {
|
|
82
83
|
const encodedJws = (0, _base.removePadding)(signature);
|
|
83
84
|
return `${jwtWithoutSignature}.${encodedJws}`;
|
|
84
85
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_errors","require","_produce","_base","_algorithms","_asn","SignJWT","ProduceJWT","setProtectedHeader","protectedHeader","alg","isAlgSupported","_protectedHeader","JOSENotSupported","toSign","JWSInvalid","encodeBase64","JSON","stringify","payload","_payload","appendSignature","jwtWithoutSignature","signature","JWTInvalid","jwtDecoded","decodeJwtWithoutSignature","header","encodedJws","derToJose","removePadding","encodedHeader","encodedPayload","length","split","decoded","decodeBase64","parse","decodedPayload","decode","jwt","exports"],"sourceRoot":"../../../src","sources":["jwt/sign.ts"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAMA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,WAAA,GAAAH,OAAA;AAEA,IAAAI,IAAA,GAAAJ,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMK,OAAO,SAASC,mBAAU,CAAC;EAGtC;AACF;AACA;AACA;AACA;EACEC,kBAAkBA,CAACC,eAA2C,EAAE;IAC9D,IAAIA,eAAe,CAACC,GAAG,IAAI,IAAAC,0BAAc,EAACF,eAAe,CAACC,GAAG,CAAC,EAAE;MAC9D,IAAI,CAACE,gBAAgB,GAAGH,eAAe;MACvC,OAAO,IAAI;IACb;IACA,MAAM,IAAII,wBAAgB,CAAC,yBAAyB,CAAC;EACvD;;EAEA;AACF;AACA;AACA;EACEC,MAAMA,CAAA,EAAW;IACf,IAAI,CAAC,IAAI,CAACF,gBAAgB,IAAI,CAAC,IAAI,CAACA,gBAAgB,CAACF,GAAG,EAAE;MACxD,MAAM,IAAIK,kBAAU,CAClB,sDACF,CAAC;IACH;IACA,MAAMN,eAAe,GAAG,IAAAO,kBAAY,EAACC,IAAI,CAACC,SAAS,CAAC,IAAI,CAACN,gBAAgB,CAAC,CAAC;IAC3E,MAAMO,OAAO,GAAG,IAAAH,kBAAY,EAACC,IAAI,CAACC,SAAS,CAAC,IAAI,CAACE,QAAQ,CAAC,CAAC;IAC3D,IAAID,OAAO,IAAIV,eAAe,EAAE;MAC9B,OAAQ,GAAEA,eAAgB,IAAGU,OAAQ,EAAC;IACxC,CAAC,MAAM;MACL,MAAM,IAAIJ,kBAAU,CAAC,CAAC;IACxB;EACF;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,aAAaM,eAAeA,CAC1BC,mBAA2B,EAC3BC,SAAiB,EACA;IACjB,IACE,OAAOD,mBAAmB,KAAK,QAAQ,IACvC,OAAOC,SAAS,KAAK,QAAQ,EAC7B;MACA,MAAM,IAAIC,kBAAU,CAAC,sBAAsB,CAAC;IAC9C;IACA,IAAID,SAAS,KAAK,EAAE,EAAE,MAAM,IAAIR,kBAAU,CAAC,mBAAmB,CAAC;IAE/D,MAAMU,UAAU,GAAGnB,OAAO,CAACoB,yBAAyB,CAACJ,mBAAmB,CAAC;IACzE,MAAMZ,GAAG,GAAGe,UAAU,CAACE,MAAM,CAACjB,GAAG;IACjC,IAAI;
|
|
1
|
+
{"version":3,"names":["_errors","require","_produce","_base","_algorithms","_asn","SignJWT","ProduceJWT","setProtectedHeader","protectedHeader","alg","isAlgSupported","_protectedHeader","JOSENotSupported","toSign","JWSInvalid","encodeBase64","JSON","stringify","payload","_payload","appendSignature","jwtWithoutSignature","signature","JWTInvalid","jwtDecoded","decodeJwtWithoutSignature","header","kty","getKtyFromAlg","encodedJws","derToJose","removePadding","encodedHeader","encodedPayload","length","split","decoded","decodeBase64","parse","decodedPayload","decode","jwt","exports"],"sourceRoot":"../../../src","sources":["jwt/sign.ts"],"mappings":"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"}
|
|
@@ -27,7 +27,7 @@ const derToJose = async (asn1Signature, alg) => {
|
|
|
27
27
|
const kty = (0, _algorithms.getKtyFromAlg)(alg);
|
|
28
28
|
if (kty === 'EC') {
|
|
29
29
|
const unpackedJws = await _proxy.IoReactNativeJwt.unpackBerEncodedASN1(asn1Signature, (0, _algorithms.getCoordinateOctetLength)(alg));
|
|
30
|
-
const encodedJws = (0, _base.removePadding)(unpackedJws);
|
|
30
|
+
const encodedJws = (0, _base.removePadding)(unpackedJws).replace(/(?:\r\n|\r|\n)/g, '');
|
|
31
31
|
return encodedJws;
|
|
32
32
|
} else {
|
|
33
33
|
throw new _errors.JOSENotSupported('Unsupported "alg" value');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_algorithms","require","_proxy","_base","_errors","derToJose","asn1Signature","alg","kty","getKtyFromAlg","unpackedJws","IoReactNativeJwt","unpackBerEncodedASN1","getCoordinateOctetLength","encodedJws","removePadding","JOSENotSupported","exports"],"sourceRoot":"../../../src","sources":["utils/asn1.ts"],"mappings":";;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMI,SAAS,GAAG,MAAAA,CACvBC,aAAqB,EACrBC,GAAW,KACS;EACpB,MAAMC,GAAG,GAAG,IAAAC,yBAAa,EAACF,GAAG,CAAC;EAC9B,IAAIC,GAAG,KAAK,IAAI,EAAE;IAChB,MAAME,WAAW,GAAG,MAAMC,uBAAgB,CAACC,oBAAoB,CAC7DN,aAAa,EACb,IAAAO,oCAAwB,EAACN,GAAG,CAC9B,CAAC;IACD,MAAMO,UAAU,GAAG,IAAAC,mBAAa,EAACL,WAAW,CAAC;
|
|
1
|
+
{"version":3,"names":["_algorithms","require","_proxy","_base","_errors","derToJose","asn1Signature","alg","kty","getKtyFromAlg","unpackedJws","IoReactNativeJwt","unpackBerEncodedASN1","getCoordinateOctetLength","encodedJws","removePadding","replace","JOSENotSupported","exports"],"sourceRoot":"../../../src","sources":["utils/asn1.ts"],"mappings":";;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMI,SAAS,GAAG,MAAAA,CACvBC,aAAqB,EACrBC,GAAW,KACS;EACpB,MAAMC,GAAG,GAAG,IAAAC,yBAAa,EAACF,GAAG,CAAC;EAC9B,IAAIC,GAAG,KAAK,IAAI,EAAE;IAChB,MAAME,WAAW,GAAG,MAAMC,uBAAgB,CAACC,oBAAoB,CAC7DN,aAAa,EACb,IAAAO,oCAAwB,EAACN,GAAG,CAC9B,CAAC;IACD,MAAMO,UAAU,GAAG,IAAAC,mBAAa,EAACL,WAAW,CAAC,CAACM,OAAO,CACnD,iBAAiB,EACjB,EACF,CAAC;IACD,OAAOF,UAAU;EACnB,CAAC,MAAM;IACL,MAAM,IAAIG,wBAAgB,CAAC,yBAAyB,CAAC;EACvD;AACF,CAAC;AAACC,OAAA,CAAAb,SAAA,GAAAA,SAAA"}
|
package/lib/module/index.js
CHANGED
|
@@ -5,6 +5,6 @@ export { ProduceJWT } from './jwt/produce';
|
|
|
5
5
|
export { SignJWT } from './jwt/sign';
|
|
6
6
|
export { UnsecuredJWT } from './jwt/unsecured';
|
|
7
7
|
export { derToJose } from './utils/asn1';
|
|
8
|
-
export { encodeBase64, decodeBase64 } from './utils/base64';
|
|
8
|
+
export { encodeBase64, decodeBase64, removePadding, addPadding } from './utils/base64';
|
|
9
9
|
export { sha256ToBase64 } from './hash';
|
|
10
10
|
//# sourceMappingURL=index.js.map
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["EncryptJwe","decode","isSignatureValid","verify","getJwkFromHeader","thumbprint","getRemoteJWKSet","ProduceJWT","SignJWT","UnsecuredJWT","derToJose","encodeBase64","decodeBase64","sha256ToBase64"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA,SAASA,UAAU,QAAQ,aAAa;AACxC,SACEC,MAAM,EACNC,gBAAgB,EAChBC,MAAM,EACNC,gBAAgB,QACX,aAAa;AACpB,SAASC,UAAU,EAAEC,eAAe,QAAQ,aAAa;AACzD,SAASC,UAAU,QAAQ,eAAe;AAC1C,SAASC,OAAO,QAAQ,YAAY;AACpC,SAASC,YAAY,QAAQ,iBAAiB;AAG9C,SAASC,SAAS,QAAQ,cAAc;AACxC,
|
|
1
|
+
{"version":3,"names":["EncryptJwe","decode","isSignatureValid","verify","getJwkFromHeader","thumbprint","getRemoteJWKSet","ProduceJWT","SignJWT","UnsecuredJWT","derToJose","encodeBase64","decodeBase64","removePadding","addPadding","sha256ToBase64"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA,SAASA,UAAU,QAAQ,aAAa;AACxC,SACEC,MAAM,EACNC,gBAAgB,EAChBC,MAAM,EACNC,gBAAgB,QACX,aAAa;AACpB,SAASC,UAAU,EAAEC,eAAe,QAAQ,aAAa;AACzD,SAASC,UAAU,QAAQ,eAAe;AAC1C,SAASC,OAAO,QAAQ,YAAY;AACpC,SAASC,YAAY,QAAQ,iBAAiB;AAG9C,SAASC,SAAS,QAAQ,cAAc;AACxC,SACEC,YAAY,EACZC,YAAY,EACZC,aAAa,EACbC,UAAU,QACL,gBAAgB;AACvB,SAASC,cAAc,QAAQ,QAAQ"}
|
package/lib/module/jwt/sign.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { JOSENotSupported, JWSInvalid, JWTInvalid } from '../utils/errors';
|
|
2
2
|
import { ProduceJWT } from './produce';
|
|
3
3
|
import { decodeBase64, encodeBase64, removePadding } from '../utils/base64';
|
|
4
|
-
import { isAlgSupported } from '../algorithms';
|
|
4
|
+
import { getKtyFromAlg, isAlgSupported } from '../algorithms';
|
|
5
5
|
import { derToJose } from '../utils/asn1';
|
|
6
6
|
|
|
7
7
|
/**
|
|
@@ -70,10 +70,11 @@ export class SignJWT extends ProduceJWT {
|
|
|
70
70
|
if (signature === '') throw new JWSInvalid('Invalid signature');
|
|
71
71
|
const jwtDecoded = SignJWT.decodeJwtWithoutSignature(jwtWithoutSignature);
|
|
72
72
|
const alg = jwtDecoded.header.alg;
|
|
73
|
-
|
|
73
|
+
const kty = getKtyFromAlg(alg);
|
|
74
|
+
if (kty === 'EC') {
|
|
74
75
|
const encodedJws = await derToJose(signature, alg);
|
|
75
76
|
return `${jwtWithoutSignature}.${encodedJws}`;
|
|
76
|
-
}
|
|
77
|
+
} else {
|
|
77
78
|
const encodedJws = removePadding(signature);
|
|
78
79
|
return `${jwtWithoutSignature}.${encodedJws}`;
|
|
79
80
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["JOSENotSupported","JWSInvalid","JWTInvalid","ProduceJWT","decodeBase64","encodeBase64","removePadding","isAlgSupported","derToJose","SignJWT","setProtectedHeader","protectedHeader","alg","_protectedHeader","toSign","JSON","stringify","payload","_payload","appendSignature","jwtWithoutSignature","signature","jwtDecoded","decodeJwtWithoutSignature","header","encodedJws","encodedHeader","encodedPayload","length","split","decoded","parse","decodedPayload","decode","jwt"],"sourceRoot":"../../../src","sources":["jwt/sign.ts"],"mappings":"AAAA,SAASA,gBAAgB,EAAEC,UAAU,EAAEC,UAAU,QAAQ,iBAAiB;AAM1E,SAASC,UAAU,QAAQ,WAAW;AACtC,SAASC,YAAY,EAAEC,YAAY,EAAEC,aAAa,QAAQ,iBAAiB;AAC3E,SAASC,cAAc,QAAQ,eAAe;
|
|
1
|
+
{"version":3,"names":["JOSENotSupported","JWSInvalid","JWTInvalid","ProduceJWT","decodeBase64","encodeBase64","removePadding","getKtyFromAlg","isAlgSupported","derToJose","SignJWT","setProtectedHeader","protectedHeader","alg","_protectedHeader","toSign","JSON","stringify","payload","_payload","appendSignature","jwtWithoutSignature","signature","jwtDecoded","decodeJwtWithoutSignature","header","kty","encodedJws","encodedHeader","encodedPayload","length","split","decoded","parse","decodedPayload","decode","jwt"],"sourceRoot":"../../../src","sources":["jwt/sign.ts"],"mappings":"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"}
|
package/lib/module/utils/asn1.js
CHANGED
|
@@ -22,7 +22,7 @@ export const derToJose = async (asn1Signature, alg) => {
|
|
|
22
22
|
const kty = getKtyFromAlg(alg);
|
|
23
23
|
if (kty === 'EC') {
|
|
24
24
|
const unpackedJws = await IoReactNativeJwt.unpackBerEncodedASN1(asn1Signature, getCoordinateOctetLength(alg));
|
|
25
|
-
const encodedJws = removePadding(unpackedJws);
|
|
25
|
+
const encodedJws = removePadding(unpackedJws).replace(/(?:\r\n|\r|\n)/g, '');
|
|
26
26
|
return encodedJws;
|
|
27
27
|
} else {
|
|
28
28
|
throw new JOSENotSupported('Unsupported "alg" value');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getCoordinateOctetLength","getKtyFromAlg","IoReactNativeJwt","removePadding","JOSENotSupported","derToJose","asn1Signature","alg","kty","unpackedJws","unpackBerEncodedASN1","encodedJws"],"sourceRoot":"../../../src","sources":["utils/asn1.ts"],"mappings":"AAAA,SAASA,wBAAwB,EAAEC,aAAa,QAAQ,eAAe;AACvE,SAASC,gBAAgB,QAAQ,SAAS;AAC1C,SAASC,aAAa,QAAQ,UAAU;AACxC,SAASC,gBAAgB,QAAQ,UAAU;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,SAAS,GAAG,MAAAA,CACvBC,aAAqB,EACrBC,GAAW,KACS;EACpB,MAAMC,GAAG,GAAGP,aAAa,CAACM,GAAG,CAAC;EAC9B,IAAIC,GAAG,KAAK,IAAI,EAAE;IAChB,MAAMC,WAAW,GAAG,MAAMP,gBAAgB,CAACQ,oBAAoB,CAC7DJ,aAAa,EACbN,wBAAwB,CAACO,GAAG,CAC9B,CAAC;IACD,MAAMI,UAAU,GAAGR,aAAa,CAACM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"names":["getCoordinateOctetLength","getKtyFromAlg","IoReactNativeJwt","removePadding","JOSENotSupported","derToJose","asn1Signature","alg","kty","unpackedJws","unpackBerEncodedASN1","encodedJws","replace"],"sourceRoot":"../../../src","sources":["utils/asn1.ts"],"mappings":"AAAA,SAASA,wBAAwB,EAAEC,aAAa,QAAQ,eAAe;AACvE,SAASC,gBAAgB,QAAQ,SAAS;AAC1C,SAASC,aAAa,QAAQ,UAAU;AACxC,SAASC,gBAAgB,QAAQ,UAAU;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,SAAS,GAAG,MAAAA,CACvBC,aAAqB,EACrBC,GAAW,KACS;EACpB,MAAMC,GAAG,GAAGP,aAAa,CAACM,GAAG,CAAC;EAC9B,IAAIC,GAAG,KAAK,IAAI,EAAE;IAChB,MAAMC,WAAW,GAAG,MAAMP,gBAAgB,CAACQ,oBAAoB,CAC7DJ,aAAa,EACbN,wBAAwB,CAACO,GAAG,CAC9B,CAAC;IACD,MAAMI,UAAU,GAAGR,aAAa,CAACM,WAAW,CAAC,CAACG,OAAO,CACnD,iBAAiB,EACjB,EACF,CAAC;IACD,OAAOD,UAAU;EACnB,CAAC,MAAM;IACL,MAAM,IAAIP,gBAAgB,CAAC,yBAAyB,CAAC;EACvD;AACF,CAAC"}
|
|
@@ -6,6 +6,6 @@ export { SignJWT } from './jwt/sign';
|
|
|
6
6
|
export { UnsecuredJWT } from './jwt/unsecured';
|
|
7
7
|
export type { UnsecuredResult } from './jwt/unsecured';
|
|
8
8
|
export { derToJose } from './utils/asn1';
|
|
9
|
-
export { encodeBase64, decodeBase64 } from './utils/base64';
|
|
9
|
+
export { encodeBase64, decodeBase64, removePadding, addPadding, } from './utils/base64';
|
|
10
10
|
export { sha256ToBase64 } from './hash';
|
|
11
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,MAAM,EACN,gBAAgB,EAChB,MAAM,EACN,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,MAAM,EACN,gBAAgB,EAChB,MAAM,EACN,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,UAAU,GACX,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sign.d.ts","sourceRoot":"","sources":["../../../src/jwt/sign.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,0BAA0B,EAC1B,eAAe,EACf,UAAU,EACX,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAMvC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,OAAQ,SAAQ,UAAU;IACrC,OAAO,CAAC,gBAAgB,CAA8B;IAEtD;;;;OAIG;IACH,kBAAkB,CAAC,eAAe,EAAE,0BAA0B;IAQ9D;;;OAGG;IACH,MAAM,IAAI,MAAM;IAehB;;;;;;;OAOG;WACU,eAAe,CAC1B,mBAAmB,EAAE,MAAM,EAC3B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"sign.d.ts","sourceRoot":"","sources":["../../../src/jwt/sign.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,0BAA0B,EAC1B,eAAe,EACf,UAAU,EACX,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAMvC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,OAAQ,SAAQ,UAAU;IACrC,OAAO,CAAC,gBAAgB,CAA8B;IAEtD;;;;OAIG;IACH,kBAAkB,CAAC,eAAe,EAAE,0BAA0B;IAQ9D;;;OAGG;IACH,MAAM,IAAI,MAAM;IAehB;;;;;;;OAOG;WACU,eAAe,CAC1B,mBAAmB,EAAE,MAAM,EAC3B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC;IAsBlB;;;;OAIG;IACH,MAAM,CAAC,yBAAyB,CAAC,mBAAmB,EAAE,MAAM,GAAG;QAC7D,OAAO,EAAE,UAAU,CAAC;QACpB,MAAM,EAAE,0BAA0B,CAAC;KACpC;IAkCD;;;;OAIG;IACH,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe;CAkC5C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asn1.d.ts","sourceRoot":"","sources":["../../../src/utils/asn1.ts"],"names":[],"mappings":"AAoBA,eAAO,MAAM,SAAS,kBACL,MAAM,OAChB,MAAM,KACV,QAAQ,MAAM,
|
|
1
|
+
{"version":3,"file":"asn1.d.ts","sourceRoot":"","sources":["../../../src/utils/asn1.ts"],"names":[],"mappings":"AAoBA,eAAO,MAAM,SAAS,kBACL,MAAM,OAChB,MAAM,KACV,QAAQ,MAAM,CAehB,CAAC"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -12,5 +12,10 @@ export { UnsecuredJWT } from './jwt/unsecured';
|
|
|
12
12
|
export type { UnsecuredResult } from './jwt/unsecured';
|
|
13
13
|
|
|
14
14
|
export { derToJose } from './utils/asn1';
|
|
15
|
-
export {
|
|
15
|
+
export {
|
|
16
|
+
encodeBase64,
|
|
17
|
+
decodeBase64,
|
|
18
|
+
removePadding,
|
|
19
|
+
addPadding,
|
|
20
|
+
} from './utils/base64';
|
|
16
21
|
export { sha256ToBase64 } from './hash';
|
package/src/jwt/sign.ts
CHANGED
|
@@ -6,7 +6,7 @@ import type {
|
|
|
6
6
|
} from '../types';
|
|
7
7
|
import { ProduceJWT } from './produce';
|
|
8
8
|
import { decodeBase64, encodeBase64, removePadding } from '../utils/base64';
|
|
9
|
-
import { isAlgSupported } from '../algorithms';
|
|
9
|
+
import { getKtyFromAlg, isAlgSupported } from '../algorithms';
|
|
10
10
|
|
|
11
11
|
import { derToJose } from '../utils/asn1';
|
|
12
12
|
|
|
@@ -87,10 +87,12 @@ export class SignJWT extends ProduceJWT {
|
|
|
87
87
|
|
|
88
88
|
const jwtDecoded = SignJWT.decodeJwtWithoutSignature(jwtWithoutSignature);
|
|
89
89
|
const alg = jwtDecoded.header.alg;
|
|
90
|
-
|
|
90
|
+
const kty = getKtyFromAlg(alg);
|
|
91
|
+
|
|
92
|
+
if (kty === 'EC') {
|
|
91
93
|
const encodedJws = await derToJose(signature, alg);
|
|
92
94
|
return `${jwtWithoutSignature}.${encodedJws}`;
|
|
93
|
-
}
|
|
95
|
+
} else {
|
|
94
96
|
const encodedJws = removePadding(signature);
|
|
95
97
|
return `${jwtWithoutSignature}.${encodedJws}`;
|
|
96
98
|
}
|
package/src/utils/asn1.ts
CHANGED
|
@@ -28,7 +28,10 @@ export const derToJose = async (
|
|
|
28
28
|
asn1Signature,
|
|
29
29
|
getCoordinateOctetLength(alg)
|
|
30
30
|
);
|
|
31
|
-
const encodedJws = removePadding(unpackedJws)
|
|
31
|
+
const encodedJws = removePadding(unpackedJws).replace(
|
|
32
|
+
/(?:\r\n|\r|\n)/g,
|
|
33
|
+
''
|
|
34
|
+
);
|
|
32
35
|
return encodedJws;
|
|
33
36
|
} else {
|
|
34
37
|
throw new JOSENotSupported('Unsupported "alg" value');
|