@noble/curves 0.7.1 → 0.7.3
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/README.md +40 -20
- package/abstract/hash-to-curve.d.ts +13 -4
- package/abstract/hash-to-curve.d.ts.map +1 -1
- package/abstract/hash-to-curve.js +28 -25
- package/abstract/hash-to-curve.js.map +1 -1
- package/abstract/montgomery.d.ts +4 -0
- package/abstract/montgomery.d.ts.map +1 -1
- package/abstract/montgomery.js +1 -0
- package/abstract/montgomery.js.map +1 -1
- package/ed25519.d.ts.map +1 -1
- package/ed25519.js +1 -0
- package/ed25519.js.map +1 -1
- package/ed448.d.ts.map +1 -1
- package/ed448.js +1 -0
- package/ed448.js.map +1 -1
- package/esm/abstract/hash-to-curve.js +29 -26
- package/esm/abstract/hash-to-curve.js.map +1 -1
- package/esm/abstract/montgomery.js +1 -0
- package/esm/abstract/montgomery.js.map +1 -1
- package/esm/ed25519.js +1 -0
- package/esm/ed25519.js.map +1 -1
- package/esm/ed448.js +1 -0
- package/esm/ed448.js.map +1 -1
- package/esm/stark.js +75 -114
- package/esm/stark.js.map +1 -1
- package/package.json +2 -12
- package/src/abstract/hash-to-curve.ts +39 -38
- package/src/abstract/montgomery.ts +3 -0
- package/src/ed25519.ts +1 -0
- package/src/ed448.ts +1 -0
- package/src/stark.ts +92 -130
- package/stark.d.ts +12 -17
- package/stark.d.ts.map +1 -1
- package/stark.js +81 -122
- package/stark.js.map +1 -1
- package/esm/p192.js +0 -22
- package/esm/p192.js.map +0 -1
- package/esm/p224.js +0 -22
- package/esm/p224.js.map +0 -1
- package/p192.d.ts +0 -101
- package/p192.d.ts.map +0 -1
- package/p192.js +0 -25
- package/p192.js.map +0 -1
- package/p224.d.ts +0 -101
- package/p224.d.ts.map +0 -1
- package/p224.js +0 -25
- package/p224.js.map +0 -1
- package/src/p192.ts +0 -25
- package/src/p224.ts +0 -25
package/esm/stark.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stark.js","sourceRoot":"","sources":["../src/stark.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stark.js","sourceRoot":"","sources":["../src/stark.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,EAAE,EAAE,GAAG,EAAS,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAgC,MAAM,2BAA2B,CAAC;AACtF,OAAO,EAEL,OAAO,EACP,UAAU,EACV,eAAe,EACf,WAAW,EACX,WAAW,IAAI,eAAe,EAC9B,UAAU,EACV,WAAW,EACX,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAM7C,MAAM,WAAW,GAAG,MAAM,CACxB,8EAA8E,CAC/E,CAAC;AACF,MAAM,UAAU,GAAG,GAAG,CAAC;AACvB,SAAS,QAAQ,CAAC,KAAiB;IACjC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;QAAE,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB;IACrE,kCAAkC;IAClC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC;IAC5C,MAAM,GAAG,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACnC,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAChD,CAAC;AACD,SAAS,YAAY,CAAC,GAAW;IAC/B,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;QAC3B,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB;QACtC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,qBAAqB;KAC3D;IACD,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AACD,MAAM,KAAK,GAAG,WAAW,CAAC;IACxB,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACZ,CAAC,EAAE,MAAM,CAAC,8EAA8E,CAAC;IACzF,yEAAyE;IACzE,gDAAgD;IAChD,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,mEAAmE,CAAC,CAAC;IACnF,CAAC,EAAE,WAAW;IACd,UAAU;IACV,wCAAwC;IACxC,EAAE,EAAE,MAAM,CAAC,6EAA6E,CAAC;IACzF,EAAE,EAAE,MAAM,CAAC,6EAA6E,CAAC;IACzF,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACZ,IAAI,EAAE,KAAK;IACX,GAAG,OAAO,CAAC,MAAM,CAAC;IAClB,6CAA6C;IAC7C,QAAQ;IACR,aAAa,EAAE,CAAC,KAAiB,EAAU,EAAE;QAC3C,qEAAqE;QACrE,mEAAmE;QACnE,MAAM,GAAG,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB;QAClE,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE;YAAE,KAAK,GAAG,YAAY,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,oBAAoB;QAC5E,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC;IAC3C,CAAC;CACF,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC;AAEjC,SAAS,WAAW,CAAC,GAAQ;IAC3B,OAAO,eAAe,CAAC,EAAE,EAAE,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,WAAW,CAAC,OAAY;IAC/B,OAAO,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAC5D,CAAC;AACD,MAAM,UAAU,YAAY,CAAC,OAAY,EAAE,YAAY,GAAG,KAAK;IAC7D,OAAO,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC;AAChE,CAAC;AACD,MAAM,UAAU,eAAe,CAAC,QAAa,EAAE,OAAY;IACzD,OAAO,KAAK,CAAC,eAAe,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;AAC/D,CAAC;AACD,MAAM,UAAU,IAAI,CAAC,OAAY,EAAE,OAAY,EAAE,IAAU;IACzD,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;AACtE,CAAC;AACD,MAAM,UAAU,MAAM,CAAC,SAA8B,EAAE,OAAY,EAAE,MAAW;IAC9E,MAAM,GAAG,GAAG,SAAS,YAAY,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAChF,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAEpD,SAAS,QAAQ,CAAC,KAAiB;IACjC,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,mBAAmB;IAC9D,OAAO,KAAK,QAAQ,EAAE,CAAC;AACzB,CAAC;AACD,SAAS,OAAO,CAAC,GAAW;IAC1B,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACjC,CAAC;AACD,SAAS,YAAY,CAAC,GAAW;IAC/B,2EAA2E;IAC3E,OAAO,KAAK,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;AACjC,CAAC;AAED,kBAAkB;AAClB,MAAM,UAAU,QAAQ,CAAC,IAAS;IAChC,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,UAAU,GAAG,EAAE,IAAI,IAAI,CAAC;IAC9B,MAAM,KAAK,GAAG,UAAU,GAAG,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IACxD,KAAK,IAAI,CAAC,GAAG,CAAC,GAAI,CAAC,EAAE,EAAE;QACrB,MAAM,GAAG,GAAG,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,IAAI,GAAG,GAAG,KAAK;YAAE,OAAO,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,8BAA8B;QAC1F,IAAI,CAAC,KAAK,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC,CAAC,cAAc;KACzF;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,UAAe;IACzC,OAAO,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,SAAiB;IAC/C,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAC/B,IAAI,SAAS,CAAC,MAAM,KAAK,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC1E,OAAO,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,OAAO,GAAG,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;AAC/B,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;AACjD,MAAM,UAAU,cAAc,CAC5B,KAAa,EACb,WAAmB,EACnB,eAAuB,EACvB,KAAa;IAEb,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IACzC,MAAM,cAAc,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;IACrD,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;IAClD,OAAO,WAAW,QAAQ,KAAK,cAAc,KAAK,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;AACjG,CAAC;AAED,gEAAgE;AAChE,MAAM,eAAe,GAAG;IACtB,IAAI,eAAe,CACjB,6EAA6E,EAC7E,6EAA6E,EAC7E,EAAE,CACH;IACD,IAAI,eAAe,CACjB,4EAA4E,EAC5E,6EAA6E,EAC7E,EAAE,CACH;IACD,IAAI,eAAe,CACjB,6EAA6E,EAC7E,6EAA6E,EAC7E,EAAE,CACH;IACD,IAAI,eAAe,CACjB,6EAA6E,EAC7E,4EAA4E,EAC5E,EAAE,CACH;IACD,IAAI,eAAe,CACjB,6EAA6E,EAC7E,4EAA4E,EAC5E,EAAE,CACH;CACF,CAAC;AAEF,SAAS,kBAAkB,CAAC,EAAmB,EAAE,EAAmB;IAClE,MAAM,GAAG,GAAsB,EAAE,CAAC;IAClC,IAAI,CAAC,GAAG,EAAE,CAAC;IACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;QAC5B,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACZ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;KAChB;IACD,+FAA+F;IAC/F,oEAAoE;IACpE,CAAC,GAAG,EAAE,CAAC;IACP,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QAC1B,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACZ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;KAChB;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AACD,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;AACpF,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;AAGpF,SAAS,WAAW,CAAC,GAAgB;IACnC,IAAI,KAAa,CAAC;IAClB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;QAC3B,KAAK,GAAG,GAAG,CAAC;KACb;SAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;QAClC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAC;QAC/E,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;KACrB;SAAM;QACL,KAAK,GAAG,eAAe,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;KAC3C;IACD,IAAI,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,+CAA+C,KAAK,EAAE,CAAC,CAAC,CAAC,UAAU;IACrF,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,cAAc,CAAC,KAAsB,EAAE,KAAkB,EAAE,SAA4B;IAC9F,IAAI,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;QAC5B,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;QACtD,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE;YAAE,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC3C,CAAC,KAAK,EAAE,CAAC;KACV;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,QAAQ,CAAC,CAAc,EAAE,CAAc;IACrD,IAAI,KAAK,GAAoB,eAAe,CAAC,CAAC,CAAC,CAAC;IAChD,KAAK,GAAG,cAAc,CAAC,KAAK,EAAE,CAAC,EAAE,gBAAgB,CAAC,CAAC;IACnD,KAAK,GAAG,cAAc,CAAC,KAAK,EAAE,CAAC,EAAE,gBAAgB,CAAC,CAAC;IACnD,OAAO,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAmB,EAAE,EAAE,GAAG,QAAQ;IAC1D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;SACpB,OAAO,EAAE;SACT,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACpC,CAAC;AACD,wFAAwF;AACxF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,IAAmB,EAAE,EAAE,GAAG,QAAQ,EAAE,EAAE,CAC1E,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAEvD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;AAC9B,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,IAAgB,EAAU,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC;AACjG,MAAM,SAAS,GAAG,CAAC,IAAyB,EAAU,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAEvF,gBAAgB;AAChB,MAAM,CAAC,MAAM,KAAK,GAAG,EAAE,CACrB,MAAM,CAAC,+EAA+E,CAAC,CACxF,CAAC,CAAC,oBAAoB;AACvB,MAAM,CAAC,MAAM,KAAK,GAAG,EAAE,CACrB,MAAM,CAAC,8EAA8E,CAAC,CACvF,CAAC,CAAC,yBAAyB;AAE5B,SAAS,qBAAqB,CAAC,EAAiB,EAAE,IAAY,EAAE,GAAW;IACzE,MAAM,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/D,OAAO,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACxB,CAAC;AAED,wIAAwI;AACxI,qDAAqD;AACrD,gFAAgF;AAChF,MAAM,UAAU,YAAY,CAAC,EAAiB,EAAE,IAAY,EAAE,CAAS,EAAE,OAAO,GAAG,CAAC;IAClF,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QAC1B,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE,EAAE,GAAG,IAAI,GAAG,EAAE,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACtE,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE,EAAE,GAAG,IAAI,GAAG,EAAE,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KACvE;IACD,IAAI,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,SAAS,GAAG;IAChB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACT,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACV,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACX,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAU5B,MAAM,UAAU,aAAa,CAAC,IAAkB,EAAE,GAAe;IAC/D,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC1E,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAC;IAClD,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;IACpC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC;IACpD,MAAM,cAAc,GAAG,EAAE,CAAC;IAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;QAC/B,MAAM,GAAG,GAAG,EAAE,CAAC;QACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YAAE,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACzF,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC1B;IACD,OAAO,QAAQ,CAAC;QACd,GAAG,IAAI;QACP,CAAC,EAAE,CAAC;QACJ,SAAS,EAAE,CAAC;QACZ,oBAAoB,EAAE,IAAI;QAC1B,GAAG;QACH,cAAc;KACf,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAkB,EAAE,UAAU,GAAG,CAAC;IAC/D,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;IACpC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,UAAU,EAAE,CAAC,CAAC;IACzF,OAAO,aAAa,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CACxC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,EACrE,SAAS,CACV,CAAC;AAEF,MAAM,UAAU,YAAY,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,GAAG,aAAa;IACnE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@noble/curves",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.3",
|
|
4
4
|
"description": "Minimal, auditable JS implementation of elliptic curve cryptography",
|
|
5
5
|
"files": [
|
|
6
6
|
"abstract",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"*.d.ts.map"
|
|
13
13
|
],
|
|
14
14
|
"scripts": {
|
|
15
|
-
"bench": "cd benchmark; node secp256k1.js; node curves.js; node stark.js; node bls.js",
|
|
15
|
+
"bench": "cd benchmark; node secp256k1.js; node curves.js; node ecdh.js; node stark.js; node bls.js",
|
|
16
16
|
"build": "tsc && tsc -p tsconfig.esm.json",
|
|
17
17
|
"build:release": "rollup -c rollup.config.js",
|
|
18
18
|
"lint": "prettier --check 'src/**/*.{js,ts}' 'test/*.js'",
|
|
@@ -126,16 +126,6 @@
|
|
|
126
126
|
"import": "./esm/jubjub.js",
|
|
127
127
|
"default": "./jubjub.js"
|
|
128
128
|
},
|
|
129
|
-
"./p192": {
|
|
130
|
-
"types": "./p192.d.ts",
|
|
131
|
-
"import": "./esm/p192.js",
|
|
132
|
-
"default": "./p192.js"
|
|
133
|
-
},
|
|
134
|
-
"./p224": {
|
|
135
|
-
"types": "./p224.d.ts",
|
|
136
|
-
"import": "./esm/p224.js",
|
|
137
|
-
"default": "./p224.js"
|
|
138
|
-
},
|
|
139
129
|
"./p256": {
|
|
140
130
|
"types": "./p256.d.ts",
|
|
141
131
|
"import": "./esm/p256.js",
|
|
@@ -1,33 +1,35 @@
|
|
|
1
1
|
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
2
2
|
import type { Group, GroupConstructor, AffinePoint } from './curve.js';
|
|
3
3
|
import { mod, Field } from './modular.js';
|
|
4
|
-
import { CHash, concatBytes, utf8ToBytes, validateObject } from './utils.js';
|
|
4
|
+
import { bytesToNumberBE, CHash, concatBytes, utf8ToBytes, validateObject } from './utils.js';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* * `DST` is a domain separation tag, defined in section 2.2.5
|
|
8
|
+
* * `p` characteristic of F, where F is a finite field of characteristic p and order q = p^m
|
|
9
|
+
* * `m` is extension degree (1 for prime fields)
|
|
10
|
+
* * `k` is the target security target in bits (e.g. 128), from section 5.1
|
|
11
|
+
* * `expand` is `xmd` (SHA2, SHA3, BLAKE) or `xof` (SHAKE, BLAKE-XOF)
|
|
12
|
+
* * `hash` conforming to `utils.CHash` interface, with `outputLen` / `blockLen` props
|
|
13
|
+
*/
|
|
6
14
|
export type Opts = {
|
|
7
|
-
DST: string
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
expand?: 'xmd' | 'xof'; // use a message that has already been processed by expand_message_xmd
|
|
13
|
-
// Hash functions for: expand_message_xmd is appropriate for use with a
|
|
14
|
-
// wide range of hash functions, including SHA-2, SHA-3, BLAKE2, and others.
|
|
15
|
-
// BBS+ uses blake2: https://github.com/hyperledger/aries-framework-go/issues/2247
|
|
16
|
-
// TODO: verify that hash is shake if expand==='xof' via types
|
|
15
|
+
DST: string | Uint8Array;
|
|
16
|
+
p: bigint;
|
|
17
|
+
m: number;
|
|
18
|
+
k: number;
|
|
19
|
+
expand?: 'xmd' | 'xof';
|
|
17
20
|
hash: CHash;
|
|
18
21
|
};
|
|
19
22
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
result <<= 8n;
|
|
25
|
-
result += BigInt(bytes[i]);
|
|
26
|
-
}
|
|
27
|
-
return result;
|
|
23
|
+
function validateDST(dst: string | Uint8Array): Uint8Array {
|
|
24
|
+
if (dst instanceof Uint8Array) return dst;
|
|
25
|
+
if (typeof dst === 'string') return utf8ToBytes(dst);
|
|
26
|
+
throw new Error('DST must be Uint8Array or string');
|
|
28
27
|
}
|
|
29
28
|
|
|
30
|
-
//
|
|
29
|
+
// Octet Stream to Integer. "spec" implementation of os2ip is 2.5x slower vs bytesToNumberBE.
|
|
30
|
+
const os2ip = bytesToNumberBE;
|
|
31
|
+
|
|
32
|
+
// Integer to Octet Stream (numberToBytesBE)
|
|
31
33
|
function i2osp(value: number, length: number): Uint8Array {
|
|
32
34
|
if (value < 0 || value >= 1 << (8 * length)) {
|
|
33
35
|
throw new Error(`bad I2OSP call: value=${value} length=${length}`);
|
|
@@ -68,13 +70,12 @@ export function expand_message_xmd(
|
|
|
68
70
|
isNum(lenInBytes);
|
|
69
71
|
// https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-16#section-5.3.3
|
|
70
72
|
if (DST.length > 255) DST = H(concatBytes(utf8ToBytes('H2C-OVERSIZE-DST-'), DST));
|
|
71
|
-
const b_in_bytes = H
|
|
72
|
-
const r_in_bytes = H.blockLen;
|
|
73
|
+
const { outputLen: b_in_bytes, blockLen: r_in_bytes } = H;
|
|
73
74
|
const ell = Math.ceil(lenInBytes / b_in_bytes);
|
|
74
75
|
if (ell > 255) throw new Error('Invalid xmd length');
|
|
75
76
|
const DST_prime = concatBytes(DST, i2osp(DST.length, 1));
|
|
76
77
|
const Z_pad = i2osp(0, r_in_bytes);
|
|
77
|
-
const l_i_b_str = i2osp(lenInBytes, 2);
|
|
78
|
+
const l_i_b_str = i2osp(lenInBytes, 2); // len_in_bytes_str
|
|
78
79
|
const b = new Array<Uint8Array>(ell);
|
|
79
80
|
const b_0 = H(concatBytes(Z_pad, msg, l_i_b_str, i2osp(0, 1), DST_prime));
|
|
80
81
|
b[0] = H(concatBytes(b_0, i2osp(1, 1), DST_prime));
|
|
@@ -120,30 +121,33 @@ export function expand_message_xof(
|
|
|
120
121
|
* https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-11#section-5.3
|
|
121
122
|
* @param msg a byte string containing the message to hash
|
|
122
123
|
* @param count the number of elements of F to output
|
|
123
|
-
* @param options `{DST: string, p: bigint, m: number, k: number, expand: 'xmd' | 'xof', hash: H}
|
|
124
|
+
* @param options `{DST: string, p: bigint, m: number, k: number, expand: 'xmd' | 'xof', hash: H}`, see above
|
|
124
125
|
* @returns [u_0, ..., u_(count - 1)], a list of field elements.
|
|
125
126
|
*/
|
|
126
127
|
export function hash_to_field(msg: Uint8Array, count: number, options: Opts): bigint[][] {
|
|
127
128
|
const { p, k, m, hash, expand, DST: _DST } = options;
|
|
128
129
|
isBytes(msg);
|
|
129
130
|
isNum(count);
|
|
130
|
-
|
|
131
|
+
const DST = validateDST(_DST);
|
|
131
132
|
const log2p = p.toString(2).length;
|
|
132
133
|
const L = Math.ceil((log2p + k) / 8); // section 5.1 of ietf draft link above
|
|
133
134
|
const len_in_bytes = count * m * L;
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
135
|
+
let prb; // pseudo_random_bytes
|
|
136
|
+
if (expand === 'xmd') {
|
|
137
|
+
prb = expand_message_xmd(msg, DST, len_in_bytes, hash);
|
|
138
|
+
} else if (expand === 'xof') {
|
|
139
|
+
prb = expand_message_xof(msg, DST, len_in_bytes, k, hash);
|
|
140
|
+
} else if (expand === undefined) {
|
|
141
|
+
prb = msg;
|
|
142
|
+
} else {
|
|
143
|
+
throw new Error('expand must be "xmd", "xof" or undefined');
|
|
144
|
+
}
|
|
141
145
|
const u = new Array(count);
|
|
142
146
|
for (let i = 0; i < count; i++) {
|
|
143
147
|
const e = new Array(m);
|
|
144
148
|
for (let j = 0; j < m; j++) {
|
|
145
149
|
const elm_offset = L * (j + i * m);
|
|
146
|
-
const tv =
|
|
150
|
+
const tv = prb.subarray(elm_offset, elm_offset + L);
|
|
147
151
|
e[j] = mod(os2ip(tv), p);
|
|
148
152
|
}
|
|
149
153
|
u[i] = e;
|
|
@@ -184,7 +188,7 @@ export type htfBasicOpts = { DST: string };
|
|
|
184
188
|
export function createHasher<T>(
|
|
185
189
|
Point: H2CPointConstructor<T>,
|
|
186
190
|
mapToCurve: MapToCurve<T>,
|
|
187
|
-
def: Opts
|
|
191
|
+
def: Opts & { encodeDST?: string }
|
|
188
192
|
) {
|
|
189
193
|
validateObject(def, {
|
|
190
194
|
DST: 'string',
|
|
@@ -193,10 +197,7 @@ export function createHasher<T>(
|
|
|
193
197
|
k: 'isSafeInteger',
|
|
194
198
|
hash: 'hash',
|
|
195
199
|
});
|
|
196
|
-
if (
|
|
197
|
-
throw new Error('Invalid htf/expand');
|
|
198
|
-
if (typeof mapToCurve !== 'function')
|
|
199
|
-
throw new Error('hashToCurve: mapToCurve() has not been defined');
|
|
200
|
+
if (typeof mapToCurve !== 'function') throw new Error('mapToCurve() must be defined');
|
|
200
201
|
return {
|
|
201
202
|
// Encodes byte string to elliptic curve
|
|
202
203
|
// https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-11#section-3
|
|
@@ -16,12 +16,14 @@ export type CurveType = {
|
|
|
16
16
|
powPminus2?: (x: bigint) => bigint;
|
|
17
17
|
xyToU?: (x: bigint, y: bigint) => bigint;
|
|
18
18
|
Gu: bigint;
|
|
19
|
+
randomBytes?: (bytesLength?: number) => Uint8Array;
|
|
19
20
|
};
|
|
20
21
|
export type CurveFn = {
|
|
21
22
|
scalarMult: (scalar: Hex, u: Hex) => Uint8Array;
|
|
22
23
|
scalarMultBase: (scalar: Hex) => Uint8Array;
|
|
23
24
|
getSharedSecret: (privateKeyA: Hex, publicKeyB: Hex) => Uint8Array;
|
|
24
25
|
getPublicKey: (privateKey: Hex) => Uint8Array;
|
|
26
|
+
utils: { randomPrivateKey: () => Uint8Array };
|
|
25
27
|
GuBytes: Uint8Array;
|
|
26
28
|
};
|
|
27
29
|
|
|
@@ -181,6 +183,7 @@ export function montgomery(curveDef: CurveType): CurveFn {
|
|
|
181
183
|
scalarMultBase,
|
|
182
184
|
getSharedSecret: (privateKey: Hex, publicKey: Hex) => scalarMult(privateKey, publicKey),
|
|
183
185
|
getPublicKey: (privateKey: Hex): Uint8Array => scalarMultBase(privateKey),
|
|
186
|
+
utils: { randomPrivateKey: () => CURVE.randomBytes!(CURVE.nByteLength) },
|
|
184
187
|
GuBytes: GuBytes,
|
|
185
188
|
};
|
|
186
189
|
}
|
package/src/ed25519.ts
CHANGED
package/src/ed448.ts
CHANGED
|
@@ -134,6 +134,7 @@ export const x448 = montgomery({
|
|
|
134
134
|
return mod(Pminus3 * x, P); // Pminus3 * x = Pminus2
|
|
135
135
|
},
|
|
136
136
|
adjustScalarBytes,
|
|
137
|
+
randomBytes,
|
|
137
138
|
// The 4-isogeny maps between the Montgomery curve and this Edwards
|
|
138
139
|
// curve are:
|
|
139
140
|
// (u, v) = (y^2/x^2, (2 - x^2 - y^2)*y/x^3)
|
package/src/stark.ts
CHANGED
|
@@ -1,164 +1,126 @@
|
|
|
1
1
|
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
2
2
|
import { keccak_256 } from '@noble/hashes/sha3';
|
|
3
3
|
import { sha256 } from '@noble/hashes/sha256';
|
|
4
|
-
import {
|
|
5
|
-
import * as cutils from './abstract/utils.js';
|
|
4
|
+
import { utf8ToBytes } from '@noble/hashes/utils';
|
|
6
5
|
import { Fp, mod, Field, validateField } from './abstract/modular.js';
|
|
6
|
+
import { poseidon } from './abstract/poseidon.js';
|
|
7
|
+
import { weierstrass, ProjPointType, SignatureType } from './abstract/weierstrass.js';
|
|
8
|
+
import {
|
|
9
|
+
Hex,
|
|
10
|
+
bitMask,
|
|
11
|
+
bytesToHex,
|
|
12
|
+
bytesToNumberBE,
|
|
13
|
+
concatBytes,
|
|
14
|
+
ensureBytes as ensureBytesOrig,
|
|
15
|
+
hexToBytes,
|
|
16
|
+
hexToNumber,
|
|
17
|
+
numberToVarBytesBE,
|
|
18
|
+
} from './abstract/utils.js';
|
|
7
19
|
import { getHash } from './_shortw_utils.js';
|
|
8
|
-
import * as poseidon from './abstract/poseidon.js';
|
|
9
|
-
import { utf8ToBytes } from '@noble/hashes/utils';
|
|
10
20
|
|
|
11
|
-
type ProjectivePoint = ProjPointType<bigint>;
|
|
12
21
|
// Stark-friendly elliptic curve
|
|
13
22
|
// https://docs.starkware.co/starkex/stark-curve.html
|
|
14
23
|
|
|
15
|
-
|
|
24
|
+
type ProjectivePoint = ProjPointType<bigint>;
|
|
25
|
+
const CURVE_ORDER = BigInt(
|
|
16
26
|
'3618502788666131213697322783095070105526743751716087489154079457884512865583'
|
|
17
27
|
);
|
|
18
28
|
const nBitLength = 252;
|
|
19
|
-
// Copy-pasted from weierstrass.ts
|
|
20
29
|
function bits2int(bytes: Uint8Array): bigint {
|
|
30
|
+
while (bytes[0] === 0) bytes = bytes.subarray(1); // strip leading 0s
|
|
31
|
+
// Copy-pasted from weierstrass.ts
|
|
21
32
|
const delta = bytes.length * 8 - nBitLength;
|
|
22
|
-
const num =
|
|
33
|
+
const num = bytesToNumberBE(bytes);
|
|
23
34
|
return delta > 0 ? num >> BigInt(delta) : num;
|
|
24
35
|
}
|
|
25
|
-
function
|
|
26
|
-
|
|
36
|
+
function hex0xToBytes(hex: string): Uint8Array {
|
|
37
|
+
if (typeof hex === 'string') {
|
|
38
|
+
hex = strip0x(hex); // allow 0x prefix
|
|
39
|
+
if (hex.length & 1) hex = '0' + hex; // allow unpadded hex
|
|
40
|
+
}
|
|
41
|
+
return hexToBytes(hex);
|
|
27
42
|
}
|
|
28
|
-
|
|
29
|
-
// Params: a, b
|
|
30
|
-
a: BigInt(1),
|
|
43
|
+
const curve = weierstrass({
|
|
44
|
+
a: BigInt(1), // Params: a, b
|
|
31
45
|
b: BigInt('3141592653589793238462643383279502884197169399375105820974944592307816406665'),
|
|
32
46
|
// Field over which we'll do calculations; 2n**251n + 17n * 2n**192n + 1n
|
|
33
47
|
// There is no efficient sqrt for field (P%4==1)
|
|
34
48
|
Fp: Fp(BigInt('0x800000000000011000000000000000000000000000000000000000000000001')),
|
|
35
|
-
// Curve order, total count of valid points in the field.
|
|
36
|
-
|
|
37
|
-
nBitLength: nBitLength, // len(bin(N).replace('0b',''))
|
|
49
|
+
n: CURVE_ORDER, // Curve order, total count of valid points in the field.
|
|
50
|
+
nBitLength, // len(bin(N).replace('0b',''))
|
|
38
51
|
// Base point (x, y) aka generator point
|
|
39
52
|
Gx: BigInt('874739451078007766457464989774322083649278607533249481151382481072868806602'),
|
|
40
53
|
Gy: BigInt('152666792071518830868575557812948353041420400780739481342941381225525861407'),
|
|
41
|
-
h: BigInt(1),
|
|
42
|
-
//
|
|
43
|
-
lowS: false,
|
|
54
|
+
h: BigInt(1), // cofactor
|
|
55
|
+
lowS: false, // Allow high-s signatures
|
|
44
56
|
...getHash(sha256),
|
|
45
57
|
// Custom truncation routines for stark curve
|
|
46
|
-
bits2int
|
|
47
|
-
while (bytes[0] === 0) bytes = bytes.subarray(1);
|
|
48
|
-
return bits2int(bytes);
|
|
49
|
-
},
|
|
58
|
+
bits2int,
|
|
50
59
|
bits2int_modN: (bytes: Uint8Array): bigint => {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
// Truncate zero bytes on left (compat with elliptic)
|
|
57
|
-
while (bytes[0] === 0) bytes = bytes.subarray(1);
|
|
58
|
-
return bits2int_modN(bytes);
|
|
60
|
+
// 2102820b232636d200cb21f1d330f20d096cae09d1bf3edb1cc333ddee11318 =>
|
|
61
|
+
// 2102820b232636d200cb21f1d330f20d096cae09d1bf3edb1cc333ddee113180
|
|
62
|
+
const hex = bytesToNumberBE(bytes).toString(16); // toHex unpadded
|
|
63
|
+
if (hex.length === 63) bytes = hex0xToBytes(hex + '0'); // append trailing 0
|
|
64
|
+
return mod(bits2int(bytes), CURVE_ORDER);
|
|
59
65
|
},
|
|
60
66
|
});
|
|
67
|
+
export const _starkCurve = curve;
|
|
61
68
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
if (typeof hex !== 'string') {
|
|
65
|
-
throw new Error('hexToBytes: expected string, got ' + typeof hex);
|
|
66
|
-
}
|
|
67
|
-
hex = strip0x(hex);
|
|
68
|
-
if (hex.length & 1) hex = '0' + hex; // padding
|
|
69
|
-
if (hex.length % 2) throw new Error('hexToBytes: received invalid unpadded hex ' + hex.length);
|
|
70
|
-
const array = new Uint8Array(hex.length / 2);
|
|
71
|
-
for (let i = 0; i < array.length; i++) {
|
|
72
|
-
const j = i * 2;
|
|
73
|
-
const hexByte = hex.slice(j, j + 2);
|
|
74
|
-
const byte = Number.parseInt(hexByte, 16);
|
|
75
|
-
if (Number.isNaN(byte) || byte < 0) throw new Error('Invalid byte sequence');
|
|
76
|
-
array[i] = byte;
|
|
77
|
-
}
|
|
78
|
-
return array;
|
|
79
|
-
}
|
|
80
|
-
function hexToNumber0x(hex: string): bigint {
|
|
81
|
-
if (typeof hex !== 'string') {
|
|
82
|
-
throw new Error('hexToNumber: expected string, got ' + typeof hex);
|
|
83
|
-
}
|
|
84
|
-
// Big Endian
|
|
85
|
-
// TODO: strip vs no strip?
|
|
86
|
-
return BigInt(`0x${strip0x(hex)}`);
|
|
87
|
-
}
|
|
88
|
-
function bytesToNumber0x(bytes: Uint8Array): bigint {
|
|
89
|
-
return hexToNumber0x(cutils.bytesToHex(bytes));
|
|
90
|
-
}
|
|
91
|
-
function ensureBytes0x(hex: Hex): Uint8Array {
|
|
92
|
-
// Uint8Array.from() instead of hash.slice() because node.js Buffer
|
|
93
|
-
// is instance of Uint8Array, and its slice() creates **mutable** copy
|
|
94
|
-
return hex instanceof Uint8Array ? Uint8Array.from(hex) : hexToBytes0x(hex);
|
|
69
|
+
function ensureBytes(hex: Hex): Uint8Array {
|
|
70
|
+
return ensureBytesOrig('', typeof hex === 'string' ? hex0xToBytes(hex) : hex);
|
|
95
71
|
}
|
|
96
72
|
|
|
97
|
-
function normPrivKey(privKey: Hex) {
|
|
98
|
-
return
|
|
73
|
+
function normPrivKey(privKey: Hex): string {
|
|
74
|
+
return bytesToHex(ensureBytes(privKey)).padStart(64, '0');
|
|
99
75
|
}
|
|
100
|
-
function
|
|
101
|
-
return
|
|
76
|
+
export function getPublicKey(privKey: Hex, isCompressed = false): Uint8Array {
|
|
77
|
+
return curve.getPublicKey(normPrivKey(privKey), isCompressed);
|
|
102
78
|
}
|
|
103
|
-
function
|
|
104
|
-
return
|
|
79
|
+
export function getSharedSecret(privKeyA: Hex, pubKeyB: Hex): Uint8Array {
|
|
80
|
+
return curve.getSharedSecret(normPrivKey(privKeyA), pubKeyB);
|
|
105
81
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
if (typeof privKey === 'string') privKey = strip0x(privKey).padStart(64, '0');
|
|
109
|
-
return starkCurve.sign(ensureBytes0x(msgHash), normPrivKey(privKey), opts);
|
|
82
|
+
export function sign(msgHash: Hex, privKey: Hex, opts?: any): SignatureType {
|
|
83
|
+
return curve.sign(ensureBytes(msgHash), normPrivKey(privKey), opts);
|
|
110
84
|
}
|
|
111
|
-
function
|
|
112
|
-
const sig = signature instanceof Signature ? signature :
|
|
113
|
-
return
|
|
85
|
+
export function verify(signature: SignatureType | Hex, msgHash: Hex, pubKey: Hex) {
|
|
86
|
+
const sig = signature instanceof Signature ? signature : ensureBytes(signature);
|
|
87
|
+
return curve.verify(sig, ensureBytes(msgHash), ensureBytes(pubKey));
|
|
114
88
|
}
|
|
115
89
|
|
|
116
|
-
const { CURVE, ProjectivePoint, Signature } =
|
|
117
|
-
export
|
|
118
|
-
export {
|
|
119
|
-
CURVE,
|
|
120
|
-
Signature,
|
|
121
|
-
ProjectivePoint,
|
|
122
|
-
getPublicKey0x as getPublicKey,
|
|
123
|
-
getSharedSecret0x as getSharedSecret,
|
|
124
|
-
sign0x as sign,
|
|
125
|
-
verify0x as verify,
|
|
126
|
-
};
|
|
127
|
-
|
|
128
|
-
const stripLeadingZeros = (s: string) => s.replace(/^0+/gm, '');
|
|
129
|
-
export const bytesToHexEth = (uint8a: Uint8Array): string =>
|
|
130
|
-
`0x${stripLeadingZeros(cutils.bytesToHex(uint8a))}`;
|
|
131
|
-
export const strip0x = (hex: string) => hex.replace(/^0x/i, '');
|
|
132
|
-
export const numberToHexEth = (num: bigint | number) => `0x${num.toString(16)}`;
|
|
90
|
+
const { CURVE, ProjectivePoint, Signature, utils } = curve;
|
|
91
|
+
export { CURVE, ProjectivePoint, Signature, utils };
|
|
133
92
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
93
|
+
function extractX(bytes: Uint8Array): string {
|
|
94
|
+
const hex = bytesToHex(bytes.subarray(1));
|
|
95
|
+
const stripped = hex.replace(/^0+/gm, ''); // strip leading 0s
|
|
96
|
+
return `0x${stripped}`;
|
|
97
|
+
}
|
|
98
|
+
function strip0x(hex: string) {
|
|
99
|
+
return hex.replace(/^0x/i, '');
|
|
100
|
+
}
|
|
101
|
+
function numberTo0x16(num: bigint) {
|
|
102
|
+
// can't use utils.numberToHexUnpadded: adds leading 0 for even byte length
|
|
103
|
+
return `0x${num.toString(16)}`;
|
|
142
104
|
}
|
|
143
105
|
|
|
106
|
+
// seed generation
|
|
144
107
|
export function grindKey(seed: Hex) {
|
|
145
|
-
const _seed =
|
|
108
|
+
const _seed = ensureBytes(seed);
|
|
146
109
|
const sha256mask = 2n ** 256n;
|
|
147
|
-
|
|
148
|
-
const limit = sha256mask - mod(sha256mask, CURVE_N);
|
|
110
|
+
const limit = sha256mask - mod(sha256mask, CURVE_ORDER);
|
|
149
111
|
for (let i = 0; ; i++) {
|
|
150
|
-
const key =
|
|
151
|
-
// key should be in [0, limit)
|
|
152
|
-
if (
|
|
112
|
+
const key = sha256Num(concatBytes(_seed, numberToVarBytesBE(BigInt(i))));
|
|
113
|
+
if (key < limit) return mod(key, CURVE_ORDER).toString(16); // key should be in [0, limit)
|
|
114
|
+
if (i === 100000) throw new Error('grindKey is broken: tried 100k vals'); // prevent dos
|
|
153
115
|
}
|
|
154
116
|
}
|
|
155
117
|
|
|
156
|
-
export function getStarkKey(privateKey: Hex) {
|
|
157
|
-
return
|
|
118
|
+
export function getStarkKey(privateKey: Hex): string {
|
|
119
|
+
return extractX(getPublicKey(privateKey, true));
|
|
158
120
|
}
|
|
159
121
|
|
|
160
|
-
export function ethSigToPrivate(signature: string) {
|
|
161
|
-
signature = strip0x(signature
|
|
122
|
+
export function ethSigToPrivate(signature: string): string {
|
|
123
|
+
signature = strip0x(signature);
|
|
162
124
|
if (signature.length !== 130) throw new Error('Wrong ethereum signature');
|
|
163
125
|
return grindKey(signature.substring(0, 64));
|
|
164
126
|
}
|
|
@@ -170,15 +132,15 @@ export function getAccountPath(
|
|
|
170
132
|
application: string,
|
|
171
133
|
ethereumAddress: string,
|
|
172
134
|
index: number
|
|
173
|
-
) {
|
|
135
|
+
): string {
|
|
174
136
|
const layerNum = int31(sha256Num(layer));
|
|
175
137
|
const applicationNum = int31(sha256Num(application));
|
|
176
|
-
const eth =
|
|
138
|
+
const eth = hexToNumber(strip0x(ethereumAddress));
|
|
177
139
|
return `m/2645'/${layerNum}'/${applicationNum}'/${int31(eth)}'/${int31(eth >> 31n)}'/${index}`;
|
|
178
140
|
}
|
|
179
141
|
|
|
180
142
|
// https://docs.starkware.co/starkex/pedersen-hash-function.html
|
|
181
|
-
const
|
|
143
|
+
const PEDERSEN_POINTS = [
|
|
182
144
|
new ProjectivePoint(
|
|
183
145
|
2089986280348253421170679821480865132823066470938446095505822317253594081284n,
|
|
184
146
|
1713931329540660377023406109199410414810705867260802078187082345529207694986n,
|
|
@@ -205,8 +167,6 @@ const PEDERSEN_POINTS_AFFINE = [
|
|
|
205
167
|
1n
|
|
206
168
|
),
|
|
207
169
|
];
|
|
208
|
-
// for (const p of PEDERSEN_POINTS) p._setWindowSize(8);
|
|
209
|
-
const PEDERSEN_POINTS = PEDERSEN_POINTS_AFFINE;
|
|
210
170
|
|
|
211
171
|
function pedersenPrecompute(p1: ProjectivePoint, p2: ProjectivePoint): ProjectivePoint[] {
|
|
212
172
|
const out: ProjectivePoint[] = [];
|
|
@@ -230,14 +190,16 @@ const PEDERSEN_POINTS2 = pedersenPrecompute(PEDERSEN_POINTS[3], PEDERSEN_POINTS[
|
|
|
230
190
|
type PedersenArg = Hex | bigint | number;
|
|
231
191
|
function pedersenArg(arg: PedersenArg): bigint {
|
|
232
192
|
let value: bigint;
|
|
233
|
-
if (typeof arg === 'bigint')
|
|
234
|
-
|
|
193
|
+
if (typeof arg === 'bigint') {
|
|
194
|
+
value = arg;
|
|
195
|
+
} else if (typeof arg === 'number') {
|
|
235
196
|
if (!Number.isSafeInteger(arg)) throw new Error(`Invalid pedersenArg: ${arg}`);
|
|
236
197
|
value = BigInt(arg);
|
|
237
|
-
} else
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
198
|
+
} else {
|
|
199
|
+
value = bytesToNumberBE(ensureBytes(arg));
|
|
200
|
+
}
|
|
201
|
+
if (!(0n <= value && value < curve.CURVE.Fp.ORDER))
|
|
202
|
+
throw new Error(`PedersenArg should be 0 <= value < CURVE.P: ${value}`); // [0..Fp)
|
|
241
203
|
return value;
|
|
242
204
|
}
|
|
243
205
|
|
|
@@ -253,17 +215,17 @@ function pedersenSingle(point: ProjectivePoint, value: PedersenArg, constants: P
|
|
|
253
215
|
}
|
|
254
216
|
|
|
255
217
|
// shift_point + x_low * P_0 + x_high * P1 + y_low * P2 + y_high * P3
|
|
256
|
-
export function pedersen(x: PedersenArg, y: PedersenArg) {
|
|
218
|
+
export function pedersen(x: PedersenArg, y: PedersenArg): string {
|
|
257
219
|
let point: ProjectivePoint = PEDERSEN_POINTS[0];
|
|
258
220
|
point = pedersenSingle(point, x, PEDERSEN_POINTS1);
|
|
259
221
|
point = pedersenSingle(point, y, PEDERSEN_POINTS2);
|
|
260
|
-
return
|
|
222
|
+
return extractX(point.toRawBytes(true));
|
|
261
223
|
}
|
|
262
224
|
|
|
263
225
|
export function hashChain(data: PedersenArg[], fn = pedersen) {
|
|
264
226
|
if (!Array.isArray(data) || data.length < 1)
|
|
265
227
|
throw new Error('data should be array of at least 1 element');
|
|
266
|
-
if (data.length === 1) return
|
|
228
|
+
if (data.length === 1) return numberTo0x16(pedersenArg(data[0]));
|
|
267
229
|
return Array.from(data)
|
|
268
230
|
.reverse()
|
|
269
231
|
.reduce((acc, i) => fn(i, acc));
|
|
@@ -272,9 +234,9 @@ export function hashChain(data: PedersenArg[], fn = pedersen) {
|
|
|
272
234
|
export const computeHashOnElements = (data: PedersenArg[], fn = pedersen) =>
|
|
273
235
|
[0, ...data, data.length].reduce((x, y) => fn(x, y));
|
|
274
236
|
|
|
275
|
-
const MASK_250 =
|
|
276
|
-
export const keccak = (data: Uint8Array): bigint =>
|
|
277
|
-
const sha256Num = (data: Uint8Array | string): bigint =>
|
|
237
|
+
const MASK_250 = bitMask(250);
|
|
238
|
+
export const keccak = (data: Uint8Array): bigint => bytesToNumberBE(keccak_256(data)) & MASK_250;
|
|
239
|
+
const sha256Num = (data: Uint8Array | string): bigint => bytesToNumberBE(sha256(data));
|
|
278
240
|
|
|
279
241
|
// Poseidon hash
|
|
280
242
|
export const Fp253 = Fp(
|
|
@@ -330,7 +292,7 @@ export function poseidonBasic(opts: PoseidonOpts, mds: bigint[][]) {
|
|
|
330
292
|
for (let j = 0; j < m; j++) row.push(poseidonRoundConstant(opts.Fp, 'Hades', m * i + j));
|
|
331
293
|
roundConstants.push(row);
|
|
332
294
|
}
|
|
333
|
-
return poseidon
|
|
295
|
+
return poseidon({
|
|
334
296
|
...opts,
|
|
335
297
|
t: m,
|
|
336
298
|
sboxPower: 3,
|