1) fix compilier warnings on AIX, Solaris, HP, and Linux.

2) remove Dependency on low key structures in the soft token.
This commit is contained in:
relyea%netscape.com 2001-09-20 21:30:48 +00:00
Родитель 40ece181cd
Коммит 0e2a49491f
7 изменённых файлов: 155 добавлений и 44 удалений

Просмотреть файл

@ -66,7 +66,6 @@ DSAU_ConvertUnsignedToSigned(SECItem *dest, SECItem *src)
unsigned char *pSrc = src->data; unsigned char *pSrc = src->data;
unsigned char *pDst = dest->data; unsigned char *pDst = dest->data;
unsigned int cntSrc = src->len; unsigned int cntSrc = src->len;
unsigned int cntDst = dest->len;
unsigned char c; unsigned char c;
/* skip any leading zeros. */ /* skip any leading zeros. */

Просмотреть файл

@ -32,13 +32,12 @@
* *
* key.h - public data structures and prototypes for the private key library * key.h - public data structures and prototypes for the private key library
* *
* $Id: key.h,v 1.1 2000-03-31 19:45:14 relyea%netscape.com Exp $ * $Id: key.h,v 1.2 2001-09-20 21:30:46 relyea%netscape.com Exp $
*/ */
#ifndef _KEY_H_ #ifndef _KEY_H_
#define _KEY_H_ #define _KEY_H_
#include "keyhi.h" #include "keyhi.h"
#include "keylow.h"
#endif /* _KEY_H_ */ #endif /* _KEY_H_ */

Просмотреть файл

