Coverage Report

Created: 2025-07-01 06:26

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