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
/ md2
2.16.840.1.101.3.4.2.4
/ sha224
2.16.840.1.101.3.4.2.5
/ sha512-224
2.16.840.1.101.3.4.2.6
/ sha512-256
URLSearchParams
.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.ed25519
NativeBuffer check.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
.