@ -33,7 +33,7 @@
* *
* key.h - public data structures and prototypes for the private key library * key.h - public data structures and prototypes for the private key library
* *
* $Id: keyhi.h,v 1.5 2001-06-25 19:31:04 nicolson%netscape.com Exp $ * $Id: keyhi.h,v 1.6 2001-09-20 21:30:46 relyea%netscape.com Exp $
*/ */
#ifndef _KEYHI_H_ #ifndef _KEYHI_H_
@ -46,7 +46,7 @@
#include "secdert.h" #include "secdert.h"
#include "keythi.h" #include "keythi.h"
#include "certt.h" #include "certt.h"
#include "secpkcs5.h" /*#include "secpkcs5.h" */
SEC_BEGIN_PROTOS SEC_BEGIN_PROTOS
@ -108,7 +108,7 @@ SECKEYPrivateKey *SECKEY_CreateRSAPrivateKey(int keySizeInBits,
/* /*
* create a new DH key pair. The private Key is returned... * create a new DH key pair. The private Key is returned...
*/ */
SECKEYPrivateKey *SECKEY_CreateDHPrivateKey(DHParams *param, SECKEYPrivateKey *SECKEY_CreateDHPrivateKey(SECKEYDHParams *param,
SECKEYPublicKey **pubk, void *cx); SECKEYPublicKey **pubk, void *cx);
/* /*
** Create a subject-public-key-info based on a public key. ** Create a subject-public-key-info based on a public key.

Просмотреть файл

@ -32,15 +32,12 @@
* *
* keyt.h - public data structures for the private key library * keyt.h - public data structures for the private key library
* *
* $Id: keyt.h,v 1.1 2000-03-31 19:45:30 relyea%netscape.com Exp $ * $Id: keyt.h,v 1.2 2001-09-20 21:30:47 relyea%netscape.com Exp $
*/ */
#ifndef _KEYT_H_ #ifndef _KEYT_H_
#define _KEYT_H_ #define _KEYT_H_
#include "keytlow.h"
#include "keytboth.h"
#include "keythi.h" #include "keythi.h"
#include "keydbt.h"
#endif /* _KEYT_H_ */ #endif /* _KEYT_H_ */

Просмотреть файл

@ -33,13 +33,129 @@
#ifndef _KEYTHI_H_ #ifndef _KEYTHI_H_
#define _KEYTHI_H_ 1 #define _KEYTHI_H_ 1
#include "keytlow.h"
#include "keytboth.h"
#include "plarena.h" #include "plarena.h"
#include "pkcs11t.h" #include "pkcs11t.h"
#include "secmodt.h" #include "secmodt.h"
#include "prclist.h" #include "prclist.h"
typedef enum {
nullKey = 0,
rsaKey = 1,
dsaKey = 2,
fortezzaKey = 3,
dhKey = 4,
keaKey = 5
} KeyType;
/*
** Template Definitions
**/
extern const SEC_ASN1Template SECKEY_RSAPublicKeyTemplate[];
extern const SEC_ASN1Template SECKEY_DSAPublicKeyTemplate[];
extern const SEC_ASN1Template SECKEY_DHPublicKeyTemplate[];
extern const SEC_ASN1Template SECKEY_DHParamKeyTemplate[];
extern const SEC_ASN1Template SECKEY_PQGParamsTemplate[];
extern const SEC_ASN1Template SECKEY_DSAPrivateKeyExportTemplate[];
/* Windows DLL accessor functions */
extern SEC_ASN1TemplateChooser NSS_Get_SECKEY_DSAPublicKeyTemplate;
extern SEC_ASN1TemplateChooser NSS_Get_SECKEY_RSAPublicKeyTemplate;
/*
** RSA Public Key structures
** member names from PKCS#1, section 7.1
*/
struct SECKEYRSAPublicKeyStr {
PRArenaPool * arena;
SECItem modulus;
SECItem publicExponent;
};
typedef struct SECKEYRSAPublicKeyStr SECKEYRSAPublicKey;
/*
** DSA Public Key and related structures
*/
struct SECKEYPQGParamsStr {
PRArenaPool *arena;
SECItem prime; /* p */
SECItem subPrime; /* q */
SECItem base; /* g */
/* XXX chrisk: this needs to be expanded to hold j and validationParms (RFC2459 7.3.2) */
};
typedef struct SECKEYPQGParamsStr SECKEYPQGParams;
struct SECKEYDSAPublicKeyStr {
SECKEYPQGParams params;
SECItem publicValue;
};
typedef struct SECKEYDSAPublicKeyStr SECKEYDSAPublicKey;
/*
** Diffie-Hellman Public Key structure
** Structure member names suggested by PKCS#3.
*/
struct SECKEYDHParamsStr {
PRArenaPool * arena;
SECItem prime; /* p */
SECItem base; /* g */
};
typedef struct SECKEYDHParamsStr SECKEYDHParams;
struct SECKEYDHPublicKeyStr {
PRArenaPool * arena;
SECItem prime;
SECItem base;
SECItem publicValue;
};
typedef struct SECKEYDHPublicKeyStr SECKEYDHPublicKey;
/*
** FORTEZZA Public Key structures
*/
struct SECKEYFortezzaPublicKeyStr {
int KEAversion;
int DSSversion;
unsigned char KMID[8];
SECItem clearance;
SECItem KEApriviledge;
SECItem DSSpriviledge;
SECItem KEAKey;
SECItem DSSKey;
SECKEYPQGParams params;
SECKEYPQGParams keaParams;
};
typedef struct SECKEYFortezzaPublicKeyStr SECKEYFortezzaPublicKey;
struct SECKEYDiffPQGParamsStr {
SECKEYPQGParams DiffKEAParams;
SECKEYPQGParams DiffDSAParams;
};
typedef struct SECKEYDiffPQGParamsStr SECKEYDiffPQGParams;
struct SECKEYPQGDualParamsStr {
SECKEYPQGParams CommParams;
SECKEYDiffPQGParams DiffParams;
};
typedef struct SECKEYPQGDualParamsStr SECKEYPQGDualParams;
struct SECKEYKEAParamsStr {
PLArenaPool *arena;
SECItem hash;
};
typedef struct SECKEYKEAParamsStr SECKEYKEAParams;
struct SECKEYKEAPublicKeyStr {
SECKEYKEAParams params;
SECItem publicValue;
};
typedef struct SECKEYKEAPublicKeyStr SECKEYKEAPublicKey;
/* /*
** A Generic public key object. ** A Generic public key object.
*/ */
@ -49,11 +165,11 @@ struct SECKEYPublicKeyStr {
PK11SlotInfo *pkcs11Slot; PK11SlotInfo *pkcs11Slot;
CK_OBJECT_HANDLE pkcs11ID; CK_OBJECT_HANDLE pkcs11ID;
union { union {
RSAPublicKey rsa; SECKEYRSAPublicKey rsa;
DSAPublicKey dsa; SECKEYDSAPublicKey dsa;
DHPublicKey dh; SECKEYDHPublicKey dh;
KEAPublicKey kea; SECKEYKEAPublicKey kea;
FortezzaPublicKey fortezza; SECKEYFortezzaPublicKey fortezza;
} u; } u;
}; };
typedef struct SECKEYPublicKeyStr SECKEYPublicKey; typedef struct SECKEYPublicKeyStr SECKEYPublicKey;
@ -92,3 +208,4 @@ typedef struct {
} SECKEYPrivateKeyList; } SECKEYPrivateKeyList;
#endif /* _KEYTHI_H_ */ #endif /* _KEYTHI_H_ */

