shogun-core 5.2.0 → 5.2.2

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.
Files changed (186) hide show
  1. package/README.md +145 -1143
  2. package/dist/browser/defaultVendors-node_modules_hpke_chacha20poly1305_esm_mod_js.shogun-core.js +1220 -0
  3. package/dist/browser/defaultVendors-node_modules_hpke_chacha20poly1305_esm_mod_js.shogun-core.js.map +1 -0
  4. package/dist/browser/defaultVendors-node_modules_hpke_hybridkem-x-wing_esm_mod_js.shogun-core.js +844 -0
  5. package/dist/browser/defaultVendors-node_modules_hpke_hybridkem-x-wing_esm_mod_js.shogun-core.js.map +1 -0
  6. package/dist/browser/defaultVendors-node_modules_mlkem_esm_mod_js.shogun-core.js +2335 -0
  7. package/dist/browser/defaultVendors-node_modules_mlkem_esm_mod_js.shogun-core.js.map +1 -0
  8. package/dist/browser/defaultVendors-node_modules_noble_ciphers_chacha_js.shogun-core.js +999 -0
  9. package/dist/browser/defaultVendors-node_modules_noble_ciphers_chacha_js.shogun-core.js.map +1 -0
  10. package/dist/browser/defaultVendors-node_modules_noble_curves_esm_abstract_curve_js-node_modules_noble_curves_esm_-1ce4ed.shogun-core.js +1651 -0
  11. package/dist/browser/defaultVendors-node_modules_noble_curves_esm_abstract_curve_js-node_modules_noble_curves_esm_-1ce4ed.shogun-core.js.map +1 -0
  12. package/dist/browser/defaultVendors-node_modules_noble_curves_esm_abstract_edwards_js-node_modules_noble_curves_es-a82056.shogun-core.js +825 -0
  13. package/dist/browser/defaultVendors-node_modules_noble_curves_esm_abstract_edwards_js-node_modules_noble_curves_es-a82056.shogun-core.js.map +1 -0
  14. package/dist/browser/defaultVendors-node_modules_noble_curves_esm_ed25519_js.shogun-core.js +508 -0
  15. package/dist/browser/defaultVendors-node_modules_noble_curves_esm_ed25519_js.shogun-core.js.map +1 -0
  16. package/dist/browser/defaultVendors-node_modules_noble_curves_esm_ed448_js.shogun-core.js +747 -0
  17. package/dist/browser/defaultVendors-node_modules_noble_curves_esm_ed448_js.shogun-core.js.map +1 -0
  18. package/dist/browser/defaultVendors-node_modules_noble_curves_esm_nist_js.shogun-core.js +1608 -0
  19. package/dist/browser/defaultVendors-node_modules_noble_curves_esm_nist_js.shogun-core.js.map +1 -0
  20. package/dist/browser/defaultVendors-node_modules_noble_post-quantum_ml-dsa_js.shogun-core.js +2117 -0
  21. package/dist/browser/defaultVendors-node_modules_noble_post-quantum_ml-dsa_js.shogun-core.js.map +1 -0
  22. package/dist/browser/defaultVendors-node_modules_openpgp_dist_openpgp_min_mjs.shogun-core.js +86 -0
  23. package/dist/browser/defaultVendors-node_modules_openpgp_dist_openpgp_min_mjs.shogun-core.js.map +1 -0
  24. package/dist/browser/node_modules_hpke_ml-kem_esm_mod_js.shogun-core.js +539 -0
  25. package/dist/browser/node_modules_hpke_ml-kem_esm_mod_js.shogun-core.js.map +1 -0
  26. package/dist/browser/shogun-core.js +160386 -0
  27. package/dist/browser/shogun-core.js.map +1 -0
  28. package/dist/config/simplified-config.js +236 -0
  29. package/dist/core.js +329 -0
  30. package/dist/crypto/asymmetric.js +99 -0
  31. package/dist/crypto/double-ratchet.js +370 -0
  32. package/dist/crypto/file-encryption.js +213 -0
  33. package/dist/crypto/hashing.js +87 -0
  34. package/dist/crypto/index.js +34 -0
  35. package/dist/crypto/mls-codec.js +202 -0
  36. package/dist/crypto/mls.js +550 -0
  37. package/dist/crypto/pgp.js +390 -0
  38. package/dist/crypto/random-generation.js +341 -0
  39. package/dist/crypto/sframe.js +350 -0
  40. package/dist/crypto/signal-protocol.js +376 -0
  41. package/dist/crypto/symmetric.js +91 -0
  42. package/dist/crypto/types.js +2 -0
  43. package/dist/crypto/utils.js +140 -0
  44. package/dist/examples/auth-test.js +253 -0
  45. package/dist/examples/crypto-identity-example.js +151 -0
  46. package/dist/examples/crypto-working-test.js +83 -0
  47. package/dist/examples/double-ratchet-test.js +155 -0
  48. package/dist/examples/mls-advanced-example.js +294 -0
  49. package/dist/examples/mls-sframe-test.js +304 -0
  50. package/dist/examples/pgp-example.js +200 -0
  51. package/dist/examples/quick-auth-test.js +61 -0
  52. package/dist/examples/random-generation-test.js +151 -0
  53. package/dist/examples/signal-protocol-test.js +38 -0
  54. package/dist/examples/simple-api-test.js +114 -0
  55. package/dist/examples/simple-crypto-identity-example.js +84 -0
  56. package/dist/examples/timeout-test.js +227 -0
  57. package/dist/examples/zkproof-credentials-example.js +212 -0
  58. package/dist/examples/zkproof-example.js +201 -0
  59. package/dist/gundb/api.js +435 -0
  60. package/dist/gundb/crypto.js +283 -0
  61. package/dist/gundb/db.js +1946 -0
  62. package/dist/gundb/derive.js +232 -0
  63. package/dist/gundb/errors.js +76 -0
  64. package/dist/gundb/index.js +22 -0
  65. package/dist/gundb/rxjs.js +447 -0
  66. package/dist/gundb/types.js +5 -0
  67. package/dist/index.js +58 -0
  68. package/dist/interfaces/common.js +2 -0
  69. package/dist/interfaces/events.js +40 -0
  70. package/dist/interfaces/plugin.js +2 -0
  71. package/dist/interfaces/shogun.js +37 -0
  72. package/dist/managers/AuthManager.js +226 -0
  73. package/dist/managers/CoreInitializer.js +228 -0
  74. package/dist/managers/CryptoIdentityManager.js +366 -0
  75. package/dist/managers/EventManager.js +70 -0
  76. package/dist/managers/PluginManager.js +299 -0
  77. package/dist/plugins/base.js +50 -0
  78. package/dist/plugins/index.js +32 -0
  79. package/dist/plugins/nostr/index.js +20 -0
  80. package/dist/plugins/nostr/nostrConnector.js +419 -0
  81. package/dist/plugins/nostr/nostrConnectorPlugin.js +453 -0
  82. package/dist/plugins/nostr/nostrSigner.js +319 -0
  83. package/dist/plugins/nostr/types.js +2 -0
  84. package/dist/plugins/smartwallet/index.js +18 -0
  85. package/dist/plugins/smartwallet/smartWalletPlugin.js +511 -0
  86. package/dist/plugins/smartwallet/types.js +2 -0
  87. package/dist/plugins/web3/index.js +20 -0
  88. package/dist/plugins/web3/types.js +2 -0
  89. package/dist/plugins/web3/web3Connector.js +533 -0
  90. package/dist/plugins/web3/web3ConnectorPlugin.js +455 -0
  91. package/dist/plugins/web3/web3Signer.js +314 -0
  92. package/dist/plugins/webauthn/index.js +19 -0
  93. package/dist/plugins/webauthn/types.js +14 -0
  94. package/dist/plugins/webauthn/webauthn.js +496 -0
  95. package/dist/plugins/webauthn/webauthnPlugin.js +489 -0
  96. package/dist/plugins/webauthn/webauthnSigner.js +310 -0
  97. package/dist/plugins/zkproof/index.js +53 -0
  98. package/dist/plugins/zkproof/types.js +2 -0
  99. package/dist/plugins/zkproof/zkCredentials.js +213 -0
  100. package/dist/plugins/zkproof/zkProofConnector.js +198 -0
  101. package/dist/plugins/zkproof/zkProofPlugin.js +272 -0
  102. package/dist/storage/storage.js +145 -0
  103. package/dist/types/config/simplified-config.d.ts +114 -0
  104. package/dist/types/core.d.ts +305 -0
  105. package/dist/types/crypto/asymmetric.d.ts +6 -0
  106. package/dist/types/crypto/double-ratchet.d.ts +22 -0
  107. package/dist/types/crypto/file-encryption.d.ts +19 -0
  108. package/dist/types/crypto/hashing.d.ts +9 -0
  109. package/dist/types/crypto/index.d.ts +13 -0
  110. package/dist/types/crypto/mls-codec.d.ts +39 -0
  111. package/dist/types/crypto/mls.d.ts +130 -0
  112. package/dist/types/crypto/pgp.d.ts +95 -0
  113. package/dist/types/crypto/random-generation.d.ts +35 -0
  114. package/dist/types/crypto/sframe.d.ts +102 -0
  115. package/dist/types/crypto/signal-protocol.d.ts +26 -0
  116. package/dist/types/crypto/symmetric.d.ts +9 -0
  117. package/dist/types/crypto/types.d.ts +144 -0
  118. package/dist/types/crypto/utils.d.ts +22 -0
  119. package/dist/types/examples/auth-test.d.ts +8 -0
  120. package/dist/types/examples/crypto-identity-example.d.ts +5 -0
  121. package/dist/types/examples/crypto-working-test.d.ts +1 -0
  122. package/dist/types/examples/double-ratchet-test.d.ts +1 -0
  123. package/dist/types/examples/mls-advanced-example.d.ts +53 -0
  124. package/dist/types/examples/mls-sframe-test.d.ts +1 -0
  125. package/dist/types/examples/pgp-example.d.ts +75 -0
  126. package/dist/types/examples/quick-auth-test.d.ts +8 -0
  127. package/dist/types/examples/random-generation-test.d.ts +1 -0
  128. package/dist/types/examples/signal-protocol-test.d.ts +1 -0
  129. package/dist/types/examples/simple-api-test.d.ts +10 -0
  130. package/dist/types/examples/simple-crypto-identity-example.d.ts +6 -0
  131. package/dist/types/examples/timeout-test.d.ts +8 -0
  132. package/dist/types/examples/zkproof-credentials-example.d.ts +12 -0
  133. package/dist/types/examples/zkproof-example.d.ts +11 -0
  134. package/dist/types/gundb/api.d.ts +185 -0
  135. package/dist/types/gundb/crypto.d.ts +95 -0
  136. package/dist/types/gundb/db.d.ts +397 -0
  137. package/dist/types/gundb/derive.d.ts +21 -0
  138. package/dist/types/gundb/errors.d.ts +42 -0
  139. package/dist/types/gundb/index.d.ts +3 -0
  140. package/dist/types/gundb/rxjs.d.ts +110 -0
  141. package/dist/types/gundb/types.d.ts +255 -0
  142. package/dist/types/index.d.ts +16 -0
  143. package/dist/types/interfaces/common.d.ts +85 -0
  144. package/dist/types/interfaces/events.d.ts +131 -0
  145. package/dist/types/interfaces/plugin.d.ts +162 -0
  146. package/dist/types/interfaces/shogun.d.ts +208 -0
  147. package/dist/types/managers/AuthManager.d.ts +72 -0
  148. package/dist/types/managers/CoreInitializer.d.ts +40 -0
  149. package/dist/types/managers/CryptoIdentityManager.d.ts +102 -0
  150. package/dist/types/managers/EventManager.d.ts +49 -0
  151. package/dist/types/managers/PluginManager.d.ts +145 -0
  152. package/dist/types/plugins/base.d.ts +35 -0
  153. package/dist/types/plugins/index.d.ts +18 -0
  154. package/dist/types/plugins/nostr/index.d.ts +4 -0
  155. package/dist/types/plugins/nostr/nostrConnector.d.ts +119 -0
  156. package/dist/types/plugins/nostr/nostrConnectorPlugin.d.ts +163 -0
  157. package/dist/types/plugins/nostr/nostrSigner.d.ts +105 -0
  158. package/dist/types/plugins/nostr/types.d.ts +122 -0
  159. package/dist/types/plugins/smartwallet/index.d.ts +2 -0
  160. package/dist/types/plugins/smartwallet/smartWalletPlugin.d.ts +67 -0
  161. package/dist/types/plugins/smartwallet/types.d.ts +80 -0
  162. package/dist/types/plugins/web3/index.d.ts +4 -0
  163. package/dist/types/plugins/web3/types.d.ts +107 -0
  164. package/dist/types/plugins/web3/web3Connector.d.ts +129 -0
  165. package/dist/types/plugins/web3/web3ConnectorPlugin.d.ts +160 -0
  166. package/dist/types/plugins/web3/web3Signer.d.ts +114 -0
  167. package/dist/types/plugins/webauthn/index.d.ts +3 -0
  168. package/dist/types/plugins/webauthn/types.d.ts +183 -0
  169. package/dist/types/plugins/webauthn/webauthn.d.ts +129 -0
  170. package/dist/types/plugins/webauthn/webauthnPlugin.d.ts +179 -0
  171. package/dist/types/plugins/webauthn/webauthnSigner.d.ts +91 -0
  172. package/dist/types/plugins/zkproof/index.d.ts +48 -0
  173. package/dist/types/plugins/zkproof/types.d.ts +123 -0
  174. package/dist/types/plugins/zkproof/zkCredentials.d.ts +112 -0
  175. package/dist/types/plugins/zkproof/zkProofConnector.d.ts +46 -0
  176. package/dist/types/plugins/zkproof/zkProofPlugin.d.ts +76 -0
  177. package/dist/types/storage/storage.d.ts +51 -0
  178. package/dist/types/utils/errorHandler.d.ts +119 -0
  179. package/dist/types/utils/eventEmitter.d.ts +39 -0
  180. package/dist/types/utils/seedPhrase.d.ts +50 -0
  181. package/dist/types/utils/validation.d.ts +27 -0
  182. package/dist/utils/errorHandler.js +246 -0
  183. package/dist/utils/eventEmitter.js +79 -0
  184. package/dist/utils/seedPhrase.js +97 -0
  185. package/dist/utils/validation.js +81 -0
  186. package/package.json +10 -57
