security/nss/lib/pki/cryptocontext.c

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 /* This Source Code Form is subject to the terms of the Mozilla Public
     2  * License, v. 2.0. If a copy of the MPL was not distributed with this
     3  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     5 #ifndef DEV_H
     6 #include "dev.h"
     7 #endif /* DEV_H */
     9 #ifndef PKIM_H
    10 #include "pkim.h"
    11 #endif /* PKIM_H */
    13 #ifndef PKISTORE_H
    14 #include "pkistore.h"
    15 #endif /* PKISTORE_H */
    17 extern const NSSError NSS_ERROR_NOT_FOUND;
    18 extern const NSSError NSS_ERROR_INVALID_ARGUMENT;
    20 NSS_IMPLEMENT NSSCryptoContext *
    21 nssCryptoContext_Create (
    22   NSSTrustDomain *td,
    23   NSSCallback *uhhOpt
    24 )
    25 {
    26     NSSArena *arena;
    27     NSSCryptoContext *rvCC;
    28     arena = NSSArena_Create();
    29     if (!arena) {
    30 	return NULL;
    31     }
    32     rvCC = nss_ZNEW(arena, NSSCryptoContext);
    33     if (!rvCC) {
    34 	return NULL;
    35     }
    36     rvCC->td = td;
    37     rvCC->arena = arena;
    38     rvCC->certStore = nssCertificateStore_Create(rvCC->arena);
    39     if (!rvCC->certStore) {
    40 	nssArena_Destroy(arena);
    41 	return NULL;
    42     }
    44     return rvCC;
    45 }
    47 NSS_IMPLEMENT PRStatus
    48 NSSCryptoContext_Destroy (
    49   NSSCryptoContext *cc
    50 )
    51 {
    52     PRStatus status = PR_SUCCESS;
    53     PORT_Assert(cc->certStore);
    54     if (cc->certStore) {
    55 	status = nssCertificateStore_Destroy(cc->certStore);
    56 	if (status == PR_FAILURE) {
    57 	    return status;
    58 	}
    59     } else {
    60 	status = PR_FAILURE;
    61     }
    62     nssArena_Destroy(cc->arena);
    63     return status;
    64 }
    66 NSS_IMPLEMENT PRStatus
    67 NSSCryptoContext_SetDefaultCallback (
    68   NSSCryptoContext *td,
    69   NSSCallback *newCallback,
    70   NSSCallback **oldCallbackOpt
    71 )
    72 {
    73     nss_SetError(NSS_ERROR_NOT_FOUND);
    74     return PR_FAILURE;
    75 }
    77 NSS_IMPLEMENT NSSCallback *
    78 NSSCryptoContext_GetDefaultCallback (
    79   NSSCryptoContext *td,
    80   PRStatus *statusOpt
    81 )
    82 {
    83     nss_SetError(NSS_ERROR_NOT_FOUND);
    84     return NULL;
    85 }
    87 NSS_IMPLEMENT NSSTrustDomain *
    88 NSSCryptoContext_GetTrustDomain (
    89   NSSCryptoContext *td
    90 )
    91 {
    92     nss_SetError(NSS_ERROR_NOT_FOUND);
    93     return NULL;
    94 }
    97 NSS_IMPLEMENT NSSCertificate *
    98 NSSCryptoContext_FindOrImportCertificate (
    99   NSSCryptoContext *cc,
   100   NSSCertificate *c
   101 )
   102 {
   103     NSSCertificate *rvCert = NULL;
   105     PORT_Assert(cc->certStore);
   106     if (!cc->certStore) {
   107 	nss_SetError(NSS_ERROR_INVALID_ARGUMENT);
   108 	return rvCert;
   109     }
   110     rvCert = nssCertificateStore_FindOrAdd(cc->certStore, c);
   111     if (rvCert == c && c->object.cryptoContext != cc) {
   112 	PORT_Assert(!c->object.cryptoContext);
   113 	c->object.cryptoContext = cc;
   114     } 
   115     if (rvCert) {
   116 	/* an NSSCertificate cannot be part of two crypto contexts
   117 	** simultaneously.  If this assertion fails, then there is 
   118 	** a serious Stan design flaw.
   119 	*/
   120 	PORT_Assert(cc == c->object.cryptoContext);
   121     }
   122     return rvCert;
   123 }
   125 NSS_IMPLEMENT NSSCertificate *
   126 NSSCryptoContext_ImportPKIXCertificate (
   127   NSSCryptoContext *cc,
   128   struct NSSPKIXCertificateStr *pc
   129 )
   130 {
   131     nss_SetError(NSS_ERROR_NOT_FOUND);
   132     return NULL;
   133 }
   135 NSS_IMPLEMENT NSSCertificate *
   136 NSSCryptoContext_ImportEncodedCertificate (
   137   NSSCryptoContext *cc,
   138   NSSBER *ber
   139 )
   140 {
   141     nss_SetError(NSS_ERROR_NOT_FOUND);
   142     return NULL;
   143 }
   145 NSS_IMPLEMENT PRStatus
   146 NSSCryptoContext_ImportEncodedPKIXCertificateChain (
   147   NSSCryptoContext *cc,
   148   NSSBER *ber
   149 )
   150 {
   151     nss_SetError(NSS_ERROR_NOT_FOUND);
   152     return PR_FAILURE;
   153 }
   155 NSS_IMPLEMENT PRStatus
   156 nssCryptoContext_ImportTrust (
   157   NSSCryptoContext *cc,
   158   NSSTrust *trust
   159 )
   160 {
   161     PRStatus nssrv;
   162     PORT_Assert(cc->certStore);
   163     if (!cc->certStore) {
   164 	return PR_FAILURE;
   165     }
   166     nssrv = nssCertificateStore_AddTrust(cc->certStore, trust);
   167 #if 0
   168     if (nssrv == PR_SUCCESS) {
   169 	trust->object.cryptoContext = cc;
   170     }
   171 #endif
   172     return nssrv;
   173 }
   175 NSS_IMPLEMENT PRStatus
   176 nssCryptoContext_ImportSMIMEProfile (
   177   NSSCryptoContext *cc,
   178   nssSMIMEProfile *profile
   179 )
   180 {
   181     PRStatus nssrv;
   182     PORT_Assert(cc->certStore);
   183     if (!cc->certStore) {
   184 	return PR_FAILURE;
   185     }
   186     nssrv = nssCertificateStore_AddSMIMEProfile(cc->certStore, profile);
   187 #if 0
   188     if (nssrv == PR_SUCCESS) {
   189 	profile->object.cryptoContext = cc;
   190     }
   191 #endif
   192     return nssrv;
   193 }
   195 NSS_IMPLEMENT NSSCertificate *
   196 NSSCryptoContext_FindBestCertificateByNickname (
   197   NSSCryptoContext *cc,
   198   const NSSUTF8 *name,
   199   NSSTime *timeOpt, /* NULL for "now" */
   200   NSSUsage *usage,
   201   NSSPolicies *policiesOpt /* NULL for none */
   202 )
   203 {
   204     NSSCertificate **certs;
   205     NSSCertificate *rvCert = NULL;
   206     PORT_Assert(cc->certStore);
   207     if (!cc->certStore) {
   208 	return NULL;
   209     }
   210     certs = nssCertificateStore_FindCertificatesByNickname(cc->certStore,
   211                                                            name,
   212                                                            NULL, 0, NULL);
   213     if (certs) {
   214 	rvCert = nssCertificateArray_FindBestCertificate(certs,
   215 	                                                 timeOpt,
   216 	                                                 usage,
   217 	                                                 policiesOpt);
   218 	nssCertificateArray_Destroy(certs);
   219     }
   220     return rvCert;
   221 }
   223 NSS_IMPLEMENT NSSCertificate **
   224 NSSCryptoContext_FindCertificatesByNickname (
   225   NSSCryptoContext *cc,
   226   NSSUTF8 *name,
   227   NSSCertificate *rvOpt[],
   228   PRUint32 maximumOpt, /* 0 for no max */
   229   NSSArena *arenaOpt
   230 )
   231 {
   232     NSSCertificate **rvCerts;
   233     PORT_Assert(cc->certStore);
   234     if (!cc->certStore) {
   235 	return NULL;
   236     }
   237     rvCerts = nssCertificateStore_FindCertificatesByNickname(cc->certStore,
   238                                                              name,
   239                                                              rvOpt,
   240                                                              maximumOpt,
   241                                                              arenaOpt);
   242     return rvCerts;
   243 }
   245 NSS_IMPLEMENT NSSCertificate *
   246 NSSCryptoContext_FindCertificateByIssuerAndSerialNumber (
   247   NSSCryptoContext *cc,
   248   NSSDER *issuer,
   249   NSSDER *serialNumber
   250 )
   251 {
   252     PORT_Assert(cc->certStore);
   253     if (!cc->certStore) {
   254 	return NULL;
   255     }
   256     return nssCertificateStore_FindCertificateByIssuerAndSerialNumber(
   257                                                                cc->certStore,
   258                                                                issuer,
   259                                                                serialNumber);
   260 }
   262 NSS_IMPLEMENT NSSCertificate *
   263 NSSCryptoContext_FindBestCertificateBySubject (
   264   NSSCryptoContext *cc,
   265   NSSDER *subject,
   266   NSSTime *timeOpt,
   267   NSSUsage *usage,
   268   NSSPolicies *policiesOpt
   269 )
   270 {
   271     NSSCertificate **certs;
   272     NSSCertificate *rvCert = NULL;
   273     PORT_Assert(cc->certStore);
   274     if (!cc->certStore) {
   275 	return NULL;
   276     }
   277     certs = nssCertificateStore_FindCertificatesBySubject(cc->certStore,
   278                                                           subject,
   279                                                           NULL, 0, NULL);
   280     if (certs) {
   281 	rvCert = nssCertificateArray_FindBestCertificate(certs,
   282 	                                                 timeOpt,
   283 	                                                 usage,
   284 	                                                 policiesOpt);
   285 	nssCertificateArray_Destroy(certs);
   286     }
   287     return rvCert;
   288 }
   290 NSS_IMPLEMENT NSSCertificate **
   291 nssCryptoContext_FindCertificatesBySubject (
   292   NSSCryptoContext *cc,
   293   NSSDER *subject,
   294   NSSCertificate *rvOpt[],
   295   PRUint32 maximumOpt, /* 0 for no max */
   296   NSSArena *arenaOpt
   297 )
   298 {
   299     NSSCertificate **rvCerts;
   300     PORT_Assert(cc->certStore);
   301     if (!cc->certStore) {
   302 	return NULL;
   303     }
   304     rvCerts = nssCertificateStore_FindCertificatesBySubject(cc->certStore,
   305                                                             subject,
   306                                                             rvOpt,
   307                                                             maximumOpt,
   308                                                             arenaOpt);
   309     return rvCerts;
   310 }
   312 NSS_IMPLEMENT NSSCertificate **
   313 NSSCryptoContext_FindCertificatesBySubject (
   314   NSSCryptoContext *cc,
   315   NSSDER *subject,
   316   NSSCertificate *rvOpt[],
   317   PRUint32 maximumOpt, /* 0 for no max */
   318   NSSArena *arenaOpt
   319 )
   320 {
   321     return nssCryptoContext_FindCertificatesBySubject(cc, subject,
   322                                                       rvOpt, maximumOpt,
   323                                                       arenaOpt);
   324 }
   326 NSS_IMPLEMENT NSSCertificate *
   327 NSSCryptoContext_FindBestCertificateByNameComponents (
   328   NSSCryptoContext *cc,
   329   NSSUTF8 *nameComponents,
   330   NSSTime *timeOpt,
   331   NSSUsage *usage,
   332   NSSPolicies *policiesOpt
   333 )
   334 {
   335     nss_SetError(NSS_ERROR_NOT_FOUND);
   336     return NULL;
   337 }
   339 NSS_IMPLEMENT NSSCertificate **
   340 NSSCryptoContext_FindCertificatesByNameComponents (
   341   NSSCryptoContext *cc,
   342   NSSUTF8 *nameComponents,
   343   NSSCertificate *rvOpt[],
   344   PRUint32 maximumOpt, /* 0 for no max */
   345   NSSArena *arenaOpt
   346 )
   347 {
   348     nss_SetError(NSS_ERROR_NOT_FOUND);
   349     return NULL;
   350 }
   352 NSS_IMPLEMENT NSSCertificate *
   353 NSSCryptoContext_FindCertificateByEncodedCertificate (
   354   NSSCryptoContext *cc,
   355   NSSBER *encodedCertificate
   356 )
   357 {
   358     PORT_Assert(cc->certStore);
   359     if (!cc->certStore) {
   360 	return NULL;
   361     }
   362     return nssCertificateStore_FindCertificateByEncodedCertificate(
   363                                                            cc->certStore,
   364                                                            encodedCertificate);
   365 }
   367 NSS_IMPLEMENT NSSCertificate *
   368 NSSCryptoContext_FindBestCertificateByEmail (
   369   NSSCryptoContext *cc,
   370   NSSASCII7 *email,
   371   NSSTime *timeOpt,
   372   NSSUsage *usage,
   373   NSSPolicies *policiesOpt
   374 )
   375 {
   376     NSSCertificate **certs;
   377     NSSCertificate *rvCert = NULL;
   379     PORT_Assert(cc->certStore);
   380     if (!cc->certStore) {
   381 	return NULL;
   382     }
   383     certs = nssCertificateStore_FindCertificatesByEmail(cc->certStore,
   384                                                         email,
   385                                                         NULL, 0, NULL);
   386     if (certs) {
   387 	rvCert = nssCertificateArray_FindBestCertificate(certs,
   388 	                                                 timeOpt,
   389 	                                                 usage,
   390 	                                                 policiesOpt);
   391 	nssCertificateArray_Destroy(certs);
   392     }
   393     return rvCert;
   394 }
   396 NSS_IMPLEMENT NSSCertificate **
   397 NSSCryptoContext_FindCertificatesByEmail (
   398   NSSCryptoContext *cc,
   399   NSSASCII7 *email,
   400   NSSCertificate *rvOpt[],
   401   PRUint32 maximumOpt, /* 0 for no max */
   402   NSSArena *arenaOpt
   403 )
   404 {
   405     NSSCertificate **rvCerts;
   406     PORT_Assert(cc->certStore);
   407     if (!cc->certStore) {
   408 	return NULL;
   409     }
   410     rvCerts = nssCertificateStore_FindCertificatesByEmail(cc->certStore,
   411                                                           email,
   412                                                           rvOpt,
   413                                                           maximumOpt,
   414                                                           arenaOpt);
   415     return rvCerts;
   416 }
   418 NSS_IMPLEMENT NSSCertificate *
   419 NSSCryptoContext_FindCertificateByOCSPHash (
   420   NSSCryptoContext *cc,
   421   NSSItem *hash
   422 )
   423 {
   424     nss_SetError(NSS_ERROR_NOT_FOUND);
   425     return NULL;
   426 }
   428 NSS_IMPLEMENT NSSCertificate *
   429 NSSCryptoContext_FindBestUserCertificate (
   430   NSSCryptoContext *cc,
   431   NSSTime *timeOpt,
   432   NSSUsage *usage,
   433   NSSPolicies *policiesOpt
   434 )
   435 {
   436     nss_SetError(NSS_ERROR_NOT_FOUND);
   437     return NULL;
   438 }
   440 NSS_IMPLEMENT NSSCertificate **
   441 NSSCryptoContext_FindUserCertificates (
   442   NSSCryptoContext *cc,
   443   NSSTime *timeOpt,
   444   NSSUsage *usageOpt,
   445   NSSPolicies *policiesOpt,
   446   NSSCertificate **rvOpt,
   447   PRUint32 rvLimit, /* zero for no limit */
   448   NSSArena *arenaOpt
   449 )
   450 {
   451     nss_SetError(NSS_ERROR_NOT_FOUND);
   452     return NULL;
   453 }
   455 NSS_IMPLEMENT NSSCertificate *
   456 NSSCryptoContext_FindBestUserCertificateForSSLClientAuth (
   457   NSSCryptoContext *cc,
   458   NSSUTF8 *sslHostOpt,
   459   NSSDER *rootCAsOpt[], /* null pointer for none */
   460   PRUint32 rootCAsMaxOpt, /* zero means list is null-terminated */
   461   NSSAlgorithmAndParameters *apOpt,
   462   NSSPolicies *policiesOpt
   463 )
   464 {
   465     nss_SetError(NSS_ERROR_NOT_FOUND);
   466     return NULL;
   467 }
   469 NSS_IMPLEMENT NSSCertificate **
   470 NSSCryptoContext_FindUserCertificatesForSSLClientAuth (
   471   NSSCryptoContext *cc,
   472   NSSUTF8 *sslHostOpt,
   473   NSSDER *rootCAsOpt[], /* null pointer for none */
   474   PRUint32 rootCAsMaxOpt, /* zero means list is null-terminated */
   475   NSSAlgorithmAndParameters *apOpt,
   476   NSSPolicies *policiesOpt,
   477   NSSCertificate **rvOpt,
   478   PRUint32 rvLimit, /* zero for no limit */
   479   NSSArena *arenaOpt
   480 )
   481 {
   482     nss_SetError(NSS_ERROR_NOT_FOUND);
   483     return NULL;
   484 }
   486 NSS_IMPLEMENT NSSCertificate *
   487 NSSCryptoContext_FindBestUserCertificateForEmailSigning (
   488   NSSCryptoContext *cc,
   489   NSSASCII7 *signerOpt,
   490   NSSASCII7 *recipientOpt,
   491   /* anything more here? */
   492   NSSAlgorithmAndParameters *apOpt,
   493   NSSPolicies *policiesOpt
   494 )
   495 {
   496     nss_SetError(NSS_ERROR_NOT_FOUND);
   497     return NULL;
   498 }
   500 NSS_IMPLEMENT NSSCertificate *
   501 NSSCryptoContext_FindUserCertificatesForEmailSigning (
   502   NSSCryptoContext *cc,
   503   NSSASCII7 *signerOpt, /* fgmr or a more general name? */
   504   NSSASCII7 *recipientOpt,
   505   /* anything more here? */
   506   NSSAlgorithmAndParameters *apOpt,
   507   NSSPolicies *policiesOpt,
   508   NSSCertificate **rvOpt,
   509   PRUint32 rvLimit, /* zero for no limit */
   510   NSSArena *arenaOpt
   511 )
   512 {
   513     nss_SetError(NSS_ERROR_NOT_FOUND);
   514     return NULL;
   515 }
   517 NSS_IMPLEMENT NSSTrust *
   518 nssCryptoContext_FindTrustForCertificate (
   519   NSSCryptoContext *cc,
   520   NSSCertificate *cert
   521 )
   522 {
   523     PORT_Assert(cc->certStore);
   524     if (!cc->certStore) {
   525 	return NULL;
   526     }
   527     return nssCertificateStore_FindTrustForCertificate(cc->certStore, cert);
   528 }
   530 NSS_IMPLEMENT nssSMIMEProfile *
   531 nssCryptoContext_FindSMIMEProfileForCertificate (
   532   NSSCryptoContext *cc,
   533   NSSCertificate *cert
   534 )
   535 {
   536     PORT_Assert(cc->certStore);
   537     if (!cc->certStore) {
   538 	return NULL;
   539     }
   540     return nssCertificateStore_FindSMIMEProfileForCertificate(cc->certStore, 
   541                                                               cert);
   542 }
   544 NSS_IMPLEMENT PRStatus
   545 NSSCryptoContext_GenerateKeyPair (
   546   NSSCryptoContext *cc,
   547   NSSAlgorithmAndParameters *ap,
   548   NSSPrivateKey **pvkOpt,
   549   NSSPublicKey **pbkOpt,
   550   PRBool privateKeyIsSensitive,
   551   NSSToken *destination,
   552   NSSCallback *uhhOpt
   553 )
   554 {
   555     nss_SetError(NSS_ERROR_NOT_FOUND);
   556     return PR_FAILURE;
   557 }
   559 NSS_IMPLEMENT NSSSymmetricKey *
   560 NSSCryptoContext_GenerateSymmetricKey (
   561   NSSCryptoContext *cc,
   562   NSSAlgorithmAndParameters *ap,
   563   PRUint32 keysize,
   564   NSSToken *destination,
   565   NSSCallback *uhhOpt
   566 )
   567 {
   568     nss_SetError(NSS_ERROR_NOT_FOUND);
   569     return NULL;
   570 }
   572 NSS_IMPLEMENT NSSSymmetricKey *
   573 NSSCryptoContext_GenerateSymmetricKeyFromPassword (
   574   NSSCryptoContext *cc,
   575   NSSAlgorithmAndParameters *ap,
   576   NSSUTF8 *passwordOpt, /* if null, prompt */
   577   NSSToken *destinationOpt,
   578   NSSCallback *uhhOpt
   579 )
   580 {
   581     nss_SetError(NSS_ERROR_NOT_FOUND);
   582     return NULL;
   583 }
   585 NSS_IMPLEMENT NSSSymmetricKey *
   586 NSSCryptoContext_FindSymmetricKeyByAlgorithmAndKeyID (
   587   NSSCryptoContext *cc,
   588   NSSOID *algorithm,
   589   NSSItem *keyID,
   590   NSSCallback *uhhOpt
   591 )
   592 {
   593     nss_SetError(NSS_ERROR_NOT_FOUND);
   594     return NULL;
   595 }
   597 struct token_session_str {
   598     NSSToken *token;
   599     nssSession *session;
   600 };
   602 NSS_IMPLEMENT NSSItem *
   603 NSSCryptoContext_Decrypt (
   604   NSSCryptoContext *cc,
   605   NSSAlgorithmAndParameters *apOpt,
   606   NSSItem *encryptedData,
   607   NSSCallback *uhhOpt,
   608   NSSItem *rvOpt,
   609   NSSArena *arenaOpt
   610 )
   611 {
   612     nss_SetError(NSS_ERROR_NOT_FOUND);
   613     return NULL;
   614 }
   616 NSS_IMPLEMENT PRStatus
   617 NSSCryptoContext_BeginDecrypt (
   618   NSSCryptoContext *cc,
   619   NSSAlgorithmAndParameters *apOpt,
   620   NSSCallback *uhhOpt
   621 )
   622 {
   623     nss_SetError(NSS_ERROR_NOT_FOUND);
   624     return PR_FAILURE;
   625 }
   627 NSS_IMPLEMENT NSSItem *
   628 NSSCryptoContext_ContinueDecrypt (
   629   NSSCryptoContext *cc,
   630   NSSItem *data,
   631   NSSItem *rvOpt,
   632   NSSArena *arenaOpt
   633 )
   634 {
   635     nss_SetError(NSS_ERROR_NOT_FOUND);
   636     return NULL;
   637 }
   639 NSS_IMPLEMENT NSSItem *
   640 NSSCryptoContext_FinishDecrypt (
   641   NSSCryptoContext *cc,
   642   NSSItem *rvOpt,
   643   NSSArena *arenaOpt
   644 )
   645 {
   646     nss_SetError(NSS_ERROR_NOT_FOUND);
   647     return NULL;
   648 }
   650 NSS_IMPLEMENT NSSItem *
   651 NSSCryptoContext_Sign (
   652   NSSCryptoContext *cc,
   653   NSSAlgorithmAndParameters *apOpt,
   654   NSSItem *data,
   655   NSSCallback *uhhOpt,
   656   NSSItem *rvOpt,
   657   NSSArena *arenaOpt
   658 )
   659 {
   660     nss_SetError(NSS_ERROR_NOT_FOUND);
   661     return NULL;
   662 }
   664 NSS_IMPLEMENT PRStatus
   665 NSSCryptoContext_BeginSign (
   666   NSSCryptoContext *cc,
   667   NSSAlgorithmAndParameters *apOpt,
   668   NSSCallback *uhhOpt
   669 )
   670 {
   671     nss_SetError(NSS_ERROR_NOT_FOUND);
   672     return PR_FAILURE;
   673 }
   675 NSS_IMPLEMENT PRStatus
   676 NSSCryptoContext_ContinueSign (
   677   NSSCryptoContext *cc,
   678   NSSItem *data
   679 )
   680 {
   681     nss_SetError(NSS_ERROR_NOT_FOUND);
   682     return PR_FAILURE;
   683 }
   685 NSS_IMPLEMENT NSSItem *
   686 NSSCryptoContext_FinishSign (
   687   NSSCryptoContext *cc,
   688   NSSItem *rvOpt,
   689   NSSArena *arenaOpt
   690 )
   691 {
   692     nss_SetError(NSS_ERROR_NOT_FOUND);
   693     return NULL;
   694 }
   696 NSS_IMPLEMENT NSSItem *
   697 NSSCryptoContext_SignRecover (
   698   NSSCryptoContext *cc,
   699   NSSAlgorithmAndParameters *apOpt,
   700   NSSItem *data,
   701   NSSCallback *uhhOpt,
   702   NSSItem *rvOpt,
   703   NSSArena *arenaOpt
   704 )
   705 {
   706     nss_SetError(NSS_ERROR_NOT_FOUND);
   707     return NULL;
   708 }
   710 NSS_IMPLEMENT PRStatus
   711 NSSCryptoContext_BeginSignRecover (
   712   NSSCryptoContext *cc,
   713   NSSAlgorithmAndParameters *apOpt,
   714   NSSCallback *uhhOpt
   715 )
   716 {
   717     nss_SetError(NSS_ERROR_NOT_FOUND);
   718     return PR_FAILURE;
   719 }
   721 NSS_IMPLEMENT NSSItem *
   722 NSSCryptoContext_ContinueSignRecover (
   723   NSSCryptoContext *cc,
   724   NSSItem *data,
   725   NSSItem *rvOpt,
   726   NSSArena *arenaOpt
   727 )
   728 {
   729     nss_SetError(NSS_ERROR_NOT_FOUND);
   730     return NULL;
   731 }
   733 NSS_IMPLEMENT NSSItem *
   734 NSSCryptoContext_FinishSignRecover (
   735   NSSCryptoContext *cc,
   736   NSSItem *rvOpt,
   737   NSSArena *arenaOpt
   738 )
   739 {
   740     nss_SetError(NSS_ERROR_NOT_FOUND);
   741     return NULL;
   742 }
   744 NSS_IMPLEMENT NSSSymmetricKey *
   745 NSSCryptoContext_UnwrapSymmetricKey (
   746   NSSCryptoContext *cc,
   747   NSSAlgorithmAndParameters *apOpt,
   748   NSSItem *wrappedKey,
   749   NSSCallback *uhhOpt
   750 )
   751 {
   752     nss_SetError(NSS_ERROR_NOT_FOUND);
   753     return NULL;
   754 }
   756 NSS_IMPLEMENT NSSSymmetricKey *
   757 NSSCryptoContext_DeriveSymmetricKey (
   758   NSSCryptoContext *cc,
   759   NSSPublicKey *bk,
   760   NSSAlgorithmAndParameters *apOpt,
   761   NSSOID *target,
   762   PRUint32 keySizeOpt, /* zero for best allowed */
   763   NSSOperations operations,
   764   NSSCallback *uhhOpt
   765 )
   766 {
   767     nss_SetError(NSS_ERROR_NOT_FOUND);
   768     return NULL;
   769 }
   771 NSS_IMPLEMENT NSSItem *
   772 NSSCryptoContext_Encrypt (
   773   NSSCryptoContext *cc,
   774   NSSAlgorithmAndParameters *apOpt,
   775   NSSItem *data,
   776   NSSCallback *uhhOpt,
   777   NSSItem *rvOpt,
   778   NSSArena *arenaOpt
   779 )
   780 {
   781     nss_SetError(NSS_ERROR_NOT_FOUND);
   782     return NULL;
   783 }
   785 NSS_IMPLEMENT PRStatus
   786 NSSCryptoContext_BeginEncrypt (
   787   NSSCryptoContext *cc,
   788   NSSAlgorithmAndParameters *apOpt,
   789   NSSCallback *uhhOpt
   790 )
   791 {
   792     nss_SetError(NSS_ERROR_NOT_FOUND);
   793     return PR_FAILURE;
   794 }
   796 NSS_IMPLEMENT NSSItem *
   797 NSSCryptoContext_ContinueEncrypt (
   798   NSSCryptoContext *cc,
   799   NSSItem *data,
   800   NSSItem *rvOpt,
   801   NSSArena *arenaOpt
   802 )
   803 {
   804     nss_SetError(NSS_ERROR_NOT_FOUND);
   805     return NULL;
   806 }
   808 NSS_IMPLEMENT NSSItem *
   809 NSSCryptoContext_FinishEncrypt (
   810   NSSCryptoContext *cc,
   811   NSSItem *rvOpt,
   812   NSSArena *arenaOpt
   813 )
   814 {
   815     nss_SetError(NSS_ERROR_NOT_FOUND);
   816     return NULL;
   817 }
   819 NSS_IMPLEMENT PRStatus
   820 NSSCryptoContext_Verify (
   821   NSSCryptoContext *cc,
   822   NSSAlgorithmAndParameters *apOpt,
   823   NSSItem *data,
   824   NSSItem *signature,
   825   NSSCallback *uhhOpt
   826 )
   827 {
   828     nss_SetError(NSS_ERROR_NOT_FOUND);
   829     return PR_FAILURE;
   830 }
   832 NSS_IMPLEMENT PRStatus
   833 NSSCryptoContext_BeginVerify (
   834   NSSCryptoContext *cc,
   835   NSSAlgorithmAndParameters *apOpt,
   836   NSSItem *signature,
   837   NSSCallback *uhhOpt
   838 )
   839 {
   840     nss_SetError(NSS_ERROR_NOT_FOUND);
   841     return PR_FAILURE;
   842 }
   844 NSS_IMPLEMENT PRStatus
   845 NSSCryptoContext_ContinueVerify (
   846   NSSCryptoContext *cc,
   847   NSSItem *data
   848 )
   849 {
   850     nss_SetError(NSS_ERROR_NOT_FOUND);
   851     return PR_FAILURE;
   852 }
   854 NSS_IMPLEMENT PRStatus
   855 NSSCryptoContext_FinishVerify (
   856   NSSCryptoContext *cc
   857 )
   858 {
   859     nss_SetError(NSS_ERROR_NOT_FOUND);
   860     return PR_FAILURE;
   861 }
   863 NSS_IMPLEMENT NSSItem *
   864 NSSCryptoContext_VerifyRecover (
   865   NSSCryptoContext *cc,
   866   NSSAlgorithmAndParameters *apOpt,
   867   NSSItem *signature,
   868   NSSCallback *uhhOpt,
   869   NSSItem *rvOpt,
   870   NSSArena *arenaOpt
   871 )
   872 {
   873     nss_SetError(NSS_ERROR_NOT_FOUND);
   874     return NULL;
   875 }
   877 NSS_IMPLEMENT PRStatus
   878 NSSCryptoContext_BeginVerifyRecover (
   879   NSSCryptoContext *cc,
   880   NSSAlgorithmAndParameters *apOpt,
   881   NSSCallback *uhhOpt
   882 )
   883 {
   884     nss_SetError(NSS_ERROR_NOT_FOUND);
   885     return PR_FAILURE;
   886 }
   888 NSS_IMPLEMENT NSSItem *
   889 NSSCryptoContext_ContinueVerifyRecover (
   890   NSSCryptoContext *cc,
   891   NSSItem *data,
   892   NSSItem *rvOpt,
   893   NSSArena *arenaOpt
   894 )
   895 {
   896     nss_SetError(NSS_ERROR_NOT_FOUND);
   897     return NULL;
   898 }
   900 NSS_IMPLEMENT NSSItem *
   901 NSSCryptoContext_FinishVerifyRecover (
   902   NSSCryptoContext *cc,
   903   NSSItem *rvOpt,
   904   NSSArena *arenaOpt
   905 )
   906 {
   907     nss_SetError(NSS_ERROR_NOT_FOUND);
   908     return NULL;
   909 }
   911 NSS_IMPLEMENT NSSItem *
   912 NSSCryptoContext_WrapSymmetricKey (
   913   NSSCryptoContext *cc,
   914   NSSAlgorithmAndParameters *apOpt,
   915   NSSSymmetricKey *keyToWrap,
   916   NSSCallback *uhhOpt,
   917   NSSItem *rvOpt,
   918   NSSArena *arenaOpt
   919 )
   920 {
   921     nss_SetError(NSS_ERROR_NOT_FOUND);
   922     return NULL;
   923 }
   925 NSS_IMPLEMENT NSSItem *
   926 NSSCryptoContext_Digest (
   927   NSSCryptoContext *cc,
   928   NSSAlgorithmAndParameters *apOpt,
   929   NSSItem *data,
   930   NSSCallback *uhhOpt,
   931   NSSItem *rvOpt,
   932   NSSArena *arenaOpt
   933 )
   934 {
   935     return nssToken_Digest(cc->token, cc->session, apOpt, 
   936                            data, rvOpt, arenaOpt);
   937 }
   939 NSS_IMPLEMENT PRStatus
   940 NSSCryptoContext_BeginDigest (
   941   NSSCryptoContext *cc,
   942   NSSAlgorithmAndParameters *apOpt,
   943   NSSCallback *uhhOpt
   944 )
   945 {
   946     return nssToken_BeginDigest(cc->token, cc->session, apOpt);
   947 }
   949 NSS_IMPLEMENT PRStatus
   950 NSSCryptoContext_ContinueDigest (
   951   NSSCryptoContext *cc,
   952   NSSAlgorithmAndParameters *apOpt,
   953   NSSItem *item
   954 )
   955 {
   956 	/*
   957     NSSAlgorithmAndParameters *ap;
   958     ap = (apOpt) ? apOpt : cc->ap;
   959     */
   960 	/* why apOpt?  can't change it at this point... */
   961     return nssToken_ContinueDigest(cc->token, cc->session, item);
   962 }
   964 NSS_IMPLEMENT NSSItem *
   965 NSSCryptoContext_FinishDigest (
   966   NSSCryptoContext *cc,
   967   NSSItem *rvOpt,
   968   NSSArena *arenaOpt
   969 )
   970 {
   971     return nssToken_FinishDigest(cc->token, cc->session, rvOpt, arenaOpt);
   972 }
   974 NSS_IMPLEMENT NSSCryptoContext *
   975 NSSCryptoContext_Clone (
   976   NSSCryptoContext *cc
   977 )
   978 {
   979     nss_SetError(NSS_ERROR_NOT_FOUND);
   980     return NULL;
   981 }

mercurial