Просмотреть файл

@ -77,10 +77,10 @@ const SEC_ASN1Template SECKEY_DSAPublicKeyTemplate[] = {
}; };
const SEC_ASN1Template SECKEY_PQGParamsTemplate[] = { const SEC_ASN1Template SECKEY_PQGParamsTemplate[] = {
{ SEC_ASN1_SEQUENCE, 0, NULL, sizeof(PQGParams) }, { SEC_ASN1_SEQUENCE, 0, NULL, sizeof(SECKEYPQGParams) },
{ SEC_ASN1_INTEGER, offsetof(PQGParams,prime) }, { SEC_ASN1_INTEGER, offsetof(SECKEYPQGParams,prime) },
{ SEC_ASN1_INTEGER, offsetof(PQGParams,subPrime) }, { SEC_ASN1_INTEGER, offsetof(SECKEYPQGParams,subPrime) },
{ SEC_ASN1_INTEGER, offsetof(PQGParams,base) }, { SEC_ASN1_INTEGER, offsetof(SECKEYPQGParams,base) },
{ 0, } { 0, }
}; };
@ -99,32 +99,32 @@ const SEC_ASN1Template SECKEY_DHParamKeyTemplate[] = {
}; };
const SEC_ASN1Template SECKEY_FortezzaParameterTemplate[] = { const SEC_ASN1Template SECKEY_FortezzaParameterTemplate[] = {
{ SEC_ASN1_SEQUENCE, 0, NULL, sizeof(PQGParams) }, { SEC_ASN1_SEQUENCE, 0, NULL, sizeof(SECKEYPQGParams) },
{ SEC_ASN1_OCTET_STRING, offsetof(PQGParams,prime), }, { SEC_ASN1_OCTET_STRING, offsetof(SECKEYPQGParams,prime), },
{ SEC_ASN1_OCTET_STRING, offsetof(PQGParams,subPrime), }, { SEC_ASN1_OCTET_STRING, offsetof(SECKEYPQGParams,subPrime), },
{ SEC_ASN1_OCTET_STRING, offsetof(PQGParams,base), }, { SEC_ASN1_OCTET_STRING, offsetof(SECKEYPQGParams,base), },
{ 0 }, { 0 },
}; };
const SEC_ASN1Template SECKEY_FortezzaDiffParameterTemplate[] = { const SEC_ASN1Template SECKEY_FortezzaDiffParameterTemplate[] = {
{ SEC_ASN1_SEQUENCE, 0, NULL, sizeof(DiffPQGParams) }, { SEC_ASN1_SEQUENCE, 0, NULL, sizeof(SECKEYDiffPQGParams) },
{ SEC_ASN1_INLINE, offsetof(DiffPQGParams,DiffKEAParams), { SEC_ASN1_INLINE, offsetof(SECKEYDiffPQGParams,DiffKEAParams),
SECKEY_FortezzaParameterTemplate}, SECKEY_FortezzaParameterTemplate},
{ SEC_ASN1_INLINE, offsetof(DiffPQGParams,DiffDSAParams), { SEC_ASN1_INLINE, offsetof(SECKEYDiffPQGParams,DiffDSAParams),
SECKEY_FortezzaParameterTemplate}, SECKEY_FortezzaParameterTemplate},
{ 0 }, { 0 },
}; };
const SEC_ASN1Template SECKEY_FortezzaPreParamTemplate[] = { const SEC_ASN1Template SECKEY_FortezzaPreParamTemplate[] = {
{ SEC_ASN1_EXPLICIT | SEC_ASN1_CONSTRUCTED | { SEC_ASN1_EXPLICIT | SEC_ASN1_CONSTRUCTED |
SEC_ASN1_CONTEXT_SPECIFIC | 1, offsetof(PQGDualParams,CommParams), SEC_ASN1_CONTEXT_SPECIFIC | 1, offsetof(SECKEYPQGDualParams,CommParams),
SECKEY_FortezzaParameterTemplate}, SECKEY_FortezzaParameterTemplate},
{ 0, } { 0, }
}; };
const SEC_ASN1Template SECKEY_FortezzaAltPreParamTemplate[] = { const SEC_ASN1Template SECKEY_FortezzaAltPreParamTemplate[] = {
{ SEC_ASN1_EXPLICIT | SEC_ASN1_CONSTRUCTED | { SEC_ASN1_EXPLICIT | SEC_ASN1_CONSTRUCTED |
SEC_ASN1_CONTEXT_SPECIFIC | 0, offsetof(PQGDualParams,DiffParams), SEC_ASN1_CONTEXT_SPECIFIC | 0, offsetof(SECKEYPQGDualParams,DiffParams),
SECKEY_FortezzaDiffParameterTemplate}, SECKEY_FortezzaDiffParameterTemplate},
{ 0, } { 0, }
}; };
@ -139,6 +139,10 @@ const SEC_ASN1Template SECKEY_KEAParamsTemplate[] = {
{ 0, } { 0, }
}; };
SEC_ASN1_CHOOSER_IMPLEMENT(SECKEY_DSAPublicKeyTemplate)
SEC_ASN1_CHOOSER_IMPLEMENT(SECKEY_RSAPublicKeyTemplate)
/* Create an RSA key pair is any slot able to do so. /* Create an RSA key pair is any slot able to do so.
** The created keys are "session" (temporary), not "token" (permanent), ** The created keys are "session" (temporary), not "token" (permanent),
** and they are "sensitive", which makes them costly to move to another token. ** and they are "sensitive", which makes them costly to move to another token.
@ -167,7 +171,7 @@ SECKEY_CreateRSAPrivateKey(int keySizeInBits,SECKEYPublicKey **pubk, void *cx)
** creating a "sensitive" key if necessary. ** creating a "sensitive" key if necessary.
*/ */
SECKEYPrivateKey * SECKEYPrivateKey *
SECKEY_CreateDHPrivateKey(DHParams *param, SECKEYPublicKey **pubk, void *cx) SECKEY_CreateDHPrivateKey(SECKEYDHParams *param, SECKEYPublicKey **pubk, void *cx)
{ {
SECKEYPrivateKey *privk; SECKEYPrivateKey *privk;
PK11SlotInfo *slot = PK11_GetBestSlot(CKM_DH_PKCS_KEY_PAIR_GEN,cx); PK11SlotInfo *slot = PK11_GetBestSlot(CKM_DH_PKCS_KEY_PAIR_GEN,cx);
@ -228,7 +232,7 @@ SECKEY_CopySubjectPublicKeyInfo(PRArenaPool *arena,
} }
SECStatus SECStatus
SECKEY_KEASetParams(KEAParams * params, SECKEYPublicKey * pubKey) { SECKEY_KEASetParams(SECKEYKEAParams * params, SECKEYPublicKey * pubKey) {
if (pubKey->keyType == fortezzaKey) { if (pubKey->keyType == fortezzaKey) {
/* the key is a fortezza V1 public key */ /* the key is a fortezza V1 public key */
@ -259,16 +263,12 @@ SECKEY_KEAParamCompare(CERTCertificate *cert1,CERTCertificate *cert2)
{ {
SECStatus rv; SECStatus rv;
SECOidData *oid=NULL;
CERTSubjectPublicKeyInfo * subjectSpki=NULL;
CERTSubjectPublicKeyInfo * issuerSpki=NULL;
CERTCertificate *issuerCert = NULL;
SECKEYPublicKey *pubKey1 = 0; SECKEYPublicKey *pubKey1 = 0;
SECKEYPublicKey *pubKey2 = 0; SECKEYPublicKey *pubKey2 = 0;
KEAParams params1; SECKEYKEAParams params1;
KEAParams params2; SECKEYKEAParams params2;
rv = SECFailure; rv = SECFailure;
@ -486,7 +486,7 @@ SECStatus
SECKEY_FortezzaDecodePQGtoOld(PRArenaPool *arena, SECKEYPublicKey *pubk, SECKEY_FortezzaDecodePQGtoOld(PRArenaPool *arena, SECKEYPublicKey *pubk,
SECItem *params) { SECItem *params) {
SECStatus rv; SECStatus rv;
PQGDualParams dual_params; SECKEYPQGDualParams dual_params;
if (params == NULL) return SECFailure; if (params == NULL) return SECFailure;
@ -607,7 +607,7 @@ SECKEY_FortezzaDecodePQGtoOld(PRArenaPool *arena, SECKEYPublicKey *pubk,
SECStatus SECStatus
SECKEY_DSADecodePQG(PRArenaPool *arena, SECKEYPublicKey *pubk, SECItem *params) { SECKEY_DSADecodePQG(PRArenaPool *arena, SECKEYPublicKey *pubk, SECItem *params) {
SECStatus rv; SECStatus rv;
PQGDualParams dual_params; SECKEYPQGDualParams dual_params;
if (params == NULL) return SECFailure; if (params == NULL) return SECFailure;

Просмотреть файл

@ -32,7 +32,7 @@
* may use your version of this file under either the MPL or the * may use your version of this file under either the MPL or the
* GPL. * GPL.
* *
* $Id: secvfy.c,v 1.5 2001-05-01 23:59:27 relyea%netscape.com Exp $ * $Id: secvfy.c,v 1.6 2001-09-20 21:30:48 relyea%netscape.com Exp $
*/ */
#include <stdio.h> #include <stdio.h>
@ -195,9 +195,9 @@ decodeSigAlg(SECOidTag alg, SECOidTag *hashalg)
/* we don't implement MD4 hashes */ /* we don't implement MD4 hashes */
case SEC_OID_PKCS1_MD4_WITH_RSA_ENCRYPTION: case SEC_OID_PKCS1_MD4_WITH_RSA_ENCRYPTION:
default: default:
return SECFailure; break;
} }
PR_ASSERT(PR_FALSE); /* shouldn't get here */ return SECFailure;
} }
VFYContext * VFYContext *
@ -322,7 +322,6 @@ VFY_EndWithSignature(VFYContext *cx, SECItem *sig)
unsigned char final[32]; unsigned char final[32];
unsigned part; unsigned part;
SECItem hash,dsasig; SECItem hash,dsasig;
unsigned char *digest;
SECStatus rv; SECStatus rv;
if ((cx->hasSignature == PR_FALSE) && (sig == NULL)) { if ((cx->hasSignature == PR_FALSE) && (sig == NULL)) {