@@ -0,0 +1,95 @@
1
+ /**
2
+ * PGP/OpenPGP Implementation
3
+ * Simple and immediate PGP functionality using openpgp library
4
+ * Provides encryption, decryption, signing, and key management
5
+ */
6
+ export interface PGPKeyPair {
7
+ publicKey: string;
8
+ privateKey: string;
9
+ keyId: string;
10
+ fingerprint: string;
11
+ created: Date;
12
+ }
13
+ export interface PGPEncryptedMessage {
14
+ message: string;
15
+ signature?: string;
16
+ encrypted: boolean;
17
+ signed: boolean;
18
+ }
19
+ export interface PGPSignature {
20
+ message: string;
21
+ signature: string;
22
+ valid: boolean;
23
+ keyId?: string;
24
+ }
25
+ export declare class PGPManager {
26
+ private openpgp;
27
+ private initialized;
28
+ constructor();
29
+ /**
30
+ * Initialize PGP manager with openpgp library
31
+ */
32
+ initialize(): Promise<void>;
33
+ /**
34
+ * Generate a new PGP key pair
35
+ */
36
+ generateKeyPair(name: string, email: string, passphrase?: string): Promise<PGPKeyPair>;
37
+ /**
38
+ * Encrypt a message with public key
39
+ */
40
+ encryptMessage(message: string, publicKeyArmored: string, privateKeyArmored?: string, passphrase?: string): Promise<PGPEncryptedMessage>;
41
+ /**
42
+ * Decrypt a message with private key
43
+ */
44
+ decryptMessage(encryptedMessage: string, privateKeyArmored: string, passphrase?: string): Promise<string>;
45
+ /**
46
+ * Sign a message with private key
47
+ */
48
+ signMessage(message: string, privateKeyArmored: string, passphrase?: string): Promise<PGPSignature>;
49
+ /**
50
+ * Verify a message signature
51
+ */
52
+ verifySignature(message: string, signature: string, publicKeyArmored: string): Promise<PGPSignature>;
53
+ /**
54
+ * Get key information from armored key
55
+ */
56
+ getKeyInfo(keyArmored: string): Promise<any>;
57
+ /**
58
+ * Export key in different formats
59
+ */
60
+ exportKey(keyArmored: string, format?: "armored" | "binary"): Promise<string | Uint8Array>;
61
+ /**
62
+ * Import key from different formats
63
+ */
64
+ importKey(keyData: string | Uint8Array, format?: "armored" | "binary"): Promise<string>;
65
+ /**
66
+ * Clean up resources
67
+ */
68
+ destroy(): void;
69
+ /**
70
+ * Ensure the manager is initialized
71
+ */
72
+ private ensureInitialized;
73
+ }
74
+ export declare const createPGPManager: () => Promise<PGPManager>;
75
+ export declare const generatePGPKeyPair: (name: string, email: string, passphrase?: string) => Promise<PGPKeyPair>;
76
+ export declare const encryptPGPMessage: (message: string, publicKey: string, privateKey?: string, passphrase?: string) => Promise<PGPEncryptedMessage>;
77
+ export declare const decryptPGPMessage: (encryptedMessage: string, privateKey: string, passphrase?: string) => Promise<string>;
78
+ export declare const signPGPMessage: (message: string, privateKey: string, passphrase?: string) => Promise<PGPSignature>;
79
+ export declare const verifyPGPSignature: (message: string, signature: string, publicKey: string) => Promise<PGPSignature>;
80
+ export declare const demonstratePGP: () => Promise<{
81
+ success: boolean;
82
+ messageDecrypted: boolean;
83
+ signatureValid: boolean;
84
+ aliceKeyInfo: any;
85
+ bobKeyInfo: any;
86
+ demonstration: {
87
+ keyGeneration: boolean;
88
+ encryption: boolean;
89
+ decryption: boolean;
90
+ signing: boolean;
91
+ verification: boolean;
92
+ keyManagement: boolean;
93
+ };
94
+ }>;
95
+ export default PGPManager;
@@ -0,0 +1,35 @@
1
+ export declare const generateRandomString: (length?: number, additionalSalt?: string) => string;
2
+ export declare const randomBytes: (length: number) => Uint8Array;
3
+ export declare const randomInt: (min: number, max: number) => number;
4
+ export declare const randomFloat: () => number;
5
+ export declare const randomBool: () => boolean;
6
+ export declare const randomUUID: () => string;
7
+ export declare class DeterministicRandom {
8
+ private seed;
9
+ constructor(seed: string | number);
10
+ private hashString;
11
+ private lcg;
12
+ integer(min?: number, max?: number): number;
13
+ floating(min?: number, max?: number, fixed?: number): number;
14
+ bool(): boolean;
15
+ string(length?: number, pool?: string): string;
16
+ guid(): string;
17
+ choice<T>(array: T[]): T;
18
+ shuffle<T>(array: T[]): T[];
19
+ color(): string;
20
+ date(start: Date, end: Date): Date;
21
+ }
22
+ export declare const createDeterministicRandom: (seed: string | number) => DeterministicRandom;
23
+ export declare const chance: (seed: string | number) => DeterministicRandom;
24
+ export declare const randomChoice: <T>(array: T[]) => T;
25
+ export declare const randomShuffle: <T>(array: T[]) => T[];
26
+ export declare const randomColor: () => string;
27
+ export declare const randomPassword: (options?: {
28
+ length?: number;
29
+ includeUppercase?: boolean;
30
+ includeLowercase?: boolean;
31
+ includeNumbers?: boolean;
32
+ includeSymbols?: boolean;
33
+ excludeSimilar?: boolean;
34
+ }) => string;
35
+ export declare const randomSeedPhrase: (wordCount?: number) => string[];
@@ -0,0 +1,102 @@
1
+ /**
2
+ * SFrame (Secure Frame) Manager
3
+ * End-to-end encryption for real-time media frames (audio/video)
4
+ * Designed for low overhead and high performance
5
+ *
6
+ * SFrame adds ~10 bytes per frame overhead
7
+ * Compatible with WebRTC Insertable Streams API
8
+ */
9
+ export interface SFrameKey {
10
+ keyId: number;
11
+ key: CryptoKey;
12
+ salt: Uint8Array;
13
+ }
14
+ export interface SFrameEncryptedFrame {
15
+ frameCount: number;
16
+ keyId: number;
17
+ iv: Uint8Array;
18
+ ciphertext: Uint8Array;
19
+ authTag: Uint8Array;
20
+ }
21
+ export declare class SFrameManager {
22
+ private keys;
23
+ private currentKeyId;
24
+ private frameCounter;
25
+ private initialized;
26
+ constructor();
27
+ /**
28
+ * Initialize the SFrame manager
29
+ */
30
+ initialize(): Promise<void>;
31
+ /**
32
+ * Generate a new SFrame encryption key
33
+ */
34
+ generateKey(keyId: number): Promise<SFrameKey>;
35
+ /**
36
+ * Derive an SFrame key from MLS shared secret
37
+ * This allows SFrame to use keys derived from MLS for media encryption
38
+ * RFC 9605 Section 5.2: MLS-based key management
39
+ */
40
+ deriveKeyFromMLSSecret(mlsSecret: ArrayBuffer, keyId: number, context?: string): Promise<SFrameKey>;
41
+ /**
42
+ * Set the active encryption key
43
+ */
44
+ setActiveKey(keyId: number): void;
45
+ /**
46
+ * Encrypt a media frame using SFrame
47
+ */
48
+ encryptFrame(frameData: ArrayBuffer): Promise<Uint8Array>;
49
+ /**
50
+ * Decrypt a media frame using SFrame
51
+ */
52
+ decryptFrame(encryptedFrame: Uint8Array): Promise<ArrayBuffer>;
53
+ /**
54
+ * Encrypt transform function for Insertable Streams
55
+ * Use this with RTCRtpSender.createEncodedStreams()
56
+ */
57
+ createEncryptTransform(): TransformStream;
58
+ /**
59
+ * Decrypt transform function for Insertable Streams
60
+ * Use this with RTCRtpReceiver.createEncodedStreams()
61
+ */
62
+ createDecryptTransform(): TransformStream;
63
+ /**
64
+ * Rotate encryption keys
65
+ * RFC 9605: Frame counter should be reset on key rotation to prevent exhaustion
66
+ */
67
+ rotateKey(): Promise<number>;
68
+ /**
69
+ * Get current key ID
70
+ */
71
+ getCurrentKeyId(): number;
72
+ /**
73
+ * Get frame counter (for debugging)
74
+ */
75
+ getFrameCounter(): number;
76
+ /**
77
+ * Reset frame counter (use when rotating keys)
78
+ */
79
+ resetFrameCounter(): void;
80
+ /**
81
+ * Remove old keys to prevent memory bloat
82
+ */
83
+ cleanupOldKeys(keepLast?: number): void;
84
+ /**
85
+ * Get statistics
86
+ */
87
+ getStats(): {
88
+ keyCount: number;
89
+ currentKeyId: number;
90
+ frameCounter: number;
91
+ initialized: boolean;
92
+ };
93
+ /**
94
+ * Clean up resources
95
+ */
96
+ destroy(): void;
97
+ /**
98
+ * Ensure the manager is initialized
99
+ */
100
+ private ensureInitialized;
101
+ }
102
+ export default SFrameManager;
@@ -0,0 +1,26 @@
1
+ import { SignalUser, SignalPublicKeyBundle, X3DHExchangeResult } from "./types";
2
+ export declare const generateSignalKeyPair: () => Promise<CryptoKeyPair>;
3
+ export declare const generateSignalSigningKeyPair: () => Promise<CryptoKeyPair>;
4
+ export declare const exportSignalPublicKey: (publicKey: CryptoKey) => Promise<ArrayBuffer>;
5
+ export declare const importSignalPublicKey: (keyBytes: ArrayBuffer) => Promise<CryptoKey>;
6
+ export declare const importSignalSigningPublicKey: (keyBytes: ArrayBuffer) => Promise<CryptoKey>;
7
+ export declare const performSignalDH: (privateKey: CryptoKey, publicKey: CryptoKey) => Promise<ArrayBuffer>;
8
+ export declare const signSignalData: (privateKey: CryptoKey, data: ArrayBuffer) => Promise<ArrayBuffer>;
9
+ export declare const verifySignalSignature: (publicKey: CryptoKey, signature: ArrayBuffer, data: ArrayBuffer) => Promise<boolean>;
10
+ export declare const deriveSignalKey: (inputKeyMaterial: ArrayBuffer, salt: ArrayBuffer, info: ArrayBuffer, length?: number) => Promise<CryptoKey>;
11
+ export declare const concatSignalArrayBuffers: (...buffers: ArrayBuffer[]) => ArrayBuffer;
12
+ export declare const bufferToSignalHex: (buffer: ArrayBuffer) => string;
13
+ export declare const initializeSignalUser: (name: string) => Promise<SignalUser>;
14
+ export declare const getSignalPublicKeyBundle: (user: SignalUser) => Promise<SignalPublicKeyBundle>;
15
+ export declare const consumeSignalOneTimePrekey: (user: SignalUser) => CryptoKeyPair | undefined;
16
+ export declare const performSignalX3DHKeyExchange: (alice: SignalUser, bobBundle: SignalPublicKeyBundle) => Promise<X3DHExchangeResult>;
17
+ export declare const deriveSignalSharedSecret: (bob: SignalUser, aliceEphemeralPublic: ArrayBuffer, aliceIdentityPublic: ArrayBuffer, usedOneTimePrekey: boolean, oneTimePrekeyBytes?: ArrayBuffer | null) => Promise<ArrayBuffer>;
18
+ export declare const demonstrateSignalProtocol: () => Promise<{
19
+ success: boolean;
20
+ aliceSecret: string;
21
+ bobSecret: string;
22
+ usedOneTimePrekey: boolean;
23
+ alice: SignalUser;
24
+ bob: SignalUser;
25
+ exchangeResult: X3DHExchangeResult;
26
+ }>;
@@ -0,0 +1,9 @@
1
+ import { EncryptedData } from "./types";
2
+ export declare const generateSymmetricKey: () => Promise<JsonWebKey>;
3
+ export declare const deserializeSymmetricKey: (key: JsonWebKey | string) => Promise<CryptoKey>;
4
+ export declare const encryptWithSymmetricKey: (message: string, key: CryptoKey) => Promise<EncryptedData>;
5
+ export declare const decryptWithSymmetricKey: (encryptedData: EncryptedData, key: CryptoKey) => Promise<string>;
6
+ export declare const deriveKeyFromPassword: (password: string, salt?: ArrayBuffer) => Promise<{
7
+ key: CryptoKey;
8
+ salt: ArrayBuffer;
9
+ }>;
@@ -0,0 +1,144 @@
1
+ export interface CryptoKeyPair {
2
+ publicKey: CryptoKey;
3
+ privateKey: CryptoKey;
4
+ }
5
+ export interface JWKKeyPair {
6
+ publicKey: JsonWebKey;
7
+ privateKey: JsonWebKey;
8
+ }
9
+ export interface SymmetricKey {
10
+ key: CryptoKey;
11
+ jwk: JsonWebKey;
12
+ }
13
+ export interface EncryptedData {
14
+ ciphertext: string;
15
+ iv: string;
16
+ }
17
+ export interface EncryptedFilePackage {
18
+ encryptedData: string;
19
+ iv: string;
20
+ salt: string;
21
+ fileName: string;
22
+ timestamp: string;
23
+ originalSize: number;
24
+ mimeType?: string;
25
+ fileSize?: number;
26
+ }
27
+ export interface DecryptedFileResult {
28
+ data: ArrayBuffer;
29
+ fileName: string;
30
+ originalSize: number;
31
+ decryptedSize: number;
32
+ blob?: Blob;
33
+ mimeType?: string;
34
+ textContent?: string;
35
+ isTextFile?: boolean;
36
+ metadata?: any;
37
+ }
38
+ export interface SignalUser {
39
+ name: string;
40
+ identityKeyPair: CryptoKeyPair;
41
+ identitySigningKeyPair: CryptoKeyPair;
42
+ signedPrekeyPair: CryptoKeyPair;
43
+ signedPrekeySignature: ArrayBuffer;
44
+ oneTimePrekeyPairs: CryptoKeyPair[];
45
+ }
46
+ export interface SignalPublicKeyBundle {
47
+ identityKey: ArrayBuffer;
48
+ identitySigningKey: ArrayBuffer;
49
+ signedPrekey: ArrayBuffer;
50
+ signedPrekeySignature: ArrayBuffer;
51
+ oneTimePrekey: ArrayBuffer | null;
52
+ }
53
+ export interface X3DHExchangeResult {
54
+ masterSecret: ArrayBuffer;
55
+ aliceEphemeralPublic: ArrayBuffer;
56
+ usedOneTimePrekey: boolean;
57
+ }
58
+ export interface DoubleRatchetState {
59
+ rootKey: ArrayBuffer;
60
+ sendingChainKey: ArrayBuffer | null;
61
+ receivingChainKey: ArrayBuffer | null;
62
+ sendingDHKeyPair: CryptoKeyPair | null;
63
+ receivingDHPublicKey: CryptoKey | null;
64
+ sendingMessageNumber: number;
65
+ receivingMessageNumber: number;
66
+ previousChainLength: number;
67
+ skippedMessageKeys: Map<string, Uint8Array>;
68
+ isInitiator: boolean;
69
+ initialized: number;
70
+ }
71
+ export interface MessageEnvelope {
72
+ dhPublicKey: Uint8Array;
73
+ messageNumber: number;
74
+ previousChainLength: number;
75
+ ciphertext: Uint8Array;
76
+ iv: Uint8Array;
77
+ timestamp: number;
78
+ }
79
+ export interface CryptoConfig {
80
+ enabled: boolean;
81
+ algorithms: string[];
82
+ keySize?: number;
83
+ iterations?: number;
84
+ }
85
+ export interface CryptoMethods {
86
+ randomString: (additionalSalt?: string) => string;
87
+ sha256Hash: (input: any) => Promise<string>;
88
+ sha512Hash: (input: any) => Promise<string>;
89
+ sha3_512Hash: (input: any) => Promise<string>;
90
+ generateKeyPair: () => Promise<JWKKeyPair>;
91
+ deserializePublicKey: (key: JsonWebKey | string) => Promise<CryptoKey>;
92
+ deserializePrivateKey: (key: JsonWebKey | string) => Promise<CryptoKey>;
93
+ encrypt: (message: string, publicKey: CryptoKey) => Promise<string>;
94
+ decrypt: (encryptedMessage: string, privateKey: CryptoKey) => Promise<string>;
95
+ generateSymmetricKey: () => Promise<JsonWebKey>;
96
+ deserializeSymmetricKey: (key: JsonWebKey | string) => Promise<CryptoKey>;
97
+ encryptWithSymmetricKey: (message: string, key: CryptoKey) => Promise<EncryptedData>;
98
+ decryptWithSymmetricKey: (encryptedData: EncryptedData, key: CryptoKey) => Promise<string>;
99
+ deriveKeyFromPassword: (password: string, salt?: ArrayBuffer) => Promise<{
100
+ key: CryptoKey;
101
+ salt: ArrayBuffer;
102
+ }>;
103
+ encryptFile: (fileContent: string | ArrayBuffer | File, password: string, fileName?: string) => Promise<EncryptedFilePackage>;
104
+ decryptFile: (encryptedPackage: EncryptedFilePackage, password: string) => Promise<DecryptedFileResult>;
105
+ encryptTextFile: (textContent: string, password: string, fileName?: string) => Promise<EncryptedFilePackage>;
106
+ decryptTextFile: (encryptedPackage: EncryptedFilePackage, password: string) => Promise<DecryptedFileResult & {
107
+ textContent: string;
108
+ }>;
109
+ encryptBinaryFile: (file: File, password: string) => Promise<EncryptedFilePackage>;
110
+ decryptBinaryFile: (encryptedPackage: EncryptedFilePackage, password: string) => Promise<DecryptedFileResult & {
111
+ blob: Blob;
112
+ }>;
113
+ createSecureFileDownload: (data: ArrayBuffer | string | Blob, fileName: string, mimeType?: string) => void;
114
+ parseEncryptedFilePackage: (file: File) => Promise<{
115
+ isValid: boolean;
116
+ package?: EncryptedFilePackage;
117
+ metadata?: any;
118
+ error?: string;
119
+ }>;
120
+ decryptUploadedFile: (encryptedFilePackage: File, password: string) => Promise<DecryptedFileResult>;
121
+ generateSignalKeyPair: () => Promise<CryptoKeyPair>;
122
+ generateSignalSigningKeyPair: () => Promise<CryptoKeyPair>;
123
+ exportSignalPublicKey: (publicKey: CryptoKey) => Promise<ArrayBuffer>;
124
+ importSignalPublicKey: (keyBytes: ArrayBuffer) => Promise<CryptoKey>;
125
+ importSignalSigningPublicKey: (keyBytes: ArrayBuffer) => Promise<CryptoKey>;
126
+ performSignalDH: (privateKey: CryptoKey, publicKey: CryptoKey) => Promise<ArrayBuffer>;
127
+ signSignalData: (privateKey: CryptoKey, data: ArrayBuffer) => Promise<ArrayBuffer>;
128
+ verifySignalSignature: (publicKey: CryptoKey, signature: ArrayBuffer, data: ArrayBuffer) => Promise<boolean>;
129
+ deriveSignalKey: (inputKeyMaterial: ArrayBuffer, salt: ArrayBuffer, info: ArrayBuffer, length?: number) => Promise<CryptoKey>;
130
+ concatSignalArrayBuffers: (...buffers: ArrayBuffer[]) => ArrayBuffer;
131
+ bufferToSignalHex: (buffer: ArrayBuffer) => string;
132
+ initializeSignalUser: (name: string) => Promise<SignalUser>;
133
+ getSignalPublicKeyBundle: (user: SignalUser) => Promise<SignalPublicKeyBundle>;
134
+ consumeSignalOneTimePrekey: (user: SignalUser) => CryptoKeyPair | undefined;
135
+ performSignalX3DHKeyExchange: (alice: SignalUser, bobBundle: SignalPublicKeyBundle) => Promise<X3DHExchangeResult>;
136
+ deriveSignalSharedSecret: (bob: SignalUser, aliceEphemeralPublic: ArrayBuffer, aliceIdentityPublic: ArrayBuffer, usedOneTimePrekey: boolean, oneTimePrekeyBytes?: ArrayBuffer | null) => Promise<ArrayBuffer>;
137
+ demonstrateSignalProtocol: () => Promise<any>;
138
+ initializeDoubleRatchet: (sharedSecret: ArrayBuffer, isInitiator: boolean, remotePublicKey?: CryptoKey | null) => Promise<DoubleRatchetState>;
139
+ doubleRatchetEncrypt: (state: DoubleRatchetState, plaintext: string) => Promise<MessageEnvelope>;
140
+ doubleRatchetDecrypt: (state: DoubleRatchetState, messageEnvelope: MessageEnvelope) => Promise<string>;
141
+ serializeDoubleRatchetState: (state: DoubleRatchetState) => Promise<string>;
142
+ demonstrateDoubleRatchet: () => Promise<any>;
143
+ cleanupSkippedMessageKeys: (state: DoubleRatchetState, maxAge?: number) => void;
144
+ }
@@ -0,0 +1,22 @@
1
+ export declare const validatePassword: (password: string) => boolean;
2
+ export declare const generateSecurePassword: (length?: number) => string;
3
+ export declare const measurePerformance: <T>(operation: () => Promise<T>, operationName: string) => Promise<{
4
+ result: T;
5
+ duration: number;
6
+ }>;
7
+ export declare const formatBytes: (bytes: number) => string;
8
+ export declare const formatDuration: (ms: number) => string;
9
+ export declare const createProgressCallback: (onProgress: (progress: number) => void, total: number) => {
10
+ increment: (amount?: number) => void;
11
+ setProgress: (progress: number) => void;
12
+ complete: () => void;
13
+ };
14
+ export declare const sanitizeFileName: (fileName: string) => string;
15
+ export declare const getFileExtension: (fileName: string) => string;
16
+ export declare const isTextFile: (fileName: string) => boolean;
17
+ export declare const createFileHash: (file: File) => Promise<string>;
18
+ export declare const compareFiles: (file1: File, file2: File) => Promise<boolean>;
19
+ export declare const createBackup: (data: any) => string;
20
+ export declare const restoreBackup: (backupString: string) => any;
21
+ export declare const debounce: <T extends (...args: any[]) => any>(func: T, wait: number) => ((...args: Parameters<T>) => void);
22
+ export declare const throttle: <T extends (...args: any[]) => any>(func: T, limit: number) => ((...args: Parameters<T>) => void);
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Authentication Test Script
3
+ *
4
+ * Tests signup and login functionality with username and password
5
+ * Includes timeout handling and error recovery testing
6
+ */
7
+ declare function authTest(): Promise<void>;
8
+ export { authTest };
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Esempio di utilizzo del CryptoIdentityManager
3
+ * Mostra come le identità crypto vengono generate automaticamente dopo l'autenticazione SEA
4
+ */
5
+ export declare function runCryptoIdentityExamples(): Promise<void>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,53 @@
1
+ /**
2
+ * MLS Advanced Example
3
+ * Demonstrates advanced MLS features including:
4
+ * - Group creation and management
5
+ * - Member addition/removal
6
+ * - Key rotation and forward secrecy
7
+ * - Message encryption/decryption
8
+ * - Commit processing and synchronization
9
+ */
10
+ declare class MLSGroupDemo {
11
+ private users;
12
+ private groupId;
13
+ private creator;
14
+ constructor(groupId: string, creatorId: string);
15
+ /**
16
+ * Add a user to the demo
17
+ */
18
+ addUser(userId: string): Promise<void>;
19
+ /**
20
+ * Create the group with the creator
21
+ */
22
+ createGroup(): Promise<void>;
23
+ /**
24
+ * Add members to the group
25
+ */
26
+ addMembers(memberIds: string[]): Promise<void>;
27
+ /**
28
+ * Send a message from one user to the group
29
+ */
30
+ sendMessage(senderId: string, message: string): Promise<void>;
31
+ /**
32
+ * Perform key rotation
33
+ */
34
+ rotateKeys(initiatorId: string): Promise<void>;
35
+ /**
36
+ * Remove members from the group
37
+ */
38
+ removeMembers(memberIds: string[]): Promise<void>;
39
+ /**
40
+ * Get group information
41
+ */
42
+ getGroupInfo(): Promise<any>;
43
+ /**
44
+ * Demonstrate codec functionality
45
+ */
46
+ demonstrateCodec(): Promise<void>;
47
+ /**
48
+ * Clean up resources
49
+ */
50
+ cleanup(): Promise<void>;
51
+ }
52
+ declare function demonstrateMLSAdvanced(): Promise<void>;
53
+ export { MLSGroupDemo, demonstrateMLSAdvanced };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,75 @@
1
+ /**
2
+ * PGP Example - Simple and Immediate
3
+ * Demonstrates basic PGP functionality:
4
+ * - Key generation
5
+ * - Message encryption/decryption
6
+ * - Digital signing
7
+ * - Signature verification
8
+ */
9
+ declare function simplePGPExample(): Promise<{
10
+ success: boolean;
11
+ messageDecrypted: boolean;
12
+ signatureValid: boolean;
13
+ error?: undefined;
14
+ } | {
15
+ success: boolean;
16
+ error: string;
17
+ messageDecrypted?: undefined;
18
+ signatureValid?: undefined;
19
+ }>;
20
+ declare function advancedPGPExample(): Promise<{
21
+ success: boolean;
22
+ groupMessaging: boolean;
23
+ keyManagement: boolean;
24
+ exportImport: boolean;
25
+ error?: undefined;
26
+ } | {
27
+ success: boolean;
28
+ error: string;
29
+ groupMessaging?: undefined;
30
+ keyManagement?: undefined;
31
+ exportImport?: undefined;
32
+ }>;
33
+ declare function runAllPGPExamples(): Promise<{
34
+ simple: {
35
+ success: boolean;
36
+ messageDecrypted: boolean;
37
+ signatureValid: boolean;
38
+ error?: undefined;
39
+ } | {
40
+ success: boolean;
41
+ error: string;
42
+ messageDecrypted?: undefined;
43
+ signatureValid?: undefined;
44
+ };
45
+ advanced: {
46
+ success: boolean;
47
+ groupMessaging: boolean;
48
+ keyManagement: boolean;
49
+ exportImport: boolean;
50
+ error?: undefined;
51
+ } | {
52
+ success: boolean;
53
+ error: string;
54
+ groupMessaging?: undefined;
55
+ keyManagement?: undefined;
56
+ exportImport?: undefined;
57
+ };
58
+ demo: {
59
+ success: boolean;
60
+ messageDecrypted: boolean;
61
+ signatureValid: boolean;
62
+ aliceKeyInfo: any;
63
+ bobKeyInfo: any;
64
+ demonstration: {
65
+ keyGeneration: boolean;
66
+ encryption: boolean;
67
+ decryption: boolean;
68
+ signing: boolean;
69
+ verification: boolean;
70
+ keyManagement: boolean;
71
+ };
72
+ };
73
+ allPassed: boolean;
74
+ }>;
75
+ export { simplePGPExample, advancedPGPExample, runAllPGPExamples };
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Quick Auth Test Script
3
+ *
4
+ * Simple script to quickly test signup and login functionality
5
+ * Run this to verify that the authentication system is working
6
+ */
7
+ declare function quickAuthTest(): Promise<void>;
8
+ export { quickAuthTest };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Example showing how to use the simplified ShogunCore API
3
+ *
4
+ * The API has been streamlined:
5
+ * - AutoQuickStart: Quick initialization helper
6
+ * - api.database: Direct access to DataBase for basic operations (get, put, set, remove, auth)
7
+ * - api helper methods: High-level helpers for profile, settings, collections, and array utilities
8
+ */
9
+ declare function simpleAPITest(): Promise<void>;
10
+ export { simpleAPITest };
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Esempio semplificato del CryptoIdentityManager
3
+ * Focus sulla funzionalità principale senza plugin opzionali
4
+ */
5
+ declare function simpleCryptoIdentityExample(): Promise<void>;
6
+ export { simpleCryptoIdentityExample };
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Timeout Test Script
3
+ *
4
+ * Tests the timeout mechanism for signup and login operations
5
+ * This script specifically tests the fixes we implemented to prevent hanging
6
+ */
7
+ declare function timeoutTest(): Promise<void>;
8
+ export { timeoutTest };
@@ -0,0 +1,12 @@
1
+ /**
2
+ * ZK-Proof Verifiable Credentials Example
3
+ *
4
+ * This demonstrates how to use ZK-Proof for proving attributes
5
+ * about documents and identity without revealing sensitive data
6
+ */
7
+ declare function ageVerificationExample(): Promise<void>;
8
+ declare function citizenshipExample(): Promise<void>;
9
+ declare function educationExample(): Promise<void>;
10
+ declare function incomeExample(): Promise<void>;
11
+ declare function customCredentialExample(): Promise<void>;
12
+ export { ageVerificationExample, citizenshipExample, educationExample, incomeExample, customCredentialExample, };
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Zero-Knowledge Proof Authentication Example
3
+ *
4
+ * This example demonstrates how to use the ZK-Proof plugin with Shogun Core
5
+ * for privacy-preserving authentication using Semaphore protocol.
6
+ */
7
+ declare function basicExample(): Promise<void>;
8
+ declare function deterministicExample(): Promise<void>;
9
+ declare function proofExample(): Promise<void>;
10
+ declare function multiDeviceExample(): Promise<void>;
11
+ export { basicExample, deterministicExample, proofExample, multiDeviceExample };