| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1928,7 +1928,11 @@ class SubtleCrypto { | |||
| 1928 | 1928 | } | |
| 1929 | 1929 | } | |
| 1930 | 1930 | ||
| 1931 | - return check(operation, algorithm, length); | ||
| 1931 | + try { | ||
| 1932 | + return check(operation, algorithm, length); | ||
| 1933 | + } catch { | ||
| 1934 | + return false; | ||
| 1935 | + } | ||
| 1932 | 1936 | } | |
| 1933 | 1937 | } | |
| 1934 | 1938 | ||
@@ -1971,25 +1975,35 @@ function check(op, alg, length) { | |||
| 1971 | 1975 | return true; | |
| 1972 | 1976 | case 'deriveBits': { | |
| 1973 | 1977 | if (normalizedAlgorithm.name === 'HKDF') { | |
| 1974 | - try { | ||
| 1975 | - require('internal/crypto/hkdf').validateHkdfDeriveBitsLength(length); | ||
| 1976 | - } catch { | ||
| 1977 | - return false; | ||
| 1978 | - } | ||
| 1978 | + require('internal/crypto/hkdf').validateHkdfDeriveBitsLength(length); | ||
| 1979 | 1979 | } | |
| 1980 | 1980 | ||
| 1981 | 1981 | if (normalizedAlgorithm.name === 'PBKDF2') { | |
| 1982 | - try { | ||
| 1983 | - require('internal/crypto/pbkdf2').validatePbkdf2DeriveBitsLength(length); | ||
| 1984 | - } catch { | ||
| 1985 | - return false; | ||
| 1986 | - } | ||
| 1982 | + require('internal/crypto/pbkdf2').validatePbkdf2DeriveBitsLength(length); | ||
| 1987 | 1983 | } | |
| 1988 | 1984 | ||
| 1989 | 1985 | if (StringPrototypeStartsWith(normalizedAlgorithm.name, 'Argon2')) { | |
| 1990 | - try { | ||
| 1991 | - require('internal/crypto/argon2').validateArgon2DeriveBitsLength(length); | ||
| 1992 | - } catch { | ||
| 1986 | + require('internal/crypto/argon2').validateArgon2DeriveBitsLength(length); | ||
| 1987 | + } | ||
| 1988 | + | ||
| 1989 | + if (normalizedAlgorithm.name === 'X25519' && length > 256) { | ||
| 1990 | + return false; | ||
| 1991 | + } | ||
| 1992 | + | ||
| 1993 | + if (normalizedAlgorithm.name === 'X448' && length > 448) { | ||
| 1994 | + return false; | ||
| 1995 | + } | ||
| 1996 | + | ||
| 1997 | + if (normalizedAlgorithm.name === 'ECDH') { | ||
| 1998 | + const namedCurve = getCryptoKeyAlgorithm(normalizedAlgorithm.public).namedCurve; | ||
| 1999 | + const maxLength = { | ||
| 2000 | + '__proto__': null, | ||
| 2001 | + 'P-256': 256, | ||
| 2002 | + 'P-384': 384, | ||
| 2003 | + 'P-521': 528, | ||
| 2004 | + }[namedCurve]; | ||
| 2005 | + | ||
| 2006 | + if (length > maxLength) { | ||
| 1993 | 2007 | return false; | |
| 1994 | 2008 | } | |
| 1995 | 2009 | } | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -103,18 +103,36 @@ export const vectors = { | |||
| 103 | 103 | [true, | |
| 104 | 104 | { name: 'X25519', public: X25519.publicKey }, | |
| 105 | 105 | { name: 'AES-CBC', length: 128 }], | |
| 106 | - [true, | ||
| 106 | + [false, | ||
| 107 | 107 | { name: 'X25519', public: X25519.publicKey }, | |
| 108 | 108 | { name: 'HMAC', hash: 'SHA-256' }], | |
| 109 | + [true, | ||
| 110 | + { name: 'X25519', public: X25519.publicKey }, | ||
| 111 | + { name: 'HMAC', hash: 'SHA-256', length: 256 }], | ||
| 112 | + [false, | ||
| 113 | + { name: 'X25519', public: X25519.publicKey }, | ||
| 114 | + { name: 'HMAC', hash: 'SHA-256', length: 257 }], | ||
| 109 | 115 | [true, | |
| 110 | 116 | { name: 'X25519', public: X25519.publicKey }, | |
| 111 | 117 | 'HKDF'], | |
| 112 | 118 | [true, | |
| 113 | 119 | { name: 'ECDH', public: ECDH.publicKey }, | |
| 114 | 120 | { name: 'AES-CBC', length: 128 }], | |
| 115 | - [true, | ||
| 121 | + [false, | ||
| 116 | 122 | { name: 'ECDH', public: ECDH.publicKey }, | |
| 117 | 123 | { name: 'HMAC', hash: 'SHA-256' }], | |
| 124 | + [false, | ||
| 125 | + { name: 'ECDH', public: ECDH.publicKey }, | ||
| 126 | + { name: 'HMAC', hash: 'SHA-256', length: 255 }], | ||
| 127 | + [true, | ||
| 128 | + { name: 'ECDH', public: ECDH.publicKey }, | ||
| 129 | + { name: 'HMAC', hash: 'SHA-256', length: 256 }], | ||
| 130 | + [false, | ||
| 131 | + { name: 'ECDH', public: ECDH.publicKey }, | ||
| 132 | + { name: 'HMAC', hash: 'SHA-256', length: 257 }], | ||
| 133 | + [false, | ||
| 134 | + { name: 'ECDH', public: ECDH.publicKey }, | ||
| 135 | + { name: 'HMAC', hash: 'SHA-256', length: 264 }], | ||
| 118 | 136 | [true, | |
| 119 | 137 | { name: 'ECDH', public: ECDH.publicKey }, | |
| 120 | 138 | 'HKDF'], | |
@@ -143,10 +161,18 @@ export const vectors = { | |||
| 143 | 161 | ||
| 144 | 162 | [true, | |
| 145 | 163 | { name: 'ECDH', public: ECDH.publicKey }], | |
| 164 | + [true, | ||
| 165 | + { name: 'ECDH', public: ECDH.publicKey }, 256], | ||
| 166 | + [false, | ||
| 167 | + { name: 'ECDH', public: ECDH.publicKey }, 257], | ||
| 168 | + [false, | ||
| 169 | + { name: 'ECDH', public: ECDH.publicKey }, 264], | ||
| 146 | 170 | [false, { name: 'ECDH', public: ECDH.privateKey }], | |
| 147 | 171 | [false, 'ECDH'], | |
| 148 | 172 | ||
| 149 | 173 | [true, { name: 'X25519', public: X25519.publicKey }], | |
| 174 | + [true, { name: 'X25519', public: X25519.publicKey }, 256], | ||
| 175 | + [false, { name: 'X25519', public: X25519.publicKey }, 257], | ||
| 150 | 176 | [false, { name: 'X25519', public: X25519.privateKey }], | |
| 151 | 177 | [false, 'X25519'], | |
| 152 | 178 | ], | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -28,15 +28,23 @@ export const vectors = { | |||
| 28 | 28 | [!boringSSL, | |
| 29 | 29 | { name: 'X448', public: X448?.publicKey }, | |
| 30 | 30 | { name: 'AES-CBC', length: 128 }], | |
| 31 | - [!boringSSL, | ||
| 31 | + [false, | ||
| 32 | 32 | { name: 'X448', public: X448?.publicKey }, | |
| 33 | 33 | { name: 'HMAC', hash: 'SHA-256' }], | |
| 34 | + [!boringSSL, | ||
| 35 | + { name: 'X448', public: X448?.publicKey }, | ||
| 36 | + { name: 'HMAC', hash: 'SHA-256', length: 448 }], | ||
| 37 | + [false, | ||
| 38 | + { name: 'X448', public: X448?.publicKey }, | ||
| 39 | + { name: 'HMAC', hash: 'SHA-256', length: 449 }], | ||
| 34 | 40 | [!boringSSL, | |
| 35 | 41 | { name: 'X448', public: X448?.publicKey }, | |
| 36 | 42 | 'HKDF'], | |
| 37 | 43 | ], | |
| 38 | 44 | 'deriveBits': [ | |
| 39 | 45 | [!boringSSL, { name: 'X448', public: X448?.publicKey }], | |
| 46 | + [!boringSSL, { name: 'X448', public: X448?.publicKey }, 448], | ||
| 47 | + [false, { name: 'X448', public: X448?.publicKey }, 449], | ||
| 40 | 48 | [false, { name: 'X448', public: X25519.publicKey }], | |
| 41 | 49 | [false, { name: 'X448', public: X448?.privateKey }], | |
| 42 | 50 | [false, 'X448'], | |
| Back | FazBrowse Home | New Git URL |
0 commit comments