1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/security/nss/lib/pki/cryptocontext.c Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,982 @@ 1.4 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.5 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.6 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.7 + 1.8 +#ifndef DEV_H 1.9 +#include "dev.h" 1.10 +#endif /* DEV_H */ 1.11 + 1.12 +#ifndef PKIM_H 1.13 +#include "pkim.h" 1.14 +#endif /* PKIM_H */ 1.15 + 1.16 +#ifndef PKISTORE_H 1.17 +#include "pkistore.h" 1.18 +#endif /* PKISTORE_H */ 1.19 + 1.20 +extern const NSSError NSS_ERROR_NOT_FOUND; 1.21 +extern const NSSError NSS_ERROR_INVALID_ARGUMENT; 1.22 + 1.23 +NSS_IMPLEMENT NSSCryptoContext * 1.24 +nssCryptoContext_Create ( 1.25 + NSSTrustDomain *td, 1.26 + NSSCallback *uhhOpt 1.27 +) 1.28 +{ 1.29 + NSSArena *arena; 1.30 + NSSCryptoContext *rvCC; 1.31 + arena = NSSArena_Create(); 1.32 + if (!arena) { 1.33 + return NULL; 1.34 + } 1.35 + rvCC = nss_ZNEW(arena, NSSCryptoContext); 1.36 + if (!rvCC) { 1.37 + return NULL; 1.38 + } 1.39 + rvCC->td = td; 1.40 + rvCC->arena = arena; 1.41 + rvCC->certStore = nssCertificateStore_Create(rvCC->arena); 1.42 + if (!rvCC->certStore) { 1.43 + nssArena_Destroy(arena); 1.44 + return NULL; 1.45 + } 1.46 + 1.47 + return rvCC; 1.48 +} 1.49 + 1.50 +NSS_IMPLEMENT PRStatus 1.51 +NSSCryptoContext_Destroy ( 1.52 + NSSCryptoContext *cc 1.53 +) 1.54 +{ 1.55 + PRStatus status = PR_SUCCESS; 1.56 + PORT_Assert(cc->certStore); 1.57 + if (cc->certStore) { 1.58 + status = nssCertificateStore_Destroy(cc->certStore); 1.59 + if (status == PR_FAILURE) { 1.60 + return status; 1.61 + } 1.62 + } else { 1.63 + status = PR_FAILURE; 1.64 + } 1.65 + nssArena_Destroy(cc->arena); 1.66 + return status; 1.67 +} 1.68 + 1.69 +NSS_IMPLEMENT PRStatus 1.70 +NSSCryptoContext_SetDefaultCallback ( 1.71 + NSSCryptoContext *td, 1.72 + NSSCallback *newCallback, 1.73 + NSSCallback **oldCallbackOpt 1.74 +) 1.75 +{ 1.76 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.77 + return PR_FAILURE; 1.78 +} 1.79 + 1.80 +NSS_IMPLEMENT NSSCallback * 1.81 +NSSCryptoContext_GetDefaultCallback ( 1.82 + NSSCryptoContext *td, 1.83 + PRStatus *statusOpt 1.84 +) 1.85 +{ 1.86 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.87 + return NULL; 1.88 +} 1.89 + 1.90 +NSS_IMPLEMENT NSSTrustDomain * 1.91 +NSSCryptoContext_GetTrustDomain ( 1.92 + NSSCryptoContext *td 1.93 +) 1.94 +{ 1.95 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.96 + return NULL; 1.97 +} 1.98 + 1.99 + 1.100 +NSS_IMPLEMENT NSSCertificate * 1.101 +NSSCryptoContext_FindOrImportCertificate ( 1.102 + NSSCryptoContext *cc, 1.103 + NSSCertificate *c 1.104 +) 1.105 +{ 1.106 + NSSCertificate *rvCert = NULL; 1.107 + 1.108 + PORT_Assert(cc->certStore); 1.109 + if (!cc->certStore) { 1.110 + nss_SetError(NSS_ERROR_INVALID_ARGUMENT); 1.111 + return rvCert; 1.112 + } 1.113 + rvCert = nssCertificateStore_FindOrAdd(cc->certStore, c); 1.114 + if (rvCert == c && c->object.cryptoContext != cc) { 1.115 + PORT_Assert(!c->object.cryptoContext); 1.116 + c->object.cryptoContext = cc; 1.117 + } 1.118 + if (rvCert) { 1.119 + /* an NSSCertificate cannot be part of two crypto contexts 1.120 + ** simultaneously. If this assertion fails, then there is 1.121 + ** a serious Stan design flaw. 1.122 + */ 1.123 + PORT_Assert(cc == c->object.cryptoContext); 1.124 + } 1.125 + return rvCert; 1.126 +} 1.127 + 1.128 +NSS_IMPLEMENT NSSCertificate * 1.129 +NSSCryptoContext_ImportPKIXCertificate ( 1.130 + NSSCryptoContext *cc, 1.131 + struct NSSPKIXCertificateStr *pc 1.132 +) 1.133 +{ 1.134 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.135 + return NULL; 1.136 +} 1.137 + 1.138 +NSS_IMPLEMENT NSSCertificate * 1.139 +NSSCryptoContext_ImportEncodedCertificate ( 1.140 + NSSCryptoContext *cc, 1.141 + NSSBER *ber 1.142 +) 1.143 +{ 1.144 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.145 + return NULL; 1.146 +} 1.147 + 1.148 +NSS_IMPLEMENT PRStatus 1.149 +NSSCryptoContext_ImportEncodedPKIXCertificateChain ( 1.150 + NSSCryptoContext *cc, 1.151 + NSSBER *ber 1.152 +) 1.153 +{ 1.154 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.155 + return PR_FAILURE; 1.156 +} 1.157 + 1.158 +NSS_IMPLEMENT PRStatus 1.159 +nssCryptoContext_ImportTrust ( 1.160 + NSSCryptoContext *cc, 1.161 + NSSTrust *trust 1.162 +) 1.163 +{ 1.164 + PRStatus nssrv; 1.165 + PORT_Assert(cc->certStore); 1.166 + if (!cc->certStore) { 1.167 + return PR_FAILURE; 1.168 + } 1.169 + nssrv = nssCertificateStore_AddTrust(cc->certStore, trust); 1.170 +#if 0 1.171 + if (nssrv == PR_SUCCESS) { 1.172 + trust->object.cryptoContext = cc; 1.173 + } 1.174 +#endif 1.175 + return nssrv; 1.176 +} 1.177 + 1.178 +NSS_IMPLEMENT PRStatus 1.179 +nssCryptoContext_ImportSMIMEProfile ( 1.180 + NSSCryptoContext *cc, 1.181 + nssSMIMEProfile *profile 1.182 +) 1.183 +{ 1.184 + PRStatus nssrv; 1.185 + PORT_Assert(cc->certStore); 1.186 + if (!cc->certStore) { 1.187 + return PR_FAILURE; 1.188 + } 1.189 + nssrv = nssCertificateStore_AddSMIMEProfile(cc->certStore, profile); 1.190 +#if 0 1.191 + if (nssrv == PR_SUCCESS) { 1.192 + profile->object.cryptoContext = cc; 1.193 + } 1.194 +#endif 1.195 + return nssrv; 1.196 +} 1.197 + 1.198 +NSS_IMPLEMENT NSSCertificate * 1.199 +NSSCryptoContext_FindBestCertificateByNickname ( 1.200 + NSSCryptoContext *cc, 1.201 + const NSSUTF8 *name, 1.202 + NSSTime *timeOpt, /* NULL for "now" */ 1.203 + NSSUsage *usage, 1.204 + NSSPolicies *policiesOpt /* NULL for none */ 1.205 +) 1.206 +{ 1.207 + NSSCertificate **certs; 1.208 + NSSCertificate *rvCert = NULL; 1.209 + PORT_Assert(cc->certStore); 1.210 + if (!cc->certStore) { 1.211 + return NULL; 1.212 + } 1.213 + certs = nssCertificateStore_FindCertificatesByNickname(cc->certStore, 1.214 + name, 1.215 + NULL, 0, NULL); 1.216 + if (certs) { 1.217 + rvCert = nssCertificateArray_FindBestCertificate(certs, 1.218 + timeOpt, 1.219 + usage, 1.220 + policiesOpt); 1.221 + nssCertificateArray_Destroy(certs); 1.222 + } 1.223 + return rvCert; 1.224 +} 1.225 + 1.226 +NSS_IMPLEMENT NSSCertificate ** 1.227 +NSSCryptoContext_FindCertificatesByNickname ( 1.228 + NSSCryptoContext *cc, 1.229 + NSSUTF8 *name, 1.230 + NSSCertificate *rvOpt[], 1.231 + PRUint32 maximumOpt, /* 0 for no max */ 1.232 + NSSArena *arenaOpt 1.233 +) 1.234 +{ 1.235 + NSSCertificate **rvCerts; 1.236 + PORT_Assert(cc->certStore); 1.237 + if (!cc->certStore) { 1.238 + return NULL; 1.239 + } 1.240 + rvCerts = nssCertificateStore_FindCertificatesByNickname(cc->certStore, 1.241 + name, 1.242 + rvOpt, 1.243 + maximumOpt, 1.244 + arenaOpt); 1.245 + return rvCerts; 1.246 +} 1.247 + 1.248 +NSS_IMPLEMENT NSSCertificate * 1.249 +NSSCryptoContext_FindCertificateByIssuerAndSerialNumber ( 1.250 + NSSCryptoContext *cc, 1.251 + NSSDER *issuer, 1.252 + NSSDER *serialNumber 1.253 +) 1.254 +{ 1.255 + PORT_Assert(cc->certStore); 1.256 + if (!cc->certStore) { 1.257 + return NULL; 1.258 + } 1.259 + return nssCertificateStore_FindCertificateByIssuerAndSerialNumber( 1.260 + cc->certStore, 1.261 + issuer, 1.262 + serialNumber); 1.263 +} 1.264 + 1.265 +NSS_IMPLEMENT NSSCertificate * 1.266 +NSSCryptoContext_FindBestCertificateBySubject ( 1.267 + NSSCryptoContext *cc, 1.268 + NSSDER *subject, 1.269 + NSSTime *timeOpt, 1.270 + NSSUsage *usage, 1.271 + NSSPolicies *policiesOpt 1.272 +) 1.273 +{ 1.274 + NSSCertificate **certs; 1.275 + NSSCertificate *rvCert = NULL; 1.276 + PORT_Assert(cc->certStore); 1.277 + if (!cc->certStore) { 1.278 + return NULL; 1.279 + } 1.280 + certs = nssCertificateStore_FindCertificatesBySubject(cc->certStore, 1.281 + subject, 1.282 + NULL, 0, NULL); 1.283 + if (certs) { 1.284 + rvCert = nssCertificateArray_FindBestCertificate(certs, 1.285 + timeOpt, 1.286 + usage, 1.287 + policiesOpt); 1.288 + nssCertificateArray_Destroy(certs); 1.289 + } 1.290 + return rvCert; 1.291 +} 1.292 + 1.293 +NSS_IMPLEMENT NSSCertificate ** 1.294 +nssCryptoContext_FindCertificatesBySubject ( 1.295 + NSSCryptoContext *cc, 1.296 + NSSDER *subject, 1.297 + NSSCertificate *rvOpt[], 1.298 + PRUint32 maximumOpt, /* 0 for no max */ 1.299 + NSSArena *arenaOpt 1.300 +) 1.301 +{ 1.302 + NSSCertificate **rvCerts; 1.303 + PORT_Assert(cc->certStore); 1.304 + if (!cc->certStore) { 1.305 + return NULL; 1.306 + } 1.307 + rvCerts = nssCertificateStore_FindCertificatesBySubject(cc->certStore, 1.308 + subject, 1.309 + rvOpt, 1.310 + maximumOpt, 1.311 + arenaOpt); 1.312 + return rvCerts; 1.313 +} 1.314 + 1.315 +NSS_IMPLEMENT NSSCertificate ** 1.316 +NSSCryptoContext_FindCertificatesBySubject ( 1.317 + NSSCryptoContext *cc, 1.318 + NSSDER *subject, 1.319 + NSSCertificate *rvOpt[], 1.320 + PRUint32 maximumOpt, /* 0 for no max */ 1.321 + NSSArena *arenaOpt 1.322 +) 1.323 +{ 1.324 + return nssCryptoContext_FindCertificatesBySubject(cc, subject, 1.325 + rvOpt, maximumOpt, 1.326 + arenaOpt); 1.327 +} 1.328 + 1.329 +NSS_IMPLEMENT NSSCertificate * 1.330 +NSSCryptoContext_FindBestCertificateByNameComponents ( 1.331 + NSSCryptoContext *cc, 1.332 + NSSUTF8 *nameComponents, 1.333 + NSSTime *timeOpt, 1.334 + NSSUsage *usage, 1.335 + NSSPolicies *policiesOpt 1.336 +) 1.337 +{ 1.338 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.339 + return NULL; 1.340 +} 1.341 + 1.342 +NSS_IMPLEMENT NSSCertificate ** 1.343 +NSSCryptoContext_FindCertificatesByNameComponents ( 1.344 + NSSCryptoContext *cc, 1.345 + NSSUTF8 *nameComponents, 1.346 + NSSCertificate *rvOpt[], 1.347 + PRUint32 maximumOpt, /* 0 for no max */ 1.348 + NSSArena *arenaOpt 1.349 +) 1.350 +{ 1.351 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.352 + return NULL; 1.353 +} 1.354 + 1.355 +NSS_IMPLEMENT NSSCertificate * 1.356 +NSSCryptoContext_FindCertificateByEncodedCertificate ( 1.357 + NSSCryptoContext *cc, 1.358 + NSSBER *encodedCertificate 1.359 +) 1.360 +{ 1.361 + PORT_Assert(cc->certStore); 1.362 + if (!cc->certStore) { 1.363 + return NULL; 1.364 + } 1.365 + return nssCertificateStore_FindCertificateByEncodedCertificate( 1.366 + cc->certStore, 1.367 + encodedCertificate); 1.368 +} 1.369 + 1.370 +NSS_IMPLEMENT NSSCertificate * 1.371 +NSSCryptoContext_FindBestCertificateByEmail ( 1.372 + NSSCryptoContext *cc, 1.373 + NSSASCII7 *email, 1.374 + NSSTime *timeOpt, 1.375 + NSSUsage *usage, 1.376 + NSSPolicies *policiesOpt 1.377 +) 1.378 +{ 1.379 + NSSCertificate **certs; 1.380 + NSSCertificate *rvCert = NULL; 1.381 + 1.382 + PORT_Assert(cc->certStore); 1.383 + if (!cc->certStore) { 1.384 + return NULL; 1.385 + } 1.386 + certs = nssCertificateStore_FindCertificatesByEmail(cc->certStore, 1.387 + email, 1.388 + NULL, 0, NULL); 1.389 + if (certs) { 1.390 + rvCert = nssCertificateArray_FindBestCertificate(certs, 1.391 + timeOpt, 1.392 + usage, 1.393 + policiesOpt); 1.394 + nssCertificateArray_Destroy(certs); 1.395 + } 1.396 + return rvCert; 1.397 +} 1.398 + 1.399 +NSS_IMPLEMENT NSSCertificate ** 1.400 +NSSCryptoContext_FindCertificatesByEmail ( 1.401 + NSSCryptoContext *cc, 1.402 + NSSASCII7 *email, 1.403 + NSSCertificate *rvOpt[], 1.404 + PRUint32 maximumOpt, /* 0 for no max */ 1.405 + NSSArena *arenaOpt 1.406 +) 1.407 +{ 1.408 + NSSCertificate **rvCerts; 1.409 + PORT_Assert(cc->certStore); 1.410 + if (!cc->certStore) { 1.411 + return NULL; 1.412 + } 1.413 + rvCerts = nssCertificateStore_FindCertificatesByEmail(cc->certStore, 1.414 + email, 1.415 + rvOpt, 1.416 + maximumOpt, 1.417 + arenaOpt); 1.418 + return rvCerts; 1.419 +} 1.420 + 1.421 +NSS_IMPLEMENT NSSCertificate * 1.422 +NSSCryptoContext_FindCertificateByOCSPHash ( 1.423 + NSSCryptoContext *cc, 1.424 + NSSItem *hash 1.425 +) 1.426 +{ 1.427 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.428 + return NULL; 1.429 +} 1.430 + 1.431 +NSS_IMPLEMENT NSSCertificate * 1.432 +NSSCryptoContext_FindBestUserCertificate ( 1.433 + NSSCryptoContext *cc, 1.434 + NSSTime *timeOpt, 1.435 + NSSUsage *usage, 1.436 + NSSPolicies *policiesOpt 1.437 +) 1.438 +{ 1.439 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.440 + return NULL; 1.441 +} 1.442 + 1.443 +NSS_IMPLEMENT NSSCertificate ** 1.444 +NSSCryptoContext_FindUserCertificates ( 1.445 + NSSCryptoContext *cc, 1.446 + NSSTime *timeOpt, 1.447 + NSSUsage *usageOpt, 1.448 + NSSPolicies *policiesOpt, 1.449 + NSSCertificate **rvOpt, 1.450 + PRUint32 rvLimit, /* zero for no limit */ 1.451 + NSSArena *arenaOpt 1.452 +) 1.453 +{ 1.454 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.455 + return NULL; 1.456 +} 1.457 + 1.458 +NSS_IMPLEMENT NSSCertificate * 1.459 +NSSCryptoContext_FindBestUserCertificateForSSLClientAuth ( 1.460 + NSSCryptoContext *cc, 1.461 + NSSUTF8 *sslHostOpt, 1.462 + NSSDER *rootCAsOpt[], /* null pointer for none */ 1.463 + PRUint32 rootCAsMaxOpt, /* zero means list is null-terminated */ 1.464 + NSSAlgorithmAndParameters *apOpt, 1.465 + NSSPolicies *policiesOpt 1.466 +) 1.467 +{ 1.468 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.469 + return NULL; 1.470 +} 1.471 + 1.472 +NSS_IMPLEMENT NSSCertificate ** 1.473 +NSSCryptoContext_FindUserCertificatesForSSLClientAuth ( 1.474 + NSSCryptoContext *cc, 1.475 + NSSUTF8 *sslHostOpt, 1.476 + NSSDER *rootCAsOpt[], /* null pointer for none */ 1.477 + PRUint32 rootCAsMaxOpt, /* zero means list is null-terminated */ 1.478 + NSSAlgorithmAndParameters *apOpt, 1.479 + NSSPolicies *policiesOpt, 1.480 + NSSCertificate **rvOpt, 1.481 + PRUint32 rvLimit, /* zero for no limit */ 1.482 + NSSArena *arenaOpt 1.483 +) 1.484 +{ 1.485 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.486 + return NULL; 1.487 +} 1.488 + 1.489 +NSS_IMPLEMENT NSSCertificate * 1.490 +NSSCryptoContext_FindBestUserCertificateForEmailSigning ( 1.491 + NSSCryptoContext *cc, 1.492 + NSSASCII7 *signerOpt, 1.493 + NSSASCII7 *recipientOpt, 1.494 + /* anything more here? */ 1.495 + NSSAlgorithmAndParameters *apOpt, 1.496 + NSSPolicies *policiesOpt 1.497 +) 1.498 +{ 1.499 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.500 + return NULL; 1.501 +} 1.502 + 1.503 +NSS_IMPLEMENT NSSCertificate * 1.504 +NSSCryptoContext_FindUserCertificatesForEmailSigning ( 1.505 + NSSCryptoContext *cc, 1.506 + NSSASCII7 *signerOpt, /* fgmr or a more general name? */ 1.507 + NSSASCII7 *recipientOpt, 1.508 + /* anything more here? */ 1.509 + NSSAlgorithmAndParameters *apOpt, 1.510 + NSSPolicies *policiesOpt, 1.511 + NSSCertificate **rvOpt, 1.512 + PRUint32 rvLimit, /* zero for no limit */ 1.513 + NSSArena *arenaOpt 1.514 +) 1.515 +{ 1.516 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.517 + return NULL; 1.518 +} 1.519 + 1.520 +NSS_IMPLEMENT NSSTrust * 1.521 +nssCryptoContext_FindTrustForCertificate ( 1.522 + NSSCryptoContext *cc, 1.523 + NSSCertificate *cert 1.524 +) 1.525 +{ 1.526 + PORT_Assert(cc->certStore); 1.527 + if (!cc->certStore) { 1.528 + return NULL; 1.529 + } 1.530 + return nssCertificateStore_FindTrustForCertificate(cc->certStore, cert); 1.531 +} 1.532 + 1.533 +NSS_IMPLEMENT nssSMIMEProfile * 1.534 +nssCryptoContext_FindSMIMEProfileForCertificate ( 1.535 + NSSCryptoContext *cc, 1.536 + NSSCertificate *cert 1.537 +) 1.538 +{ 1.539 + PORT_Assert(cc->certStore); 1.540 + if (!cc->certStore) { 1.541 + return NULL; 1.542 + } 1.543 + return nssCertificateStore_FindSMIMEProfileForCertificate(cc->certStore, 1.544 + cert); 1.545 +} 1.546 + 1.547 +NSS_IMPLEMENT PRStatus 1.548 +NSSCryptoContext_GenerateKeyPair ( 1.549 + NSSCryptoContext *cc, 1.550 + NSSAlgorithmAndParameters *ap, 1.551 + NSSPrivateKey **pvkOpt, 1.552 + NSSPublicKey **pbkOpt, 1.553 + PRBool privateKeyIsSensitive, 1.554 + NSSToken *destination, 1.555 + NSSCallback *uhhOpt 1.556 +) 1.557 +{ 1.558 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.559 + return PR_FAILURE; 1.560 +} 1.561 + 1.562 +NSS_IMPLEMENT NSSSymmetricKey * 1.563 +NSSCryptoContext_GenerateSymmetricKey ( 1.564 + NSSCryptoContext *cc, 1.565 + NSSAlgorithmAndParameters *ap, 1.566 + PRUint32 keysize, 1.567 + NSSToken *destination, 1.568 + NSSCallback *uhhOpt 1.569 +) 1.570 +{ 1.571 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.572 + return NULL; 1.573 +} 1.574 + 1.575 +NSS_IMPLEMENT NSSSymmetricKey * 1.576 +NSSCryptoContext_GenerateSymmetricKeyFromPassword ( 1.577 + NSSCryptoContext *cc, 1.578 + NSSAlgorithmAndParameters *ap, 1.579 + NSSUTF8 *passwordOpt, /* if null, prompt */ 1.580 + NSSToken *destinationOpt, 1.581 + NSSCallback *uhhOpt 1.582 +) 1.583 +{ 1.584 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.585 + return NULL; 1.586 +} 1.587 + 1.588 +NSS_IMPLEMENT NSSSymmetricKey * 1.589 +NSSCryptoContext_FindSymmetricKeyByAlgorithmAndKeyID ( 1.590 + NSSCryptoContext *cc, 1.591 + NSSOID *algorithm, 1.592 + NSSItem *keyID, 1.593 + NSSCallback *uhhOpt 1.594 +) 1.595 +{ 1.596 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.597 + return NULL; 1.598 +} 1.599 + 1.600 +struct token_session_str { 1.601 + NSSToken *token; 1.602 + nssSession *session; 1.603 +}; 1.604 + 1.605 +NSS_IMPLEMENT NSSItem * 1.606 +NSSCryptoContext_Decrypt ( 1.607 + NSSCryptoContext *cc, 1.608 + NSSAlgorithmAndParameters *apOpt, 1.609 + NSSItem *encryptedData, 1.610 + NSSCallback *uhhOpt, 1.611 + NSSItem *rvOpt, 1.612 + NSSArena *arenaOpt 1.613 +) 1.614 +{ 1.615 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.616 + return NULL; 1.617 +} 1.618 + 1.619 +NSS_IMPLEMENT PRStatus 1.620 +NSSCryptoContext_BeginDecrypt ( 1.621 + NSSCryptoContext *cc, 1.622 + NSSAlgorithmAndParameters *apOpt, 1.623 + NSSCallback *uhhOpt 1.624 +) 1.625 +{ 1.626 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.627 + return PR_FAILURE; 1.628 +} 1.629 + 1.630 +NSS_IMPLEMENT NSSItem * 1.631 +NSSCryptoContext_ContinueDecrypt ( 1.632 + NSSCryptoContext *cc, 1.633 + NSSItem *data, 1.634 + NSSItem *rvOpt, 1.635 + NSSArena *arenaOpt 1.636 +) 1.637 +{ 1.638 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.639 + return NULL; 1.640 +} 1.641 + 1.642 +NSS_IMPLEMENT NSSItem * 1.643 +NSSCryptoContext_FinishDecrypt ( 1.644 + NSSCryptoContext *cc, 1.645 + NSSItem *rvOpt, 1.646 + NSSArena *arenaOpt 1.647 +) 1.648 +{ 1.649 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.650 + return NULL; 1.651 +} 1.652 + 1.653 +NSS_IMPLEMENT NSSItem * 1.654 +NSSCryptoContext_Sign ( 1.655 + NSSCryptoContext *cc, 1.656 + NSSAlgorithmAndParameters *apOpt, 1.657 + NSSItem *data, 1.658 + NSSCallback *uhhOpt, 1.659 + NSSItem *rvOpt, 1.660 + NSSArena *arenaOpt 1.661 +) 1.662 +{ 1.663 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.664 + return NULL; 1.665 +} 1.666 + 1.667 +NSS_IMPLEMENT PRStatus 1.668 +NSSCryptoContext_BeginSign ( 1.669 + NSSCryptoContext *cc, 1.670 + NSSAlgorithmAndParameters *apOpt, 1.671 + NSSCallback *uhhOpt 1.672 +) 1.673 +{ 1.674 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.675 + return PR_FAILURE; 1.676 +} 1.677 + 1.678 +NSS_IMPLEMENT PRStatus 1.679 +NSSCryptoContext_ContinueSign ( 1.680 + NSSCryptoContext *cc, 1.681 + NSSItem *data 1.682 +) 1.683 +{ 1.684 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.685 + return PR_FAILURE; 1.686 +} 1.687 + 1.688 +NSS_IMPLEMENT NSSItem * 1.689 +NSSCryptoContext_FinishSign ( 1.690 + NSSCryptoContext *cc, 1.691 + NSSItem *rvOpt, 1.692 + NSSArena *arenaOpt 1.693 +) 1.694 +{ 1.695 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.696 + return NULL; 1.697 +} 1.698 + 1.699 +NSS_IMPLEMENT NSSItem * 1.700 +NSSCryptoContext_SignRecover ( 1.701 + NSSCryptoContext *cc, 1.702 + NSSAlgorithmAndParameters *apOpt, 1.703 + NSSItem *data, 1.704 + NSSCallback *uhhOpt, 1.705 + NSSItem *rvOpt, 1.706 + NSSArena *arenaOpt 1.707 +) 1.708 +{ 1.709 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.710 + return NULL; 1.711 +} 1.712 + 1.713 +NSS_IMPLEMENT PRStatus 1.714 +NSSCryptoContext_BeginSignRecover ( 1.715 + NSSCryptoContext *cc, 1.716 + NSSAlgorithmAndParameters *apOpt, 1.717 + NSSCallback *uhhOpt 1.718 +) 1.719 +{ 1.720 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.721 + return PR_FAILURE; 1.722 +} 1.723 + 1.724 +NSS_IMPLEMENT NSSItem * 1.725 +NSSCryptoContext_ContinueSignRecover ( 1.726 + NSSCryptoContext *cc, 1.727 + NSSItem *data, 1.728 + NSSItem *rvOpt, 1.729 + NSSArena *arenaOpt 1.730 +) 1.731 +{ 1.732 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.733 + return NULL; 1.734 +} 1.735 + 1.736 +NSS_IMPLEMENT NSSItem * 1.737 +NSSCryptoContext_FinishSignRecover ( 1.738 + NSSCryptoContext *cc, 1.739 + NSSItem *rvOpt, 1.740 + NSSArena *arenaOpt 1.741 +) 1.742 +{ 1.743 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.744 + return NULL; 1.745 +} 1.746 + 1.747 +NSS_IMPLEMENT NSSSymmetricKey * 1.748 +NSSCryptoContext_UnwrapSymmetricKey ( 1.749 + NSSCryptoContext *cc, 1.750 + NSSAlgorithmAndParameters *apOpt, 1.751 + NSSItem *wrappedKey, 1.752 + NSSCallback *uhhOpt 1.753 +) 1.754 +{ 1.755 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.756 + return NULL; 1.757 +} 1.758 + 1.759 +NSS_IMPLEMENT NSSSymmetricKey * 1.760 +NSSCryptoContext_DeriveSymmetricKey ( 1.761 + NSSCryptoContext *cc, 1.762 + NSSPublicKey *bk, 1.763 + NSSAlgorithmAndParameters *apOpt, 1.764 + NSSOID *target, 1.765 + PRUint32 keySizeOpt, /* zero for best allowed */ 1.766 + NSSOperations operations, 1.767 + NSSCallback *uhhOpt 1.768 +) 1.769 +{ 1.770 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.771 + return NULL; 1.772 +} 1.773 + 1.774 +NSS_IMPLEMENT NSSItem * 1.775 +NSSCryptoContext_Encrypt ( 1.776 + NSSCryptoContext *cc, 1.777 + NSSAlgorithmAndParameters *apOpt, 1.778 + NSSItem *data, 1.779 + NSSCallback *uhhOpt, 1.780 + NSSItem *rvOpt, 1.781 + NSSArena *arenaOpt 1.782 +) 1.783 +{ 1.784 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.785 + return NULL; 1.786 +} 1.787 + 1.788 +NSS_IMPLEMENT PRStatus 1.789 +NSSCryptoContext_BeginEncrypt ( 1.790 + NSSCryptoContext *cc, 1.791 + NSSAlgorithmAndParameters *apOpt, 1.792 + NSSCallback *uhhOpt 1.793 +) 1.794 +{ 1.795 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.796 + return PR_FAILURE; 1.797 +} 1.798 + 1.799 +NSS_IMPLEMENT NSSItem * 1.800 +NSSCryptoContext_ContinueEncrypt ( 1.801 + NSSCryptoContext *cc, 1.802 + NSSItem *data, 1.803 + NSSItem *rvOpt, 1.804 + NSSArena *arenaOpt 1.805 +) 1.806 +{ 1.807 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.808 + return NULL; 1.809 +} 1.810 + 1.811 +NSS_IMPLEMENT NSSItem * 1.812 +NSSCryptoContext_FinishEncrypt ( 1.813 + NSSCryptoContext *cc, 1.814 + NSSItem *rvOpt, 1.815 + NSSArena *arenaOpt 1.816 +) 1.817 +{ 1.818 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.819 + return NULL; 1.820 +} 1.821 + 1.822 +NSS_IMPLEMENT PRStatus 1.823 +NSSCryptoContext_Verify ( 1.824 + NSSCryptoContext *cc, 1.825 + NSSAlgorithmAndParameters *apOpt, 1.826 + NSSItem *data, 1.827 + NSSItem *signature, 1.828 + NSSCallback *uhhOpt 1.829 +) 1.830 +{ 1.831 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.832 + return PR_FAILURE; 1.833 +} 1.834 + 1.835 +NSS_IMPLEMENT PRStatus 1.836 +NSSCryptoContext_BeginVerify ( 1.837 + NSSCryptoContext *cc, 1.838 + NSSAlgorithmAndParameters *apOpt, 1.839 + NSSItem *signature, 1.840 + NSSCallback *uhhOpt 1.841 +) 1.842 +{ 1.843 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.844 + return PR_FAILURE; 1.845 +} 1.846 + 1.847 +NSS_IMPLEMENT PRStatus 1.848 +NSSCryptoContext_ContinueVerify ( 1.849 + NSSCryptoContext *cc, 1.850 + NSSItem *data 1.851 +) 1.852 +{ 1.853 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.854 + return PR_FAILURE; 1.855 +} 1.856 + 1.857 +NSS_IMPLEMENT PRStatus 1.858 +NSSCryptoContext_FinishVerify ( 1.859 + NSSCryptoContext *cc 1.860 +) 1.861 +{ 1.862 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.863 + return PR_FAILURE; 1.864 +} 1.865 + 1.866 +NSS_IMPLEMENT NSSItem * 1.867 +NSSCryptoContext_VerifyRecover ( 1.868 + NSSCryptoContext *cc, 1.869 + NSSAlgorithmAndParameters *apOpt, 1.870 + NSSItem *signature, 1.871 + NSSCallback *uhhOpt, 1.872 + NSSItem *rvOpt, 1.873 + NSSArena *arenaOpt 1.874 +) 1.875 +{ 1.876 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.877 + return NULL; 1.878 +} 1.879 + 1.880 +NSS_IMPLEMENT PRStatus 1.881 +NSSCryptoContext_BeginVerifyRecover ( 1.882 + NSSCryptoContext *cc, 1.883 + NSSAlgorithmAndParameters *apOpt, 1.884 + NSSCallback *uhhOpt 1.885 +) 1.886 +{ 1.887 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.888 + return PR_FAILURE; 1.889 +} 1.890 + 1.891 +NSS_IMPLEMENT NSSItem * 1.892 +NSSCryptoContext_ContinueVerifyRecover ( 1.893 + NSSCryptoContext *cc, 1.894 + NSSItem *data, 1.895 + NSSItem *rvOpt, 1.896 + NSSArena *arenaOpt 1.897 +) 1.898 +{ 1.899 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.900 + return NULL; 1.901 +} 1.902 + 1.903 +NSS_IMPLEMENT NSSItem * 1.904 +NSSCryptoContext_FinishVerifyRecover ( 1.905 + NSSCryptoContext *cc, 1.906 + NSSItem *rvOpt, 1.907 + NSSArena *arenaOpt 1.908 +) 1.909 +{ 1.910 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.911 + return NULL; 1.912 +} 1.913 + 1.914 +NSS_IMPLEMENT NSSItem * 1.915 +NSSCryptoContext_WrapSymmetricKey ( 1.916 + NSSCryptoContext *cc, 1.917 + NSSAlgorithmAndParameters *apOpt, 1.918 + NSSSymmetricKey *keyToWrap, 1.919 + NSSCallback *uhhOpt, 1.920 + NSSItem *rvOpt, 1.921 + NSSArena *arenaOpt 1.922 +) 1.923 +{ 1.924 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.925 + return NULL; 1.926 +} 1.927 + 1.928 +NSS_IMPLEMENT NSSItem * 1.929 +NSSCryptoContext_Digest ( 1.930 + NSSCryptoContext *cc, 1.931 + NSSAlgorithmAndParameters *apOpt, 1.932 + NSSItem *data, 1.933 + NSSCallback *uhhOpt, 1.934 + NSSItem *rvOpt, 1.935 + NSSArena *arenaOpt 1.936 +) 1.937 +{ 1.938 + return nssToken_Digest(cc->token, cc->session, apOpt, 1.939 + data, rvOpt, arenaOpt); 1.940 +} 1.941 + 1.942 +NSS_IMPLEMENT PRStatus 1.943 +NSSCryptoContext_BeginDigest ( 1.944 + NSSCryptoContext *cc, 1.945 + NSSAlgorithmAndParameters *apOpt, 1.946 + NSSCallback *uhhOpt 1.947 +) 1.948 +{ 1.949 + return nssToken_BeginDigest(cc->token, cc->session, apOpt); 1.950 +} 1.951 + 1.952 +NSS_IMPLEMENT PRStatus 1.953 +NSSCryptoContext_ContinueDigest ( 1.954 + NSSCryptoContext *cc, 1.955 + NSSAlgorithmAndParameters *apOpt, 1.956 + NSSItem *item 1.957 +) 1.958 +{ 1.959 + /* 1.960 + NSSAlgorithmAndParameters *ap; 1.961 + ap = (apOpt) ? apOpt : cc->ap; 1.962 + */ 1.963 + /* why apOpt? can't change it at this point... */ 1.964 + return nssToken_ContinueDigest(cc->token, cc->session, item); 1.965 +} 1.966 + 1.967 +NSS_IMPLEMENT NSSItem * 1.968 +NSSCryptoContext_FinishDigest ( 1.969 + NSSCryptoContext *cc, 1.970 + NSSItem *rvOpt, 1.971 + NSSArena *arenaOpt 1.972 +) 1.973 +{ 1.974 + return nssToken_FinishDigest(cc->token, cc->session, rvOpt, arenaOpt); 1.975 +} 1.976 + 1.977 +NSS_IMPLEMENT NSSCryptoContext * 1.978 +NSSCryptoContext_Clone ( 1.979 + NSSCryptoContext *cc 1.980 +) 1.981 +{ 1.982 + nss_SetError(NSS_ERROR_NOT_FOUND); 1.983 + return NULL; 1.984 +} 1.985 +