@protontech/openpgp 6.1.1-patch.2 → 6.1.1-patch.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.
@@ -1,4 +1,4 @@
1
- /*! OpenPGP.js v6.1.1-patch.2 - 2025-05-14 - this is LGPL licensed code, see LICENSE/our website https://openpgpjs.org/ for more information. */
1
+ /*! OpenPGP.js v6.1.1-patch.4 - 2025-07-14 - this is LGPL licensed code, see LICENSE/our website https://openpgpjs.org/ for more information. */
2
2
  const globalThis = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
3
3
 
4
4
  const doneWritingPromise = Symbol('doneWritingPromise');
@@ -1047,11 +1047,10 @@ var enums = {
1047
1047
  ed25519: 27,
1048
1048
  /** Ed448 (Sign only) */
1049
1049
  ed448: 28,
1050
- /** Post-quantum ML-KEM-768 + X25519 (Encrypt only) */
1051
- pqc_mlkem_x25519: 105,
1052
1050
  /** Post-quantum ML-DSA-64 + Ed25519 (Sign only) */
1053
- pqc_mldsa_ed25519: 107,
1054
-
1051
+ pqc_mldsa_ed25519: 30,
1052
+ /** Post-quantum ML-KEM-768 + X25519 (Encrypt only) */
1053
+ pqc_mlkem_x25519: 35,
1055
1054
  /** Persistent symmetric keys: encryption algorithm */
1056
1055
  aead: 100,
1057
1056
  /** Persistent symmetric keys: authentication algorithm */
@@ -1702,7 +1701,7 @@ var config = {
1702
1701
  * @memberof module:config
1703
1702
  * @property {String} versionString A version string to be included in armored messages
1704
1703
  */
1705
- versionString: 'OpenPGP.js 6.1.1-patch.2',
1704
+ versionString: 'OpenPGP.js 6.1.1-patch.4',
1706
1705
  /**
1707
1706
  * @memberof module:config
1708
1707
  * @property {String} commentString A comment string to be included in armored messages
@@ -6893,7 +6892,15 @@ async function generate$a(algo) {
6893
6892
  case enums.publicKey.ed25519:
6894
6893
  try {
6895
6894
  const webCrypto = util.getWebCrypto();
6896
- const webCryptoKey = await webCrypto.generateKey('Ed25519', true, ['sign', 'verify']);
6895
+ const webCryptoKey = await webCrypto.generateKey('Ed25519', true, ['sign', 'verify'])
6896
+ .catch(err => {
6897
+ if (err.name === 'OperationError') { // Temporary (hopefully) fix for WebKit on Linux
6898
+ const newErr = new Error('Unexpected key generation issue');
6899
+ newErr.name = 'NotSupportedError';
6900
+ throw newErr;
6901
+ }
6902
+ throw err;
6903
+ });
6897
6904
 
6898
6905
  const privateKey = await webCrypto.exportKey('jwk', webCryptoKey.privateKey);
6899
6906
  const publicKey = await webCrypto.exportKey('jwk', webCryptoKey.publicKey);
@@ -6903,7 +6910,7 @@ async function generate$a(algo) {
6903
6910
  seed: b64ToUint8Array(privateKey.d, true)
6904
6911
  };
6905
6912
  } catch (err) {
6906
- if (err.name !== 'NotSupportedError' && err.name !== 'OperationError') { // Temporary (hopefully) fix for WebKit on Linux
6913
+ if (err.name !== 'NotSupportedError') {
6907
6914
  throw err;
6908
6915
  }
6909
6916
  const seed = getRandomBytes(getPayloadSize$1(algo));
@@ -6936,17 +6943,11 @@ async function generate$a(algo) {
6936
6943
  * @async
6937
6944
  */
6938
6945
  async function sign$9(algo, hashAlgo, message, publicKey, privateKey, hashed) {
6939
- if (getHashByteLength(hashAlgo) < getHashByteLength(getPreferredHashAlgo$2(algo))) {
6940
- // Enforce digest sizes:
6941
- // - Ed25519: https://www.rfc-editor.org/rfc/rfc9580.html#section-5.2.3.4-4
6942
- // - Ed448: https://www.rfc-editor.org/rfc/rfc9580.html#section-5.2.3.5-4
6943
- throw new Error('Hash algorithm too weak for EdDSA.');
6944
- }
6945
6946
  switch (algo) {
6946
6947
  case enums.publicKey.ed25519:
6947
6948
  try {
6948
6949
  const webCrypto = util.getWebCrypto();
6949
- const jwk = privateKeyToJWK(algo, publicKey, privateKey);
6950
+ const jwk = privateKeyToJWK$1(algo, publicKey, privateKey);
6950
6951
  const key = await webCrypto.importKey('jwk', jwk, 'Ed25519', false, ['sign']);
6951
6952
 
6952
6953
  const signature = new Uint8Array(
@@ -6986,17 +6987,11 @@ async function sign$9(algo, hashAlgo, message, publicKey, privateKey, hashed) {
6986
6987
  * @async
6987
6988
  */
6988
6989
  async function verify$9(algo, hashAlgo, { RS }, m, publicKey, hashed) {
6989
- if (getHashByteLength(hashAlgo) < getHashByteLength(getPreferredHashAlgo$2(algo))) {
6990
- // Enforce digest sizes:
6991
- // - Ed25519: https://www.rfc-editor.org/rfc/rfc9580.html#section-5.2.3.4-4
6992
- // - Ed448: https://www.rfc-editor.org/rfc/rfc9580.html#section-5.2.3.5-4
6993
- throw new Error('Hash algorithm too weak for EdDSA.');
6994
- }
6995
6990
  switch (algo) {
6996
6991
  case enums.publicKey.ed25519:
6997
6992
  try {
6998
6993
  const webCrypto = util.getWebCrypto();
6999
- const jwk = publicKeyToJWK(algo, publicKey);
6994
+ const jwk = publicKeyToJWK$1(algo, publicKey);
7000
6995
  const key = await webCrypto.importKey('jwk', jwk, 'Ed25519', false, ['verify']);
7001
6996
  const verified = await webCrypto.verify('Ed25519', key, RS, hashed);
7002
6997
  return verified;
@@ -7071,7 +7066,7 @@ function getPreferredHashAlgo$2(algo) {
7071
7066
  }
7072
7067
  }
7073
7068
 
7074
- const publicKeyToJWK = (algo, publicKey) => {
7069
+ const publicKeyToJWK$1 = (algo, publicKey) => {
7075
7070
  switch (algo) {
7076
7071
  case enums.publicKey.ed25519: {
7077
7072
  const jwk = {
@@ -7087,10 +7082,10 @@ const publicKeyToJWK = (algo, publicKey) => {
7087
7082
  }
7088
7083
  };
7089
7084
 
7090
- const privateKeyToJWK = (algo, publicKey, privateKey) => {
7085
+ const privateKeyToJWK$1 = (algo, publicKey, privateKey) => {
7091
7086
  switch (algo) {
7092
7087
  case enums.publicKey.ed25519: {
7093
- const jwk = publicKeyToJWK(algo, publicKey);
7088
+ const jwk = publicKeyToJWK$1(algo, publicKey);
7094
7089
  jwk.d = uint8ArrayToB64(privateKey);
7095
7090
  return jwk;
7096
7091
  }
@@ -8330,12 +8325,41 @@ const HKDF_INFO = {
8330
8325
  */
8331
8326
  async function generate$9(algo) {
8332
8327
  switch (algo) {
8333
- case enums.publicKey.x25519: {
8334
- // k stays in little-endian, unlike legacy ECDH over curve25519
8335
- const k = getRandomBytes(32);
8336
- const { publicKey: A } = nacl.box.keyPair.fromSecretKey(k);
8337
- return { A, k };
8338
- }
8328
+ case enums.publicKey.x25519:
8329
+ try {
8330
+ const webCrypto = util.getWebCrypto();
8331
+ const webCryptoKey = await webCrypto.generateKey('X25519', true, ['deriveKey', 'deriveBits'])
8332
+ .catch(err => {
8333
+ if (err.name === 'OperationError') { // Temporary (hopefully) fix for WebKit on Linux
8334
+ const newErr = new Error('Unexpected key generation issue');
8335
+ newErr.name = 'NotSupportedError';
8336
+ throw newErr;
8337
+ }
8338
+ throw err;
8339
+ });
8340
+
8341
+ const privateKey = await webCrypto.exportKey('jwk', webCryptoKey.privateKey);
8342
+ const publicKey = await webCrypto.exportKey('jwk', webCryptoKey.publicKey);
8343
+
8344
+ if (privateKey.x !== publicKey.x) { // Weird issue with Webkit on Linux: https://bugs.webkit.org/show_bug.cgi?id=289693
8345
+ const err = new Error('Unexpected mismatching public point');
8346
+ err.name = 'NotSupportedError';
8347
+ throw err;
8348
+ }
8349
+
8350
+ return {
8351
+ A: new Uint8Array(b64ToUint8Array(publicKey.x)),
8352
+ k: b64ToUint8Array(privateKey.d)
8353
+ };
8354
+ } catch (err) {
8355
+ if (err.name !== 'NotSupportedError') {
8356
+ throw err;
8357
+ }
8358
+ // k stays in little-endian, unlike legacy ECDH over curve25519
8359
+ const k = getRandomBytes(32);
8360
+ const { publicKey: A } = nacl.box.keyPair.fromSecretKey(k);
8361
+ return { A, k };
8362
+ }
8339
8363
 
8340
8364
  case enums.publicKey.x448: {
8341
8365
  const x448 = await util.getNobleCurve(enums.publicKey.x448);
@@ -8477,13 +8501,46 @@ function getPayloadSize(algo) {
8477
8501
  */
8478
8502
  async function generateEphemeralEncryptionMaterial(algo, recipientA) {
8479
8503
  switch (algo) {
8480
- case enums.publicKey.x25519: {
8481
- const ephemeralSecretKey = getRandomBytes(getPayloadSize(algo));
8482
- const sharedSecret = nacl.scalarMult(ephemeralSecretKey, recipientA);
8483
- assertNonZeroArray(sharedSecret);
8484
- const { publicKey: ephemeralPublicKey } = nacl.box.keyPair.fromSecretKey(ephemeralSecretKey);
8485
- return { ephemeralPublicKey, sharedSecret };
8486
- }
8504
+ case enums.publicKey.x25519:
8505
+ try {
8506
+ const webCrypto = util.getWebCrypto();
8507
+ const ephemeralKeyPair = await webCrypto.generateKey('X25519', true, ['deriveKey', 'deriveBits'])
8508
+ .catch(err => {
8509
+ if (err.name === 'OperationError') { // Temporary (hopefully) fix for WebKit on Linux
8510
+ const newErr = new Error('Unexpected key generation issue');
8511
+ newErr.name = 'NotSupportedError';
8512
+ throw newErr;
8513
+ }
8514
+ throw err;
8515
+ });
8516
+ const ephemeralPublicKeyJwt = await webCrypto.exportKey('jwk', ephemeralKeyPair.publicKey);
8517
+ const ephemeralPrivateKeyJwt = await webCrypto.exportKey('jwk', ephemeralKeyPair.privateKey);
8518
+ if (ephemeralPrivateKeyJwt.x !== ephemeralPublicKeyJwt.x) { // Weird issue with Webkit on Linux: https://bugs.webkit.org/show_bug.cgi?id=289693
8519
+ const err = new Error('Unexpected mismatching public point');
8520
+ err.name = 'NotSupportedError';
8521
+ throw err;
8522
+ }
8523
+ const jwk = publicKeyToJWK(algo, recipientA);
8524
+ const recipientPublicKey = await webCrypto.importKey('jwk', jwk, 'X25519', false, []);
8525
+ const sharedSecretBuffer = await webCrypto.deriveBits(
8526
+ { name: 'X25519', public: recipientPublicKey },
8527
+ ephemeralKeyPair.privateKey,
8528
+ getPayloadSize(algo) * 8 // in bits
8529
+ );
8530
+ return {
8531
+ sharedSecret: new Uint8Array(sharedSecretBuffer),
8532
+ ephemeralPublicKey: new Uint8Array(b64ToUint8Array(ephemeralPublicKeyJwt.x))
8533
+ };
8534
+ } catch (err) {
8535
+ if (err.name !== 'NotSupportedError') {
8536
+ throw err;
8537
+ }
8538
+ const ephemeralSecretKey = getRandomBytes(getPayloadSize(algo));
8539
+ const sharedSecret = nacl.scalarMult(ephemeralSecretKey, recipientA);
8540
+ assertNonZeroArray(sharedSecret);
8541
+ const { publicKey: ephemeralPublicKey } = nacl.box.keyPair.fromSecretKey(ephemeralSecretKey);
8542
+ return { ephemeralPublicKey, sharedSecret };
8543
+ }
8487
8544
  case enums.publicKey.x448: {
8488
8545
  const x448 = await util.getNobleCurve(enums.publicKey.x448);
8489
8546
  const ephemeralSecretKey = x448.utils.randomPrivateKey();
@@ -8499,11 +8556,27 @@ async function generateEphemeralEncryptionMaterial(algo, recipientA) {
8499
8556
 
8500
8557
  async function recomputeSharedSecret(algo, ephemeralPublicKey, A, k) {
8501
8558
  switch (algo) {
8502
- case enums.publicKey.x25519: {
8503
- const sharedSecret = nacl.scalarMult(k, ephemeralPublicKey);
8504
- assertNonZeroArray(sharedSecret);
8505
- return sharedSecret;
8506
- }
8559
+ case enums.publicKey.x25519:
8560
+ try {
8561
+ const webCrypto = util.getWebCrypto();
8562
+ const privateKeyJWK = privateKeyToJWK(algo, A, k);
8563
+ const ephemeralPublicKeyJWK = publicKeyToJWK(algo, ephemeralPublicKey);
8564
+ const privateKey = await webCrypto.importKey('jwk', privateKeyJWK, 'X25519', false, ['deriveKey', 'deriveBits']);
8565
+ const ephemeralPublicKeyReference = await webCrypto.importKey('jwk', ephemeralPublicKeyJWK, 'X25519', false, []);
8566
+ const sharedSecretBuffer = await webCrypto.deriveBits(
8567
+ { name: 'X25519', public: ephemeralPublicKeyReference },
8568
+ privateKey,
8569
+ getPayloadSize(algo) * 8 // in bits
8570
+ );
8571
+ return new Uint8Array(sharedSecretBuffer);
8572
+ } catch (err) {
8573
+ if (err.name !== 'NotSupportedError') {
8574
+ throw err;
8575
+ }
8576
+ const sharedSecret = nacl.scalarMult(k, ephemeralPublicKey);
8577
+ assertNonZeroArray(sharedSecret);
8578
+ return sharedSecret;
8579
+ }
8507
8580
  case enums.publicKey.x448: {
8508
8581
  const x448 = await util.getNobleCurve(enums.publicKey.x448);
8509
8582
  const sharedSecret = x448.getSharedSecret(k, ephemeralPublicKey);
@@ -8531,6 +8604,35 @@ function assertNonZeroArray(sharedSecret) {
8531
8604
  }
8532
8605
  }
8533
8606
 
8607
+
8608
+ function publicKeyToJWK(algo, publicKey) {
8609
+ switch (algo) {
8610
+ case enums.publicKey.x25519: {
8611
+ const jwk = {
8612
+ kty: 'OKP',
8613
+ crv: 'X25519',
8614
+ x: uint8ArrayToB64(publicKey),
8615
+ ext: true
8616
+ };
8617
+ return jwk;
8618
+ }
8619
+ default:
8620
+ throw new Error('Unsupported ECDH algorithm');
8621
+ }
8622
+ }
8623
+
8624
+ function privateKeyToJWK(algo, publicKey, privateKey) {
8625
+ switch (algo) {
8626
+ case enums.publicKey.x25519: {
8627
+ const jwk = publicKeyToJWK(algo, publicKey);
8628
+ jwk.d = uint8ArrayToB64(privateKey);
8629
+ return jwk;
8630
+ }
8631
+ default:
8632
+ throw new Error('Unsupported ECDH algorithm');
8633
+ }
8634
+ }
8635
+
8534
8636
  var ecdh_x = /*#__PURE__*/Object.freeze({
8535
8637
  __proto__: null,
8536
8638
  decrypt: decrypt$4,
@@ -9238,12 +9340,6 @@ var ecdsa = /*#__PURE__*/Object.freeze({
9238
9340
  async function sign$7(oid, hashAlgo, message, publicKey, privateKey, hashed) {
9239
9341
  const curve = new CurveWithOID(oid);
9240
9342
  checkPublicPointEnconding(curve, publicKey);
9241
- if (getHashByteLength(hashAlgo) < getHashByteLength(enums.hash.sha256)) {
9242
- // Enforce digest sizes, since the constraint was already present in RFC4880bis:
9243
- // see https://tools.ietf.org/id/draft-ietf-openpgp-rfc4880bis-10.html#section-15-7.2
9244
- // and https://www.rfc-editor.org/rfc/rfc9580.html#section-5.2.3.3-3
9245
- throw new Error('Hash algorithm too weak for EdDSA.');
9246
- }
9247
9343
  const { RS: signature } = await sign$9(enums.publicKey.ed25519, hashAlgo, message, publicKey.subarray(1), privateKey, hashed);
9248
9344
  // EdDSA signature params are returned in little-endian format
9249
9345
  return {
@@ -9267,12 +9363,6 @@ async function sign$7(oid, hashAlgo, message, publicKey, privateKey, hashed) {
9267
9363
  async function verify$7(oid, hashAlgo, { r, s }, m, publicKey, hashed) {
9268
9364
  const curve = new CurveWithOID(oid);
9269
9365
  checkPublicPointEnconding(curve, publicKey);
9270
- if (getHashByteLength(hashAlgo) < getHashByteLength(enums.hash.sha256)) {
9271
- // Enforce digest sizes, since the constraint was already present in RFC4880bis:
9272
- // see https://tools.ietf.org/id/draft-ietf-openpgp-rfc4880bis-10.html#section-15-7.2
9273
- // and https://www.rfc-editor.org/rfc/rfc9580.html#section-5.2.3.3-3
9274
- throw new Error('Hash algorithm too weak for EdDSA.');
9275
- }
9276
9366
  const RS = util.concatUint8Array([r, s]);
9277
9367
  return verify$9(enums.publicKey.ed25519, hashAlgo, { RS }, m, publicKey.subarray(1), hashed);
9278
9368
  }
@@ -10130,7 +10220,7 @@ async function generate$4(algo) {
10130
10220
  async function encrypt$2(algo, eccPublicKey, mlkemPublicKey, sessioneKeyData) {
10131
10221
  const { eccKeyShare, eccCipherText } = await encaps$1(algo, eccPublicKey);
10132
10222
  const { mlkemKeyShare, mlkemCipherText } = await encaps(algo, mlkemPublicKey);
10133
- const kek = await multiKeyCombine(algo, eccKeyShare, eccCipherText, eccPublicKey, mlkemKeyShare, mlkemCipherText, mlkemPublicKey);
10223
+ const kek = await multiKeyCombine(algo, mlkemKeyShare, eccKeyShare, eccCipherText, eccPublicKey);
10134
10224
  const wrappedKey = await wrap(enums.symmetric.aes256, kek, sessioneKeyData); // C
10135
10225
  return { eccCipherText, mlkemCipherText, wrappedKey };
10136
10226
  }
@@ -10138,25 +10228,24 @@ async function encrypt$2(algo, eccPublicKey, mlkemPublicKey, sessioneKeyData) {
10138
10228
  async function decrypt$2(algo, eccCipherText, mlkemCipherText, eccSecretKey, eccPublicKey, mlkemSecretKey, mlkemPublicKey, encryptedSessionKeyData) {
10139
10229
  const eccKeyShare = await decaps$1(algo, eccCipherText, eccSecretKey, eccPublicKey);
10140
10230
  const mlkemKeyShare = await decaps(algo, mlkemCipherText, mlkemSecretKey);
10141
- const kek = await multiKeyCombine(algo, eccKeyShare, eccCipherText, eccPublicKey, mlkemKeyShare, mlkemCipherText, mlkemPublicKey);
10231
+ const kek = await multiKeyCombine(algo, mlkemKeyShare, eccKeyShare, eccCipherText, eccPublicKey);
10142
10232
  const sessionKey = await unwrap(enums.symmetric.aes256, kek, encryptedSessionKeyData);
10143
10233
  return sessionKey;
10144
10234
  }
10145
10235
 
10146
- async function multiKeyCombine(algo, ecdhKeyShare, ecdhCipherText, ecdhPublicKey, mlkemKeyShare, mlkemCipherText, mlkemPublicKey) {
10147
- // LAMPS-aligned and NIST compatible combiner, proposed in: https://mailarchive.ietf.org/arch/msg/openpgp/NMTCy707LICtxIhP3Xt1U5C8MF0/
10148
- // 2a. KDF(mlkemSS || tradSS || tradCT || tradPK || Domain)
10149
- // where Domain is "Domain" for LAMPS, and "mlkemCT || mlkemPK || algId || const" for OpenPGP
10236
+ /**
10237
+ * KEM key combiner
10238
+ */
10239
+ async function multiKeyCombine(algo, mlkemKeyShare, ecdhKeyShare, ecdhCipherText, ecdhPublicKey) {
10240
+ const domSep = util.encodeUTF8('OpenPGPCompositeKDFv1');
10150
10241
  const encData = util.concatUint8Array([
10151
10242
  mlkemKeyShare,
10152
10243
  ecdhKeyShare,
10153
10244
  ecdhCipherText,
10154
10245
  ecdhPublicKey,
10155
- // domSep
10156
- mlkemCipherText,
10157
- mlkemPublicKey,
10158
10246
  new Uint8Array([algo]),
10159
- util.encodeUTF8('OpenPGPCompositeKDFv1')
10247
+ domSep,
10248
+ new Uint8Array([domSep.length])
10160
10249
  ]);
10161
10250
 
10162
10251
  const kek = await computeDigest(enums.hash.sha3_256, encData);
@@ -10293,12 +10382,6 @@ async function generate$1(algo) {
10293
10382
  }
10294
10383
 
10295
10384
  async function sign$2(signatureAlgo, hashAlgo, eccSecretKey, eccPublicKey, mldsaSecretKey, dataDigest) {
10296
- if (hashAlgo !== getRequiredHashAlgo(signatureAlgo)) {
10297
- // The signature hash algo MUST be set to the specified algorithm, see
10298
- // https://datatracker.ietf.org/doc/html/draft-ietf-openpgp-pqc#section-5.2.1.
10299
- throw new Error('Unexpected hash algorithm for PQC signature');
10300
- }
10301
-
10302
10385
  switch (signatureAlgo) {
10303
10386
  case enums.publicKey.pqc_mldsa_ed25519: {
10304
10387
  const { eccSignature } = await sign$3(signatureAlgo, hashAlgo, eccSecretKey, eccPublicKey, dataDigest);
@@ -10312,12 +10395,6 @@ async function sign$2(signatureAlgo, hashAlgo, eccSecretKey, eccPublicKey, mldsa
10312
10395
  }
10313
10396
 
10314
10397
  async function verify$2(signatureAlgo, hashAlgo, eccPublicKey, mldsaPublicKey, dataDigest, { eccSignature, mldsaSignature }) {
10315
- if (hashAlgo !== getRequiredHashAlgo(signatureAlgo)) {
10316
- // The signature hash algo MUST be set to the specified algorithm, see
10317
- // https://datatracker.ietf.org/doc/html/draft-ietf-openpgp-pqc#section-5.2.1.
10318
- throw new Error('Unexpected hash algorithm for PQC signature');
10319
- }
10320
-
10321
10398
  switch (signatureAlgo) {
10322
10399
  case enums.publicKey.pqc_mldsa_ed25519: {
10323
10400
  const eccVerifiedPromise = verify$3(signatureAlgo, hashAlgo, eccPublicKey, dataDigest, eccSignature);
@@ -10330,11 +10407,12 @@ async function verify$2(signatureAlgo, hashAlgo, eccPublicKey, mldsaPublicKey, d
10330
10407
  }
10331
10408
  }
10332
10409
 
10333
- function getRequiredHashAlgo(signatureAlgo) {
10334
- // See https://datatracker.ietf.org/doc/html/draft-ietf-openpgp-pqc#section-5.2.1.
10410
+ function isCompatibleHashAlgo(signatureAlgo, hashAlgo) {
10411
+ // The signature hash algo MUST have digest larger than 256 bits
10412
+ // https://www.ietf.org/archive/id/draft-ietf-openpgp-pqc-10.html#section-9.4
10335
10413
  switch (signatureAlgo) {
10336
10414
  case enums.publicKey.pqc_mldsa_ed25519:
10337
- return enums.hash.sha3_256;
10415
+ return getHashByteLength(hashAlgo) >= 32;
10338
10416
  default:
10339
10417
  throw new Error('Unsupported signature algorithm');
10340
10418
  }
@@ -12457,6 +12535,12 @@ async function verify$1(algo, hashAlgo, signature, publicParams, privateParams,
12457
12535
  return verify$8(oid, hashAlgo, { r, s }, data, Q, hashed);
12458
12536
  }
12459
12537
  case enums.publicKey.eddsaLegacy: {
12538
+ if (getHashByteLength(hashAlgo) < getHashByteLength(enums.hash.sha256)) {
12539
+ // Enforce digest sizes, since the constraint was already present in RFC4880bis:
12540
+ // see https://tools.ietf.org/id/draft-ietf-openpgp-rfc4880bis-10.html#section-15-7.2
12541
+ // and https://www.rfc-editor.org/rfc/rfc9580.html#section-5.2.3.3-3
12542
+ throw new Error('Hash algorithm too weak for EdDSALegacy.');
12543
+ }
12460
12544
  const { oid, Q } = publicParams;
12461
12545
  const curveSize = new CurveWithOID(oid).payloadSize;
12462
12546
  // When dealing little-endian MPI data, we always need to left-pad it, as done with big-endian values:
@@ -12467,6 +12551,13 @@ async function verify$1(algo, hashAlgo, signature, publicParams, privateParams,
12467
12551
  }
12468
12552
  case enums.publicKey.ed25519:
12469
12553
  case enums.publicKey.ed448: {
12554
+ if (getHashByteLength(hashAlgo) < getHashByteLength(getPreferredHashAlgo$2(algo))) {
12555
+ // Enforce digest sizes:
12556
+ // - Ed25519: https://www.rfc-editor.org/rfc/rfc9580.html#section-5.2.3.4-4
12557
+ // - Ed448: https://www.rfc-editor.org/rfc/rfc9580.html#section-5.2.3.5-4
12558
+ throw new Error('Hash algorithm too weak for EdDSA.');
12559
+ }
12560
+
12470
12561
  const { A } = publicParams;
12471
12562
  return verify$9(algo, hashAlgo, signature, data, A, hashed);
12472
12563
  }
@@ -12479,6 +12570,11 @@ async function verify$1(algo, hashAlgo, signature, publicParams, privateParams,
12479
12570
  return verify$5(algo.getValue(), keyMaterial, signature.mac.data, hashed);
12480
12571
  }
12481
12572
  case enums.publicKey.pqc_mldsa_ed25519: {
12573
+ if (!isCompatibleHashAlgo(algo, hashAlgo)) {
12574
+ // The signature hash algo MUST have digest larger than 256 bits
12575
+ // https://www.ietf.org/archive/id/draft-ietf-openpgp-pqc-10.html#section-9.4
12576
+ throw new Error('Unexpected hash algorithm for PQC signature: digest size too short');
12577
+ }
12482
12578
  const { eccPublicKey, mldsaPublicKey } = publicParams;
12483
12579
  return verify$2(algo, hashAlgo, eccPublicKey, mldsaPublicKey, hashed, signature);
12484
12580
  }
@@ -12527,12 +12623,24 @@ async function sign$1(algo, hashAlgo, publicKeyParams, privateKeyParams, data, h
12527
12623
  return sign$8(oid, hashAlgo, data, Q, d, hashed);
12528
12624
  }
12529
12625
  case enums.publicKey.eddsaLegacy: {
12626
+ if (getHashByteLength(hashAlgo) < getHashByteLength(enums.hash.sha256)) {
12627
+ // Enforce digest sizes, since the constraint was already present in RFC4880bis:
12628
+ // see https://tools.ietf.org/id/draft-ietf-openpgp-rfc4880bis-10.html#section-15-7.2
12629
+ // and https://www.rfc-editor.org/rfc/rfc9580.html#section-5.2.3.3-3
12630
+ throw new Error('Hash algorithm too weak for EdDSALegacy.');
12631
+ }
12530
12632
  const { oid, Q } = publicKeyParams;
12531
12633
  const { seed } = privateKeyParams;
12532
12634
  return sign$7(oid, hashAlgo, data, Q, seed, hashed);
12533
12635
  }
12534
12636
  case enums.publicKey.ed25519:
12535
12637
  case enums.publicKey.ed448: {
12638
+ if (getHashByteLength(hashAlgo) < getHashByteLength(getPreferredHashAlgo$2(algo))) {
12639
+ // Enforce digest sizes:
12640
+ // - Ed25519: https://www.rfc-editor.org/rfc/rfc9580.html#section-5.2.3.4-4
12641
+ // - Ed448: https://www.rfc-editor.org/rfc/rfc9580.html#section-5.2.3.5-4
12642
+ throw new Error('Hash algorithm too weak for EdDSA.');
12643
+ }
12536
12644
  const { A } = publicKeyParams;
12537
12645
  const { seed } = privateKeyParams;
12538
12646
  return sign$9(algo, hashAlgo, data, A, seed, hashed);
@@ -12544,6 +12652,11 @@ async function sign$1(algo, hashAlgo, publicKeyParams, privateKeyParams, data, h
12544
12652
  return { mac: new ShortByteString(mac) };
12545
12653
  }
12546
12654
  case enums.publicKey.pqc_mldsa_ed25519: {
12655
+ if (!isCompatibleHashAlgo(algo, hashAlgo)) {
12656
+ // The signature hash algo MUST have digest larger than 256 bits
12657
+ // https://www.ietf.org/archive/id/draft-ietf-openpgp-pqc-10.html#section-9.4
12658
+ throw new Error('Unexpected hash algorithm for PQC signature: digest size too short');
12659
+ }
12547
12660
  const { eccPublicKey } = publicKeyParams;
12548
12661
  const { eccSecretKey, mldsaSecretKey } = privateKeyParams;
12549
12662
  return sign$2(algo, hashAlgo, eccSecretKey, eccPublicKey, mldsaSecretKey, hashed);
@@ -16812,12 +16925,8 @@ class PublicKeyPacket {
16812
16925
  throw new Error('Legacy curve25519 cannot be used with v6 keys');
16813
16926
  }
16814
16927
  // The composite ML-DSA + EdDSA schemes MUST be used only with v6 keys.
16815
- // The composite ML-KEM + ECDH schemes MUST be used only with v6 keys.
16816
- if (this.version !== 6 && (
16817
- this.algorithm === enums.publicKey.pqc_mldsa_ed25519 ||
16818
- this.algorithm === enums.publicKey.pqc_mlkem_x25519
16819
- )) {
16820
- throw new Error('Unexpected key version: ML-DSA and ML-KEM algorithms can only be used with v6 keys');
16928
+ if (this.version !== 6 && this.algorithm === enums.publicKey.pqc_mldsa_ed25519) {
16929
+ throw new Error('Unexpected key version: ML-DSA algorithms can only be used with v6 keys');
16821
16930
  }
16822
16931
  this.publicParams = publicParams;
16823
16932
  pos += read;
@@ -17817,11 +17926,8 @@ class SecretKeyPacket extends PublicKeyPacket {
17817
17926
  )) {
17818
17927
  throw new Error(`Cannot generate v6 keys of type 'ecc' with curve ${curve}. Generate a key of type 'curve25519' instead`);
17819
17928
  }
17820
- if (this.version !== 6 && (
17821
- this.algorithm === enums.publicKey.pqc_mldsa_ed25519 ||
17822
- this.algorithm === enums.publicKey.pqc_mlkem_x25519
17823
- )) {
17824
- throw new Error(`Cannot generate v${this.version} keys of type 'pqc'. Generate a v6 key instead`);
17929
+ if (this.version !== 6 && this.algorithm === enums.publicKey.pqc_mldsa_ed25519) {
17930
+ throw new Error(`Cannot generate v${this.version} signing keys of type 'pqc'. Generate a v6 key instead`);
17825
17931
  }
17826
17932
  const { privateParams, publicParams } = await generateParams(this.algorithm, bits, curve, symmetric);
17827
17933
  this.privateParams = privateParams;
@@ -18325,12 +18431,6 @@ async function createBindingSignature(subkey, primaryKey, options, config) {
18325
18431
  * @async
18326
18432
  */
18327
18433
  async function getPreferredHashAlgo(targetKeys, signingKeyPacket, date = new Date(), targetUserIDs = [], config) {
18328
- if (signingKeyPacket.algorithm === enums.publicKey.pqc_mldsa_ed25519) {
18329
- // For PQC, the returned hash algo MUST be set to the specified algorithm, see
18330
- // https://datatracker.ietf.org/doc/html/draft-ietf-openpgp-pqc#section-5.2.1.
18331
- return getRequiredHashAlgo(signingKeyPacket.algorithm);
18332
- }
18333
-
18334
18434
  /**
18335
18435
  * If `preferredSenderAlgo` appears in the prefs of all recipients, we pick it; otherwise, we use the
18336
18436
  * strongest supported algo (`defaultAlgo` is always implicitly supported by all keys).
@@ -18378,6 +18478,10 @@ async function getPreferredHashAlgo(targetKeys, signingKeyPacket, date = new Dat
18378
18478
  enums.publicKey.ed448
18379
18479
  ]);
18380
18480
 
18481
+ const pqcAlgos = new Set([
18482
+ enums.publicKey.pqc_mldsa_ed25519
18483
+ ]);
18484
+
18381
18485
  if (eccAlgos.has(signingKeyPacket.algorithm)) {
18382
18486
  // For ECC, the returned hash algo MUST be at least as strong as `preferredCurveHashAlgo`, see:
18383
18487
  // - ECDSA: https://www.rfc-editor.org/rfc/rfc9580.html#section-5.2.3.2-5
@@ -18400,6 +18504,21 @@ async function getPreferredHashAlgo(targetKeys, signingKeyPacket, date = new Dat
18400
18504
  strongestSupportedAlgo :
18401
18505
  preferredCurveAlgo;
18402
18506
  }
18507
+ } else if (pqcAlgos.has(signingKeyPacket.algorithm)) {
18508
+ // For PQC, the returned hash algo MUST be at least 256 bit long, see:
18509
+ // https://www.ietf.org/archive/id/draft-ietf-openpgp-pqc-10.html#section-9.4 .
18510
+ // Hence, we return the `preferredHashAlgo` as long as it's supported and long enough;
18511
+ // Otherwise, we look at the strongest supported algo, and ultimately fallback the default algo (SHA-256).
18512
+ const preferredSenderAlgoIsSupported = isSupportedHashAlgo(preferredSenderAlgo) && isCompatibleHashAlgo(signingKeyPacket.algorithm, preferredSenderAlgo);
18513
+
18514
+ if (preferredSenderAlgoIsSupported) {
18515
+ return preferredSenderAlgo;
18516
+ } else {
18517
+ const strongestSupportedAlgo = getStrongestSupportedHashAlgo();
18518
+ return isCompatibleHashAlgo(signingKeyPacket.algorithm, strongestSupportedAlgo) ?
18519
+ strongestSupportedAlgo :
18520
+ defaultAlgo;
18521
+ }
18403
18522
  }
18404
18523
 
18405
18524
  // `preferredSenderAlgo` may be weaker than the default, but we do not guard against this,
@@ -1,3 +1,3 @@
1
- /*! OpenPGP.js v6.1.1-patch.2 - 2025-05-14 - this is LGPL licensed code, see LICENSE/our website https://openpgpjs.org/ for more information. */
1
+ /*! OpenPGP.js v6.1.1-patch.4 - 2025-07-14 - this is LGPL licensed code, see LICENSE/our website https://openpgpjs.org/ for more information. */
2
2
  "undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;function t(t,e){return e.forEach((function(e){e&&"string"!=typeof e&&!Array.isArray(e)&&Object.keys(e).forEach((function(r){if("default"!==r&&!(r in t)){var i=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,i.get?i:{enumerable:!0,get:function(){return e[r]}})}}))})),Object.freeze(t)}var e=[0,1,3,7,15,31,63,127,255],r=function(t){this.stream=t,this.bitOffset=0,this.curByte=0,this.hasByte=!1};r.prototype._ensureByte=function(){this.hasByte||(this.curByte=this.stream.readByte(),this.hasByte=!0)},r.prototype.read=function(t){for(var r=0;t>0;){this._ensureByte();var i=8-this.bitOffset;if(t>=i)r<<=i,r|=e[i]&this.curByte,this.hasByte=!1,this.bitOffset=0,t-=i;else{r<<=t;var n=i-t;r|=(this.curByte&e[t]<<n)>>n,this.bitOffset+=t,t=0}}return r},r.prototype.seek=function(t){var e=t%8,r=(t-e)/8;this.bitOffset=e,this.stream.seek(r),this.hasByte=!1},r.prototype.pi=function(){var t,e=new Uint8Array(6);for(t=0;t<e.length;t++)e[t]=this.read(8);return function(t){return Array.prototype.map.call(t,(t=>("00"+t.toString(16)).slice(-2))).join("")}(e)};var i=r,n=function(){};n.prototype.readByte=function(){throw Error("abstract method readByte() not implemented")},n.prototype.read=function(t,e,r){for(var i=0;i<r;){var n=this.readByte();if(n<0)return 0===i?-1:i;t[e++]=n,i++}return i},n.prototype.seek=function(t){throw Error("abstract method seek() not implemented")},n.prototype.writeByte=function(t){throw Error("abstract method readByte() not implemented")},n.prototype.write=function(t,e,r){var i;for(i=0;i<r;i++)this.writeByte(t[e++]);return r},n.prototype.flush=function(){};var o,a=n,s=(o=new Uint32Array([0,79764919,159529838,222504665,319059676,398814059,445009330,507990021,638119352,583659535,797628118,726387553,890018660,835552979,1015980042,944750013,1276238704,1221641927,1167319070,1095957929,1595256236,1540665371,1452775106,1381403509,1780037320,1859660671,1671105958,1733955601,2031960084,2111593891,1889500026,1952343757,2552477408,2632100695,2443283854,2506133561,2334638140,2414271883,2191915858,2254759653,3190512472,3135915759,3081330742,3009969537,2905550212,2850959411,2762807018,2691435357,3560074640,3505614887,3719321342,3648080713,3342211916,3287746299,3467911202,3396681109,4063920168,4143685023,4223187782,4286162673,3779000052,3858754371,3904687514,3967668269,881225847,809987520,1023691545,969234094,662832811,591600412,771767749,717299826,311336399,374308984,453813921,533576470,25881363,88864420,134795389,214552010,2023205639,2086057648,1897238633,1976864222,1804852699,1867694188,1645340341,1724971778,1587496639,1516133128,1461550545,1406951526,1302016099,1230646740,1142491917,1087903418,2896545431,2825181984,2770861561,2716262478,3215044683,3143675388,3055782693,3001194130,2326604591,2389456536,2200899649,2280525302,2578013683,2640855108,2418763421,2498394922,3769900519,3832873040,3912640137,3992402750,4088425275,4151408268,4197601365,4277358050,3334271071,3263032808,3476998961,3422541446,3585640067,3514407732,3694837229,3640369242,1762451694,1842216281,1619975040,1682949687,2047383090,2127137669,1938468188,2001449195,1325665622,1271206113,1183200824,1111960463,1543535498,1489069629,1434599652,1363369299,622672798,568075817,748617968,677256519,907627842,853037301,1067152940,995781531,51762726,131386257,177728840,240578815,269590778,349224269,429104020,491947555,4046411278,4126034873,4172115296,4234965207,3794477266,3874110821,3953728444,4016571915,3609705398,3555108353,3735388376,3664026991,3290680682,3236090077,3449943556,3378572211,3174993278,3120533705,3032266256,2961025959,2923101090,2868635157,2813903052,2742672763,2604032198,2683796849,2461293480,2524268063,2284983834,2364738477,2175806836,2238787779,1569362073,1498123566,1409854455,1355396672,1317987909,1246755826,1192025387,1137557660,2072149281,2135122070,1912620623,1992383480,1753615357,1816598090,1627664531,1707420964,295390185,358241886,404320391,483945776,43990325,106832002,186451547,266083308,932423249,861060070,1041341759,986742920,613929101,542559546,756411363,701822548,3316196985,3244833742,3425377559,3370778784,3601682597,3530312978,3744426955,3689838204,3819031489,3881883254,3928223919,4007849240,4037393693,4100235434,4180117107,4259748804,2310601993,2373574846,2151335527,2231098320,2596047829,2659030626,2470359227,2550115596,2947551409,2876312838,2788305887,2733848168,3165939309,3094707162,3040238851,2985771188]),function(){var t=4294967295;this.getCRC=function(){return~t>>>0},this.updateCRC=function(e){t=t<<8^o[255&(t>>>24^e)]},this.updateCRCRun=function(e,r){for(;r-- >0;)t=t<<8^o[255&(t>>>24^e)]}}),f=i,u=a,h=s,p=function(t,e){var r,i=t[e];for(r=e;r>0;r--)t[r]=t[r-1];return t[0]=i,i},d={OK:0,LAST_BLOCK:-1,NOT_BZIP_DATA:-2,UNEXPECTED_INPUT_EOF:-3,UNEXPECTED_OUTPUT_EOF:-4,DATA_ERROR:-5,OUT_OF_MEMORY:-6,OBSOLETE_INPUT:-7,END_OF_BLOCK:-8},c={};c[d.LAST_BLOCK]="Bad file checksum",c[d.NOT_BZIP_DATA]="Not bzip data",c[d.UNEXPECTED_INPUT_EOF]="Unexpected input EOF",c[d.UNEXPECTED_OUTPUT_EOF]="Unexpected output EOF",c[d.DATA_ERROR]="Data error",c[d.OUT_OF_MEMORY]="Out of memory",c[d.OBSOLETE_INPUT]="Obsolete (pre 0.9.5) bzip format not supported.";var _=function(t,e){var r=c[t]||"unknown error";e&&(r+=": "+e);var i=new TypeError(r);throw i.errorCode=t,i},b=function(t,e){this.writePos=this.writeCurrent=this.writeCount=0,this._start_bunzip(t,e)};b.prototype._init_block=function(){return this._get_next_block()?(this.blockCRC=new h,!0):(this.writeCount=-1,!1)},b.prototype._start_bunzip=function(t,e){var r=new Uint8Array(4);4===t.read(r,0,4)&&"BZh"===String.fromCharCode(r[0],r[1],r[2])||_(d.NOT_BZIP_DATA,"bad magic");var i=r[3]-48;(i<1||i>9)&&_(d.NOT_BZIP_DATA,"level out of range"),this.reader=new f(t),this.dbufSize=1e5*i,this.nextoutput=0,this.outputStream=e,this.streamCRC=0},b.prototype._get_next_block=function(){var t,e,r,i=this.reader,n=i.pi();if("177245385090"===n)return!1;"314159265359"!==n&&_(d.NOT_BZIP_DATA),this.targetBlockCRC=i.read(32)>>>0,this.streamCRC=(this.targetBlockCRC^(this.streamCRC<<1|this.streamCRC>>>31))>>>0,i.read(1)&&_(d.OBSOLETE_INPUT);var o=i.read(24);o>this.dbufSize&&_(d.DATA_ERROR,"initial position out of bounds");var a=i.read(16),s=new Uint8Array(256),f=0;for(t=0;t<16;t++)if(a&1<<15-t){var u=16*t;for(r=i.read(16),e=0;e<16;e++)r&1<<15-e&&(s[f++]=u+e)}var h=i.read(3);(h<2||h>6)&&_(d.DATA_ERROR);var c=i.read(15);0===c&&_(d.DATA_ERROR);var b=new Uint8Array(256);for(t=0;t<h;t++)b[t]=t;var y=new Uint8Array(c);for(t=0;t<c;t++){for(e=0;i.read(1);e++)e>=h&&_(d.DATA_ERROR);y[t]=p(b,e)}var R,l=f+2,C=[];for(e=0;e<h;e++){var A,w,O=new Uint8Array(l),B=new Uint16Array(21);for(a=i.read(5),t=0;t<l;t++){for(;(a<1||a>20)&&_(d.DATA_ERROR),i.read(1);)i.read(1)?a--:a++;O[t]=a}for(A=w=O[0],t=1;t<l;t++)O[t]>w?w=O[t]:O[t]<A&&(A=O[t]);R={},C.push(R),R.permute=new Uint16Array(258),R.limit=new Uint32Array(22),R.base=new Uint32Array(21),R.minLen=A,R.maxLen=w;var v=0;for(t=A;t<=w;t++)for(B[t]=R.limit[t]=0,a=0;a<l;a++)O[a]===t&&(R.permute[v++]=a);for(t=0;t<l;t++)B[O[t]]++;for(v=a=0,t=A;t<w;t++)v+=B[t],R.limit[t]=v-1,v<<=1,a+=B[t],R.base[t+1]=v-a;R.limit[w+1]=Number.MAX_VALUE,R.limit[w]=v+B[w]-1,R.base[A]=0}var E=new Uint32Array(256);for(t=0;t<256;t++)b[t]=t;var m,T=0,g=0,U=0,k=this.dbuf=new Uint32Array(this.dbufSize);for(l=0;;){for(l--||(l=49,U>=c&&_(d.DATA_ERROR),R=C[y[U++]]),t=R.minLen,e=i.read(t);t>R.maxLen&&_(d.DATA_ERROR),!(e<=R.limit[t]);t++)e=e<<1|i.read(1);((e-=R.base[t])<0||e>=258)&&_(d.DATA_ERROR);var D=R.permute[e];if(0!==D&&1!==D){if(T)for(T=0,g+a>this.dbufSize&&_(d.DATA_ERROR),E[m=s[b[0]]]+=a;a--;)k[g++]=m;if(D>f)break;g>=this.dbufSize&&_(d.DATA_ERROR),E[m=s[m=p(b,t=D-1)]]++,k[g++]=m}else T||(T=1,a=0),a+=0===D?T:2*T,T<<=1}for((o<0||o>=g)&&_(d.DATA_ERROR),e=0,t=0;t<256;t++)r=e+E[t],E[t]=e,e=r;for(t=0;t<g;t++)k[E[m=255&k[t]]]|=t<<8,E[m]++;var z=0,P=0,S=0;return g&&(P=255&(z=k[o]),z>>=8,S=-1),this.writePos=z,this.writeCurrent=P,this.writeCount=g,this.writeRun=S,!0},b.prototype._read_bunzip=function(t,e){var r,i,n;if(this.writeCount<0)return 0;var o=this.dbuf,a=this.writePos,s=this.writeCurrent,f=this.writeCount;this.outputsize;for(var u=this.writeRun;f;){for(f--,i=s,s=255&(a=o[a]),a>>=8,3==u++?(r=s,n=i,s=-1):(r=1,n=s),this.blockCRC.updateCRCRun(n,r);r--;)this.outputStream.writeByte(n),this.nextoutput++;s!=i&&(u=0)}return this.writeCount=f,this.blockCRC.getCRC()!==this.targetBlockCRC&&_(d.DATA_ERROR,"Bad block CRC (got "+this.blockCRC.getCRC().toString(16)+" expected "+this.targetBlockCRC.toString(16)+")"),this.nextoutput};var y=function(t){if("readByte"in t)return t;var e=new u;return e.pos=0,e.readByte=function(){return t[this.pos++]},e.seek=function(t){this.pos=t},e.eof=function(){return this.pos>=t.length},e},R=function(t){var e=new u,r=!0;if(t)if("number"==typeof t)e.buffer=new Uint8Array(t),r=!1;else{if("writeByte"in t)return t;e.buffer=t,r=!1}else e.buffer=new Uint8Array(16384);return e.pos=0,e.writeByte=function(t){if(r&&this.pos>=this.buffer.length){var e=new Uint8Array(2*this.buffer.length);e.set(this.buffer),this.buffer=e}this.buffer[this.pos++]=t},e.getBuffer=function(){if(this.pos!==this.buffer.length){if(!r)throw new TypeError("outputsize does not match decoded input");var t=new Uint8Array(this.pos);t.set(this.buffer.subarray(0,this.pos)),this.buffer=t}return this.buffer},e._coerced=!0,e};var l=/*#__PURE__*/t({__proto__:null},[{Bunzip:b,Stream:u,Err:d,decode:function(t,e,r){for(var i=y(t),n=R(e),o=new b(i,n);!("eof"in i)||!i.eof();)if(o._init_block())o._read_bunzip();else{var a=o.reader.read(32)>>>0;if(a!==o.streamCRC&&_(d.DATA_ERROR,"Bad stream CRC (got "+o.streamCRC.toString(16)+" expected "+a.toString(16)+")"),!r||!("eof"in i)||i.eof())break;o._start_bunzip(i,n)}if("getBuffer"in n)return n.getBuffer()},decodeBlock:function(t,e,r){var i=y(t),n=R(r),o=new b(i,n);if(o.reader.seek(e),o._get_next_block()&&(o.blockCRC=new h,o.writeCopies=0,o._read_bunzip()),"getBuffer"in n)return n.getBuffer()},table:function(t,e,r){var i=new u;i.delegate=y(t),i.pos=0,i.readByte=function(){return this.pos++,this.delegate.readByte()},i.delegate.eof&&(i.eof=i.delegate.eof.bind(i.delegate));var n=new u;n.pos=0,n.writeByte=function(){this.pos++};for(var o=new b(i,n),a=o.dbufSize;!("eof"in i)||!i.eof();){var s=8*i.pos+o.reader.bitOffset;if(o.reader.hasByte&&(s-=8),o._init_block()){var f=n.pos;o._read_bunzip(),e(s,n.pos-f)}else{if(o.reader.read(32),!r||!("eof"in i)||i.eof())break;o._start_bunzip(i,n),console.assert(o.dbufSize===a,"shouldn't change block size within multistream file")}}}}]);export{l as i};
3
3
  //# sourceMappingURL=seek-bzip.min.mjs.map
@@ -1,4 +1,4 @@
1
- /*! OpenPGP.js v6.1.1-patch.2 - 2025-05-14 - this is LGPL licensed code, see LICENSE/our website https://openpgpjs.org/ for more information. */
1
+ /*! OpenPGP.js v6.1.1-patch.4 - 2025-07-14 - this is LGPL licensed code, see LICENSE/our website https://openpgpjs.org/ for more information. */
2
2
  const globalThis = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
3
3
 
4
4
  function _mergeNamespaces(n, m) {
@@ -1,4 +1,4 @@
1
- /*! OpenPGP.js v6.1.1-patch.2 - 2025-05-14 - this is LGPL licensed code, see LICENSE/our website https://openpgpjs.org/ for more information. */
1
+ /*! OpenPGP.js v6.1.1-patch.4 - 2025-07-14 - this is LGPL licensed code, see LICENSE/our website https://openpgpjs.org/ for more information. */
2
2
  const t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function e(t){if(!Number.isSafeInteger(t)||t<0)throw Error("positive integer expected, got "+t)}function n(t,...e){if(!((n=t)instanceof Uint8Array||ArrayBuffer.isView(n)&&"Uint8Array"===n.constructor.name))throw Error("Uint8Array expected");var n;if(e.length>0&&!e.includes(t.length))throw Error("Uint8Array expected of length "+e+", got length="+t.length)}function s(t){if("function"!=typeof t||"function"!=typeof t.create)throw Error("Hash should be wrapped by utils.wrapConstructor");e(t.outputLen),e(t.blockLen)}function o(t,e=!0){if(t.destroyed)throw Error("Hash instance has been destroyed");if(e&&t.finished)throw Error("Hash#digest() has already been called")}function r(t,e){n(t);const s=e.outputLen;if(t.length<s)throw Error("digestInto() expects output buffer of length at least "+s)}const i="object"==typeof t&&"crypto"in t?t.crypto:void 0,h=t=>new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4)),a=t=>new DataView(t.buffer,t.byteOffset,t.byteLength),f=(t,e)=>t<<32-e|t>>>e,u=(t,e)=>t<<e|t>>>32-e>>>0,c=/* @__PURE__ */(()=>68===new Uint8Array(new Uint32Array([287454020]).buffer)[0])();
3
3
  /*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */function l(t){for(let n=0;n<t.length;n++)t[n]=(e=t[n])<<24&4278190080|e<<8&16711680|e>>>8&65280|e>>>24&255;var e}function d(t){if("string"!=typeof t)throw Error("utf8ToBytes expected string, got "+typeof t);return new Uint8Array((new TextEncoder).encode(t))}function p(t){return"string"==typeof t&&(t=d(t)),n(t),t}function g(...t){let e=0;for(let s=0;s<t.length;s++){const o=t[s];n(o),e+=o.length}const s=new Uint8Array(e);for(let e=0,n=0;e<t.length;e++){const o=t[e];s.set(o,n),n+=o.length}return s}class y{clone(){return this._cloneInto()}}function w(t){const e=e=>t().update(p(e)).digest(),n=t();return e.outputLen=n.outputLen,e.blockLen=n.blockLen,e.create=()=>t(),e}function b(t=32){if(i&&"function"==typeof i.getRandomValues)return i.getRandomValues(new Uint8Array(t));if(i&&"function"==typeof i.randomBytes)return i.randomBytes(t);throw Error("crypto.getRandomValues must be defined")}const L=/* @__PURE__ */BigInt(2**32-1),k=/* @__PURE__ */BigInt(32);function I(t,e=!1){return e?{h:Number(t&L),l:Number(t>>k&L)}:{h:0|Number(t>>k&L),l:0|Number(t&L)}}function B(t,e=!1){let n=new Uint32Array(t.length),s=new Uint32Array(t.length);for(let o=0;o<t.length;o++){const{h:r,l:i}=I(t[o],e);[n[o],s[o]]=[r,i]}return[n,s]}const A=(t,e,n)=>t<<n|e>>>32-n,m=(t,e,n)=>e<<n|t>>>32-n,O=(t,e,n)=>e<<n-32|t>>>64-n,U=(t,e,n)=>t<<n-32|e>>>64-n;const x={fromBig:I,split:B,toBig:(t,e)=>BigInt(t>>>0)<<k|BigInt(e>>>0),shrSH:(t,e,n)=>t>>>n,shrSL:(t,e,n)=>t<<32-n|e>>>n,rotrSH:(t,e,n)=>t>>>n|e<<32-n,rotrSL:(t,e,n)=>t<<32-n|e>>>n,rotrBH:(t,e,n)=>t<<64-n|e>>>n-32,rotrBL:(t,e,n)=>t>>>n-32|e<<64-n,rotr32H:(t,e)=>e,rotr32L:(t,e)=>t,rotlSH:A,rotlSL:m,rotlBH:O,rotlBL:U,add:function(t,e,n,s){const o=(e>>>0)+(s>>>0);return{h:t+n+(o/2**32|0)|0,l:0|o}},add3L:(t,e,n)=>(t>>>0)+(e>>>0)+(n>>>0),add3H:(t,e,n,s)=>e+n+s+(t/2**32|0)|0,add4L:(t,e,n,s)=>(t>>>0)+(e>>>0)+(n>>>0)+(s>>>0),add4H:(t,e,n,s,o)=>e+n+s+o+(t/2**32|0)|0,add5H:(t,e,n,s,o,r)=>e+n+s+o+r+(t/2**32|0)|0,add5L:(t,e,n,s,o)=>(t>>>0)+(e>>>0)+(n>>>0)+(s>>>0)+(o>>>0)},E=[],H=[],S=[],v=/* @__PURE__ */BigInt(0),F=/* @__PURE__ */BigInt(1),N=/* @__PURE__ */BigInt(2),V=/* @__PURE__ */BigInt(7),X=/* @__PURE__ */BigInt(256),M=/* @__PURE__ */BigInt(113);for(let t=0,e=F,n=1,s=0;t<24;t++){[n,s]=[s,(2*n+3*s)%5],E.push(2*(5*s+n)),H.push((t+1)*(t+2)/2%64);let o=v;for(let t=0;t<7;t++)e=(e<<F^(e>>V)*M)%X,e&N&&(o^=F<<(F<</* @__PURE__ */BigInt(t))-F);S.push(o)}const[R,j]=/* @__PURE__ */B(S,!0),T=(t,e,n)=>n>32?O(t,e,n):A(t,e,n),_=(t,e,n)=>n>32?U(t,e,n):m(t,e,n);class C extends y{constructor(t,n,s,o=!1,r=24){if(super(),this.blockLen=t,this.suffix=n,this.outputLen=s,this.enableXOF=o,this.rounds=r,this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,e(s),0>=this.blockLen||this.blockLen>=200)throw Error("Sha3 supports only keccak-f1600 function");this.state=new Uint8Array(200),this.state32=h(this.state)}keccak(){c||l(this.state32),function(t,e=24){const n=new Uint32Array(10);for(let s=24-e;s<24;s++){for(let e=0;e<10;e++)n[e]=t[e]^t[e+10]^t[e+20]^t[e+30]^t[e+40];for(let e=0;e<10;e+=2){const s=(e+8)%10,o=(e+2)%10,r=n[o],i=n[o+1],h=T(r,i,1)^n[s],a=_(r,i,1)^n[s+1];for(let n=0;n<50;n+=10)t[e+n]^=h,t[e+n+1]^=a}let e=t[2],o=t[3];for(let n=0;n<24;n++){const s=H[n],r=T(e,o,s),i=_(e,o,s),h=E[n];e=t[h],o=t[h+1],t[h]=r,t[h+1]=i}for(let e=0;e<50;e+=10){for(let s=0;s<10;s++)n[s]=t[e+s];for(let s=0;s<10;s++)t[e+s]^=~n[(s+2)%10]&n[(s+4)%10]}t[0]^=R[s],t[1]^=j[s]}n.fill(0)}(this.state32,this.rounds),c||l(this.state32),this.posOut=0,this.pos=0}update(t){o(this);const{blockLen:e,state:n}=this,s=(t=p(t)).length;for(let o=0;o<s;){const r=Math.min(e-this.pos,s-o);for(let e=0;e<r;e++)n[this.pos++]^=t[o++];this.pos===e&&this.keccak()}return this}finish(){if(this.finished)return;this.finished=!0;const{state:t,suffix:e,pos:n,blockLen:s}=this;t[n]^=e,128&e&&n===s-1&&this.keccak(),t[s-1]^=128,this.keccak()}writeInto(t){o(this,!1),n(t),this.finish();const e=this.state,{blockLen:s}=this;for(let n=0,o=t.length;n<o;){this.posOut>=s&&this.keccak();const r=Math.min(s-this.posOut,o-n);t.set(e.subarray(this.posOut,this.posOut+r),n),this.posOut+=r,n+=r}return t}xofInto(t){if(!this.enableXOF)throw Error("XOF is not possible for this instance");return this.writeInto(t)}xof(t){return e(t),this.xofInto(new Uint8Array(t))}digestInto(t){if(r(t,this),this.finished)throw Error("digest() was already called");return this.writeInto(t),this.destroy(),t}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,this.state.fill(0)}_cloneInto(t){const{blockLen:e,suffix:n,outputLen:s,rounds:o,enableXOF:r}=this;return t||(t=new C(e,n,s,r,o)),t.state32.set(this.state32),t.pos=this.pos,t.posOut=this.posOut,t.finished=this.finished,t.rounds=o,t.suffix=n,t.outputLen=s,t.enableXOF=r,t.destroyed=this.destroyed,t}}const D=(t,e,n)=>w((()=>new C(e,t,n))),q=/* @__PURE__ */D(6,136,32),z=/* @__PURE__ */D(6,72,64),G=(t,e,n)=>function(t){const e=(e,n)=>t(n).update(p(e)).digest(),n=t({});return e.outputLen=n.outputLen,e.blockLen=n.blockLen,e.create=e=>t(e),e}(((s={})=>new C(e,t,void 0===s.dkLen?n:s.dkLen,!0))),J=/* @__PURE__ */G(31,168,16),K=/* @__PURE__ */G(31,136,32);export{y as H,s as a,o as b,n as c,g as d,u as e,q as f,z as g,a as h,r as i,f as j,x as k,J as l,h as m,b as r,K as s,p as t,d as u,w};
4
4
  //# sourceMappingURL=sha3.min.mjs.map
@@ -1,4 +1,4 @@
1
- /*! OpenPGP.js v6.1.1-patch.2 - 2025-05-14 - this is LGPL licensed code, see LICENSE/our website https://openpgpjs.org/ for more information. */
1
+ /*! OpenPGP.js v6.1.1-patch.4 - 2025-07-14 - this is LGPL licensed code, see LICENSE/our website https://openpgpjs.org/ for more information. */
2
2
  const globalThis = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
3
3
 
4
4
  function anumber(n) {
@@ -1,3 +1,3 @@
1
- /*! OpenPGP.js v6.1.1-patch.2 - 2025-05-14 - this is LGPL licensed code, see LICENSE/our website https://openpgpjs.org/ for more information. */
1
+ /*! OpenPGP.js v6.1.1-patch.4 - 2025-07-14 - this is LGPL licensed code, see LICENSE/our website https://openpgpjs.org/ for more information. */
2
2
  "undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;import{H as t,h as s,b as h,t as e,i,w as c,j as a,k as r}from"./sha3.min.mjs";const f=(t,s,h)=>t&s^~t&h,d=(t,s,h)=>t&s^t&h^s&h;class o extends t{constructor(t,h,e,i){super(),this.blockLen=t,this.outputLen=h,this.padOffset=e,this.isLE=i,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(t),this.view=s(this.buffer)}update(t){h(this);const{view:i,buffer:c,blockLen:a}=this,r=(t=e(t)).length;for(let h=0;h<r;){const e=Math.min(a-this.pos,r-h);if(e!==a)c.set(t.subarray(h,h+e),this.pos),this.pos+=e,h+=e,this.pos===a&&(this.process(i,0),this.pos=0);else{const e=s(t);for(;a<=r-h;h+=a)this.process(e,h)}}return this.length+=t.length,this.roundClean(),this}digestInto(t){h(this),i(t,this),this.finished=!0;const{buffer:e,view:c,blockLen:a,isLE:r}=this;let{pos:f}=this;e[f++]=128,this.buffer.subarray(f).fill(0),this.padOffset>a-f&&(this.process(c,0),f=0);for(let t=f;t<a;t++)e[t]=0;!function(t,s,h,e){if("function"==typeof t.setBigUint64)return t.setBigUint64(s,h,e);const i=BigInt(32),c=BigInt(4294967295),a=Number(h>>i&c),r=Number(h&c),f=e?4:0,d=e?0:4;t.setUint32(s+f,a,e),t.setUint32(s+d,r,e)}(c,a-8,BigInt(8*this.length),r),this.process(c,0);const d=s(t),o=this.outputLen;if(o%4)throw Error("_sha2: outputLen should be aligned to 32bit");const b=o/4,n=this.get();if(b>n.length)throw Error("_sha2: outputLen bigger than state");for(let t=0;t<b;t++)d.setUint32(4*t,n[t],r)}digest(){const{buffer:t,outputLen:s}=this;this.digestInto(t);const h=t.slice(0,s);return this.destroy(),h}_cloneInto(t){t||(t=new this.constructor),t.set(...this.get());const{blockLen:s,buffer:h,length:e,finished:i,destroyed:c,pos:a}=this;return t.length=e,t.pos=a,t.finished=i,t.destroyed=c,e%s&&t.buffer.set(h),t}}const b=/* @__PURE__ */new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),n=/* @__PURE__ */new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),l=/* @__PURE__ */new Uint32Array(64);class x extends o{constructor(){super(64,32,8,!1),this.A=0|n[0],this.B=0|n[1],this.C=0|n[2],this.D=0|n[3],this.E=0|n[4],this.F=0|n[5],this.G=0|n[6],this.H=0|n[7]}get(){const{A:t,B:s,C:h,D:e,E:i,F:c,G:a,H:r}=this;return[t,s,h,e,i,c,a,r]}set(t,s,h,e,i,c,a,r){this.A=0|t,this.B=0|s,this.C=0|h,this.D=0|e,this.E=0|i,this.F=0|c,this.G=0|a,this.H=0|r}process(t,s){for(let h=0;h<16;h++,s+=4)l[h]=t.getUint32(s,!1);for(let t=16;t<64;t++){const s=l[t-15],h=l[t-2],e=a(s,7)^a(s,18)^s>>>3,i=a(h,17)^a(h,19)^h>>>10;l[t]=i+l[t-7]+e+l[t-16]|0}let{A:h,B:e,C:i,D:c,E:r,F:o,G:n,H:x}=this;for(let t=0;t<64;t++){const s=x+(a(r,6)^a(r,11)^a(r,25))+f(r,o,n)+b[t]+l[t]|0,u=(a(h,2)^a(h,13)^a(h,22))+d(h,e,i)|0;x=n,n=o,o=r,r=c+s|0,c=i,i=e,e=h,h=s+u|0}h=h+this.A|0,e=e+this.B|0,i=i+this.C|0,c=c+this.D|0,r=r+this.E|0,o=o+this.F|0,n=n+this.G|0,x=x+this.H|0,this.set(h,e,i,c,r,o,n,x)}roundClean(){l.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}}class u extends x{constructor(){super(),this.A=-1056596264,this.B=914150663,this.C=812702999,this.D=-150054599,this.E=-4191439,this.F=1750603025,this.G=1694076839,this.H=-1090891868,this.outputLen=28}}const p=/* @__PURE__ */c((()=>new x)),H=/* @__PURE__ */c((()=>new u)),[B,g]=/* @__PURE__ */(()=>r.split(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map((t=>BigInt(t)))))(),L=/* @__PURE__ */new Uint32Array(80),A=/* @__PURE__ */new Uint32Array(80);class C extends o{constructor(){super(128,64,16,!1),this.Ah=1779033703,this.Al=-205731576,this.Bh=-1150833019,this.Bl=-2067093701,this.Ch=1013904242,this.Cl=-23791573,this.Dh=-1521486534,this.Dl=1595750129,this.Eh=1359893119,this.El=-1377402159,this.Fh=-1694144372,this.Fl=725511199,this.Gh=528734635,this.Gl=-79577749,this.Hh=1541459225,this.Hl=327033209}get(){const{Ah:t,Al:s,Bh:h,Bl:e,Ch:i,Cl:c,Dh:a,Dl:r,Eh:f,El:d,Fh:o,Fl:b,Gh:n,Gl:l,Hh:x,Hl:u}=this;return[t,s,h,e,i,c,a,r,f,d,o,b,n,l,x,u]}set(t,s,h,e,i,c,a,r,f,d,o,b,n,l,x,u){this.Ah=0|t,this.Al=0|s,this.Bh=0|h,this.Bl=0|e,this.Ch=0|i,this.Cl=0|c,this.Dh=0|a,this.Dl=0|r,this.Eh=0|f,this.El=0|d,this.Fh=0|o,this.Fl=0|b,this.Gh=0|n,this.Gl=0|l,this.Hh=0|x,this.Hl=0|u}process(t,s){for(let h=0;h<16;h++,s+=4)L[h]=t.getUint32(s),A[h]=t.getUint32(s+=4);for(let t=16;t<80;t++){const s=0|L[t-15],h=0|A[t-15],e=r.rotrSH(s,h,1)^r.rotrSH(s,h,8)^r.shrSH(s,h,7),i=r.rotrSL(s,h,1)^r.rotrSL(s,h,8)^r.shrSL(s,h,7),c=0|L[t-2],a=0|A[t-2],f=r.rotrSH(c,a,19)^r.rotrBH(c,a,61)^r.shrSH(c,a,6),d=r.rotrSL(c,a,19)^r.rotrBL(c,a,61)^r.shrSL(c,a,6),o=r.add4L(i,d,A[t-7],A[t-16]),b=r.add4H(o,e,f,L[t-7],L[t-16]);L[t]=0|b,A[t]=0|o}let{Ah:h,Al:e,Bh:i,Bl:c,Ch:a,Cl:f,Dh:d,Dl:o,Eh:b,El:n,Fh:l,Fl:x,Gh:u,Gl:p,Hh:H,Hl:C}=this;for(let t=0;t<80;t++){const s=r.rotrSH(b,n,14)^r.rotrSH(b,n,18)^r.rotrBH(b,n,41),E=r.rotrSL(b,n,14)^r.rotrSL(b,n,18)^r.rotrBL(b,n,41),w=b&l^~b&u,y=n&x^~n&p,D=r.add5L(C,E,y,g[t],A[t]),F=r.add5H(D,H,s,w,B[t],L[t]),G=0|D,S=r.rotrSH(h,e,28)^r.rotrBH(h,e,34)^r.rotrBH(h,e,39),U=r.rotrSL(h,e,28)^r.rotrBL(h,e,34)^r.rotrBL(h,e,39),m=h&i^h&a^i&a,I=e&c^e&f^c&f;H=0|u,C=0|p,u=0|l,p=0|x,l=0|b,x=0|n,({h:b,l:n}=r.add(0|d,0|o,0|F,0|G)),d=0|a,o=0|f,a=0|i,f=0|c,i=0|h,c=0|e;const k=r.add3L(G,U,I);h=r.add3H(k,F,S,m),e=0|k}({h,l:e}=r.add(0|this.Ah,0|this.Al,0|h,0|e)),({h:i,l:c}=r.add(0|this.Bh,0|this.Bl,0|i,0|c)),({h:a,l:f}=r.add(0|this.Ch,0|this.Cl,0|a,0|f)),({h:d,l:o}=r.add(0|this.Dh,0|this.Dl,0|d,0|o)),({h:b,l:n}=r.add(0|this.Eh,0|this.El,0|b,0|n)),({h:l,l:x}=r.add(0|this.Fh,0|this.Fl,0|l,0|x)),({h:u,l:p}=r.add(0|this.Gh,0|this.Gl,0|u,0|p)),({h:H,l:C}=r.add(0|this.Hh,0|this.Hl,0|H,0|C)),this.set(h,e,i,c,a,f,d,o,b,n,l,x,u,p,H,C)}roundClean(){L.fill(0),A.fill(0)}destroy(){this.buffer.fill(0),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}class E extends C{constructor(){super(),this.Ah=-876896931,this.Al=-1056596264,this.Bh=1654270250,this.Bl=914150663,this.Ch=-1856437926,this.Cl=812702999,this.Dh=355462360,this.Dl=-150054599,this.Eh=1731405415,this.El=-4191439,this.Fh=-1900787065,this.Fl=1750603025,this.Gh=-619958771,this.Gl=1694076839,this.Hh=1203062813,this.Hl=-1090891868,this.outputLen=48}}const w=/* @__PURE__ */c((()=>new C)),y=/* @__PURE__ */c((()=>new E));export{f as C,o as H,d as M,y as a,w as b,H as c,p as s};
3
3
  //# sourceMappingURL=sha512.min.mjs.map
@@ -1,4 +1,4 @@
1
- /*! OpenPGP.js v6.1.1-patch.2 - 2025-05-14 - this is LGPL licensed code, see LICENSE/our website https://openpgpjs.org/ for more information. */
1
+ /*! OpenPGP.js v6.1.1-patch.4 - 2025-07-14 - this is LGPL licensed code, see LICENSE/our website https://openpgpjs.org/ for more information. */
2
2
  const globalThis = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
3
3
 
4
4
  import { H as Hash, h as createView, b as aexists, t as toBytes, i as aoutput, w as wrapConstructor, j as rotr, k as u64 } from './sha3.mjs';