andre@0: /* This Source Code Form is subject to the terms of the Mozilla Public andre@0: * License, v. 2.0. If a copy of the MPL was not distributed with this andre@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ andre@0: andre@0: #ifndef DEV_H andre@0: #include "dev.h" andre@0: #endif /* DEV_H */ andre@0: andre@0: #ifndef PKIM_H andre@0: #include "pkim.h" andre@0: #endif /* PKIM_H */ andre@0: andre@0: #ifndef PKISTORE_H andre@0: #include "pkistore.h" andre@0: #endif /* PKISTORE_H */ andre@0: andre@0: extern const NSSError NSS_ERROR_NOT_FOUND; andre@0: extern const NSSError NSS_ERROR_INVALID_ARGUMENT; andre@0: andre@0: NSS_IMPLEMENT NSSCryptoContext * andre@0: nssCryptoContext_Create ( andre@0: NSSTrustDomain *td, andre@0: NSSCallback *uhhOpt andre@0: ) andre@0: { andre@0: NSSArena *arena; andre@0: NSSCryptoContext *rvCC; andre@0: arena = NSSArena_Create(); andre@0: if (!arena) { andre@0: return NULL; andre@0: } andre@0: rvCC = nss_ZNEW(arena, NSSCryptoContext); andre@0: if (!rvCC) { andre@0: return NULL; andre@0: } andre@0: rvCC->td = td; andre@0: rvCC->arena = arena; andre@0: rvCC->certStore = nssCertificateStore_Create(rvCC->arena); andre@0: if (!rvCC->certStore) { andre@0: nssArena_Destroy(arena); andre@0: return NULL; andre@0: } andre@0: andre@0: return rvCC; andre@0: } andre@0: andre@0: NSS_IMPLEMENT PRStatus andre@0: NSSCryptoContext_Destroy ( andre@0: NSSCryptoContext *cc andre@0: ) andre@0: { andre@0: PRStatus status = PR_SUCCESS; andre@0: PORT_Assert(cc->certStore); andre@0: if (cc->certStore) { andre@0: status = nssCertificateStore_Destroy(cc->certStore); andre@0: if (status == PR_FAILURE) { andre@0: return status; andre@0: } andre@0: } else { andre@0: status = PR_FAILURE; andre@0: } andre@0: nssArena_Destroy(cc->arena); andre@0: return status; andre@0: } andre@0: andre@0: NSS_IMPLEMENT PRStatus andre@0: NSSCryptoContext_SetDefaultCallback ( andre@0: NSSCryptoContext *td, andre@0: NSSCallback *newCallback, andre@0: NSSCallback **oldCallbackOpt andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return PR_FAILURE; andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSCallback * andre@0: NSSCryptoContext_GetDefaultCallback ( andre@0: NSSCryptoContext *td, andre@0: PRStatus *statusOpt andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return NULL; andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSTrustDomain * andre@0: NSSCryptoContext_GetTrustDomain ( andre@0: NSSCryptoContext *td andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return NULL; andre@0: } andre@0: andre@0: andre@0: NSS_IMPLEMENT NSSCertificate * andre@0: NSSCryptoContext_FindOrImportCertificate ( andre@0: NSSCryptoContext *cc, andre@0: NSSCertificate *c andre@0: ) andre@0: { andre@0: NSSCertificate *rvCert = NULL; andre@0: andre@0: PORT_Assert(cc->certStore); andre@0: if (!cc->certStore) { andre@0: nss_SetError(NSS_ERROR_INVALID_ARGUMENT); andre@0: return rvCert; andre@0: } andre@0: rvCert = nssCertificateStore_FindOrAdd(cc->certStore, c); andre@0: if (rvCert == c && c->object.cryptoContext != cc) { andre@0: PORT_Assert(!c->object.cryptoContext); andre@0: c->object.cryptoContext = cc; andre@0: } andre@0: if (rvCert) { andre@0: /* an NSSCertificate cannot be part of two crypto contexts andre@0: ** simultaneously. If this assertion fails, then there is andre@0: ** a serious Stan design flaw. andre@0: */ andre@0: PORT_Assert(cc == c->object.cryptoContext); andre@0: } andre@0: return rvCert; andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSCertificate * andre@0: NSSCryptoContext_ImportPKIXCertificate ( andre@0: NSSCryptoContext *cc, andre@0: struct NSSPKIXCertificateStr *pc andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return NULL; andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSCertificate * andre@0: NSSCryptoContext_ImportEncodedCertificate ( andre@0: NSSCryptoContext *cc, andre@0: NSSBER *ber andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return NULL; andre@0: } andre@0: andre@0: NSS_IMPLEMENT PRStatus andre@0: NSSCryptoContext_ImportEncodedPKIXCertificateChain ( andre@0: NSSCryptoContext *cc, andre@0: NSSBER *ber andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return PR_FAILURE; andre@0: } andre@0: andre@0: NSS_IMPLEMENT PRStatus andre@0: nssCryptoContext_ImportTrust ( andre@0: NSSCryptoContext *cc, andre@0: NSSTrust *trust andre@0: ) andre@0: { andre@0: PRStatus nssrv; andre@0: PORT_Assert(cc->certStore); andre@0: if (!cc->certStore) { andre@0: return PR_FAILURE; andre@0: } andre@0: nssrv = nssCertificateStore_AddTrust(cc->certStore, trust); andre@0: #if 0 andre@0: if (nssrv == PR_SUCCESS) { andre@0: trust->object.cryptoContext = cc; andre@0: } andre@0: #endif andre@0: return nssrv; andre@0: } andre@0: andre@0: NSS_IMPLEMENT PRStatus andre@0: nssCryptoContext_ImportSMIMEProfile ( andre@0: NSSCryptoContext *cc, andre@0: nssSMIMEProfile *profile andre@0: ) andre@0: { andre@0: PRStatus nssrv; andre@0: PORT_Assert(cc->certStore); andre@0: if (!cc->certStore) { andre@0: return PR_FAILURE; andre@0: } andre@0: nssrv = nssCertificateStore_AddSMIMEProfile(cc->certStore, profile); andre@0: #if 0 andre@0: if (nssrv == PR_SUCCESS) { andre@0: profile->object.cryptoContext = cc; andre@0: } andre@0: #endif andre@0: return nssrv; andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSCertificate * andre@0: NSSCryptoContext_FindBestCertificateByNickname ( andre@0: NSSCryptoContext *cc, andre@0: const NSSUTF8 *name, andre@0: NSSTime *timeOpt, /* NULL for "now" */ andre@0: NSSUsage *usage, andre@0: NSSPolicies *policiesOpt /* NULL for none */ andre@0: ) andre@0: { andre@0: NSSCertificate **certs; andre@0: NSSCertificate *rvCert = NULL; andre@0: PORT_Assert(cc->certStore); andre@0: if (!cc->certStore) { andre@0: return NULL; andre@0: } andre@0: certs = nssCertificateStore_FindCertificatesByNickname(cc->certStore, andre@0: name, andre@0: NULL, 0, NULL); andre@0: if (certs) { andre@0: rvCert = nssCertificateArray_FindBestCertificate(certs, andre@0: timeOpt, andre@0: usage, andre@0: policiesOpt); andre@0: nssCertificateArray_Destroy(certs); andre@0: } andre@0: return rvCert; andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSCertificate ** andre@0: NSSCryptoContext_FindCertificatesByNickname ( andre@0: NSSCryptoContext *cc, andre@0: NSSUTF8 *name, andre@0: NSSCertificate *rvOpt[], andre@0: PRUint32 maximumOpt, /* 0 for no max */ andre@0: NSSArena *arenaOpt andre@0: ) andre@0: { andre@0: NSSCertificate **rvCerts; andre@0: PORT_Assert(cc->certStore); andre@0: if (!cc->certStore) { andre@0: return NULL; andre@0: } andre@0: rvCerts = nssCertificateStore_FindCertificatesByNickname(cc->certStore, andre@0: name, andre@0: rvOpt, andre@0: maximumOpt, andre@0: arenaOpt); andre@0: return rvCerts; andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSCertificate * andre@0: NSSCryptoContext_FindCertificateByIssuerAndSerialNumber ( andre@0: NSSCryptoContext *cc, andre@0: NSSDER *issuer, andre@0: NSSDER *serialNumber andre@0: ) andre@0: { andre@0: PORT_Assert(cc->certStore); andre@0: if (!cc->certStore) { andre@0: return NULL; andre@0: } andre@0: return nssCertificateStore_FindCertificateByIssuerAndSerialNumber( andre@0: cc->certStore, andre@0: issuer, andre@0: serialNumber); andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSCertificate * andre@0: NSSCryptoContext_FindBestCertificateBySubject ( andre@0: NSSCryptoContext *cc, andre@0: NSSDER *subject, andre@0: NSSTime *timeOpt, andre@0: NSSUsage *usage, andre@0: NSSPolicies *policiesOpt andre@0: ) andre@0: { andre@0: NSSCertificate **certs; andre@0: NSSCertificate *rvCert = NULL; andre@0: PORT_Assert(cc->certStore); andre@0: if (!cc->certStore) { andre@0: return NULL; andre@0: } andre@0: certs = nssCertificateStore_FindCertificatesBySubject(cc->certStore, andre@0: subject, andre@0: NULL, 0, NULL); andre@0: if (certs) { andre@0: rvCert = nssCertificateArray_FindBestCertificate(certs, andre@0: timeOpt, andre@0: usage, andre@0: policiesOpt); andre@0: nssCertificateArray_Destroy(certs); andre@0: } andre@0: return rvCert; andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSCertificate ** andre@0: nssCryptoContext_FindCertificatesBySubject ( andre@0: NSSCryptoContext *cc, andre@0: NSSDER *subject, andre@0: NSSCertificate *rvOpt[], andre@0: PRUint32 maximumOpt, /* 0 for no max */ andre@0: NSSArena *arenaOpt andre@0: ) andre@0: { andre@0: NSSCertificate **rvCerts; andre@0: PORT_Assert(cc->certStore); andre@0: if (!cc->certStore) { andre@0: return NULL; andre@0: } andre@0: rvCerts = nssCertificateStore_FindCertificatesBySubject(cc->certStore, andre@0: subject, andre@0: rvOpt, andre@0: maximumOpt, andre@0: arenaOpt); andre@0: return rvCerts; andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSCertificate ** andre@0: NSSCryptoContext_FindCertificatesBySubject ( andre@0: NSSCryptoContext *cc, andre@0: NSSDER *subject, andre@0: NSSCertificate *rvOpt[], andre@0: PRUint32 maximumOpt, /* 0 for no max */ andre@0: NSSArena *arenaOpt andre@0: ) andre@0: { andre@0: return nssCryptoContext_FindCertificatesBySubject(cc, subject, andre@0: rvOpt, maximumOpt, andre@0: arenaOpt); andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSCertificate * andre@0: NSSCryptoContext_FindBestCertificateByNameComponents ( andre@0: NSSCryptoContext *cc, andre@0: NSSUTF8 *nameComponents, andre@0: NSSTime *timeOpt, andre@0: NSSUsage *usage, andre@0: NSSPolicies *policiesOpt andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return NULL; andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSCertificate ** andre@0: NSSCryptoContext_FindCertificatesByNameComponents ( andre@0: NSSCryptoContext *cc, andre@0: NSSUTF8 *nameComponents, andre@0: NSSCertificate *rvOpt[], andre@0: PRUint32 maximumOpt, /* 0 for no max */ andre@0: NSSArena *arenaOpt andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return NULL; andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSCertificate * andre@0: NSSCryptoContext_FindCertificateByEncodedCertificate ( andre@0: NSSCryptoContext *cc, andre@0: NSSBER *encodedCertificate andre@0: ) andre@0: { andre@0: PORT_Assert(cc->certStore); andre@0: if (!cc->certStore) { andre@0: return NULL; andre@0: } andre@0: return nssCertificateStore_FindCertificateByEncodedCertificate( andre@0: cc->certStore, andre@0: encodedCertificate); andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSCertificate * andre@0: NSSCryptoContext_FindBestCertificateByEmail ( andre@0: NSSCryptoContext *cc, andre@0: NSSASCII7 *email, andre@0: NSSTime *timeOpt, andre@0: NSSUsage *usage, andre@0: NSSPolicies *policiesOpt andre@0: ) andre@0: { andre@0: NSSCertificate **certs; andre@0: NSSCertificate *rvCert = NULL; andre@0: andre@0: PORT_Assert(cc->certStore); andre@0: if (!cc->certStore) { andre@0: return NULL; andre@0: } andre@0: certs = nssCertificateStore_FindCertificatesByEmail(cc->certStore, andre@0: email, andre@0: NULL, 0, NULL); andre@0: if (certs) { andre@0: rvCert = nssCertificateArray_FindBestCertificate(certs, andre@0: timeOpt, andre@0: usage, andre@0: policiesOpt); andre@0: nssCertificateArray_Destroy(certs); andre@0: } andre@0: return rvCert; andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSCertificate ** andre@0: NSSCryptoContext_FindCertificatesByEmail ( andre@0: NSSCryptoContext *cc, andre@0: NSSASCII7 *email, andre@0: NSSCertificate *rvOpt[], andre@0: PRUint32 maximumOpt, /* 0 for no max */ andre@0: NSSArena *arenaOpt andre@0: ) andre@0: { andre@0: NSSCertificate **rvCerts; andre@0: PORT_Assert(cc->certStore); andre@0: if (!cc->certStore) { andre@0: return NULL; andre@0: } andre@0: rvCerts = nssCertificateStore_FindCertificatesByEmail(cc->certStore, andre@0: email, andre@0: rvOpt, andre@0: maximumOpt, andre@0: arenaOpt); andre@0: return rvCerts; andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSCertificate * andre@0: NSSCryptoContext_FindCertificateByOCSPHash ( andre@0: NSSCryptoContext *cc, andre@0: NSSItem *hash andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return NULL; andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSCertificate * andre@0: NSSCryptoContext_FindBestUserCertificate ( andre@0: NSSCryptoContext *cc, andre@0: NSSTime *timeOpt, andre@0: NSSUsage *usage, andre@0: NSSPolicies *policiesOpt andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return NULL; andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSCertificate ** andre@0: NSSCryptoContext_FindUserCertificates ( andre@0: NSSCryptoContext *cc, andre@0: NSSTime *timeOpt, andre@0: NSSUsage *usageOpt, andre@0: NSSPolicies *policiesOpt, andre@0: NSSCertificate **rvOpt, andre@0: PRUint32 rvLimit, /* zero for no limit */ andre@0: NSSArena *arenaOpt andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return NULL; andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSCertificate * andre@0: NSSCryptoContext_FindBestUserCertificateForSSLClientAuth ( andre@0: NSSCryptoContext *cc, andre@0: NSSUTF8 *sslHostOpt, andre@0: NSSDER *rootCAsOpt[], /* null pointer for none */ andre@0: PRUint32 rootCAsMaxOpt, /* zero means list is null-terminated */ andre@0: NSSAlgorithmAndParameters *apOpt, andre@0: NSSPolicies *policiesOpt andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return NULL; andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSCertificate ** andre@0: NSSCryptoContext_FindUserCertificatesForSSLClientAuth ( andre@0: NSSCryptoContext *cc, andre@0: NSSUTF8 *sslHostOpt, andre@0: NSSDER *rootCAsOpt[], /* null pointer for none */ andre@0: PRUint32 rootCAsMaxOpt, /* zero means list is null-terminated */ andre@0: NSSAlgorithmAndParameters *apOpt, andre@0: NSSPolicies *policiesOpt, andre@0: NSSCertificate **rvOpt, andre@0: PRUint32 rvLimit, /* zero for no limit */ andre@0: NSSArena *arenaOpt andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return NULL; andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSCertificate * andre@0: NSSCryptoContext_FindBestUserCertificateForEmailSigning ( andre@0: NSSCryptoContext *cc, andre@0: NSSASCII7 *signerOpt, andre@0: NSSASCII7 *recipientOpt, andre@0: /* anything more here? */ andre@0: NSSAlgorithmAndParameters *apOpt, andre@0: NSSPolicies *policiesOpt andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return NULL; andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSCertificate * andre@0: NSSCryptoContext_FindUserCertificatesForEmailSigning ( andre@0: NSSCryptoContext *cc, andre@0: NSSASCII7 *signerOpt, /* fgmr or a more general name? */ andre@0: NSSASCII7 *recipientOpt, andre@0: /* anything more here? */ andre@0: NSSAlgorithmAndParameters *apOpt, andre@0: NSSPolicies *policiesOpt, andre@0: NSSCertificate **rvOpt, andre@0: PRUint32 rvLimit, /* zero for no limit */ andre@0: NSSArena *arenaOpt andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return NULL; andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSTrust * andre@0: nssCryptoContext_FindTrustForCertificate ( andre@0: NSSCryptoContext *cc, andre@0: NSSCertificate *cert andre@0: ) andre@0: { andre@0: PORT_Assert(cc->certStore); andre@0: if (!cc->certStore) { andre@0: return NULL; andre@0: } andre@0: return nssCertificateStore_FindTrustForCertificate(cc->certStore, cert); andre@0: } andre@0: andre@0: NSS_IMPLEMENT nssSMIMEProfile * andre@0: nssCryptoContext_FindSMIMEProfileForCertificate ( andre@0: NSSCryptoContext *cc, andre@0: NSSCertificate *cert andre@0: ) andre@0: { andre@0: PORT_Assert(cc->certStore); andre@0: if (!cc->certStore) { andre@0: return NULL; andre@0: } andre@0: return nssCertificateStore_FindSMIMEProfileForCertificate(cc->certStore, andre@0: cert); andre@0: } andre@0: andre@0: NSS_IMPLEMENT PRStatus andre@0: NSSCryptoContext_GenerateKeyPair ( andre@0: NSSCryptoContext *cc, andre@0: NSSAlgorithmAndParameters *ap, andre@0: NSSPrivateKey **pvkOpt, andre@0: NSSPublicKey **pbkOpt, andre@0: PRBool privateKeyIsSensitive, andre@0: NSSToken *destination, andre@0: NSSCallback *uhhOpt andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return PR_FAILURE; andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSSymmetricKey * andre@0: NSSCryptoContext_GenerateSymmetricKey ( andre@0: NSSCryptoContext *cc, andre@0: NSSAlgorithmAndParameters *ap, andre@0: PRUint32 keysize, andre@0: NSSToken *destination, andre@0: NSSCallback *uhhOpt andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return NULL; andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSSymmetricKey * andre@0: NSSCryptoContext_GenerateSymmetricKeyFromPassword ( andre@0: NSSCryptoContext *cc, andre@0: NSSAlgorithmAndParameters *ap, andre@0: NSSUTF8 *passwordOpt, /* if null, prompt */ andre@0: NSSToken *destinationOpt, andre@0: NSSCallback *uhhOpt andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return NULL; andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSSymmetricKey * andre@0: NSSCryptoContext_FindSymmetricKeyByAlgorithmAndKeyID ( andre@0: NSSCryptoContext *cc, andre@0: NSSOID *algorithm, andre@0: NSSItem *keyID, andre@0: NSSCallback *uhhOpt andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return NULL; andre@0: } andre@0: andre@0: struct token_session_str { andre@0: NSSToken *token; andre@0: nssSession *session; andre@0: }; andre@0: andre@0: NSS_IMPLEMENT NSSItem * andre@0: NSSCryptoContext_Decrypt ( andre@0: NSSCryptoContext *cc, andre@0: NSSAlgorithmAndParameters *apOpt, andre@0: NSSItem *encryptedData, andre@0: NSSCallback *uhhOpt, andre@0: NSSItem *rvOpt, andre@0: NSSArena *arenaOpt andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return NULL; andre@0: } andre@0: andre@0: NSS_IMPLEMENT PRStatus andre@0: NSSCryptoContext_BeginDecrypt ( andre@0: NSSCryptoContext *cc, andre@0: NSSAlgorithmAndParameters *apOpt, andre@0: NSSCallback *uhhOpt andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return PR_FAILURE; andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSItem * andre@0: NSSCryptoContext_ContinueDecrypt ( andre@0: NSSCryptoContext *cc, andre@0: NSSItem *data, andre@0: NSSItem *rvOpt, andre@0: NSSArena *arenaOpt andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return NULL; andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSItem * andre@0: NSSCryptoContext_FinishDecrypt ( andre@0: NSSCryptoContext *cc, andre@0: NSSItem *rvOpt, andre@0: NSSArena *arenaOpt andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return NULL; andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSItem * andre@0: NSSCryptoContext_Sign ( andre@0: NSSCryptoContext *cc, andre@0: NSSAlgorithmAndParameters *apOpt, andre@0: NSSItem *data, andre@0: NSSCallback *uhhOpt, andre@0: NSSItem *rvOpt, andre@0: NSSArena *arenaOpt andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return NULL; andre@0: } andre@0: andre@0: NSS_IMPLEMENT PRStatus andre@0: NSSCryptoContext_BeginSign ( andre@0: NSSCryptoContext *cc, andre@0: NSSAlgorithmAndParameters *apOpt, andre@0: NSSCallback *uhhOpt andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return PR_FAILURE; andre@0: } andre@0: andre@0: NSS_IMPLEMENT PRStatus andre@0: NSSCryptoContext_ContinueSign ( andre@0: NSSCryptoContext *cc, andre@0: NSSItem *data andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return PR_FAILURE; andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSItem * andre@0: NSSCryptoContext_FinishSign ( andre@0: NSSCryptoContext *cc, andre@0: NSSItem *rvOpt, andre@0: NSSArena *arenaOpt andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return NULL; andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSItem * andre@0: NSSCryptoContext_SignRecover ( andre@0: NSSCryptoContext *cc, andre@0: NSSAlgorithmAndParameters *apOpt, andre@0: NSSItem *data, andre@0: NSSCallback *uhhOpt, andre@0: NSSItem *rvOpt, andre@0: NSSArena *arenaOpt andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return NULL; andre@0: } andre@0: andre@0: NSS_IMPLEMENT PRStatus andre@0: NSSCryptoContext_BeginSignRecover ( andre@0: NSSCryptoContext *cc, andre@0: NSSAlgorithmAndParameters *apOpt, andre@0: NSSCallback *uhhOpt andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return PR_FAILURE; andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSItem * andre@0: NSSCryptoContext_ContinueSignRecover ( andre@0: NSSCryptoContext *cc, andre@0: NSSItem *data, andre@0: NSSItem *rvOpt, andre@0: NSSArena *arenaOpt andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return NULL; andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSItem * andre@0: NSSCryptoContext_FinishSignRecover ( andre@0: NSSCryptoContext *cc, andre@0: NSSItem *rvOpt, andre@0: NSSArena *arenaOpt andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return NULL; andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSSymmetricKey * andre@0: NSSCryptoContext_UnwrapSymmetricKey ( andre@0: NSSCryptoContext *cc, andre@0: NSSAlgorithmAndParameters *apOpt, andre@0: NSSItem *wrappedKey, andre@0: NSSCallback *uhhOpt andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return NULL; andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSSymmetricKey * andre@0: NSSCryptoContext_DeriveSymmetricKey ( andre@0: NSSCryptoContext *cc, andre@0: NSSPublicKey *bk, andre@0: NSSAlgorithmAndParameters *apOpt, andre@0: NSSOID *target, andre@0: PRUint32 keySizeOpt, /* zero for best allowed */ andre@0: NSSOperations operations, andre@0: NSSCallback *uhhOpt andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return NULL; andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSItem * andre@0: NSSCryptoContext_Encrypt ( andre@0: NSSCryptoContext *cc, andre@0: NSSAlgorithmAndParameters *apOpt, andre@0: NSSItem *data, andre@0: NSSCallback *uhhOpt, andre@0: NSSItem *rvOpt, andre@0: NSSArena *arenaOpt andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return NULL; andre@0: } andre@0: andre@0: NSS_IMPLEMENT PRStatus andre@0: NSSCryptoContext_BeginEncrypt ( andre@0: NSSCryptoContext *cc, andre@0: NSSAlgorithmAndParameters *apOpt, andre@0: NSSCallback *uhhOpt andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return PR_FAILURE; andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSItem * andre@0: NSSCryptoContext_ContinueEncrypt ( andre@0: NSSCryptoContext *cc, andre@0: NSSItem *data, andre@0: NSSItem *rvOpt, andre@0: NSSArena *arenaOpt andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return NULL; andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSItem * andre@0: NSSCryptoContext_FinishEncrypt ( andre@0: NSSCryptoContext *cc, andre@0: NSSItem *rvOpt, andre@0: NSSArena *arenaOpt andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return NULL; andre@0: } andre@0: andre@0: NSS_IMPLEMENT PRStatus andre@0: NSSCryptoContext_Verify ( andre@0: NSSCryptoContext *cc, andre@0: NSSAlgorithmAndParameters *apOpt, andre@0: NSSItem *data, andre@0: NSSItem *signature, andre@0: NSSCallback *uhhOpt andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return PR_FAILURE; andre@0: } andre@0: andre@0: NSS_IMPLEMENT PRStatus andre@0: NSSCryptoContext_BeginVerify ( andre@0: NSSCryptoContext *cc, andre@0: NSSAlgorithmAndParameters *apOpt, andre@0: NSSItem *signature, andre@0: NSSCallback *uhhOpt andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return PR_FAILURE; andre@0: } andre@0: andre@0: NSS_IMPLEMENT PRStatus andre@0: NSSCryptoContext_ContinueVerify ( andre@0: NSSCryptoContext *cc, andre@0: NSSItem *data andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return PR_FAILURE; andre@0: } andre@0: andre@0: NSS_IMPLEMENT PRStatus andre@0: NSSCryptoContext_FinishVerify ( andre@0: NSSCryptoContext *cc andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return PR_FAILURE; andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSItem * andre@0: NSSCryptoContext_VerifyRecover ( andre@0: NSSCryptoContext *cc, andre@0: NSSAlgorithmAndParameters *apOpt, andre@0: NSSItem *signature, andre@0: NSSCallback *uhhOpt, andre@0: NSSItem *rvOpt, andre@0: NSSArena *arenaOpt andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return NULL; andre@0: } andre@0: andre@0: NSS_IMPLEMENT PRStatus andre@0: NSSCryptoContext_BeginVerifyRecover ( andre@0: NSSCryptoContext *cc, andre@0: NSSAlgorithmAndParameters *apOpt, andre@0: NSSCallback *uhhOpt andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return PR_FAILURE; andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSItem * andre@0: NSSCryptoContext_ContinueVerifyRecover ( andre@0: NSSCryptoContext *cc, andre@0: NSSItem *data, andre@0: NSSItem *rvOpt, andre@0: NSSArena *arenaOpt andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return NULL; andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSItem * andre@0: NSSCryptoContext_FinishVerifyRecover ( andre@0: NSSCryptoContext *cc, andre@0: NSSItem *rvOpt, andre@0: NSSArena *arenaOpt andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return NULL; andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSItem * andre@0: NSSCryptoContext_WrapSymmetricKey ( andre@0: NSSCryptoContext *cc, andre@0: NSSAlgorithmAndParameters *apOpt, andre@0: NSSSymmetricKey *keyToWrap, andre@0: NSSCallback *uhhOpt, andre@0: NSSItem *rvOpt, andre@0: NSSArena *arenaOpt andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return NULL; andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSItem * andre@0: NSSCryptoContext_Digest ( andre@0: NSSCryptoContext *cc, andre@0: NSSAlgorithmAndParameters *apOpt, andre@0: NSSItem *data, andre@0: NSSCallback *uhhOpt, andre@0: NSSItem *rvOpt, andre@0: NSSArena *arenaOpt andre@0: ) andre@0: { andre@0: return nssToken_Digest(cc->token, cc->session, apOpt, andre@0: data, rvOpt, arenaOpt); andre@0: } andre@0: andre@0: NSS_IMPLEMENT PRStatus andre@0: NSSCryptoContext_BeginDigest ( andre@0: NSSCryptoContext *cc, andre@0: NSSAlgorithmAndParameters *apOpt, andre@0: NSSCallback *uhhOpt andre@0: ) andre@0: { andre@0: return nssToken_BeginDigest(cc->token, cc->session, apOpt); andre@0: } andre@0: andre@0: NSS_IMPLEMENT PRStatus andre@0: NSSCryptoContext_ContinueDigest ( andre@0: NSSCryptoContext *cc, andre@0: NSSAlgorithmAndParameters *apOpt, andre@0: NSSItem *item andre@0: ) andre@0: { andre@0: /* andre@0: NSSAlgorithmAndParameters *ap; andre@0: ap = (apOpt) ? apOpt : cc->ap; andre@0: */ andre@0: /* why apOpt? can't change it at this point... */ andre@0: return nssToken_ContinueDigest(cc->token, cc->session, item); andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSItem * andre@0: NSSCryptoContext_FinishDigest ( andre@0: NSSCryptoContext *cc, andre@0: NSSItem *rvOpt, andre@0: NSSArena *arenaOpt andre@0: ) andre@0: { andre@0: return nssToken_FinishDigest(cc->token, cc->session, rvOpt, arenaOpt); andre@0: } andre@0: andre@0: NSS_IMPLEMENT NSSCryptoContext * andre@0: NSSCryptoContext_Clone ( andre@0: NSSCryptoContext *cc andre@0: ) andre@0: { andre@0: nss_SetError(NSS_ERROR_NOT_FOUND); andre@0: return NULL; andre@0: } andre@0: