@session.js/blinded-session-id 1.0.0 → 1.0.1

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/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  export declare function crypto_sign_curve25519_pk_to_ed25519(pk: Uint8Array): Uint8Array;
2
2
  export declare const convertToEd25519Key: (key: string) => string;
3
3
  export declare const convertToX25519Key: (key: string) => string;
4
- export declare const generateKAs: (sessionId: string, serverPk: string) => Uint8Array[];
5
- export declare const generateBlindedIds: (sessionId: string, serverPk: string) => string[];
4
+ export declare const generateKA: (sessionId: string, serverPk: string) => Uint8Array;
5
+ export declare const generateBlindedKeys: (sessionId: string, serverPk: string) => Uint8Array[];
6
6
  export declare const blindSessionId: ({ sessionId, serverPk }: {
7
7
  sessionId: string;
8
8
  serverPk: string;
package/dist/index.js CHANGED
@@ -524,23 +524,25 @@ const generateBlindingFactor = (serverPk) => {
524
524
  const serverPkHash = sodium.crypto_generichash(64, hexServerPk);
525
525
  return sodium.crypto_core_ed25519_scalar_reduce(serverPkHash);
526
526
  };
527
- export const generateKAs = (sessionId, serverPk) => {
527
+ export const generateKA = (sessionId, serverPk) => {
528
528
  const sessionIdNoPrefix = sessionId.substring(2);
529
529
  const kBytes = generateBlindingFactor(serverPk);
530
530
  const xEd25519Key = sodium.from_hex(convertToEd25519Key(sessionIdNoPrefix));
531
531
  const kA = combineKeys(kBytes, xEd25519Key);
532
- const kA2 = cloneDeep(kA);
533
- kA2[31] = kA[31] ^ 0b1000_0000;
534
- return [kA, kA2];
532
+ return kA;
535
533
  };
536
- export const generateBlindedIds = (sessionId, serverPk) => {
537
- const [kA, kA2] = generateKAs(sessionId, serverPk);
538
- return ['15' + sodium.to_hex(kA), '15' + sodium.to_hex(kA2)];
534
+ export const generateBlindedKeys = (sessionId, serverPk) => {
535
+ const kA = generateKA(sessionId, serverPk);
536
+ const key1 = kA;
537
+ const modifiedByte = kA[31] & 0x7F;
538
+ const key2 = Buffer.concat([kA.slice(0, 31), Buffer.from([modifiedByte])]);
539
+ return [key1, key2];
539
540
  };
540
541
  export const blindSessionId = ({ sessionId, serverPk }) => {
541
- const [kA, kA2] = generateKAs(sessionId, serverPk);
542
- if (!(kA[31] & 0x80)) {
543
- return '15' + sodium.to_hex(kA2);
542
+ const [key1, key2] = generateBlindedKeys(sessionId, serverPk);
543
+ const isKey2 = key1[31] & 0x80;
544
+ if (isKey2) {
545
+ return '15' + sodium.to_hex(key2);
544
546
  }
545
- return '15' + sodium.to_hex(kA);
547
+ return '15' + sodium.to_hex(key1);
546
548
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@session.js/blinded-session-id",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "author": "Viktor Shchelochkov <hi@hloth.dev> (https://hloth.dev)",