DigestAlgorithm NULL parameters
for sha* algorithms and require NULL paramters for md2 and md5
algorithms.digestAlgorithm structure can lead to
signature forgery.
DigestInfo ASN.1 structure. This can allow padding bytes to be removed
and garbage data added to forge a signature when a low public exponent is
being used. For more information, please see "Bleichenbacher's RSA
signature forgery based on implementation
error"
by Hal Finney.DigestInfo is not properly checked for proper ASN.1 structure. This can
lead to successful verification with signatures that contain invalid
structures but a valid digest.fromDer is now more strict and will default to ensuring all input
bytes are parsed or throw an error. A new option parseAllBytes can disable
this behavior.
RSASSA-PKCS-v1_5 DigestInfo data. Additionally check that the hash
algorithm identifier is a known value from RFC 8017
PKCS1-v1-5DigestAlgorithms. An invalid DigestInfo or algorithm identifier
will now throw an error.
1.2.840.113549.2.2 / md22.16.840.1.101.3.4.2.4 / sha2242.16.840.1.101.3.4.2.5 / sha512-2242.16.840.1.101.3.4.2.6 / sha512-256URLSearchParams.1.3.14.3.2.29 / sha1WithRSASignature for sha1 with
RSA. Considered a deprecated equivalent to 1.2.840.113549.1.1.5 /
sha1WithRSAEncryption. See discussion and
links.forge.debug API. The API has the
potential for prototype pollution. This API was only briefly used by the
maintainers for internal project debug purposes and was never intended to be
used with untrusted user inputs. This API was not documented or advertised
and is being removed rather than fixed.forge.util.parseUrl() (and
forge.http.parseUrl alias) and use the WHATWG URL
Standard. URL is supported by modern browers
and modern Node.js. This change is needed to address URL parsing security
issues. If forge.util.parseUrl() is used directly or through forge.xhr or
forge.http APIs, and support is needed for environments without URL
support, then a polyfill must be used.forge.task API. This API was never used, documented,
or advertised by the maintainers. If anyone was using this API and wishes to
continue development it in other project, please let the maintainers know.
Due to use in the test suite, a modified version is located in
tests/support/.forge.util.makeLink, forge.util.makeRequest,
forge.util.parseFragment, forge.util.getQueryVariables. Replace with
URL, URLSearchParams, and custom code as needed.master branch to main.v. Other tools, scripts, or scanners may need to adapt.surname, title, and givenName.serialName to serialNumber.
Depending on how applications used this id to name association it could cause
compatibility issues.util.getPath, util.setPath, and util.deletePath.
util.setPath had a potential prototype pollution security issue when used
with unsafe inputs. These functions are not used by forge itself. They date
from an early time when forge was targeted at providing general helper
functions. The library direction changed to be more focused on cryptography.
Many other excellent libraries are more suitable for general utilities. If
you need a replacement for these functions, consider get, set, and unset
from lodash. But also consider the potential similar
security issues with those APIs.util.setPath security note to function docs and to README.util.setPath function has the potential to cause
prototype pollution if used with unsafe input.
forge.util.getPath and util.setPath.
Consider get and set from lodash if you need
replacements. But also consider the potential similar security issues with
those APIs.const.new Buffer with Buffer.from and Buffer.alloc.notBefore and notAfter dates less
than Jan 1, 1950 or greater than or equal to Jan 1, 2050.pki.verifyCertificateChain:
validityCheckDate option to allow checking the certificate validity
period against an arbitrary Date or null for no check at all. The
current date is used by default.tls.createConnection:
verifyOptions option that passes through to
pki.verifyCertificateChain. Can be used for the above validityCheckDate
option.rsa.generateKeyPair:
crypto.generateKeyPair/crypto.generateKeyPairSync on Node.js if
available (10.12.0+) and not in pure JS mode.rsa.generateKeyPair if prng option specified since
this isn't supported by current native APIs.pki.verifyCertificateChain:
(caStore, chain, options). Older (caStore, chain,
verify) signature is still supported. New style is to to pass in a
verify option.const.1.2.840.10040.4.3'/dsa-with-sha1 OID.asn1.equals loop bug.toDer(). More tests.asn1.prettyPrint() BIT STRING display.npm run build:
.js, .min.js, and basic sourcemaps.forge.js.forge.all.js.prime.worker.js.forge.options field.forge.options.usePureJavaScript flag.forge.util.isNodejs flag (used to select "native" APIs).md.all.js which includes all digest algorithms.equals() and copy().validate() capture options for BIT STRING contents and value.forge({...}) to create new instances.forge.options.usePureJavaScript.forge/js/pki you should either
switch to just using the main forge and access forge.pki or update to
forge/lib/pki.forge/js/pki you should switch to
just using forge and access forge.pki. The bower release bundles
everything in one minified file./bower_components/forge/js/prime.worker.js will need to change to
/bower_components/forge/dist/prime.worker.min.js.md.all.js file to include all
digest algorithms. Individual files limit what they include by default to
allow smaller custom builds. For instance, pbdkf2.js has a sha1 default
but does not include any algorithm files by default. This allows the
possibility to include only sha256 without the overhead of sha1 and
sha512.