59 lines
2.5 KiB
C
59 lines
2.5 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 _KEYI_H_
|
|
#define _KEYI_H_
|
|
#include "secerr.h"
|
|
|
|
SEC_BEGIN_PROTOS
|
|
/* NSS private functions */
|
|
/* map an oid to a keytype... actually this function and it's converse
|
|
* are good candidates for public functions.. */
|
|
KeyType seckey_GetKeyType(SECOidTag pubKeyOid);
|
|
|
|
/*
|
|
* Pulls the hash algorithm, signing algorithm, and key type out of a
|
|
* composite algorithm.
|
|
*
|
|
* key: pointer to the public key. Should be NULL if called for a sign operation.
|
|
* sigAlg: the composite algorithm to dissect.
|
|
* hashalg: address of a SECOidTag which will be set with the hash algorithm.
|
|
* encalg: address of a SECOidTag which will be set with the signing alg.
|
|
* mechp: address of a PCKS #11 Mechanism which will be set to the
|
|
* combined hash/encrypt mechanism. If set to CKM_INVALID_MECHANISM, the code
|
|
* will fall back to external hashing.
|
|
* mechparams: address of a SECItem will set to the parameters for the combined
|
|
* hash/encrypt mechanism.
|
|
*
|
|
* Returns: SECSuccess if the algorithm was acceptable, SECFailure if the
|
|
* algorithm was not found or was not a signing algorithm.
|
|
*/
|
|
SECStatus sec_DecodeSigAlg(const SECKEYPublicKey *key, SECOidTag sigAlg,
|
|
const SECItem *param, SECOidTag *encalg,
|
|
SECOidTag *hashalg, CK_MECHANISM_TYPE *mech,
|
|
SECItem *mechparams);
|
|
|
|
/* just get the 'encryption' oid from the combined signature oid */
|
|
SECOidTag sec_GetEncAlgFromSigAlg(SECOidTag sigAlg);
|
|
|
|
/* extract the RSA-PSS hash algorithms and salt length from
|
|
* parameters, taking into account of the default implications.
|
|
*
|
|
* (parameters is the parameters field of a algorithm ID structure
|
|
* (SECAlgorithmID)*/
|
|
SECStatus sec_DecodeRSAPSSParams(PLArenaPool *arena,
|
|
const SECItem *params,
|
|
SECOidTag *hashAlg,
|
|
SECOidTag *maskHashAlg,
|
|
unsigned long *saltLength);
|
|
|
|
/* convert the encoded RSA-PSS parameters into PKCS #11 mechanism parameters */
|
|
SECStatus sec_DecodeRSAPSSParamsToMechanism(PLArenaPool *arena,
|
|
const SECItem *params,
|
|
CK_RSA_PKCS_PSS_PARAMS *mech,
|
|
SECOidTag *hashAlg);
|
|
|
|
SEC_END_PROTOS
|
|
|
|
#endif /* _KEYHI_H_ */
|