113 lines
3.0 KiB
C
113 lines
3.0 KiB
C
/*
|
|
* NSS utility functions
|
|
*
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#include <ctype.h>
|
|
#include <string.h>
|
|
#include <assert.h>
|
|
|
|
#include "seccomon.h"
|
|
#include "secoidt.h"
|
|
#include "secoid.h"
|
|
#include "nss.h"
|
|
#include "nssoptions.h"
|
|
|
|
struct nssOps {
|
|
PRInt32 rsaMinKeySize;
|
|
PRInt32 dhMinKeySize;
|
|
PRInt32 dsaMinKeySize;
|
|
PRInt32 tlsVersionMinPolicy;
|
|
PRInt32 tlsVersionMaxPolicy;
|
|
PRInt32 dtlsVersionMinPolicy;
|
|
PRInt32 dtlsVersionMaxPolicy;
|
|
PRInt32 pkcs12DecodeForceUnicode;
|
|
};
|
|
|
|
static struct nssOps nss_ops = {
|
|
SSL_RSA_MIN_MODULUS_BITS,
|
|
SSL_DH_MIN_P_BITS,
|
|
SSL_DSA_MIN_P_BITS,
|
|
1, /* Set TLS min to less the the smallest legal SSL value */
|
|
0xffff, /* set TLS max to more than the largest legal SSL value */
|
|
1,
|
|
0xffff,
|
|
PR_FALSE
|
|
};
|
|
|
|
SECStatus
|
|
NSS_OptionSet(PRInt32 which, PRInt32 value)
|
|
{
|
|
SECStatus rv = SECSuccess;
|
|
|
|
switch (which) {
|
|
case NSS_RSA_MIN_KEY_SIZE:
|
|
nss_ops.rsaMinKeySize = value;
|
|
break;
|
|
case NSS_DH_MIN_KEY_SIZE:
|
|
nss_ops.dhMinKeySize = value;
|
|
break;
|
|
case NSS_DSA_MIN_KEY_SIZE:
|
|
nss_ops.dsaMinKeySize = value;
|
|
break;
|
|
case NSS_TLS_VERSION_MIN_POLICY:
|
|
nss_ops.tlsVersionMinPolicy = value;
|
|
break;
|
|
case NSS_TLS_VERSION_MAX_POLICY:
|
|
nss_ops.tlsVersionMaxPolicy = value;
|
|
break;
|
|
case NSS_DTLS_VERSION_MIN_POLICY:
|
|
nss_ops.dtlsVersionMinPolicy = value;
|
|
break;
|
|
case NSS_DTLS_VERSION_MAX_POLICY:
|
|
nss_ops.dtlsVersionMaxPolicy = value;
|
|
break;
|
|
case __NSS_PKCS12_DECODE_FORCE_UNICODE:
|
|
nss_ops.pkcs12DecodeForceUnicode = value;
|
|
break;
|
|
default:
|
|
rv = SECFailure;
|
|
}
|
|
|
|
return rv;
|
|
}
|
|
|
|
SECStatus
|
|
NSS_OptionGet(PRInt32 which, PRInt32 *value)
|
|
{
|
|
SECStatus rv = SECSuccess;
|
|
|
|
switch (which) {
|
|
case NSS_RSA_MIN_KEY_SIZE:
|
|
*value = nss_ops.rsaMinKeySize;
|
|
break;
|
|
case NSS_DH_MIN_KEY_SIZE:
|
|
*value = nss_ops.dhMinKeySize;
|
|
break;
|
|
case NSS_DSA_MIN_KEY_SIZE:
|
|
*value = nss_ops.dsaMinKeySize;
|
|
break;
|
|
case NSS_TLS_VERSION_MIN_POLICY:
|
|
*value = nss_ops.tlsVersionMinPolicy;
|
|
break;
|
|
case NSS_TLS_VERSION_MAX_POLICY:
|
|
*value = nss_ops.tlsVersionMaxPolicy;
|
|
break;
|
|
case NSS_DTLS_VERSION_MIN_POLICY:
|
|
*value = nss_ops.dtlsVersionMinPolicy;
|
|
break;
|
|
case NSS_DTLS_VERSION_MAX_POLICY:
|
|
*value = nss_ops.dtlsVersionMaxPolicy;
|
|
break;
|
|
case __NSS_PKCS12_DECODE_FORCE_UNICODE:
|
|
*value = nss_ops.pkcs12DecodeForceUnicode;
|
|
break;
|
|
default:
|
|
rv = SECFailure;
|
|
}
|
|
|
|
return rv;
|
|
}
|