mirror of
https://github.com/rn10950/RetroZilla.git
synced 2024-11-11 10:20:19 +01:00
30d33aa8e8
9934c8faef29, 3c3b381c4865, 5a67f6beee9a, 1b1eb6d77728, a8b668fd72f7, bug962760, bug743700, bug857304, bug972653, bug972450, bug971358, bug903885, bug977073, bug976111, bug949939, bug947653, bug947572, bug903885, bug979106, bug966596, bug979004, bug979752, bug980848, bug938369, bug981170, bug668130, bug974693, bug975056, bug979132, bug370717, bug979070, bug985070, bug900067, bug977673, bug519255, bug989558, bug557299, bug987263, bug369802, a751a5146718, bug992343, bug952572, bug979703, bug994883, bug994869, bug993489, bug984608, bug977869, bug667371, bug672828, bug793347, bug977869
153 lines
4.8 KiB
C
153 lines
4.8 KiB
C
/* 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/. */
|
|
|
|
#ifndef _LOWKEYI_H_
|
|
#define _LOWKEYI_H_
|
|
|
|
#include "prtypes.h"
|
|
#include "seccomon.h"
|
|
#include "secoidt.h"
|
|
#include "pcertt.h"
|
|
#include "lowkeyti.h"
|
|
#include "sdb.h"
|
|
|
|
SEC_BEGIN_PROTOS
|
|
|
|
/*
|
|
* See bugzilla bug 125359
|
|
* Since NSS (via PKCS#11) wants to handle big integers as unsigned ints,
|
|
* all of the templates above that en/decode into integers must be converted
|
|
* from ASN.1's signed integer type. This is done by marking either the
|
|
* source or destination (encoding or decoding, respectively) type as
|
|
* siUnsignedInteger.
|
|
*/
|
|
extern void lg_prepare_low_rsa_priv_key_for_asn1(NSSLOWKEYPrivateKey *key);
|
|
extern void lg_prepare_low_pqg_params_for_asn1(PQGParams *params);
|
|
extern void lg_prepare_low_dsa_priv_key_for_asn1(NSSLOWKEYPrivateKey *key);
|
|
extern void lg_prepare_low_dh_priv_key_for_asn1(NSSLOWKEYPrivateKey *key);
|
|
#ifndef NSS_DISABLE_ECC
|
|
extern void lg_prepare_low_ec_priv_key_for_asn1(NSSLOWKEYPrivateKey *key);
|
|
extern void lg_prepare_low_ecparams_for_asn1(ECParams *params);
|
|
#endif /* NSS_DISABLE_ECC */
|
|
|
|
typedef char * (* NSSLOWKEYDBNameFunc)(void *arg, int dbVersion);
|
|
|
|
/*
|
|
** Open a key database.
|
|
*/
|
|
extern NSSLOWKEYDBHandle *nsslowkey_OpenKeyDB(PRBool readOnly,
|
|
const char *domain,
|
|
const char *prefix,
|
|
NSSLOWKEYDBNameFunc namecb,
|
|
void *cbarg);
|
|
|
|
/*
|
|
** Close the specified key database.
|
|
*/
|
|
extern void nsslowkey_CloseKeyDB(NSSLOWKEYDBHandle *handle);
|
|
|
|
/*
|
|
* Get the version number of the database
|
|
*/
|
|
extern int nsslowkey_GetKeyDBVersion(NSSLOWKEYDBHandle *handle);
|
|
|
|
/*
|
|
** Delete a key from the database
|
|
*/
|
|
extern SECStatus nsslowkey_DeleteKey(NSSLOWKEYDBHandle *handle,
|
|
const SECItem *pubkey);
|
|
|
|
/*
|
|
** Store a key in the database, indexed by its public key modulus.
|
|
** "pk" is the private key to store
|
|
** "f" is the callback function for getting the password
|
|
** "arg" is the argument for the callback
|
|
*/
|
|
extern SECStatus nsslowkey_StoreKeyByPublicKey(NSSLOWKEYDBHandle *handle,
|
|
NSSLOWKEYPrivateKey *pk,
|
|
SECItem *pubKeyData,
|
|
char *nickname,
|
|
SDB *sdb);
|
|
|
|
/* does the key for this cert exist in the database filed by modulus */
|
|
extern PRBool nsslowkey_KeyForCertExists(NSSLOWKEYDBHandle *handle,
|
|
NSSLOWCERTCertificate *cert);
|
|
/* does a key with this ID already exist? */
|
|
extern PRBool nsslowkey_KeyForIDExists(NSSLOWKEYDBHandle *handle, SECItem *id);
|
|
|
|
/*
|
|
** Destroy a private key object.
|
|
** "key" the object
|
|
** "freeit" if PR_TRUE then free the object as well as its sub-objects
|
|
*/
|
|
extern void lg_nsslowkey_DestroyPrivateKey(NSSLOWKEYPrivateKey *key);
|
|
|
|
/*
|
|
** Destroy a public key object.
|
|
** "key" the object
|
|
** "freeit" if PR_TRUE then free the object as well as its sub-objects
|
|
*/
|
|
extern void lg_nsslowkey_DestroyPublicKey(NSSLOWKEYPublicKey *key);
|
|
|
|
|
|
/*
|
|
** Convert a low private key "privateKey" into a public low key
|
|
*/
|
|
extern NSSLOWKEYPublicKey
|
|
*lg_nsslowkey_ConvertToPublicKey(NSSLOWKEYPrivateKey *privateKey);
|
|
|
|
|
|
SECStatus
|
|
nsslowkey_UpdateNickname(NSSLOWKEYDBHandle *handle,
|
|
NSSLOWKEYPrivateKey *privkey,
|
|
SECItem *pubKeyData,
|
|
char *nickname,
|
|
SDB *sdb);
|
|
|
|
/* Store key by modulus and specify an encryption algorithm to use.
|
|
* handle is the pointer to the key database,
|
|
* privkey is the private key to be stored,
|
|
* f and arg are the function and arguments to the callback
|
|
* to get a password,
|
|
* algorithm is the algorithm which the privKey is to be stored.
|
|
* A return of anything but SECSuccess indicates failure.
|
|
*/
|
|
extern SECStatus
|
|
nsslowkey_StoreKeyByPublicKeyAlg(NSSLOWKEYDBHandle *handle,
|
|
NSSLOWKEYPrivateKey *privkey,
|
|
SECItem *pubKeyData,
|
|
char *nickname,
|
|
SDB *sdb,
|
|
PRBool update);
|
|
|
|
/* Find key by modulus. This function is the inverse of store key
|
|
* by modulus. An attempt to locate the key with "modulus" is
|
|
* performed. If the key is found, the private key is returned,
|
|
* else NULL is returned.
|
|
* modulus is the modulus to locate
|
|
*/
|
|
extern NSSLOWKEYPrivateKey *
|
|
nsslowkey_FindKeyByPublicKey(NSSLOWKEYDBHandle *handle, SECItem *modulus,
|
|
SDB *sdb);
|
|
|
|
extern char *
|
|
nsslowkey_FindKeyNicknameByPublicKey(NSSLOWKEYDBHandle *handle,
|
|
SECItem *modulus, SDB *sdb);
|
|
|
|
#ifndef NSS_DISABLE_ECC
|
|
/*
|
|
* smaller version of EC_FillParams. In this code, we only need
|
|
* oid and DER data.
|
|
*/
|
|
SECStatus LGEC_FillParams(PLArenaPool *arena, const SECItem *encodedParams,
|
|
ECParams *params);
|
|
|
|
/* Copy all of the fields from srcParams into dstParams */
|
|
SECStatus LGEC_CopyParams(PLArenaPool *arena, ECParams *dstParams,
|
|
const ECParams *srcParams);
|
|
#endif
|
|
SEC_END_PROTOS
|
|
|
|
#endif /* _LOWKEYI_H_ */
|