mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-22 08:27:31 +09:00
Replace NSS with Pale Moon's
This commit is contained in:
parent
ff1e5e48bf
commit
8c2e376f94
2870 changed files with 1762232 additions and 1374220 deletions
|
|
@ -15,6 +15,7 @@
|
|||
#include "pk11func.h"
|
||||
#include "secerr.h"
|
||||
#include "keyi.h"
|
||||
#include "nss.h"
|
||||
|
||||
struct SGNContextStr {
|
||||
SECOidTag signalg;
|
||||
|
|
@ -31,6 +32,8 @@ sgn_NewContext(SECOidTag alg, SECItem *params, SECKEYPrivateKey *key)
|
|||
SGNContext *cx;
|
||||
SECOidTag hashalg, signalg;
|
||||
KeyType keyType;
|
||||
PRUint32 policyFlags;
|
||||
PRInt32 optFlags;
|
||||
SECStatus rv;
|
||||
|
||||
/* OK, map a PKCS #7 hash and encrypt algorithm into
|
||||
|
|
@ -44,7 +47,7 @@ sgn_NewContext(SECOidTag alg, SECItem *params, SECKEYPrivateKey *key)
|
|||
rv = sec_DecodeSigAlg(NULL, alg, params, &signalg, &hashalg);
|
||||
if (rv != SECSuccess) {
|
||||
PORT_SetError(SEC_ERROR_INVALID_ALGORITHM);
|
||||
return 0;
|
||||
return NULL;
|
||||
}
|
||||
keyType = seckey_GetKeyType(signalg);
|
||||
|
||||
|
|
@ -53,7 +56,29 @@ sgn_NewContext(SECOidTag alg, SECItem *params, SECKEYPrivateKey *key)
|
|||
!((key->keyType == dsaKey) && (keyType == fortezzaKey)) &&
|
||||
!((key->keyType == rsaKey) && (keyType == rsaPssKey))) {
|
||||
PORT_SetError(SEC_ERROR_INVALID_ALGORITHM);
|
||||
return 0;
|
||||
return NULL;
|
||||
}
|
||||
if (NSS_OptionGet(NSS_KEY_SIZE_POLICY_FLAGS, &optFlags) != SECFailure) {
|
||||
if (optFlags & NSS_KEY_SIZE_POLICY_SIGN_FLAG) {
|
||||
rv = seckey_EnforceKeySize(key->keyType,
|
||||
SECKEY_PrivateKeyStrengthInBits(key),
|
||||
SEC_ERROR_SIGNATURE_ALGORITHM_DISABLED);
|
||||
if (rv != SECSuccess) {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
/* check the policy on the hash algorithm */
|
||||
if ((NSS_GetAlgorithmPolicy(hashalg, &policyFlags) == SECFailure) ||
|
||||
!(policyFlags & NSS_USE_ALG_IN_ANY_SIGNATURE)) {
|
||||
PORT_SetError(SEC_ERROR_SIGNATURE_ALGORITHM_DISABLED);
|
||||
return NULL;
|
||||
}
|
||||
/* check the policy on the encryption algorithm */
|
||||
if ((NSS_GetAlgorithmPolicy(signalg, &policyFlags) == SECFailure) ||
|
||||
!(policyFlags & NSS_USE_ALG_IN_ANY_SIGNATURE)) {
|
||||
PORT_SetError(SEC_ERROR_SIGNATURE_ALGORITHM_DISABLED);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
cx = (SGNContext *)PORT_ZAlloc(sizeof(SGNContext));
|
||||
|
|
@ -325,35 +350,33 @@ SEC_SignDataWithAlgorithmID(SECItem *res, const unsigned char *buf, int len,
|
|||
|
||||
/************************************************************************/
|
||||
|
||||
DERTemplate CERTSignedDataTemplate[] =
|
||||
{
|
||||
{ DER_SEQUENCE,
|
||||
0, NULL, sizeof(CERTSignedData) },
|
||||
{ DER_ANY,
|
||||
offsetof(CERTSignedData, data) },
|
||||
{ DER_INLINE,
|
||||
offsetof(CERTSignedData, signatureAlgorithm),
|
||||
SECAlgorithmIDTemplate },
|
||||
{ DER_BIT_STRING,
|
||||
offsetof(CERTSignedData, signature) },
|
||||
{ 0 }
|
||||
};
|
||||
DERTemplate CERTSignedDataTemplate[] = {
|
||||
{ DER_SEQUENCE,
|
||||
0, NULL, sizeof(CERTSignedData) },
|
||||
{ DER_ANY,
|
||||
offsetof(CERTSignedData, data) },
|
||||
{ DER_INLINE,
|
||||
offsetof(CERTSignedData, signatureAlgorithm),
|
||||
SECAlgorithmIDTemplate },
|
||||
{ DER_BIT_STRING,
|
||||
offsetof(CERTSignedData, signature) },
|
||||
{ 0 }
|
||||
};
|
||||
|
||||
SEC_ASN1_MKSUB(SECOID_AlgorithmIDTemplate)
|
||||
|
||||
const SEC_ASN1Template CERT_SignedDataTemplate[] =
|
||||
{
|
||||
{ SEC_ASN1_SEQUENCE,
|
||||
0, NULL, sizeof(CERTSignedData) },
|
||||
{ SEC_ASN1_ANY,
|
||||
offsetof(CERTSignedData, data) },
|
||||
{ SEC_ASN1_INLINE | SEC_ASN1_XTRN,
|
||||
offsetof(CERTSignedData, signatureAlgorithm),
|
||||
SEC_ASN1_SUB(SECOID_AlgorithmIDTemplate) },
|
||||
{ SEC_ASN1_BIT_STRING,
|
||||
offsetof(CERTSignedData, signature) },
|
||||
{ 0 }
|
||||
};
|
||||
const SEC_ASN1Template CERT_SignedDataTemplate[] = {
|
||||
{ SEC_ASN1_SEQUENCE,
|
||||
0, NULL, sizeof(CERTSignedData) },
|
||||
{ SEC_ASN1_ANY,
|
||||
offsetof(CERTSignedData, data) },
|
||||
{ SEC_ASN1_INLINE | SEC_ASN1_XTRN,
|
||||
offsetof(CERTSignedData, signatureAlgorithm),
|
||||
SEC_ASN1_SUB(SECOID_AlgorithmIDTemplate) },
|
||||
{ SEC_ASN1_BIT_STRING,
|
||||
offsetof(CERTSignedData, signature) },
|
||||
{ 0 }
|
||||
};
|
||||
|
||||
SEC_ASN1_CHOOSER_IMPLEMENT(CERT_SignedDataTemplate)
|
||||
|
||||
|
|
@ -418,7 +441,7 @@ sec_DerSignData(PLArenaPool *arena, SECItem *result,
|
|||
|
||||
/* DER encode the signed data object */
|
||||
rv = DER_Encode(arena, result, CERTSignedDataTemplate, &sd);
|
||||
/* FALL THROUGH */
|
||||
/* FALL THROUGH */
|
||||
|
||||
loser:
|
||||
PORT_Free(it.data);
|
||||
|
|
@ -452,9 +475,38 @@ SGN_Digest(SECKEYPrivateKey *privKey,
|
|||
SECItem digder;
|
||||
PLArenaPool *arena = 0;
|
||||
SGNDigestInfo *di = 0;
|
||||
SECOidTag enctag;
|
||||
PRUint32 policyFlags;
|
||||
PRInt32 optFlags;
|
||||
|
||||
result->data = 0;
|
||||
|
||||
if (NSS_OptionGet(NSS_KEY_SIZE_POLICY_FLAGS, &optFlags) != SECFailure) {
|
||||
if (optFlags & NSS_KEY_SIZE_POLICY_SIGN_FLAG) {
|
||||
rv = seckey_EnforceKeySize(privKey->keyType,
|
||||
SECKEY_PrivateKeyStrengthInBits(privKey),
|
||||
SEC_ERROR_SIGNATURE_ALGORITHM_DISABLED);
|
||||
if (rv != SECSuccess) {
|
||||
return SECFailure;
|
||||
}
|
||||
}
|
||||
}
|
||||
/* check the policy on the hash algorithm */
|
||||
if ((NSS_GetAlgorithmPolicy(algtag, &policyFlags) == SECFailure) ||
|
||||
!(policyFlags & NSS_USE_ALG_IN_ANY_SIGNATURE)) {
|
||||
PORT_SetError(SEC_ERROR_SIGNATURE_ALGORITHM_DISABLED);
|
||||
return SECFailure;
|
||||
}
|
||||
/* check the policy on the encryption algorithm */
|
||||
enctag = sec_GetEncAlgFromSigAlg(
|
||||
SEC_GetSignatureAlgorithmOidTag(privKey->keyType, algtag));
|
||||
if ((enctag == SEC_OID_UNKNOWN) ||
|
||||
(NSS_GetAlgorithmPolicy(enctag, &policyFlags) == SECFailure) ||
|
||||
!(policyFlags & NSS_USE_ALG_IN_ANY_SIGNATURE)) {
|
||||
PORT_SetError(SEC_ERROR_SIGNATURE_ALGORITHM_DISABLED);
|
||||
return SECFailure;
|
||||
}
|
||||
|
||||
if (privKey->keyType == rsaKey) {
|
||||
|
||||
arena = PORT_NewArena(DER_DEFAULT_CHUNKSIZE);
|
||||
|
|
@ -727,7 +779,7 @@ sec_CreateRSAPSSParameters(PLArenaPool *arena,
|
|||
}
|
||||
|
||||
/* The specified salt length is too long */
|
||||
if (saltLength > modBytes - hashLength - 2) {
|
||||
if (saltLength > (unsigned long)(modBytes - hashLength - 2)) {
|
||||
PORT_SetError(SEC_ERROR_INVALID_ARGS);
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue