lib/certdb/genname.c
author Kai Engert <kaie@kuix.de>
Wed, 05 Apr 2017 22:47:53 +0200 (2017-04-05)
changeset 13286 1feb89a254de8d4ecd669b2c7bf80ff26784aadf
parent 13264 f52feaa506006947b546dde5b954b59aae1bad98
child 16545 023f640c52040ff02bdd3c44df2b5ae927fa9e4f
permissions -rw-r--r--
Bug 1352064, certutil --extNC includes an explicit encoding for minimum value zero, r=rrelyea
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
10313
008b1ff2736b6eb1af210a57c0bb84c2a58e8547 Bug 716563 - update license to MPL 2. r=rrelyea.
gerv%gerv.net
parents: 10193
diff changeset
     1
/* This Source Code Form is subject to the terms of the Mozilla Public
008b1ff2736b6eb1af210a57c0bb84c2a58e8547 Bug 716563 - update license to MPL 2. r=rrelyea.
gerv%gerv.net
parents: 10193
diff changeset
     2
 * License, v. 2.0. If a copy of the MPL was not distributed with this
008b1ff2736b6eb1af210a57c0bb84c2a58e8547 Bug 716563 - update license to MPL 2. r=rrelyea.
gerv%gerv.net
parents: 10193
diff changeset
     3
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
     4
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
     5
#include "plarena.h"
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
     6
#include "seccomon.h"
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
     7
#include "secitem.h"
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
     8
#include "secoidt.h"
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
     9
#include "secasn1.h"
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    10
#include "secder.h"
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    11
#include "certt.h"
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    12
#include "cert.h"
9647
109429a93218ac5f06fa59d323ba415a09f55a67 Bug 394919 - dNSName constraints should constrain cert Common Names in EE
nelson%bolyard.com
parents: 8860
diff changeset
    13
#include "certi.h"
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    14
#include "xconst.h"
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    15
#include "secerr.h"
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    16
#include "secoid.h"
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    17
#include "prprf.h"
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    18
#include "genname.h"
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    19
8391
fc0e7cab2c9e6e75a474a1b01144dc66be20ac8f Fix for bug 291384 . Remove unnecessary semicolons in SEC_ASN1_MKSUB . r=nelson
julien.pierre.boogz%sun.com
parents: 8139
diff changeset
    20
SEC_ASN1_MKSUB(SEC_AnyTemplate)
fc0e7cab2c9e6e75a474a1b01144dc66be20ac8f Fix for bug 291384 . Remove unnecessary semicolons in SEC_ASN1_MKSUB . r=nelson
julien.pierre.boogz%sun.com
parents: 8139
diff changeset
    21
SEC_ASN1_MKSUB(SEC_IntegerTemplate)
fc0e7cab2c9e6e75a474a1b01144dc66be20ac8f Fix for bug 291384 . Remove unnecessary semicolons in SEC_ASN1_MKSUB . r=nelson
julien.pierre.boogz%sun.com
parents: 8139
diff changeset
    22
SEC_ASN1_MKSUB(SEC_IA5StringTemplate)
fc0e7cab2c9e6e75a474a1b01144dc66be20ac8f Fix for bug 291384 . Remove unnecessary semicolons in SEC_ASN1_MKSUB . r=nelson
julien.pierre.boogz%sun.com
parents: 8139
diff changeset
    23
SEC_ASN1_MKSUB(SEC_ObjectIDTemplate)
fc0e7cab2c9e6e75a474a1b01144dc66be20ac8f Fix for bug 291384 . Remove unnecessary semicolons in SEC_ASN1_MKSUB . r=nelson
julien.pierre.boogz%sun.com
parents: 8139
diff changeset
    24
SEC_ASN1_MKSUB(SEC_OctetStringTemplate)
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    25
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    26
static const SEC_ASN1Template CERTNameConstraintTemplate[] = {
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    27
    { SEC_ASN1_SEQUENCE, 0, NULL, sizeof(CERTNameConstraint) },
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    28
    { SEC_ASN1_ANY, offsetof(CERTNameConstraint, DERName) },
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
    29
    { SEC_ASN1_OPTIONAL | SEC_ASN1_CONTEXT_SPECIFIC | SEC_ASN1_XTRN | 0,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
    30
      offsetof(CERTNameConstraint, min), SEC_ASN1_SUB(SEC_IntegerTemplate) },
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
    31
    { SEC_ASN1_OPTIONAL | SEC_ASN1_CONTEXT_SPECIFIC | SEC_ASN1_XTRN | 1,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
    32
      offsetof(CERTNameConstraint, max), SEC_ASN1_SUB(SEC_IntegerTemplate) },
11709
1f9d09f9034c08282c7ed1a4946fd13d46917fac Bug 1118245. Apply uniform style across NSS [remove trailing commas in initializers]. r=ekr
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11521
diff changeset
    33
    { 0 }
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    34
};
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    35
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    36
const SEC_ASN1Template CERT_NameConstraintSubtreeSubTemplate[] = {
8139
22b1c7d7ffda5d35dd17317aa5389e0c7446f508 Fix for bug 286642 . Move utility functions to new libnssutil shared library. r=nelson
julien.pierre.boogz%sun.com
parents: 8027
diff changeset
    37
    { SEC_ASN1_SEQUENCE_OF | SEC_ASN1_XTRN, 0, SEC_ASN1_SUB(SEC_AnyTemplate) }
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    38
};
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    39
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    40
static const SEC_ASN1Template CERTNameConstraintsTemplate[] = {
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    41
    { SEC_ASN1_SEQUENCE, 0, NULL, sizeof(CERTNameConstraints) },
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
    42
    { SEC_ASN1_OPTIONAL | SEC_ASN1_CONSTRUCTED | SEC_ASN1_CONTEXT_SPECIFIC | 0,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
    43
      offsetof(CERTNameConstraints, DERPermited),
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
    44
      CERT_NameConstraintSubtreeSubTemplate },
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
    45
    { SEC_ASN1_OPTIONAL | SEC_ASN1_CONSTRUCTED | SEC_ASN1_CONTEXT_SPECIFIC | 1,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
    46
      offsetof(CERTNameConstraints, DERExcluded),
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
    47
      CERT_NameConstraintSubtreeSubTemplate },
11709
1f9d09f9034c08282c7ed1a4946fd13d46917fac Bug 1118245. Apply uniform style across NSS [remove trailing commas in initializers]. r=ekr
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11521
diff changeset
    48
    { 0 }
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    49
};
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    50
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    51
static const SEC_ASN1Template CERTOthNameTemplate[] = {
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    52
    { SEC_ASN1_SEQUENCE, 0, NULL, sizeof(OtherName) },
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
    53
    { SEC_ASN1_OBJECT_ID, offsetof(OtherName, oid) },
8139
22b1c7d7ffda5d35dd17317aa5389e0c7446f508 Fix for bug 286642 . Move utility functions to new libnssutil shared library. r=nelson
julien.pierre.boogz%sun.com
parents: 8027
diff changeset
    54
    { SEC_ASN1_CONTEXT_SPECIFIC | SEC_ASN1_CONSTRUCTED | SEC_ASN1_EXPLICIT |
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
    55
          SEC_ASN1_XTRN | 0,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
    56
      offsetof(OtherName, name), SEC_ASN1_SUB(SEC_AnyTemplate) },
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
    57
    { 0 }
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    58
};
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    59
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    60
static const SEC_ASN1Template CERTOtherNameTemplate[] = {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
    61
    { SEC_ASN1_CONTEXT_SPECIFIC | SEC_ASN1_CONSTRUCTED | 0,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
    62
      offsetof(CERTGeneralName, name.OthName), CERTOthNameTemplate,
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    63
      sizeof(CERTGeneralName) }
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    64
};
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    65
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    66
static const SEC_ASN1Template CERT_RFC822NameTemplate[] = {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
    67
    { SEC_ASN1_CONTEXT_SPECIFIC | SEC_ASN1_XTRN | 1,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
    68
      offsetof(CERTGeneralName, name.other),
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
    69
      SEC_ASN1_SUB(SEC_IA5StringTemplate), sizeof(CERTGeneralName) }
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    70
};
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    71
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    72
static const SEC_ASN1Template CERT_DNSNameTemplate[] = {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
    73
    { SEC_ASN1_CONTEXT_SPECIFIC | SEC_ASN1_XTRN | 2,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
    74
      offsetof(CERTGeneralName, name.other),
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
    75
      SEC_ASN1_SUB(SEC_IA5StringTemplate), sizeof(CERTGeneralName) }
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    76
};
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    77
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    78
static const SEC_ASN1Template CERT_X400AddressTemplate[] = {
8139
22b1c7d7ffda5d35dd17317aa5389e0c7446f508 Fix for bug 286642 . Move utility functions to new libnssutil shared library. r=nelson
julien.pierre.boogz%sun.com
parents: 8027
diff changeset
    79
    { SEC_ASN1_CONTEXT_SPECIFIC | SEC_ASN1_CONSTRUCTED | SEC_ASN1_XTRN | 3,
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
    80
      offsetof(CERTGeneralName, name.other), SEC_ASN1_SUB(SEC_AnyTemplate),
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
    81
      sizeof(CERTGeneralName) }
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    82
};
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    83
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    84
static const SEC_ASN1Template CERT_DirectoryNameTemplate[] = {
8139
22b1c7d7ffda5d35dd17317aa5389e0c7446f508 Fix for bug 286642 . Move utility functions to new libnssutil shared library. r=nelson
julien.pierre.boogz%sun.com
parents: 8027
diff changeset
    85
    { SEC_ASN1_CONTEXT_SPECIFIC | SEC_ASN1_CONSTRUCTED | SEC_ASN1_EXPLICIT |
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
    86
          SEC_ASN1_XTRN | 4,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
    87
      offsetof(CERTGeneralName, derDirectoryName),
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
    88
      SEC_ASN1_SUB(SEC_AnyTemplate), sizeof(CERTGeneralName) }
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    89
};
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    90
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    91
static const SEC_ASN1Template CERT_EDIPartyNameTemplate[] = {
8139
22b1c7d7ffda5d35dd17317aa5389e0c7446f508 Fix for bug 286642 . Move utility functions to new libnssutil shared library. r=nelson
julien.pierre.boogz%sun.com
parents: 8027
diff changeset
    92
    { SEC_ASN1_CONTEXT_SPECIFIC | SEC_ASN1_CONSTRUCTED | SEC_ASN1_XTRN | 5,
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
    93
      offsetof(CERTGeneralName, name.other), SEC_ASN1_SUB(SEC_AnyTemplate),
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
    94
      sizeof(CERTGeneralName) }
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    95
};
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    96
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
    97
static const SEC_ASN1Template CERT_URITemplate[] = {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
    98
    { SEC_ASN1_CONTEXT_SPECIFIC | SEC_ASN1_XTRN | 6,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
    99
      offsetof(CERTGeneralName, name.other),
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   100
      SEC_ASN1_SUB(SEC_IA5StringTemplate), sizeof(CERTGeneralName) }
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   101
};
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   102
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   103
static const SEC_ASN1Template CERT_IPAddressTemplate[] = {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   104
    { SEC_ASN1_CONTEXT_SPECIFIC | SEC_ASN1_XTRN | 7,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   105
      offsetof(CERTGeneralName, name.other),
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   106
      SEC_ASN1_SUB(SEC_OctetStringTemplate), sizeof(CERTGeneralName) }
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   107
};
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   108
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   109
static const SEC_ASN1Template CERT_RegisteredIDTemplate[] = {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   110
    { SEC_ASN1_CONTEXT_SPECIFIC | SEC_ASN1_XTRN | 8,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   111
      offsetof(CERTGeneralName, name.other), SEC_ASN1_SUB(SEC_ObjectIDTemplate),
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   112
      sizeof(CERTGeneralName) }
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   113
};
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   114
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   115
const SEC_ASN1Template CERT_GeneralNamesTemplate[] = {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   116
    { SEC_ASN1_SEQUENCE_OF | SEC_ASN1_XTRN, 0, SEC_ASN1_SUB(SEC_AnyTemplate) }
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   117
};
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   118
11161
04c846cc7a85936d10f7767c81c084034473331a Bug 970539, NSS tool improvements/fixes: certutil/btoa/pp/httpserv, r=rrelyea
Kai Engert <kaie@kuix.de>
parents: 11107
diff changeset
   119
static struct {
04c846cc7a85936d10f7767c81c084034473331a Bug 970539, NSS tool improvements/fixes: certutil/btoa/pp/httpserv, r=rrelyea
Kai Engert <kaie@kuix.de>
parents: 11107
diff changeset
   120
    CERTGeneralNameType type;
04c846cc7a85936d10f7767c81c084034473331a Bug 970539, NSS tool improvements/fixes: certutil/btoa/pp/httpserv, r=rrelyea
Kai Engert <kaie@kuix.de>
parents: 11107
diff changeset
   121
    char *name;
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   122
} typesArray[] = { { certOtherName, "other" },
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   123
                   { certRFC822Name, "email" },
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   124
                   { certRFC822Name, "rfc822" },
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   125
                   { certDNSName, "dns" },
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   126
                   { certX400Address, "x400" },
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   127
                   { certX400Address, "x400addr" },
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   128
                   { certDirectoryName, "directory" },
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   129
                   { certDirectoryName, "dn" },
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   130
                   { certEDIPartyName, "edi" },
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   131
                   { certEDIPartyName, "ediparty" },
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   132
                   { certURI, "uri" },
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   133
                   { certIPAddress, "ip" },
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   134
                   { certIPAddress, "ipaddr" },
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   135
                   { certRegisterID, "registerid" } };
11161
04c846cc7a85936d10f7767c81c084034473331a Bug 970539, NSS tool improvements/fixes: certutil/btoa/pp/httpserv, r=rrelyea
Kai Engert <kaie@kuix.de>
parents: 11107
diff changeset
   136
04c846cc7a85936d10f7767c81c084034473331a Bug 970539, NSS tool improvements/fixes: certutil/btoa/pp/httpserv, r=rrelyea
Kai Engert <kaie@kuix.de>
parents: 11107
diff changeset
   137
CERTGeneralNameType
04c846cc7a85936d10f7767c81c084034473331a Bug 970539, NSS tool improvements/fixes: certutil/btoa/pp/httpserv, r=rrelyea
Kai Engert <kaie@kuix.de>
parents: 11107
diff changeset
   138
CERT_GetGeneralNameTypeFromString(const char *string)
04c846cc7a85936d10f7767c81c084034473331a Bug 970539, NSS tool improvements/fixes: certutil/btoa/pp/httpserv, r=rrelyea
Kai Engert <kaie@kuix.de>
parents: 11107
diff changeset
   139
{
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   140
    int types_count = sizeof(typesArray) / sizeof(typesArray[0]);
11161
04c846cc7a85936d10f7767c81c084034473331a Bug 970539, NSS tool improvements/fixes: certutil/btoa/pp/httpserv, r=rrelyea
Kai Engert <kaie@kuix.de>
parents: 11107
diff changeset
   141
    int i;
04c846cc7a85936d10f7767c81c084034473331a Bug 970539, NSS tool improvements/fixes: certutil/btoa/pp/httpserv, r=rrelyea
Kai Engert <kaie@kuix.de>
parents: 11107
diff changeset
   142
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   143
    for (i = 0; i < types_count; i++) {
11161
04c846cc7a85936d10f7767c81c084034473331a Bug 970539, NSS tool improvements/fixes: certutil/btoa/pp/httpserv, r=rrelyea
Kai Engert <kaie@kuix.de>
parents: 11107
diff changeset
   144
        if (PORT_Strcasecmp(string, typesArray[i].name) == 0) {
04c846cc7a85936d10f7767c81c084034473331a Bug 970539, NSS tool improvements/fixes: certutil/btoa/pp/httpserv, r=rrelyea
Kai Engert <kaie@kuix.de>
parents: 11107
diff changeset
   145
            return typesArray[i].type;
04c846cc7a85936d10f7767c81c084034473331a Bug 970539, NSS tool improvements/fixes: certutil/btoa/pp/httpserv, r=rrelyea
Kai Engert <kaie@kuix.de>
parents: 11107
diff changeset
   146
        }
04c846cc7a85936d10f7767c81c084034473331a Bug 970539, NSS tool improvements/fixes: certutil/btoa/pp/httpserv, r=rrelyea
Kai Engert <kaie@kuix.de>
parents: 11107
diff changeset
   147
    }
04c846cc7a85936d10f7767c81c084034473331a Bug 970539, NSS tool improvements/fixes: certutil/btoa/pp/httpserv, r=rrelyea
Kai Engert <kaie@kuix.de>
parents: 11107
diff changeset
   148
    return 0;
04c846cc7a85936d10f7767c81c084034473331a Bug 970539, NSS tool improvements/fixes: certutil/btoa/pp/httpserv, r=rrelyea
Kai Engert <kaie@kuix.de>
parents: 11107
diff changeset
   149
}
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   150
4572
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
   151
CERTGeneralName *
7829
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
   152
CERT_NewGeneralName(PLArenaPool *arena, CERTGeneralNameType type)
4572
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
   153
{
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   154
    CERTGeneralName *name = arena ? PORT_ArenaZNew(arena, CERTGeneralName)
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   155
                                  : PORT_ZNew(CERTGeneralName);
4572
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
   156
    if (name) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   157
        name->type = type;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   158
        name->l.prev = name->l.next = &name->l;
4572
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
   159
    }
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
   160
    return name;
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
   161
}
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
   162
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
   163
/* Copy content of one General Name to another.
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
   164
** Caller has allocated destination general name.
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
   165
** This function does not change the destinate's GeneralName's list linkage.
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
   166
*/
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
   167
SECStatus
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   168
cert_CopyOneGeneralName(PLArenaPool *arena, CERTGeneralName *dest,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   169
                        CERTGeneralName *src)
4572
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
   170
{
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
   171
    SECStatus rv;
7829
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
   172
    void *mark = NULL;
4572
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
   173
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
   174
    PORT_Assert(dest != NULL);
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
   175
    dest->type = src->type;
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
   176
7829
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
   177
    mark = PORT_ArenaMark(arena);
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
   178
4572
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
   179
    switch (src->type) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   180
        case certDirectoryName:
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   181
            rv = SECITEM_CopyItem(arena, &dest->derDirectoryName,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   182
                                  &src->derDirectoryName);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   183
            if (rv == SECSuccess)
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   184
                rv = CERT_CopyName(arena, &dest->name.directoryName,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   185
                                   &src->name.directoryName);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   186
            break;
4572
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
   187
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   188
        case certOtherName:
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   189
            rv = SECITEM_CopyItem(arena, &dest->name.OthName.name,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   190
                                  &src->name.OthName.name);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   191
            if (rv == SECSuccess)
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   192
                rv = SECITEM_CopyItem(arena, &dest->name.OthName.oid,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   193
                                      &src->name.OthName.oid);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   194
            break;
4572
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
   195
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   196
        default:
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   197
            rv = SECITEM_CopyItem(arena, &dest->name.other, &src->name.other);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   198
            break;
4572
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
   199
    }
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
   200
    if (rv != SECSuccess) {
7829
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
   201
        PORT_ArenaRelease(arena, mark);
11940
0e6e8153513e40154dc1907c2aff318b5342e73e Bug 1251185, NSS clang-format: else line-break fixes, r=ttaubert
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11776
diff changeset
   202
    } else {
7829
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
   203
        PORT_ArenaUnmark(arena, mark);
4572
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
   204
    }
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
   205
    return rv;
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
   206
}
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
   207
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   208
void
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   209
CERT_DestroyGeneralNameList(CERTGeneralNameList *list)
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   210
{
1031
d82fc414b80dd1c98a99f0f57fa4b98edd470945 Bugzilla: 64132. NSS lock instrumentation
larryh%netscape.com
parents: 713
diff changeset
   211
    PZLock *lock;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   212
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   213
    if (list != NULL) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   214
        lock = list->lock;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   215
        PZ_Lock(lock);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   216
        if (--list->refCount <= 0 && list->arena != NULL) {
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   217
            PORT_FreeArena(list->arena, PR_FALSE);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   218
            PZ_Unlock(lock);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   219
            PZ_DestroyLock(lock);
11940
0e6e8153513e40154dc1907c2aff318b5342e73e Bug 1251185, NSS clang-format: else line-break fixes, r=ttaubert
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11776
diff changeset
   220
        } else {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   221
            PZ_Unlock(lock);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   222
        }
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   223
    }
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   224
    return;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   225
}
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   226
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   227
CERTGeneralNameList *
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   228
CERT_CreateGeneralNameList(CERTGeneralName *name)
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   229
{
10759
0b69d6cc3acd5e723d4cafefd956e61466b80c53 Bug 802430: Allow NSS to be built with NO_NSPR_10_SUPPORT, r=wtc
Brian Smith <bsmith@mozilla.com>
parents: 10705
diff changeset
   230
    PLArenaPool *arena;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   231
    CERTGeneralNameList *list = NULL;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   232
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   233
    arena = PORT_NewArena(DER_DEFAULT_CHUNKSIZE);
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   234
    if (arena == NULL) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   235
        goto done;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   236
    }
4557
f860395e272947a29b22099f8e5f515b710e1de8 a) Add more missing null pointer tests that I discovered. Bug 208649.
nelsonb%netscape.com
parents: 4544
diff changeset
   237
    list = PORT_ArenaZNew(arena, CERTGeneralNameList);
4544
760b5516878b3c470940fa663ed28c3cb1f41008 Fix numerous more potential NULL pointer deref crashes. Bug 208038
nelsonb%netscape.com
parents: 4536
diff changeset
   238
    if (!list)
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   239
        goto loser;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   240
    if (name != NULL) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   241
        SECStatus rv;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   242
        list->name = CERT_NewGeneralName(arena, (CERTGeneralNameType)0);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   243
        if (!list->name)
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   244
            goto loser;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   245
        rv = CERT_CopyGeneralName(arena, list->name, name);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   246
        if (rv != SECSuccess)
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   247
            goto loser;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   248
    }
1031
d82fc414b80dd1c98a99f0f57fa4b98edd470945 Bugzilla: 64132. NSS lock instrumentation
larryh%netscape.com
parents: 713
diff changeset
   249
    list->lock = PZ_NewLock(nssILockList);
4544
760b5516878b3c470940fa663ed28c3cb1f41008 Fix numerous more potential NULL pointer deref crashes. Bug 208038
nelsonb%netscape.com
parents: 4536
diff changeset
   250
    if (!list->lock)
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   251
        goto loser;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   252
    list->arena = arena;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   253
    list->refCount = 1;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   254
done:
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   255
    return list;
4544
760b5516878b3c470940fa663ed28c3cb1f41008 Fix numerous more potential NULL pointer deref crashes. Bug 208038
nelsonb%netscape.com
parents: 4536
diff changeset
   256
760b5516878b3c470940fa663ed28c3cb1f41008 Fix numerous more potential NULL pointer deref crashes. Bug 208038
nelsonb%netscape.com
parents: 4536
diff changeset
   257
loser:
760b5516878b3c470940fa663ed28c3cb1f41008 Fix numerous more potential NULL pointer deref crashes. Bug 208038
nelsonb%netscape.com
parents: 4536
diff changeset
   258
    PORT_FreeArena(arena, PR_FALSE);
760b5516878b3c470940fa663ed28c3cb1f41008 Fix numerous more potential NULL pointer deref crashes. Bug 208038
nelsonb%netscape.com
parents: 4536
diff changeset
   259
    return NULL;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   260
}
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   261
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   262
CERTGeneralName *
5047
07097a7fb9e0dd0733cdb210ba7943bc4f6e66fc Export cert functions that decode extensions and traverse decoded
nelsonb%netscape.com
parents: 5021
diff changeset
   263
CERT_GetNextGeneralName(CERTGeneralName *current)
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   264
{
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   265
    PRCList *next;
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   266
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   267
    next = current->l.next;
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   268
    return (CERTGeneralName *)(((char *)next) - offsetof(CERTGeneralName, l));
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   269
}
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   270
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   271
CERTGeneralName *
5047
07097a7fb9e0dd0733cdb210ba7943bc4f6e66fc Export cert functions that decode extensions and traverse decoded
nelsonb%netscape.com
parents: 5021
diff changeset
   272
CERT_GetPrevGeneralName(CERTGeneralName *current)
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   273
{
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   274
    PRCList *prev;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   275
    prev = current->l.prev;
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   276
    return (CERTGeneralName *)(((char *)prev) - offsetof(CERTGeneralName, l));
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   277
}
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   278
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   279
CERTNameConstraint *
5047
07097a7fb9e0dd0733cdb210ba7943bc4f6e66fc Export cert functions that decode extensions and traverse decoded
nelsonb%netscape.com
parents: 5021
diff changeset
   280
CERT_GetNextNameConstraint(CERTNameConstraint *current)
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   281
{
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   282
    PRCList *next;
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   283
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   284
    next = current->l.next;
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   285
    return (CERTNameConstraint *)(((char *)next) -
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   286
                                  offsetof(CERTNameConstraint, l));
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   287
}
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   288
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   289
CERTNameConstraint *
5047
07097a7fb9e0dd0733cdb210ba7943bc4f6e66fc Export cert functions that decode extensions and traverse decoded
nelsonb%netscape.com
parents: 5021
diff changeset
   290
CERT_GetPrevNameConstraint(CERTNameConstraint *current)
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   291
{
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   292
    PRCList *prev;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   293
    prev = current->l.prev;
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   294
    return (CERTNameConstraint *)(((char *)prev) -
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   295
                                  offsetof(CERTNameConstraint, l));
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   296
}
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   297
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   298
SECItem *
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   299
CERT_EncodeGeneralName(CERTGeneralName *genName, SECItem *dest,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   300
                       PLArenaPool *arena)
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   301
{
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   302
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   303
    const SEC_ASN1Template *template;
4560
dafe56a1367d2ae12333b2aed23383a730ff9da6 CERT_EncodeGeneralName and CERT_DecodeGeneralName contain large switch
nelsonb%netscape.com
parents: 4559
diff changeset
   304
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   305
    PORT_Assert(arena);
12734
25bbb8bdd46086979558331d5030adeab4d4129e Bug 1277228 - some scan-build fixes to enable it on base/certdb/certhigh, r=ttaubert
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 12490
diff changeset
   306
    if (arena == NULL || !genName) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   307
        PORT_SetError(SEC_ERROR_INVALID_ARGS);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   308
        return NULL;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   309
    }
4558
002bb0533bfb8b5932b831b22866f10eb4e9a216 The general name code uses arenas, which is good, but it never marks
nelsonb%netscape.com
parents: 4557
diff changeset
   310
    /* TODO: mark arena */
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   311
    if (dest == NULL) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   312
        dest = PORT_ArenaZNew(arena, SECItem);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   313
        if (!dest)
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   314
            goto loser;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   315
    }
4560
dafe56a1367d2ae12333b2aed23383a730ff9da6 CERT_EncodeGeneralName and CERT_DecodeGeneralName contain large switch
nelsonb%netscape.com
parents: 4559
diff changeset
   316
    if (genName->type == certDirectoryName) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   317
        if (genName->derDirectoryName.data == NULL) {
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   318
            /* The field hasn't been encoded yet. */
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   319
            SECItem *pre_dest = SEC_ASN1EncodeItem(
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   320
                arena, &(genName->derDirectoryName),
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   321
                &(genName->name.directoryName), CERT_NameTemplate);
4560
dafe56a1367d2ae12333b2aed23383a730ff9da6 CERT_EncodeGeneralName and CERT_DecodeGeneralName contain large switch
nelsonb%netscape.com
parents: 4559
diff changeset
   322
            if (!pre_dest)
dafe56a1367d2ae12333b2aed23383a730ff9da6 CERT_EncodeGeneralName and CERT_DecodeGeneralName contain large switch
nelsonb%netscape.com
parents: 4559
diff changeset
   323
                goto loser;
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   324
        }
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   325
        if (genName->derDirectoryName.data == NULL) {
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   326
            goto loser;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   327
        }
4560
dafe56a1367d2ae12333b2aed23383a730ff9da6 CERT_EncodeGeneralName and CERT_DecodeGeneralName contain large switch
nelsonb%netscape.com
parents: 4559
diff changeset
   328
    }
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   329
    switch (genName->type) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   330
        case certURI:
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   331
            template = CERT_URITemplate;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   332
            break;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   333
        case certRFC822Name:
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   334
            template = CERT_RFC822NameTemplate;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   335
            break;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   336
        case certDNSName:
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   337
            template = CERT_DNSNameTemplate;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   338
            break;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   339
        case certIPAddress:
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   340
            template = CERT_IPAddressTemplate;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   341
            break;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   342
        case certOtherName:
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   343
            template = CERTOtherNameTemplate;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   344
            break;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   345
        case certRegisterID:
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   346
            template = CERT_RegisteredIDTemplate;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   347
            break;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   348
        /* for this type, we expect the value is already encoded */
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   349
        case certEDIPartyName:
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   350
            template = CERT_EDIPartyNameTemplate;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   351
            break;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   352
        /* for this type, we expect the value is already encoded */
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   353
        case certX400Address:
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   354
            template = CERT_X400AddressTemplate;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   355
            break;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   356
        case certDirectoryName:
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   357
            template = CERT_DirectoryNameTemplate;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   358
            break;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   359
        default:
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   360
            PORT_Assert(0);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   361
            goto loser;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   362
    }
4560
dafe56a1367d2ae12333b2aed23383a730ff9da6 CERT_EncodeGeneralName and CERT_DecodeGeneralName contain large switch
nelsonb%netscape.com
parents: 4559
diff changeset
   363
    dest = SEC_ASN1EncodeItem(arena, dest, genName, template);
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   364
    if (!dest) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   365
        goto loser;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   366
    }
4558
002bb0533bfb8b5932b831b22866f10eb4e9a216 The general name code uses arenas, which is good, but it never marks
nelsonb%netscape.com
parents: 4557
diff changeset
   367
    /* TODO: unmark arena */
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   368
    return dest;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   369
loser:
4558
002bb0533bfb8b5932b831b22866f10eb4e9a216 The general name code uses arenas, which is good, but it never marks
nelsonb%netscape.com
parents: 4557
diff changeset
   370
    /* TODO: release arena back to mark */
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   371
    return NULL;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   372
}
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   373
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   374
SECItem **
10759
0b69d6cc3acd5e723d4cafefd956e61466b80c53 Bug 802430: Allow NSS to be built with NO_NSPR_10_SUPPORT, r=wtc
Brian Smith <bsmith@mozilla.com>
parents: 10705
diff changeset
   375
cert_EncodeGeneralNames(PLArenaPool *arena, CERTGeneralName *names)
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   376
{
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   377
    CERTGeneralName *current_name;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   378
    SECItem **items = NULL;
12734
25bbb8bdd46086979558331d5030adeab4d4129e Bug 1277228 - some scan-build fixes to enable it on base/certdb/certhigh, r=ttaubert
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 12490
diff changeset
   379
    int count = 1;
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   380
    int i;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   381
    PRCList *head;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   382
12734
25bbb8bdd46086979558331d5030adeab4d4129e Bug 1277228 - some scan-build fixes to enable it on base/certdb/certhigh, r=ttaubert
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 12490
diff changeset
   383
    if (!names) {
25bbb8bdd46086979558331d5030adeab4d4129e Bug 1277228 - some scan-build fixes to enable it on base/certdb/certhigh, r=ttaubert
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 12490
diff changeset
   384
        return NULL;
25bbb8bdd46086979558331d5030adeab4d4129e Bug 1277228 - some scan-build fixes to enable it on base/certdb/certhigh, r=ttaubert
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 12490
diff changeset
   385
    }
25bbb8bdd46086979558331d5030adeab4d4129e Bug 1277228 - some scan-build fixes to enable it on base/certdb/certhigh, r=ttaubert
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 12490
diff changeset
   386
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   387
    PORT_Assert(arena);
4558
002bb0533bfb8b5932b831b22866f10eb4e9a216 The general name code uses arenas, which is good, but it never marks
nelsonb%netscape.com
parents: 4557
diff changeset
   388
    /* TODO: mark arena */
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   389
    current_name = names;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   390
    head = &(names->l);
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   391
    while (current_name->l.next != head) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   392
        current_name = CERT_GetNextGeneralName(current_name);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   393
        ++count;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   394
    }
5047
07097a7fb9e0dd0733cdb210ba7943bc4f6e66fc Export cert functions that decode extensions and traverse decoded
nelsonb%netscape.com
parents: 5021
diff changeset
   395
    current_name = CERT_GetNextGeneralName(current_name);
4557
f860395e272947a29b22099f8e5f515b710e1de8 a) Add more missing null pointer tests that I discovered. Bug 208649.
nelsonb%netscape.com
parents: 4544
diff changeset
   396
    items = PORT_ArenaNewArray(arena, SECItem *, count + 1);
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   397
    if (items == NULL) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   398
        goto loser;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   399
    }
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   400
    for (i = 0; i < count; i++) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   401
        items[i] = CERT_EncodeGeneralName(current_name, (SECItem *)NULL, arena);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   402
        if (items[i] == NULL) {
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   403
            goto loser;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   404
        }
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   405
        current_name = CERT_GetNextGeneralName(current_name);
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   406
    }
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   407
    items[i] = NULL;
4558
002bb0533bfb8b5932b831b22866f10eb4e9a216 The general name code uses arenas, which is good, but it never marks
nelsonb%netscape.com
parents: 4557
diff changeset
   408
    /* TODO: unmark arena */
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   409
    return items;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   410
loser:
4558
002bb0533bfb8b5932b831b22866f10eb4e9a216 The general name code uses arenas, which is good, but it never marks
nelsonb%netscape.com
parents: 4557
diff changeset
   411
    /* TODO: release arena to mark */
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   412
    return NULL;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   413
}
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   414
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   415
CERTGeneralName *
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   416
CERT_DecodeGeneralName(PLArenaPool *reqArena, SECItem *encodedName,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   417
                       CERTGeneralName *genName)
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   418
{
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   419
    const SEC_ASN1Template *template;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   420
    CERTGeneralNameType genNameType;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   421
    SECStatus rv = SECSuccess;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   422
    SECItem *newEncodedName;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   423
7288
917245bee72ea2a599545c8105ca8a230446a693 Fix for bug 178894 . Quick decoder updates for lib/certdb and lib/certhigh . r=nelson .
julien.pierre.bugs%sun.com
parents: 6625
diff changeset
   424
    if (!reqArena) {
917245bee72ea2a599545c8105ca8a230446a693 Fix for bug 178894 . Quick decoder updates for lib/certdb and lib/certhigh . r=nelson .
julien.pierre.bugs%sun.com
parents: 6625
diff changeset
   425
        PORT_SetError(SEC_ERROR_INVALID_ARGS);
917245bee72ea2a599545c8105ca8a230446a693 Fix for bug 178894 . Quick decoder updates for lib/certdb and lib/certhigh . r=nelson .
julien.pierre.bugs%sun.com
parents: 6625
diff changeset
   426
        return NULL;
917245bee72ea2a599545c8105ca8a230446a693 Fix for bug 178894 . Quick decoder updates for lib/certdb and lib/certhigh . r=nelson .
julien.pierre.bugs%sun.com
parents: 6625
diff changeset
   427
    }
917245bee72ea2a599545c8105ca8a230446a693 Fix for bug 178894 . Quick decoder updates for lib/certdb and lib/certhigh . r=nelson .
julien.pierre.bugs%sun.com
parents: 6625
diff changeset
   428
    /* make a copy for decoding so the data decoded with QuickDER doesn't
917245bee72ea2a599545c8105ca8a230446a693 Fix for bug 178894 . Quick decoder updates for lib/certdb and lib/certhigh . r=nelson .
julien.pierre.bugs%sun.com
parents: 6625
diff changeset
   429
       point to temporary memory */
917245bee72ea2a599545c8105ca8a230446a693 Fix for bug 178894 . Quick decoder updates for lib/certdb and lib/certhigh . r=nelson .
julien.pierre.bugs%sun.com
parents: 6625
diff changeset
   430
    newEncodedName = SECITEM_ArenaDupItem(reqArena, encodedName);
917245bee72ea2a599545c8105ca8a230446a693 Fix for bug 178894 . Quick decoder updates for lib/certdb and lib/certhigh . r=nelson .
julien.pierre.bugs%sun.com
parents: 6625
diff changeset
   431
    if (!newEncodedName) {
917245bee72ea2a599545c8105ca8a230446a693 Fix for bug 178894 . Quick decoder updates for lib/certdb and lib/certhigh . r=nelson .
julien.pierre.bugs%sun.com
parents: 6625
diff changeset
   432
        return NULL;
917245bee72ea2a599545c8105ca8a230446a693 Fix for bug 178894 . Quick decoder updates for lib/certdb and lib/certhigh . r=nelson .
julien.pierre.bugs%sun.com
parents: 6625
diff changeset
   433
    }
4558
002bb0533bfb8b5932b831b22866f10eb4e9a216 The general name code uses arenas, which is good, but it never marks
nelsonb%netscape.com
parents: 4557
diff changeset
   434
    /* TODO: mark arena */
7288
917245bee72ea2a599545c8105ca8a230446a693 Fix for bug 178894 . Quick decoder updates for lib/certdb and lib/certhigh . r=nelson .
julien.pierre.bugs%sun.com
parents: 6625
diff changeset
   435
    genNameType = (CERTGeneralNameType)((*(newEncodedName->data) & 0x0f) + 1);
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   436
    if (genName == NULL) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   437
        genName = CERT_NewGeneralName(reqArena, genNameType);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   438
        if (!genName)
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   439
            goto loser;
11940
0e6e8153513e40154dc1907c2aff318b5342e73e Bug 1251185, NSS clang-format: else line-break fixes, r=ttaubert
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11776
diff changeset
   440
    } else {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   441
        genName->type = genNameType;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   442
        genName->l.prev = genName->l.next = &genName->l;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   443
    }
7288
917245bee72ea2a599545c8105ca8a230446a693 Fix for bug 178894 . Quick decoder updates for lib/certdb and lib/certhigh . r=nelson .
julien.pierre.bugs%sun.com
parents: 6625
diff changeset
   444
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   445
    switch (genNameType) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   446
        case certURI:
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   447
            template = CERT_URITemplate;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   448
            break;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   449
        case certRFC822Name:
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   450
            template = CERT_RFC822NameTemplate;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   451
            break;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   452
        case certDNSName:
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   453
            template = CERT_DNSNameTemplate;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   454
            break;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   455
        case certIPAddress:
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   456
            template = CERT_IPAddressTemplate;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   457
            break;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   458
        case certOtherName:
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   459
            template = CERTOtherNameTemplate;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   460
            break;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   461
        case certRegisterID:
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   462
            template = CERT_RegisteredIDTemplate;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   463
            break;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   464
        case certEDIPartyName:
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   465
            template = CERT_EDIPartyNameTemplate;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   466
            break;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   467
        case certX400Address:
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   468
            template = CERT_X400AddressTemplate;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   469
            break;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   470
        case certDirectoryName:
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   471
            template = CERT_DirectoryNameTemplate;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   472
            break;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   473
        default:
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   474
            goto loser;
4560
dafe56a1367d2ae12333b2aed23383a730ff9da6 CERT_EncodeGeneralName and CERT_DecodeGeneralName contain large switch
nelsonb%netscape.com
parents: 4559
diff changeset
   475
    }
7288
917245bee72ea2a599545c8105ca8a230446a693 Fix for bug 178894 . Quick decoder updates for lib/certdb and lib/certhigh . r=nelson .
julien.pierre.bugs%sun.com
parents: 6625
diff changeset
   476
    rv = SEC_QuickDERDecodeItem(reqArena, genName, template, newEncodedName);
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   477
    if (rv != SECSuccess)
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   478
        goto loser;
4560
dafe56a1367d2ae12333b2aed23383a730ff9da6 CERT_EncodeGeneralName and CERT_DecodeGeneralName contain large switch
nelsonb%netscape.com
parents: 4559
diff changeset
   479
    if (genNameType == certDirectoryName) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   480
        rv = SEC_QuickDERDecodeItem(reqArena, &(genName->name.directoryName),
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   481
                                    CERT_NameTemplate,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   482
                                    &(genName->derDirectoryName));
4560
dafe56a1367d2ae12333b2aed23383a730ff9da6 CERT_EncodeGeneralName and CERT_DecodeGeneralName contain large switch
nelsonb%netscape.com
parents: 4559
diff changeset
   483
        if (rv != SECSuccess)
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   484
            goto loser;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   485
    }
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   486
4558
002bb0533bfb8b5932b831b22866f10eb4e9a216 The general name code uses arenas, which is good, but it never marks
nelsonb%netscape.com
parents: 4557
diff changeset
   487
    /* TODO: unmark arena */
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   488
    return genName;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   489
loser:
4558
002bb0533bfb8b5932b831b22866f10eb4e9a216 The general name code uses arenas, which is good, but it never marks
nelsonb%netscape.com
parents: 4557
diff changeset
   490
    /* TODO: release arena to mark */
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   491
    return NULL;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   492
}
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   493
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   494
CERTGeneralName *
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   495
cert_DecodeGeneralNames(PLArenaPool *arena, SECItem **encodedGenName)
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   496
{
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   497
    PRCList *head = NULL;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   498
    PRCList *tail = NULL;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   499
    CERTGeneralName *currentName = NULL;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   500
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   501
    PORT_Assert(arena);
4558
002bb0533bfb8b5932b831b22866f10eb4e9a216 The general name code uses arenas, which is good, but it never marks
nelsonb%netscape.com
parents: 4557
diff changeset
   502
    if (!encodedGenName || !arena) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   503
        PORT_SetError(SEC_ERROR_INVALID_ARGS);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   504
        return NULL;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   505
    }
4558
002bb0533bfb8b5932b831b22866f10eb4e9a216 The general name code uses arenas, which is good, but it never marks
nelsonb%netscape.com
parents: 4557
diff changeset
   506
    /* TODO: mark arena */
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   507
    while (*encodedGenName != NULL) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   508
        currentName = CERT_DecodeGeneralName(arena, *encodedGenName, NULL);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   509
        if (currentName == NULL)
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   510
            break;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   511
        if (head == NULL) {
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   512
            head = &(currentName->l);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   513
            tail = head;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   514
        }
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   515
        currentName->l.next = head;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   516
        currentName->l.prev = tail;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   517
        tail = head->prev = tail->next = &(currentName->l);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   518
        encodedGenName++;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   519
    }
4508
14a4f4ad3b2bb7a2d435dd3096e770637e1bb4a4 Eliminate more NULL pointer dereferences. Bug 207740.
nelsonb%netscape.com
parents: 4490
diff changeset
   520
    if (currentName) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   521
        /* TODO: unmark arena */
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   522
        return CERT_GetNextGeneralName(currentName);
4508
14a4f4ad3b2bb7a2d435dd3096e770637e1bb4a4 Eliminate more NULL pointer dereferences. Bug 207740.
nelsonb%netscape.com
parents: 4490
diff changeset
   523
    }
4558
002bb0533bfb8b5932b831b22866f10eb4e9a216 The general name code uses arenas, which is good, but it never marks
nelsonb%netscape.com
parents: 4557
diff changeset
   524
    /* TODO: release arena to mark */
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   525
    return NULL;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   526
}
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   527
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   528
void
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   529
CERT_DestroyGeneralName(CERTGeneralName *name)
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   530
{
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   531
    cert_DestroyGeneralNames(name);
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   532
}
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   533
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   534
SECStatus
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   535
cert_DestroyGeneralNames(CERTGeneralName *name)
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   536
{
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   537
    CERTGeneralName *first;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   538
    CERTGeneralName *next = NULL;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   539
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   540
    first = name;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   541
    do {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   542
        next = CERT_GetNextGeneralName(name);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   543
        PORT_Free(name);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   544
        name = next;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   545
    } while (name != first);
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   546
    return SECSuccess;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   547
}
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   548
4558
002bb0533bfb8b5932b831b22866f10eb4e9a216 The general name code uses arenas, which is good, but it never marks
nelsonb%netscape.com
parents: 4557
diff changeset
   549
static SECItem *
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   550
cert_EncodeNameConstraint(CERTNameConstraint *constraint, SECItem *dest,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   551
                          PLArenaPool *arena)
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   552
{
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   553
    PORT_Assert(arena);
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   554
    if (dest == NULL) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   555
        dest = PORT_ArenaZNew(arena, SECItem);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   556
        if (dest == NULL) {
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   557
            return NULL;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   558
        }
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   559
    }
4561
2110d7c84862e0c25da2e3386dd91ae6ba788562 Whitespace cleanup. This patch causes numerous lines that were wider
nelsonb%netscape.com
parents: 4560
diff changeset
   560
    CERT_EncodeGeneralName(&(constraint->name), &(constraint->DERName), arena);
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   561
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   562
    dest =
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   563
        SEC_ASN1EncodeItem(arena, dest, constraint, CERTNameConstraintTemplate);
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   564
    return dest;
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   565
}
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   566
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   567
SECStatus
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   568
cert_EncodeNameConstraintSubTree(CERTNameConstraint *constraints,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   569
                                 PLArenaPool *arena, SECItem ***dest,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   570
                                 PRBool permited)
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   571
{
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   572
    CERTNameConstraint *current_constraint = constraints;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   573
    SECItem **items = NULL;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   574
    int count = 0;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   575
    int i;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   576
    PRCList *head;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   577
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   578
    PORT_Assert(arena);
4558
002bb0533bfb8b5932b831b22866f10eb4e9a216 The general name code uses arenas, which is good, but it never marks
nelsonb%netscape.com
parents: 4557
diff changeset
   579
    /* TODO: mark arena */
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   580
    if (constraints != NULL) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   581
        count = 1;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   582
    }
4572
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
   583
    head = &constraints->l;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   584
    while (current_constraint->l.next != head) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   585
        current_constraint = CERT_GetNextNameConstraint(current_constraint);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   586
        ++count;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   587
    }
5047
07097a7fb9e0dd0733cdb210ba7943bc4f6e66fc Export cert functions that decode extensions and traverse decoded
nelsonb%netscape.com
parents: 5021
diff changeset
   588
    current_constraint = CERT_GetNextNameConstraint(current_constraint);
4557
f860395e272947a29b22099f8e5f515b710e1de8 a) Add more missing null pointer tests that I discovered. Bug 208649.
nelsonb%netscape.com
parents: 4544
diff changeset
   589
    items = PORT_ArenaZNewArray(arena, SECItem *, count + 1);
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   590
    if (items == NULL) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   591
        goto loser;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   592
    }
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   593
    for (i = 0; i < count; i++) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   594
        items[i] = cert_EncodeNameConstraint(current_constraint,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   595
                                             (SECItem *)NULL, arena);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   596
        if (items[i] == NULL) {
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   597
            goto loser;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   598
        }
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   599
        current_constraint = CERT_GetNextNameConstraint(current_constraint);
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   600
    }
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   601
    *dest = items;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   602
    if (*dest == NULL) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   603
        goto loser;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   604
    }
4558
002bb0533bfb8b5932b831b22866f10eb4e9a216 The general name code uses arenas, which is good, but it never marks
nelsonb%netscape.com
parents: 4557
diff changeset
   605
    /* TODO: unmark arena */
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   606
    return SECSuccess;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   607
loser:
4558
002bb0533bfb8b5932b831b22866f10eb4e9a216 The general name code uses arenas, which is good, but it never marks
nelsonb%netscape.com
parents: 4557
diff changeset
   608
    /* TODO: release arena to mark */
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   609
    return SECFailure;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   610
}
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   611
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   612
SECStatus
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   613
cert_EncodeNameConstraints(CERTNameConstraints *constraints, PLArenaPool *arena,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   614
                           SECItem *dest)
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   615
{
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   616
    SECStatus rv = SECSuccess;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   617
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   618
    PORT_Assert(arena);
4558
002bb0533bfb8b5932b831b22866f10eb4e9a216 The general name code uses arenas, which is good, but it never marks
nelsonb%netscape.com
parents: 4557
diff changeset
   619
    /* TODO: mark arena */
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   620
    if (constraints->permited != NULL) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   621
        rv = cert_EncodeNameConstraintSubTree(
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   622
            constraints->permited, arena, &constraints->DERPermited, PR_TRUE);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   623
        if (rv == SECFailure) {
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   624
            goto loser;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   625
        }
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   626
    }
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   627
    if (constraints->excluded != NULL) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   628
        rv = cert_EncodeNameConstraintSubTree(
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   629
            constraints->excluded, arena, &constraints->DERExcluded, PR_FALSE);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   630
        if (rv == SECFailure) {
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   631
            goto loser;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   632
        }
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   633
    }
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   634
    dest = SEC_ASN1EncodeItem(arena, dest, constraints,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   635
                              CERTNameConstraintsTemplate);
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   636
    if (dest == NULL) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   637
        goto loser;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   638
    }
4558
002bb0533bfb8b5932b831b22866f10eb4e9a216 The general name code uses arenas, which is good, but it never marks
nelsonb%netscape.com
parents: 4557
diff changeset
   639
    /* TODO: unmark arena */
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   640
    return SECSuccess;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   641
loser:
4558
002bb0533bfb8b5932b831b22866f10eb4e9a216 The general name code uses arenas, which is good, but it never marks
nelsonb%netscape.com
parents: 4557
diff changeset
   642
    /* TODO: release arena to mark */
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   643
    return SECFailure;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   644
}
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   645
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   646
CERTNameConstraint *
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   647
cert_DecodeNameConstraint(PLArenaPool *reqArena, SECItem *encodedConstraint)
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   648
{
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   649
    CERTNameConstraint *constraint;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   650
    SECStatus rv = SECSuccess;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   651
    CERTGeneralName *temp;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   652
    SECItem *newEncodedConstraint;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   653
7288
917245bee72ea2a599545c8105ca8a230446a693 Fix for bug 178894 . Quick decoder updates for lib/certdb and lib/certhigh . r=nelson .
julien.pierre.bugs%sun.com
parents: 6625
diff changeset
   654
    if (!reqArena) {
917245bee72ea2a599545c8105ca8a230446a693 Fix for bug 178894 . Quick decoder updates for lib/certdb and lib/certhigh . r=nelson .
julien.pierre.bugs%sun.com
parents: 6625
diff changeset
   655
        PORT_SetError(SEC_ERROR_INVALID_ARGS);
917245bee72ea2a599545c8105ca8a230446a693 Fix for bug 178894 . Quick decoder updates for lib/certdb and lib/certhigh . r=nelson .
julien.pierre.bugs%sun.com
parents: 6625
diff changeset
   656
        return NULL;
917245bee72ea2a599545c8105ca8a230446a693 Fix for bug 178894 . Quick decoder updates for lib/certdb and lib/certhigh . r=nelson .
julien.pierre.bugs%sun.com
parents: 6625
diff changeset
   657
    }
917245bee72ea2a599545c8105ca8a230446a693 Fix for bug 178894 . Quick decoder updates for lib/certdb and lib/certhigh . r=nelson .
julien.pierre.bugs%sun.com
parents: 6625
diff changeset
   658
    newEncodedConstraint = SECITEM_ArenaDupItem(reqArena, encodedConstraint);
917245bee72ea2a599545c8105ca8a230446a693 Fix for bug 178894 . Quick decoder updates for lib/certdb and lib/certhigh . r=nelson .
julien.pierre.bugs%sun.com
parents: 6625
diff changeset
   659
    if (!newEncodedConstraint) {
917245bee72ea2a599545c8105ca8a230446a693 Fix for bug 178894 . Quick decoder updates for lib/certdb and lib/certhigh . r=nelson .
julien.pierre.bugs%sun.com
parents: 6625
diff changeset
   660
        return NULL;
917245bee72ea2a599545c8105ca8a230446a693 Fix for bug 178894 . Quick decoder updates for lib/certdb and lib/certhigh . r=nelson .
julien.pierre.bugs%sun.com
parents: 6625
diff changeset
   661
    }
4558
002bb0533bfb8b5932b831b22866f10eb4e9a216 The general name code uses arenas, which is good, but it never marks
nelsonb%netscape.com
parents: 4557
diff changeset
   662
    /* TODO: mark arena */
7288
917245bee72ea2a599545c8105ca8a230446a693 Fix for bug 178894 . Quick decoder updates for lib/certdb and lib/certhigh . r=nelson .
julien.pierre.bugs%sun.com
parents: 6625
diff changeset
   663
    constraint = PORT_ArenaZNew(reqArena, CERTNameConstraint);
4544
760b5516878b3c470940fa663ed28c3cb1f41008 Fix numerous more potential NULL pointer deref crashes. Bug 208038
nelsonb%netscape.com
parents: 4536
diff changeset
   664
    if (!constraint)
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   665
        goto loser;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   666
    rv = SEC_QuickDERDecodeItem(
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   667
        reqArena, constraint, CERTNameConstraintTemplate, newEncodedConstraint);
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   668
    if (rv != SECSuccess) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   669
        goto loser;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   670
    }
7288
917245bee72ea2a599545c8105ca8a230446a693 Fix for bug 178894 . Quick decoder updates for lib/certdb and lib/certhigh . r=nelson .
julien.pierre.bugs%sun.com
parents: 6625
diff changeset
   671
    temp = CERT_DecodeGeneralName(reqArena, &(constraint->DERName),
917245bee72ea2a599545c8105ca8a230446a693 Fix for bug 178894 . Quick decoder updates for lib/certdb and lib/certhigh . r=nelson .
julien.pierre.bugs%sun.com
parents: 6625
diff changeset
   672
                                  &(constraint->name));
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   673
    if (temp != &(constraint->name)) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   674
        goto loser;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   675
    }
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   676
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   677
    /* ### sjlee: since the name constraint contains only one
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   678
     *            CERTGeneralName, the list within CERTGeneralName shouldn't
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   679
     *            point anywhere else.  Otherwise, bad things will happen.
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   680
     */
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   681
    constraint->name.l.prev = constraint->name.l.next = &(constraint->name.l);
4558
002bb0533bfb8b5932b831b22866f10eb4e9a216 The general name code uses arenas, which is good, but it never marks
nelsonb%netscape.com
parents: 4557
diff changeset
   682
    /* TODO: unmark arena */
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   683
    return constraint;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   684
loser:
4558
002bb0533bfb8b5932b831b22866f10eb4e9a216 The general name code uses arenas, which is good, but it never marks
nelsonb%netscape.com
parents: 4557
diff changeset
   685
    /* TODO: release arena back to mark */
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   686
    return NULL;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   687
}
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   688
11486
29f85320542b003bb8432e8daf2ad165074ed792 Bug 557830: Make cert_DecodeNameConstraintSubTree() produce a
Wim Lewis <wiml@hhhh.org>
parents: 11420
diff changeset
   689
static CERTNameConstraint *
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   690
cert_DecodeNameConstraintSubTree(PLArenaPool *arena, SECItem **subTree,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   691
                                 PRBool permited)
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   692
{
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   693
    CERTNameConstraint *current = NULL;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   694
    CERTNameConstraint *first = NULL;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   695
    CERTNameConstraint *last = NULL;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   696
    int i = 0;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   697
4458
deac523f4325256aadb6dc1fc32141de39e565c0 Fix bugs experienced with oddly constructed general names.
nelsonb%netscape.com
parents: 3534
diff changeset
   698
    PORT_Assert(arena);
4558
002bb0533bfb8b5932b831b22866f10eb4e9a216 The general name code uses arenas, which is good, but it never marks
nelsonb%netscape.com
parents: 4557
diff changeset
   699
    /* TODO: mark arena */
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   700
    while (subTree[i] != NULL) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   701
        current = cert_DecodeNameConstraint(arena, subTree[i]);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   702
        if (current == NULL) {
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   703
            goto loser;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   704
        }
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   705
        if (first == NULL) {
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   706
            first = current;
11940
0e6e8153513e40154dc1907c2aff318b5342e73e Bug 1251185, NSS clang-format: else line-break fixes, r=ttaubert
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11776
diff changeset
   707
        } else {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   708
            current->l.prev = &(last->l);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   709
            last->l.next = &(current->l);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   710
        }
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   711
        last = current;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   712
        i++;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   713
    }
12742
921b5dee8fdb0a153c494faa3f561f5d80db8b17 Bug 1208405 - coverity and infer fixes, r=ttaubert
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 12734
diff changeset
   714
    if (first && last) {
921b5dee8fdb0a153c494faa3f561f5d80db8b17 Bug 1208405 - coverity and infer fixes, r=ttaubert
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 12734
diff changeset
   715
        first->l.prev = &(last->l);
921b5dee8fdb0a153c494faa3f561f5d80db8b17 Bug 1208405 - coverity and infer fixes, r=ttaubert
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 12734
diff changeset
   716
        last->l.next = &(first->l);
921b5dee8fdb0a153c494faa3f561f5d80db8b17 Bug 1208405 - coverity and infer fixes, r=ttaubert
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 12734
diff changeset
   717
    }
4558
002bb0533bfb8b5932b831b22866f10eb4e9a216 The general name code uses arenas, which is good, but it never marks
nelsonb%netscape.com
parents: 4557
diff changeset
   718
    /* TODO: unmark arena */
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   719
    return first;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   720
loser:
4558
002bb0533bfb8b5932b831b22866f10eb4e9a216 The general name code uses arenas, which is good, but it never marks
nelsonb%netscape.com
parents: 4557
diff changeset
   721
    /* TODO: release arena back to mark */
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   722
    return NULL;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   723
}
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   724
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   725
CERTNameConstraints *
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   726
cert_DecodeNameConstraints(PLArenaPool *reqArena,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   727
                           const SECItem *encodedConstraints)
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   728
{
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   729
    CERTNameConstraints *constraints;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   730
    SECStatus rv;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   731
    SECItem *newEncodedConstraints;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   732
7288
917245bee72ea2a599545c8105ca8a230446a693 Fix for bug 178894 . Quick decoder updates for lib/certdb and lib/certhigh . r=nelson .
julien.pierre.bugs%sun.com
parents: 6625
diff changeset
   733
    if (!reqArena) {
917245bee72ea2a599545c8105ca8a230446a693 Fix for bug 178894 . Quick decoder updates for lib/certdb and lib/certhigh . r=nelson .
julien.pierre.bugs%sun.com
parents: 6625
diff changeset
   734
        PORT_SetError(SEC_ERROR_INVALID_ARGS);
917245bee72ea2a599545c8105ca8a230446a693 Fix for bug 178894 . Quick decoder updates for lib/certdb and lib/certhigh . r=nelson .
julien.pierre.bugs%sun.com
parents: 6625
diff changeset
   735
        return NULL;
917245bee72ea2a599545c8105ca8a230446a693 Fix for bug 178894 . Quick decoder updates for lib/certdb and lib/certhigh . r=nelson .
julien.pierre.bugs%sun.com
parents: 6625
diff changeset
   736
    }
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   737
    PORT_Assert(encodedConstraints);
7288
917245bee72ea2a599545c8105ca8a230446a693 Fix for bug 178894 . Quick decoder updates for lib/certdb and lib/certhigh . r=nelson .
julien.pierre.bugs%sun.com
parents: 6625
diff changeset
   738
    newEncodedConstraints = SECITEM_ArenaDupItem(reqArena, encodedConstraints);
917245bee72ea2a599545c8105ca8a230446a693 Fix for bug 178894 . Quick decoder updates for lib/certdb and lib/certhigh . r=nelson .
julien.pierre.bugs%sun.com
parents: 6625
diff changeset
   739
4558
002bb0533bfb8b5932b831b22866f10eb4e9a216 The general name code uses arenas, which is good, but it never marks
nelsonb%netscape.com
parents: 4557
diff changeset
   740
    /* TODO: mark arena */
7288
917245bee72ea2a599545c8105ca8a230446a693 Fix for bug 178894 . Quick decoder updates for lib/certdb and lib/certhigh . r=nelson .
julien.pierre.bugs%sun.com
parents: 6625
diff changeset
   741
    constraints = PORT_ArenaZNew(reqArena, CERTNameConstraints);
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   742
    if (constraints == NULL) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   743
        goto loser;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   744
    }
7288
917245bee72ea2a599545c8105ca8a230446a693 Fix for bug 178894 . Quick decoder updates for lib/certdb and lib/certhigh . r=nelson .
julien.pierre.bugs%sun.com
parents: 6625
diff changeset
   745
    rv = SEC_QuickDERDecodeItem(reqArena, constraints,
917245bee72ea2a599545c8105ca8a230446a693 Fix for bug 178894 . Quick decoder updates for lib/certdb and lib/certhigh . r=nelson .
julien.pierre.bugs%sun.com
parents: 6625
diff changeset
   746
                                CERTNameConstraintsTemplate,
917245bee72ea2a599545c8105ca8a230446a693 Fix for bug 178894 . Quick decoder updates for lib/certdb and lib/certhigh . r=nelson .
julien.pierre.bugs%sun.com
parents: 6625
diff changeset
   747
                                newEncodedConstraints);
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   748
    if (rv != SECSuccess) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   749
        goto loser;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   750
    }
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   751
    if (constraints->DERPermited != NULL &&
4561
2110d7c84862e0c25da2e3386dd91ae6ba788562 Whitespace cleanup. This patch causes numerous lines that were wider
nelsonb%netscape.com
parents: 4560
diff changeset
   752
        constraints->DERPermited[0] != NULL) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   753
        constraints->permited = cert_DecodeNameConstraintSubTree(
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   754
            reqArena, constraints->DERPermited, PR_TRUE);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   755
        if (constraints->permited == NULL) {
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   756
            goto loser;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   757
        }
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   758
    }
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   759
    if (constraints->DERExcluded != NULL &&
4561
2110d7c84862e0c25da2e3386dd91ae6ba788562 Whitespace cleanup. This patch causes numerous lines that were wider
nelsonb%netscape.com
parents: 4560
diff changeset
   760
        constraints->DERExcluded[0] != NULL) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   761
        constraints->excluded = cert_DecodeNameConstraintSubTree(
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   762
            reqArena, constraints->DERExcluded, PR_FALSE);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   763
        if (constraints->excluded == NULL) {
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   764
            goto loser;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   765
        }
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   766
    }
4558
002bb0533bfb8b5932b831b22866f10eb4e9a216 The general name code uses arenas, which is good, but it never marks
nelsonb%netscape.com
parents: 4557
diff changeset
   767
    /* TODO: unmark arena */
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   768
    return constraints;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   769
loser:
4558
002bb0533bfb8b5932b831b22866f10eb4e9a216 The general name code uses arenas, which is good, but it never marks
nelsonb%netscape.com
parents: 4557
diff changeset
   770
    /* TODO: release arena back to mark */
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   771
    return NULL;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   772
}
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   773
4572
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
   774
/* Copy a chain of one or more general names to a destination chain.
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   775
** Caller has allocated at least the first destination GeneralName struct.
4572
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
   776
** Both source and destination chains are circular doubly-linked lists.
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
   777
** The first source struct is copied to the first destination struct.
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   778
** If the source chain has more than one member, and the destination chain
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   779
** has only one member, then this function allocates new structs for all but
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   780
** the first copy from the arena and links them into the destination list.
4572
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
   781
** If the destination struct is part of a list with more than one member,
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
   782
** then this function traverses both the source and destination lists,
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
   783
** copying each source struct to the corresponding dest struct.
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   784
** In that case, the destination list MUST contain at least as many
4572
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
   785
** structs as the source list or some dest entries will be overwritten.
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
   786
*/
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   787
SECStatus
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   788
CERT_CopyGeneralName(PLArenaPool *arena, CERTGeneralName *dest,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   789
                     CERTGeneralName *src)
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   790
{
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   791
    SECStatus rv;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   792
    CERTGeneralName *destHead = dest;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   793
    CERTGeneralName *srcHead = src;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   794
4572
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
   795
    PORT_Assert(dest != NULL);
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
   796
    if (!dest) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   797
        PORT_SetError(SEC_ERROR_INVALID_ARGS);
4572
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
   798
        return SECFailure;
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
   799
    }
4558
002bb0533bfb8b5932b831b22866f10eb4e9a216 The general name code uses arenas, which is good, but it never marks
nelsonb%netscape.com
parents: 4557
diff changeset
   800
    /* TODO: mark arena */
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   801
    do {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   802
        rv = cert_CopyOneGeneralName(arena, dest, src);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   803
        if (rv != SECSuccess)
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   804
            goto loser;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   805
        src = CERT_GetNextGeneralName(src);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   806
        /* if there is only one general name, we shouldn't do this */
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   807
        if (src != srcHead) {
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   808
            if (dest->l.next == &destHead->l) {
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   809
                CERTGeneralName *temp;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   810
                temp = CERT_NewGeneralName(arena, (CERTGeneralNameType)0);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   811
                if (!temp)
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   812
                    goto loser;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   813
                temp->l.next = &destHead->l;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   814
                temp->l.prev = &dest->l;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   815
                destHead->l.prev = &temp->l;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   816
                dest->l.next = &temp->l;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   817
                dest = temp;
11940
0e6e8153513e40154dc1907c2aff318b5342e73e Bug 1251185, NSS clang-format: else line-break fixes, r=ttaubert
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11776
diff changeset
   818
            } else {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   819
                dest = CERT_GetNextGeneralName(dest);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   820
            }
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   821
        }
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   822
    } while (src != srcHead && rv == SECSuccess);
4558
002bb0533bfb8b5932b831b22866f10eb4e9a216 The general name code uses arenas, which is good, but it never marks
nelsonb%netscape.com
parents: 4557
diff changeset
   823
    /* TODO: unmark arena */
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   824
    return rv;
4558
002bb0533bfb8b5932b831b22866f10eb4e9a216 The general name code uses arenas, which is good, but it never marks
nelsonb%netscape.com
parents: 4557
diff changeset
   825
loser:
002bb0533bfb8b5932b831b22866f10eb4e9a216 The general name code uses arenas, which is good, but it never marks
nelsonb%netscape.com
parents: 4557
diff changeset
   826
    /* TODO: release back to mark */
002bb0533bfb8b5932b831b22866f10eb4e9a216 The general name code uses arenas, which is good, but it never marks
nelsonb%netscape.com
parents: 4557
diff changeset
   827
    return SECFailure;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   828
}
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   829
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   830
CERTGeneralNameList *
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   831
CERT_DupGeneralNameList(CERTGeneralNameList *list)
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   832
{
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   833
    if (list != NULL) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   834
        PZ_Lock(list->lock);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   835
        list->refCount++;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   836
        PZ_Unlock(list->lock);
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   837
    }
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   838
    return list;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   839
}
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   840
7829
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
   841
/* Allocate space and copy CERTNameConstraint from src to dest */
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   842
CERTNameConstraint *
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   843
CERT_CopyNameConstraint(PLArenaPool *arena, CERTNameConstraint *dest,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   844
                        CERTNameConstraint *src)
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   845
{
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   846
    SECStatus rv;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   847
4558
002bb0533bfb8b5932b831b22866f10eb4e9a216 The general name code uses arenas, which is good, but it never marks
nelsonb%netscape.com
parents: 4557
diff changeset
   848
    /* TODO: mark arena */
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   849
    if (dest == NULL) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   850
        dest = PORT_ArenaZNew(arena, CERTNameConstraint);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   851
        if (!dest)
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   852
            goto loser;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   853
        /* mark that it is not linked */
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   854
        dest->name.l.prev = dest->name.l.next = &(dest->name.l);
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   855
    }
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   856
    rv = CERT_CopyGeneralName(arena, &dest->name, &src->name);
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   857
    if (rv != SECSuccess) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   858
        goto loser;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   859
    }
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   860
    rv = SECITEM_CopyItem(arena, &dest->DERName, &src->DERName);
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   861
    if (rv != SECSuccess) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   862
        goto loser;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   863
    }
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   864
    rv = SECITEM_CopyItem(arena, &dest->min, &src->min);
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   865
    if (rv != SECSuccess) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   866
        goto loser;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   867
    }
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   868
    rv = SECITEM_CopyItem(arena, &dest->max, &src->max);
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   869
    if (rv != SECSuccess) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   870
        goto loser;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   871
    }
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   872
    dest->l.prev = dest->l.next = &dest->l;
4558
002bb0533bfb8b5932b831b22866f10eb4e9a216 The general name code uses arenas, which is good, but it never marks
nelsonb%netscape.com
parents: 4557
diff changeset
   873
    /* TODO: unmark arena */
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   874
    return dest;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   875
loser:
4558
002bb0533bfb8b5932b831b22866f10eb4e9a216 The general name code uses arenas, which is good, but it never marks
nelsonb%netscape.com
parents: 4557
diff changeset
   876
    /* TODO: release arena to mark */
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   877
    return NULL;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   878
}
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   879
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   880
CERTGeneralName *
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   881
cert_CombineNamesLists(CERTGeneralName *list1, CERTGeneralName *list2)
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   882
{
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   883
    PRCList *begin1;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   884
    PRCList *begin2;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   885
    PRCList *end1;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   886
    PRCList *end2;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   887
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   888
    if (list1 == NULL) {
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   889
        return list2;
11940
0e6e8153513e40154dc1907c2aff318b5342e73e Bug 1251185, NSS clang-format: else line-break fixes, r=ttaubert
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11776
diff changeset
   890
    } else if (list2 == NULL) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   891
        return list1;
11940
0e6e8153513e40154dc1907c2aff318b5342e73e Bug 1251185, NSS clang-format: else line-break fixes, r=ttaubert
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11776
diff changeset
   892
    } else {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   893
        begin1 = &list1->l;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   894
        begin2 = &list2->l;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   895
        end1 = list1->l.prev;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   896
        end2 = list2->l.prev;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   897
        end1->next = begin2;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   898
        end2->next = begin1;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   899
        begin1->prev = end2;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   900
        begin2->prev = end1;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   901
        return list1;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   902
    }
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   903
}
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   904
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   905
CERTNameConstraint *
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   906
cert_CombineConstraintsLists(CERTNameConstraint *list1,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   907
                             CERTNameConstraint *list2)
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   908
{
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   909
    PRCList *begin1;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   910
    PRCList *begin2;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   911
    PRCList *end1;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   912
    PRCList *end2;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   913
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   914
    if (list1 == NULL) {
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   915
        return list2;
11940
0e6e8153513e40154dc1907c2aff318b5342e73e Bug 1251185, NSS clang-format: else line-break fixes, r=ttaubert
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11776
diff changeset
   916
    } else if (list2 == NULL) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   917
        return list1;
11940
0e6e8153513e40154dc1907c2aff318b5342e73e Bug 1251185, NSS clang-format: else line-break fixes, r=ttaubert
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11776
diff changeset
   918
    } else {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   919
        begin1 = &list1->l;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   920
        begin2 = &list2->l;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   921
        end1 = list1->l.prev;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   922
        end2 = list2->l.prev;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   923
        end1->next = begin2;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   924
        end2->next = begin1;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   925
        begin1->prev = end2;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   926
        begin2->prev = end1;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   927
        return list1;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   928
    }
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   929
}
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   930
7829
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
   931
/* Add a CERTNameConstraint to the CERTNameConstraint list */
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   932
CERTNameConstraint *
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   933
CERT_AddNameConstraint(CERTNameConstraint *list, CERTNameConstraint *constraint)
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   934
{
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   935
    PORT_Assert(constraint != NULL);
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   936
    constraint->l.next = constraint->l.prev = &constraint->l;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   937
    list = cert_CombineConstraintsLists(list, constraint);
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   938
    return list;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   939
}
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   940
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   941
SECStatus
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   942
CERT_GetNameConstraintByType(CERTNameConstraint *constraints,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   943
                             CERTGeneralNameType type,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   944
                             CERTNameConstraint **returnList,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   945
                             PLArenaPool *arena)
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   946
{
7829
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
   947
    CERTNameConstraint *current = NULL;
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   948
    void *mark = NULL;
7829
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
   949
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   950
    *returnList = NULL;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   951
    if (!constraints)
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   952
        return SECSuccess;
7829
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
   953
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
   954
    mark = PORT_ArenaMark(arena);
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
   955
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   956
    current = constraints;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   957
    do {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   958
        PORT_Assert(current->name.type);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   959
        if (current->name.type == type) {
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   960
            CERTNameConstraint *temp;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   961
            temp = CERT_CopyNameConstraint(arena, NULL, current);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   962
            if (temp == NULL)
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   963
                goto loser;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   964
            *returnList = CERT_AddNameConstraint(*returnList, temp);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   965
        }
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   966
        current = CERT_GetNextNameConstraint(current);
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   967
    } while (current != constraints);
7829
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
   968
    PORT_ArenaUnmark(arena, mark);
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   969
    return SECSuccess;
7829
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
   970
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   971
loser:
7829
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
   972
    PORT_ArenaRelease(arena, mark);
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   973
    return SECFailure;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   974
}
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   975
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   976
void *
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   977
CERT_GetGeneralNameByType(CERTGeneralName *genNames, CERTGeneralNameType type,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   978
                          PRBool derFormat)
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   979
{
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   980
    CERTGeneralName *current;
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   981
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   982
    if (!genNames)
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   983
        return NULL;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   984
    current = genNames;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   985
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
   986
    do {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   987
        if (current->type == type) {
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   988
            switch (type) {
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   989
                case certDNSName:
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   990
                case certEDIPartyName:
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   991
                case certIPAddress:
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   992
                case certRegisterID:
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   993
                case certRFC822Name:
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   994
                case certX400Address:
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   995
                case certURI:
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   996
                    return (void *)&current->name.other; /* SECItem * */
4559
54d4cb7b8d03e226e7629dc7fccd4ac8c2f97c8b Cleanup CERT_GetGeneralNameByType so that it detects when it has
nelsonb%netscape.com
parents: 4558
diff changeset
   997
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   998
                case certOtherName:
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
   999
                    return (void *)&current->name.OthName; /* OthName * */
4559
54d4cb7b8d03e226e7629dc7fccd4ac8c2f97c8b Cleanup CERT_GetGeneralNameByType so that it detects when it has
nelsonb%netscape.com
parents: 4558
diff changeset
  1000
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1001
                case certDirectoryName:
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1002
                    return derFormat
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1003
                               ? (void *)&current
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1004
                                     ->derDirectoryName /* SECItem * */
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1005
                               : (void *)&current->name
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1006
                                     .directoryName; /* CERTName * */
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1007
            }
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1008
            PORT_Assert(0);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1009
            return NULL;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1010
        }
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1011
        current = CERT_GetNextGeneralName(current);
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1012
    } while (current != genNames);
4559
54d4cb7b8d03e226e7629dc7fccd4ac8c2f97c8b Cleanup CERT_GetGeneralNameByType so that it detects when it has
nelsonb%netscape.com
parents: 4558
diff changeset
  1013
    return NULL;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1014
}
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1015
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1016
int
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1017
CERT_GetNamesLength(CERTGeneralName *names)
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1018
{
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1019
    int length = 0;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1020
    CERTGeneralName *first;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1021
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1022
    first = names;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1023
    if (names != NULL) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1024
        do {
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1025
            length++;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1026
            names = CERT_GetNextGeneralName(names);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1027
        } while (names != first);
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1028
    }
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1029
    return length;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1030
}
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1031
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1032
/* Creates new GeneralNames for any email addresses found in the
4572
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
  1033
** input DN, and links them onto the list for the DN.
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
  1034
*/
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
  1035
SECStatus
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
  1036
cert_ExtractDNEmailAddrs(CERTGeneralName *name, PLArenaPool *arena)
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
  1037
{
6625
d16b29aac08af20657f70159a69520d59b6d6a9c Bug 326315. Warning Reduction. On TRUNK only. r=Julien.Pierre
nelson%bolyard.com
parents: 5740
diff changeset
  1038
    CERTGeneralName *nameList = NULL;
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1039
    const CERTRDN **nRDNs = (const CERTRDN **)(name->name.directoryName.rdns);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1040
    SECStatus rv = SECSuccess;
4572
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
  1041
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
  1042
    PORT_Assert(name->type == certDirectoryName);
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
  1043
    if (name->type != certDirectoryName) {
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
  1044
        PORT_SetError(SEC_ERROR_INVALID_ARGS);
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1045
        return SECFailure;
4572
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
  1046
    }
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
  1047
    /* TODO: mark arena */
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
  1048
    while (nRDNs && *nRDNs) { /* loop over RDNs */
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1049
        const CERTRDN *nRDN = *nRDNs++;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1050
        CERTAVA **nAVAs = nRDN->avas;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1051
        while (nAVAs && *nAVAs) { /* loop over AVAs */
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1052
            int tag;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1053
            CERTAVA *nAVA = *nAVAs++;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1054
            tag = CERT_GetAVATag(nAVA);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1055
            if (tag == SEC_OID_PKCS9_EMAIL_ADDRESS ||
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1056
                tag == SEC_OID_RFC1274_MAIL) { /* email AVA */
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1057
                CERTGeneralName *newName = NULL;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1058
                SECItem *avaValue = CERT_DecodeAVAValue(&nAVA->value);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1059
                if (!avaValue)
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1060
                    goto loser;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1061
                rv = SECFailure;
7829
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1062
                newName = CERT_NewGeneralName(arena, certRFC822Name);
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1063
                if (newName) {
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1064
                    rv =
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1065
                        SECITEM_CopyItem(arena, &newName->name.other, avaValue);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1066
                }
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1067
                SECITEM_FreeItem(avaValue, PR_TRUE);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1068
                if (rv != SECSuccess)
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1069
                    goto loser;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1070
                nameList = cert_CombineNamesLists(nameList, newName);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1071
            } /* handle one email AVA */
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1072
        }     /* loop over AVAs */
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1073
    }         /* loop over RDNs */
4572
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
  1074
    /* combine new names with old one. */
12734
25bbb8bdd46086979558331d5030adeab4d4129e Bug 1277228 - some scan-build fixes to enable it on base/certdb/certhigh, r=ttaubert
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 12490
diff changeset
  1075
    (void)cert_CombineNamesLists(name, nameList);
4572
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
  1076
    /* TODO: unmark arena */
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
  1077
    return SECSuccess;
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
  1078
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
  1079
loser:
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
  1080
    /* TODO: release arena back to mark */
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
  1081
    return SECFailure;
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
  1082
}
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
  1083
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1084
/* Extract all names except Subject Common Name from a cert
9647
109429a93218ac5f06fa59d323ba415a09f55a67 Bug 394919 - dNSName constraints should constrain cert Common Names in EE
nelson%bolyard.com
parents: 8860
diff changeset
  1085
** in preparation for a name constraints test.
4572
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
  1086
*/
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1087
CERTGeneralName *
10759
0b69d6cc3acd5e723d4cafefd956e61466b80c53 Bug 802430: Allow NSS to be built with NO_NSPR_10_SUPPORT, r=wtc
Brian Smith <bsmith@mozilla.com>
parents: 10705
diff changeset
  1088
CERT_GetCertificateNames(CERTCertificate *cert, PLArenaPool *arena)
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1089
{
9647
109429a93218ac5f06fa59d323ba415a09f55a67 Bug 394919 - dNSName constraints should constrain cert Common Names in EE
nelson%bolyard.com
parents: 8860
diff changeset
  1090
    return CERT_GetConstrainedCertificateNames(cert, arena, PR_FALSE);
109429a93218ac5f06fa59d323ba415a09f55a67 Bug 394919 - dNSName constraints should constrain cert Common Names in EE
nelson%bolyard.com
parents: 8860
diff changeset
  1091
}
109429a93218ac5f06fa59d323ba415a09f55a67 Bug 394919 - dNSName constraints should constrain cert Common Names in EE
nelson%bolyard.com
parents: 8860
diff changeset
  1092
109429a93218ac5f06fa59d323ba415a09f55a67 Bug 394919 - dNSName constraints should constrain cert Common Names in EE
nelson%bolyard.com
parents: 8860
diff changeset
  1093
/* This function is called by CERT_VerifyCertChain to extract all
109429a93218ac5f06fa59d323ba415a09f55a67 Bug 394919 - dNSName constraints should constrain cert Common Names in EE
nelson%bolyard.com
parents: 8860
diff changeset
  1094
** names from a cert in preparation for a name constraints test.
109429a93218ac5f06fa59d323ba415a09f55a67 Bug 394919 - dNSName constraints should constrain cert Common Names in EE
nelson%bolyard.com
parents: 8860
diff changeset
  1095
*/
109429a93218ac5f06fa59d323ba415a09f55a67 Bug 394919 - dNSName constraints should constrain cert Common Names in EE
nelson%bolyard.com
parents: 8860
diff changeset
  1096
CERTGeneralName *
10705
9639e5f328c90e850b46817011d31ee7adf35f27 Bug 854729: Add const to many certificate-related NSS functions, r=ryan.sleevi
Brian Smith <bsmith@mozilla.com>
parents: 10685
diff changeset
  1097
CERT_GetConstrainedCertificateNames(const CERTCertificate *cert,
10759
0b69d6cc3acd5e723d4cafefd956e61466b80c53 Bug 802430: Allow NSS to be built with NO_NSPR_10_SUPPORT, r=wtc
Brian Smith <bsmith@mozilla.com>
parents: 10705
diff changeset
  1098
                                    PLArenaPool *arena,
9647
109429a93218ac5f06fa59d323ba415a09f55a67 Bug 394919 - dNSName constraints should constrain cert Common Names in EE
nelson%bolyard.com
parents: 8860
diff changeset
  1099
                                    PRBool includeSubjectCommonName)
109429a93218ac5f06fa59d323ba415a09f55a67 Bug 394919 - dNSName constraints should constrain cert Common Names in EE
nelson%bolyard.com
parents: 8860
diff changeset
  1100
{
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1101
    CERTGeneralName *DN;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1102
    CERTGeneralName *SAN;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1103
    PRUint32 numDNSNames = 0;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1104
    SECStatus rv;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1105
9647
109429a93218ac5f06fa59d323ba415a09f55a67 Bug 394919 - dNSName constraints should constrain cert Common Names in EE
nelson%bolyard.com
parents: 8860
diff changeset
  1106
    if (!arena) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1107
        PORT_SetError(SEC_ERROR_INVALID_ARGS);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1108
        return NULL;
9647
109429a93218ac5f06fa59d323ba415a09f55a67 Bug 394919 - dNSName constraints should constrain cert Common Names in EE
nelson%bolyard.com
parents: 8860
diff changeset
  1109
    }
4558
002bb0533bfb8b5932b831b22866f10eb4e9a216 The general name code uses arenas, which is good, but it never marks
nelsonb%netscape.com
parents: 4557
diff changeset
  1110
    /* TODO: mark arena */
7829
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1111
    DN = CERT_NewGeneralName(arena, certDirectoryName);
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1112
    if (DN == NULL) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1113
        goto loser;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1114
    }
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1115
    rv = CERT_CopyName(arena, &DN->name.directoryName, &cert->subject);
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1116
    if (rv != SECSuccess) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1117
        goto loser;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1118
    }
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1119
    rv = SECITEM_CopyItem(arena, &DN->derDirectoryName, &cert->derSubject);
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1120
    if (rv != SECSuccess) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1121
        goto loser;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1122
    }
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1123
    /* Extract email addresses from DN, construct CERTGeneralName structs
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1124
    ** for them, add them to the name list
4572
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
  1125
    */
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
  1126
    rv = cert_ExtractDNEmailAddrs(DN, arena);
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
  1127
    if (rv != SECSuccess)
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
  1128
        goto loser;
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
  1129
33b930a46b752479d44edb4f9fbc4d8629b124c7 This patch extracts rfc822 names from a cert's distinguished name at the
nelsonb%netscape.com
parents: 4561
diff changeset
  1130
    /* Now extract any GeneralNames from the subject name names extension. */
9647
109429a93218ac5f06fa59d323ba415a09f55a67 Bug 394919 - dNSName constraints should constrain cert Common Names in EE
nelson%bolyard.com
parents: 8860
diff changeset
  1131
    SAN = cert_GetSubjectAltNameList(cert, arena);
109429a93218ac5f06fa59d323ba415a09f55a67 Bug 394919 - dNSName constraints should constrain cert Common Names in EE
nelson%bolyard.com
parents: 8860
diff changeset
  1132
    if (SAN) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1133
        numDNSNames = cert_CountDNSPatterns(SAN);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1134
        DN = cert_CombineNamesLists(DN, SAN);
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1135
    }
9647
109429a93218ac5f06fa59d323ba415a09f55a67 Bug 394919 - dNSName constraints should constrain cert Common Names in EE
nelson%bolyard.com
parents: 8860
diff changeset
  1136
    if (!numDNSNames && includeSubjectCommonName) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1137
        char *cn = CERT_GetCommonName(&cert->subject);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1138
        if (cn) {
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1139
            CERTGeneralName *CN = CERT_NewGeneralName(arena, certDNSName);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1140
            if (CN) {
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1141
                SECItem cnItem = { siBuffer, NULL, 0 };
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1142
                cnItem.data = (unsigned char *)cn;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1143
                cnItem.len = strlen(cn);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1144
                rv = SECITEM_CopyItem(arena, &CN->name.other, &cnItem);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1145
                if (rv == SECSuccess) {
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1146
                    DN = cert_CombineNamesLists(DN, CN);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1147
                }
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1148
            }
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1149
            PORT_Free(cn);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1150
        }
9647
109429a93218ac5f06fa59d323ba415a09f55a67 Bug 394919 - dNSName constraints should constrain cert Common Names in EE
nelson%bolyard.com
parents: 8860
diff changeset
  1151
    }
109429a93218ac5f06fa59d323ba415a09f55a67 Bug 394919 - dNSName constraints should constrain cert Common Names in EE
nelson%bolyard.com
parents: 8860
diff changeset
  1152
    if (rv == SECSuccess) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1153
        /* TODO: unmark arena */
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1154
        return DN;
9647
109429a93218ac5f06fa59d323ba415a09f55a67 Bug 394919 - dNSName constraints should constrain cert Common Names in EE
nelson%bolyard.com
parents: 8860
diff changeset
  1155
    }
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1156
loser:
4558
002bb0533bfb8b5932b831b22866f10eb4e9a216 The general name code uses arenas, which is good, but it never marks
nelsonb%netscape.com
parents: 4557
diff changeset
  1157
    /* TODO: release arena to mark */
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1158
    return NULL;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1159
}
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1160
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1161
/* Returns SECSuccess if name matches constraint per RFC 3280 rules for
4853
c218109bea1ebce38224ac927138abd358124a11 Fix bugs in the new implementation of URI name constraints.
nelsonb%netscape.com
parents: 4638
diff changeset
  1162
** URI name constraints.  SECFailure otherwise.
c218109bea1ebce38224ac927138abd358124a11 Fix bugs in the new implementation of URI name constraints.
nelsonb%netscape.com
parents: 4638
diff changeset
  1163
** If the constraint begins with a dot, it is a domain name, otherwise
c218109bea1ebce38224ac927138abd358124a11 Fix bugs in the new implementation of URI name constraints.
nelsonb%netscape.com
parents: 4638
diff changeset
  1164
** It is a host name.  Examples:
c218109bea1ebce38224ac927138abd358124a11 Fix bugs in the new implementation of URI name constraints.
nelsonb%netscape.com
parents: 4638
diff changeset
  1165
**  Constraint            Name             Result
c218109bea1ebce38224ac927138abd358124a11 Fix bugs in the new implementation of URI name constraints.
nelsonb%netscape.com
parents: 4638
diff changeset
  1166
** ------------      ---------------      --------
c218109bea1ebce38224ac927138abd358124a11 Fix bugs in the new implementation of URI name constraints.
nelsonb%netscape.com
parents: 4638
diff changeset
  1167
**  foo.bar.com          foo.bar.com      matches
c218109bea1ebce38224ac927138abd358124a11 Fix bugs in the new implementation of URI name constraints.
nelsonb%netscape.com
parents: 4638
diff changeset
  1168
**  foo.bar.com          FoO.bAr.CoM      matches
c218109bea1ebce38224ac927138abd358124a11 Fix bugs in the new implementation of URI name constraints.
nelsonb%netscape.com
parents: 4638
diff changeset
  1169
**  foo.bar.com      www.foo.bar.com      no match
c218109bea1ebce38224ac927138abd358124a11 Fix bugs in the new implementation of URI name constraints.
nelsonb%netscape.com
parents: 4638
diff changeset
  1170
**  foo.bar.com        nofoo.bar.com      no match
c218109bea1ebce38224ac927138abd358124a11 Fix bugs in the new implementation of URI name constraints.
nelsonb%netscape.com
parents: 4638
diff changeset
  1171
** .foo.bar.com      www.foo.bar.com      matches
c218109bea1ebce38224ac927138abd358124a11 Fix bugs in the new implementation of URI name constraints.
nelsonb%netscape.com
parents: 4638
diff changeset
  1172
** .foo.bar.com        nofoo.bar.com      no match
c218109bea1ebce38224ac927138abd358124a11 Fix bugs in the new implementation of URI name constraints.
nelsonb%netscape.com
parents: 4638
diff changeset
  1173
** .foo.bar.com          foo.bar.com      no match
c218109bea1ebce38224ac927138abd358124a11 Fix bugs in the new implementation of URI name constraints.
nelsonb%netscape.com
parents: 4638
diff changeset
  1174
** .foo.bar.com     www..foo.bar.com      no match
c218109bea1ebce38224ac927138abd358124a11 Fix bugs in the new implementation of URI name constraints.
nelsonb%netscape.com
parents: 4638
diff changeset
  1175
*/
c218109bea1ebce38224ac927138abd358124a11 Fix bugs in the new implementation of URI name constraints.
nelsonb%netscape.com
parents: 4638
diff changeset
  1176
static SECStatus
c218109bea1ebce38224ac927138abd358124a11 Fix bugs in the new implementation of URI name constraints.
nelsonb%netscape.com
parents: 4638
diff changeset
  1177
compareURIN2C(const SECItem *name, const SECItem *constraint)
c218109bea1ebce38224ac927138abd358124a11 Fix bugs in the new implementation of URI name constraints.
nelsonb%netscape.com
parents: 4638
diff changeset
  1178
{
c218109bea1ebce38224ac927138abd358124a11 Fix bugs in the new implementation of URI name constraints.
nelsonb%netscape.com
parents: 4638
diff changeset
  1179
    int offset;
c218109bea1ebce38224ac927138abd358124a11 Fix bugs in the new implementation of URI name constraints.
nelsonb%netscape.com
parents: 4638
diff changeset
  1180
    /* The spec is silent on intepreting zero-length constraints.
c218109bea1ebce38224ac927138abd358124a11 Fix bugs in the new implementation of URI name constraints.
nelsonb%netscape.com
parents: 4638
diff changeset
  1181
    ** We interpret them as matching no URI names.
c218109bea1ebce38224ac927138abd358124a11 Fix bugs in the new implementation of URI name constraints.
nelsonb%netscape.com
parents: 4638
diff changeset
  1182
    */
c218109bea1ebce38224ac927138abd358124a11 Fix bugs in the new implementation of URI name constraints.
nelsonb%netscape.com
parents: 4638
diff changeset
  1183
    if (!constraint->len)
c218109bea1ebce38224ac927138abd358124a11 Fix bugs in the new implementation of URI name constraints.
nelsonb%netscape.com
parents: 4638
diff changeset
  1184
        return SECFailure;
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1185
    if (constraint->data[0] != '.') {
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1186
        /* constraint is a host name. */
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1187
        if (name->len != constraint->len ||
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1188
            PL_strncasecmp((char *)name->data, (char *)constraint->data,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1189
                           constraint->len))
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1190
            return SECFailure;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1191
        return SECSuccess;
4853
c218109bea1ebce38224ac927138abd358124a11 Fix bugs in the new implementation of URI name constraints.
nelsonb%netscape.com
parents: 4638
diff changeset
  1192
    }
c218109bea1ebce38224ac927138abd358124a11 Fix bugs in the new implementation of URI name constraints.
nelsonb%netscape.com
parents: 4638
diff changeset
  1193
    /* constraint is a domain name. */
c218109bea1ebce38224ac927138abd358124a11 Fix bugs in the new implementation of URI name constraints.
nelsonb%netscape.com
parents: 4638
diff changeset
  1194
    if (name->len < constraint->len)
c218109bea1ebce38224ac927138abd358124a11 Fix bugs in the new implementation of URI name constraints.
nelsonb%netscape.com
parents: 4638
diff changeset
  1195
        return SECFailure;
c218109bea1ebce38224ac927138abd358124a11 Fix bugs in the new implementation of URI name constraints.
nelsonb%netscape.com
parents: 4638
diff changeset
  1196
    offset = name->len - constraint->len;
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1197
    if (PL_strncasecmp((char *)(name->data + offset), (char *)constraint->data,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1198
                       constraint->len))
4853
c218109bea1ebce38224ac927138abd358124a11 Fix bugs in the new implementation of URI name constraints.
nelsonb%netscape.com
parents: 4638
diff changeset
  1199
        return SECFailure;
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1200
    if (!offset ||
4853
c218109bea1ebce38224ac927138abd358124a11 Fix bugs in the new implementation of URI name constraints.
nelsonb%netscape.com
parents: 4638
diff changeset
  1201
        (name->data[offset - 1] == '.') + (constraint->data[0] == '.') == 1)
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1202
        return SECSuccess;
4853
c218109bea1ebce38224ac927138abd358124a11 Fix bugs in the new implementation of URI name constraints.
nelsonb%netscape.com
parents: 4638
diff changeset
  1203
    return SECFailure;
c218109bea1ebce38224ac927138abd358124a11 Fix bugs in the new implementation of URI name constraints.
nelsonb%netscape.com
parents: 4638
diff changeset
  1204
}
c218109bea1ebce38224ac927138abd358124a11 Fix bugs in the new implementation of URI name constraints.
nelsonb%netscape.com
parents: 4638
diff changeset
  1205
5021
bcea2d382ca3f259b97adc3b5252eb3a6b33b31c Fix name constraints code to pass NIST PKITS test 38. r=wtc. Bug 231223.
nelsonb%netscape.com
parents: 4883
diff changeset
  1206
/* for DNSname constraints, RFC 3280 says, (section 4.2.1.11, page 38)
bcea2d382ca3f259b97adc3b5252eb3a6b33b31c Fix name constraints code to pass NIST PKITS test 38. r=wtc. Bug 231223.
nelsonb%netscape.com
parents: 4883
diff changeset
  1207
**
bcea2d382ca3f259b97adc3b5252eb3a6b33b31c Fix name constraints code to pass NIST PKITS test 38. r=wtc. Bug 231223.
nelsonb%netscape.com
parents: 4883
diff changeset
  1208
** DNS name restrictions are expressed as foo.bar.com.  Any DNS name
bcea2d382ca3f259b97adc3b5252eb3a6b33b31c Fix name constraints code to pass NIST PKITS test 38. r=wtc. Bug 231223.
nelsonb%netscape.com
parents: 4883
diff changeset
  1209
** that can be constructed by simply adding to the left hand side of the
bcea2d382ca3f259b97adc3b5252eb3a6b33b31c Fix name constraints code to pass NIST PKITS test 38. r=wtc. Bug 231223.
nelsonb%netscape.com
parents: 4883
diff changeset
  1210
** name satisfies the name constraint.  For example, www.foo.bar.com
bcea2d382ca3f259b97adc3b5252eb3a6b33b31c Fix name constraints code to pass NIST PKITS test 38. r=wtc. Bug 231223.
nelsonb%netscape.com
parents: 4883
diff changeset
  1211
** would satisfy the constraint but foo1.bar.com would not.
bcea2d382ca3f259b97adc3b5252eb3a6b33b31c Fix name constraints code to pass NIST PKITS test 38. r=wtc. Bug 231223.
nelsonb%netscape.com
parents: 4883
diff changeset
  1212
**
bcea2d382ca3f259b97adc3b5252eb3a6b33b31c Fix name constraints code to pass NIST PKITS test 38. r=wtc. Bug 231223.
nelsonb%netscape.com
parents: 4883
diff changeset
  1213
** But NIST's PKITS test suite requires that the constraint be treated
bcea2d382ca3f259b97adc3b5252eb3a6b33b31c Fix name constraints code to pass NIST PKITS test 38. r=wtc. Bug 231223.
nelsonb%netscape.com
parents: 4883
diff changeset
  1214
** as a domain name, and requires that any name added to the left hand
bcea2d382ca3f259b97adc3b5252eb3a6b33b31c Fix name constraints code to pass NIST PKITS test 38. r=wtc. Bug 231223.
nelsonb%netscape.com
parents: 4883
diff changeset
  1215
** side end in a dot ".".  Sensible, but not strictly following the RFC.
bcea2d382ca3f259b97adc3b5252eb3a6b33b31c Fix name constraints code to pass NIST PKITS test 38. r=wtc. Bug 231223.
nelsonb%netscape.com
parents: 4883
diff changeset
  1216
**
bcea2d382ca3f259b97adc3b5252eb3a6b33b31c Fix name constraints code to pass NIST PKITS test 38. r=wtc. Bug 231223.
nelsonb%netscape.com
parents: 4883
diff changeset
  1217
**  Constraint            Name            RFC 3280  NIST PKITS
bcea2d382ca3f259b97adc3b5252eb3a6b33b31c Fix name constraints code to pass NIST PKITS test 38. r=wtc. Bug 231223.
nelsonb%netscape.com
parents: 4883
diff changeset
  1218
** ------------      ---------------      --------  ----------
bcea2d382ca3f259b97adc3b5252eb3a6b33b31c Fix name constraints code to pass NIST PKITS test 38. r=wtc. Bug 231223.
nelsonb%netscape.com
parents: 4883
diff changeset
  1219
**  foo.bar.com          foo.bar.com      matches    matches
bcea2d382ca3f259b97adc3b5252eb3a6b33b31c Fix name constraints code to pass NIST PKITS test 38. r=wtc. Bug 231223.
nelsonb%netscape.com
parents: 4883
diff changeset
  1220
**  foo.bar.com          FoO.bAr.CoM      matches    matches
bcea2d382ca3f259b97adc3b5252eb3a6b33b31c Fix name constraints code to pass NIST PKITS test 38. r=wtc. Bug 231223.
nelsonb%netscape.com
parents: 4883
diff changeset
  1221
**  foo.bar.com      www.foo.bar.com      matches    matches
bcea2d382ca3f259b97adc3b5252eb3a6b33b31c Fix name constraints code to pass NIST PKITS test 38. r=wtc. Bug 231223.
nelsonb%netscape.com
parents: 4883
diff changeset
  1222
**  foo.bar.com        nofoo.bar.com      MATCHES    NO MATCH
bcea2d382ca3f259b97adc3b5252eb3a6b33b31c Fix name constraints code to pass NIST PKITS test 38. r=wtc. Bug 231223.
nelsonb%netscape.com
parents: 4883
diff changeset
  1223
** .foo.bar.com      www.foo.bar.com      matches    matches? disallowed?
bcea2d382ca3f259b97adc3b5252eb3a6b33b31c Fix name constraints code to pass NIST PKITS test 38. r=wtc. Bug 231223.
nelsonb%netscape.com
parents: 4883
diff changeset
  1224
** .foo.bar.com          foo.bar.com      no match   no match
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1225
** .foo.bar.com     www..foo.bar.com      matches    probably not
5021
bcea2d382ca3f259b97adc3b5252eb3a6b33b31c Fix name constraints code to pass NIST PKITS test 38. r=wtc. Bug 231223.
nelsonb%netscape.com
parents: 4883
diff changeset
  1226
**
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1227
** We will try to conform to NIST's PKITS tests, and the unstated
5021
bcea2d382ca3f259b97adc3b5252eb3a6b33b31c Fix name constraints code to pass NIST PKITS test 38. r=wtc. Bug 231223.
nelsonb%netscape.com
parents: 4883
diff changeset
  1228
** rules they imply.
4520
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1229
*/
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1230
static SECStatus
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1231
compareDNSN2C(const SECItem *name, const SECItem *constraint)
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1232
{
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1233
    int offset;
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1234
    /* The spec is silent on intepreting zero-length constraints.
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1235
    ** We interpret them as matching all DNSnames.
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1236
    */
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1237
    if (!constraint->len)
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1238
        return SECSuccess;
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1239
    if (name->len < constraint->len)
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1240
        return SECFailure;
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1241
    offset = name->len - constraint->len;
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1242
    if (PL_strncasecmp((char *)(name->data + offset), (char *)constraint->data,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1243
                       constraint->len))
4520
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1244
        return SECFailure;
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1245
    if (!offset ||
5021
bcea2d382ca3f259b97adc3b5252eb3a6b33b31c Fix name constraints code to pass NIST PKITS test 38. r=wtc. Bug 231223.
nelsonb%netscape.com
parents: 4883
diff changeset
  1246
        (name->data[offset - 1] == '.') + (constraint->data[0] == '.') == 1)
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1247
        return SECSuccess;
5021
bcea2d382ca3f259b97adc3b5252eb3a6b33b31c Fix name constraints code to pass NIST PKITS test 38. r=wtc. Bug 231223.
nelsonb%netscape.com
parents: 4883
diff changeset
  1248
    return SECFailure;
4520
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1249
}
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1250
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1251
/* Returns SECSuccess if name matches constraint per RFC 3280 rules for
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1252
** internet email addresses.  SECFailure otherwise.
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1253
** If constraint contains a '@' then the two strings much match exactly.
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1254
** Else if constraint starts with a '.'. then it must match the right-most
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1255
** substring of the name,
4520
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1256
** else constraint string must match entire name after the name's '@'.
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1257
** Empty constraint string matches all names. All comparisons case insensitive.
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1258
*/
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1259
static SECStatus
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1260
compareRFC822N2C(const SECItem *name, const SECItem *constraint)
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1261
{
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1262
    int offset;
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1263
    if (!constraint->len)
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1264
        return SECSuccess;
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1265
    if (name->len < constraint->len)
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1266
        return SECFailure;
4536
324efa4007330cd11669ed42d4ffa9bc5330b911 Further refinements to the Name Constraints checking logic, to make it
nelsonb%netscape.com
parents: 4520
diff changeset
  1267
    if (constraint->len == 1 && constraint->data[0] == '.')
324efa4007330cd11669ed42d4ffa9bc5330b911 Further refinements to the Name Constraints checking logic, to make it
nelsonb%netscape.com
parents: 4520
diff changeset
  1268
        return SECSuccess;
4520
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1269
    for (offset = constraint->len - 1; offset >= 0; --offset) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1270
        if (constraint->data[offset] == '@') {
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1271
            return (name->len == constraint->len &&
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1272
                    !PL_strncasecmp((char *)name->data,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1273
                                    (char *)constraint->data, constraint->len))
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1274
                       ? SECSuccess
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1275
                       : SECFailure;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1276
        }
4520
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1277
    }
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1278
    offset = name->len - constraint->len;
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1279
    if (PL_strncasecmp((char *)(name->data + offset), (char *)constraint->data,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1280
                       constraint->len))
4520
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1281
        return SECFailure;
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1282
    if (constraint->data[0] == '.')
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1283
        return SECSuccess;
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1284
    if (offset > 0 && name->data[offset - 1] == '@')
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1285
        return SECSuccess;
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1286
    return SECFailure;
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1287
}
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1288
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1289
/* name contains either a 4 byte IPv4 address or a 16 byte IPv6 address.
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1290
** constraint contains an address of the same length, and a subnet mask
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1291
** of the same length.  Compare name's address to the constraint's
4520
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1292
** address, subject to the mask.
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1293
** Return SECSuccess if they match, SECFailure if they don't.
4490
1ed8940c0639a17a6336da55393b4f857bdc022b Bug 204555: Eliminated other potential crashes in code related to
wtc%netscape.com
parents: 4458
diff changeset
  1294
*/
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1295
static SECStatus
4520
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1296
compareIPaddrN2C(const SECItem *name, const SECItem *constraint)
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1297
{
4520
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1298
    int i;
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1299
    if (name->len == 4 && constraint->len == 8) { /* ipv4 addr */
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1300
        for (i = 0; i < 4; i++) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1301
            if ((name->data[i] ^ constraint->data[i]) & constraint->data[i + 4])
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1302
                goto loser;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1303
        }
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1304
        return SECSuccess;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1305
    }
4520
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1306
    if (name->len == 16 && constraint->len == 32) { /* ipv6 addr */
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1307
        for (i = 0; i < 16; i++) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1308
            if ((name->data[i] ^ constraint->data[i]) &
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1309
                constraint->data[i + 16])
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1310
                goto loser;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1311
        }
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1312
        return SECSuccess;
4520
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1313
    }
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1314
loser:
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1315
    return SECFailure;
4490
1ed8940c0639a17a6336da55393b4f857bdc022b Bug 204555: Eliminated other potential crashes in code related to
wtc%netscape.com
parents: 4458
diff changeset
  1316
}
1ed8940c0639a17a6336da55393b4f857bdc022b Bug 204555: Eliminated other potential crashes in code related to
wtc%netscape.com
parents: 4458
diff changeset
  1317
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1318
/* start with a SECItem that points to a URI.  Parse it lookingg for
4520
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1319
** a hostname.  Modify item->data and item->len to define the hostname,
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1320
** but do not modify and data at item->data.
4520
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1321
** If anything goes wrong, the contents of *item are undefined.
4490
1ed8940c0639a17a6336da55393b4f857bdc022b Bug 204555: Eliminated other potential crashes in code related to
wtc%netscape.com
parents: 4458
diff changeset
  1322
*/
4520
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1323
static SECStatus
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1324
parseUriHostname(SECItem *item)
4490
1ed8940c0639a17a6336da55393b4f857bdc022b Bug 204555: Eliminated other potential crashes in code related to
wtc%netscape.com
parents: 4458
diff changeset
  1325
{
4520
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1326
    int i;
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1327
    PRBool found = PR_FALSE;
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1328
    for (i = 0; (unsigned)(i + 2) < item->len; ++i) {
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1329
        if (item->data[i] == ':' && item->data[i + 1] == '/' &&
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1330
            item->data[i + 2] == '/') {
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1331
            i += 3;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1332
            item->data += i;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1333
            item->len -= i;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1334
            found = PR_TRUE;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1335
            break;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1336
        }
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1337
    }
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1338
    if (!found)
4520
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1339
        return SECFailure;
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1340
    /* now look for a '/', which is an upper bound in the end of the name */
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1341
    for (i = 0; (unsigned)i < item->len; ++i) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1342
        if (item->data[i] == '/') {
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1343
            item->len = i;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1344
            break;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1345
        }
4520
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1346
    }
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1347
    /* now look for a ':', which marks the end of the name */
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1348
    for (i = item->len; --i >= 0;) {
4520
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1349
        if (item->data[i] == ':') {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1350
            item->len = i;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1351
            break;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1352
        }
4520
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1353
    }
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1354
    /* now look for an '@', which marks the beginning of the hostname */
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1355
    for (i = 0; (unsigned)i < item->len; ++i) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1356
        if (item->data[i] == '@') {
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1357
            ++i;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1358
            item->data += i;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1359
            item->len -= i;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1360
            break;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1361
        }
4520
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1362
    }
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1363
    return item->len ? SECSuccess : SECFailure;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1364
}
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1365
4520
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1366
/* This function takes one name, and a list of constraints.
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1367
** It searches the constraints looking for a match.
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1368
** It returns SECSuccess if the name satisfies the constraints, i.e.,
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1369
** if excluded, then the name does not match any constraint,
4520
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1370
** if permitted, then the name matches at least one constraint.
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1371
** It returns SECFailure if the name fails to satisfy the constraints,
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1372
** or if some code fails (e.g. out of memory, or invalid constraint)
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1373
*/
7829
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1374
SECStatus
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1375
cert_CompareNameWithConstraints(const CERTGeneralName *name,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1376
                                const CERTNameConstraint *constraints,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1377
                                PRBool excluded)
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1378
{
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1379
    SECStatus rv = SECSuccess;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1380
    SECStatus matched = SECFailure;
10705
9639e5f328c90e850b46817011d31ee7adf35f27 Bug 854729: Add const to many certificate-related NSS functions, r=ryan.sleevi
Brian Smith <bsmith@mozilla.com>
parents: 10685
diff changeset
  1381
    const CERTNameConstraint *current;
4490
1ed8940c0639a17a6336da55393b4f857bdc022b Bug 204555: Eliminated other potential crashes in code related to
wtc%netscape.com
parents: 4458
diff changeset
  1382
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1383
    PORT_Assert(constraints); /* caller should not call with NULL */
4520
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1384
    if (!constraints) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1385
        PORT_SetError(SEC_ERROR_INVALID_ARGS);
4490
1ed8940c0639a17a6336da55393b4f857bdc022b Bug 204555: Eliminated other potential crashes in code related to
wtc%netscape.com
parents: 4458
diff changeset
  1386
        return SECFailure;
4520
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1387
    }
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1388
4490
1ed8940c0639a17a6336da55393b4f857bdc022b Bug 204555: Eliminated other potential crashes in code related to
wtc%netscape.com
parents: 4458
diff changeset
  1389
    current = constraints;
1ed8940c0639a17a6336da55393b4f857bdc022b Bug 204555: Eliminated other potential crashes in code related to
wtc%netscape.com
parents: 4458
diff changeset
  1390
    do {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1391
        rv = SECSuccess;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1392
        matched = SECFailure;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1393
        PORT_Assert(name->type == current->name.type);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1394
        switch (name->type) {
4490
1ed8940c0639a17a6336da55393b4f857bdc022b Bug 204555: Eliminated other potential crashes in code related to
wtc%netscape.com
parents: 4458
diff changeset
  1395
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1396
            case certDNSName:
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1397
                matched =
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1398
                    compareDNSN2C(&name->name.other, &current->name.name.other);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1399
                break;
4490
1ed8940c0639a17a6336da55393b4f857bdc022b Bug 204555: Eliminated other potential crashes in code related to
wtc%netscape.com
parents: 4458
diff changeset
  1400
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1401
            case certRFC822Name:
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1402
                matched = compareRFC822N2C(&name->name.other,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1403
                                           &current->name.name.other);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1404
                break;
4490
1ed8940c0639a17a6336da55393b4f857bdc022b Bug 204555: Eliminated other potential crashes in code related to
wtc%netscape.com
parents: 4458
diff changeset
  1405
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1406
            case certURI: {
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1407
                /* make a modifiable copy of the URI SECItem. */
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1408
                SECItem uri = name->name.other;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1409
                /* find the hostname in the URI */
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1410
                rv = parseUriHostname(&uri);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1411
                if (rv == SECSuccess) {
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1412
                    /* does our hostname meet the constraint? */
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1413
                    matched = compareURIN2C(&uri, &current->name.name.other);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1414
                }
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1415
            } break;
4490
1ed8940c0639a17a6336da55393b4f857bdc022b Bug 204555: Eliminated other potential crashes in code related to
wtc%netscape.com
parents: 4458
diff changeset
  1416
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1417
            case certDirectoryName:
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1418
                /* Determine if the constraint directory name is a "prefix"
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1419
                ** for the directory name being tested.
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1420
                */
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1421
                {
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1422
                    /* status defaults to SECEqual, so that a constraint with
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1423
                    ** no AVAs will be a wildcard, matching all directory names.
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1424
                    */
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1425
                    SECComparison status = SECEqual;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1426
                    const CERTRDN **cRDNs =
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1427
                        (const CERTRDN **)current->name.name.directoryName.rdns;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1428
                    const CERTRDN **nRDNs =
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1429
                        (const CERTRDN **)name->name.directoryName.rdns;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1430
                    while (cRDNs && *cRDNs && nRDNs && *nRDNs) {
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1431
                        /* loop over name RDNs and constraint RDNs in lock step
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1432
                         */
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1433
                        const CERTRDN *cRDN = *cRDNs++;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1434
                        const CERTRDN *nRDN = *nRDNs++;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1435
                        CERTAVA **cAVAs = cRDN->avas;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1436
                        while (cAVAs &&
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1437
                               *cAVAs) { /* loop over constraint AVAs */
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1438
                            CERTAVA *cAVA = *cAVAs++;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1439
                            CERTAVA **nAVAs = nRDN->avas;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1440
                            while (nAVAs && *nAVAs) { /* loop over name AVAs */
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1441
                                CERTAVA *nAVA = *nAVAs++;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1442
                                status = CERT_CompareAVA(cAVA, nAVA);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1443
                                if (status == SECEqual)
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1444
                                    break;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1445
                            } /* loop over name AVAs */
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1446
                            if (status != SECEqual)
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1447
                                break;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1448
                        } /* loop over constraint AVAs */
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1449
                        if (status != SECEqual)
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1450
                            break;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1451
                    } /* loop over name RDNs and constraint RDNs */
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1452
                    matched = (status == SECEqual) ? SECSuccess : SECFailure;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1453
                    break;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1454
                }
4520
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1455
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1456
            case certIPAddress: /* type 8 */
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1457
                matched = compareIPaddrN2C(&name->name.other,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1458
                                           &current->name.name.other);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1459
                break;
4520
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1460
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1461
            /* NSS does not know how to compare these "Other" type names with
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1462
            ** their respective constraints.  But it does know how to tell
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1463
            ** if the constraint applies to the type of name (by comparing
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1464
            ** the constraint OID to the name OID).  NSS makes no use of "Other"
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1465
            ** type names at all, so NSS errs on the side of leniency for these
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1466
            ** types, provided that their OIDs match.  So, when an "Other"
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1467
            ** name constraint appears in an excluded subtree, it never causes
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1468
            ** a name to fail.  When an "Other" name constraint appears in a
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1469
            ** permitted subtree, AND the constraint's OID matches the name's
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1470
            ** OID, then name is treated as if it matches the constraint.
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1471
            */
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1472
            case certOtherName: /* type 1 */
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1473
                matched =
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1474
                    (!excluded && name->type == current->name.type &&
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1475
                     SECITEM_ItemsAreEqual(&name->name.OthName.oid,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1476
                                           &current->name.name.OthName.oid))
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1477
                        ? SECSuccess
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1478
                        : SECFailure;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1479
                break;
4520
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1480
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1481
            /* NSS does not know how to compare these types of names with their
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1482
            ** respective constraints.  But NSS makes no use of these types of
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1483
            ** names at all, so it errs on the side of leniency for these types.
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1484
            ** Constraints for these types of names never cause the name to
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1485
            ** fail the constraints test.  NSS behaves as if the name matched
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1486
            ** for permitted constraints, and did not match for excluded ones.
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1487
            */
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1488
            case certX400Address:  /* type 4 */
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1489
            case certEDIPartyName: /* type 6 */
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1490
            case certRegisterID:   /* type 9 */
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1491
                matched = excluded ? SECFailure : SECSuccess;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1492
                break;
4520
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1493
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1494
            default: /* non-standard types are not supported */
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1495
                rv = SECFailure;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1496
                break;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1497
        }
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1498
        if (matched == SECSuccess || rv != SECSuccess)
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1499
            break;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1500
        current = CERT_GetNextNameConstraint((CERTNameConstraint *)current);
4520
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1501
    } while (current != constraints);
4536
324efa4007330cd11669ed42d4ffa9bc5330b911 Further refinements to the Name Constraints checking logic, to make it
nelsonb%netscape.com
parents: 4520
diff changeset
  1502
    if (rv == SECSuccess) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1503
        if (matched == SECSuccess)
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1504
            rv = excluded ? SECFailure : SECSuccess;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1505
        else
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1506
            rv = excluded ? SECSuccess : SECFailure;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1507
        return rv;
4536
324efa4007330cd11669ed42d4ffa9bc5330b911 Further refinements to the Name Constraints checking logic, to make it
nelsonb%netscape.com
parents: 4520
diff changeset
  1508
    }
4490
1ed8940c0639a17a6336da55393b4f857bdc022b Bug 204555: Eliminated other potential crashes in code related to
wtc%netscape.com
parents: 4458
diff changeset
  1509
4520
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1510
    return SECFailure;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1511
}
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1512
7829
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1513
/* Add and link a CERTGeneralName to a CERTNameConstraint list. Most
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1514
** likely the CERTNameConstraint passed in is either the permitted
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1515
** list or the excluded list of a CERTNameConstraints.
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1516
*/
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1517
SECStatus
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1518
CERT_AddNameConstraintByGeneralName(PLArenaPool *arena,
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1519
                                    CERTNameConstraint **constraints,
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1520
                                    CERTGeneralName *name)
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1521
{
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1522
    SECStatus rv;
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1523
    CERTNameConstraint *current = NULL;
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1524
    CERTNameConstraint *first = *constraints;
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1525
    void *mark = NULL;
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1526
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1527
    mark = PORT_ArenaMark(arena);
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1528
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1529
    current = PORT_ArenaZNew(arena, CERTNameConstraint);
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1530
    if (current == NULL) {
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1531
        rv = SECFailure;
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1532
        goto done;
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1533
    }
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1534
7829
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1535
    rv = cert_CopyOneGeneralName(arena, &current->name, name);
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1536
    if (rv != SECSuccess) {
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1537
        goto done;
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1538
    }
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1539
7829
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1540
    current->name.l.prev = current->name.l.next = &(current->name.l);
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1541
7829
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1542
    if (first == NULL) {
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1543
        *constraints = current;
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1544
        PR_INIT_CLIST(&current->l);
11940
0e6e8153513e40154dc1907c2aff318b5342e73e Bug 1251185, NSS clang-format: else line-break fixes, r=ttaubert
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11776
diff changeset
  1545
    } else {
7829
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1546
        PR_INSERT_BEFORE(&current->l, &first->l);
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1547
    }
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1548
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1549
done:
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1550
    if (rv == SECFailure) {
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1551
        PORT_ArenaRelease(arena, mark);
11940
0e6e8153513e40154dc1907c2aff318b5342e73e Bug 1251185, NSS clang-format: else line-break fixes, r=ttaubert
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11776
diff changeset
  1552
    } else {
7829
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1553
        PORT_ArenaUnmark(arena, mark);
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1554
    }
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1555
    return rv;
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1556
}
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1557
11420
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1558
/*
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1559
 * Here we define a list of name constraints to be imposed on
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1560
 * certain certificates, most importantly root certificates.
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1561
 *
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1562
 * Each entry in the name constraints list is constructed with this
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1563
 * macro.  An entry contains two SECItems, which have names in
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1564
 * specific forms to make the macro work:
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1565
 *
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1566
 *  * ${CA}_SUBJECT_DN - The subject DN for which the constraints
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1567
 *                       should be applied
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1568
 *  * ${CA}_NAME_CONSTRAINTS - The name constraints extension
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1569
 *
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1570
 * Entities subject to name constraints are identified by subject name
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1571
 * so that we can cover all certificates for that entity, including, e.g.,
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1572
 * cross-certificates.  We use subject rather than public key because
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1573
 * calling methods often have easy access to that field (vs., say, a key ID),
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1574
 * and in practice, subject names and public keys are usually in one-to-one
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1575
 * correspondence anyway.
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1576
 *
11107
742307da0792066e4b4ca46aa7b28399868507ae Bug 952572, Hard code ANSSI(DCISS) to french gov dns space, r=kaie
Camilo Viecco <cviecco@mozilla.com>
parents: 10759
diff changeset
  1577
 */
742307da0792066e4b4ca46aa7b28399868507ae Bug 952572, Hard code ANSSI(DCISS) to french gov dns space, r=kaie
Camilo Viecco <cviecco@mozilla.com>
parents: 10759
diff changeset
  1578
12490
de6b0f33d1ab3f94e2e7025bce727f15ebb075e8 Bug 1295115 - follow up to clang-format for CI, r= kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11940
diff changeset
  1579
#define STRING_TO_SECITEM(str)                          \
de6b0f33d1ab3f94e2e7025bce727f15ebb075e8 Bug 1295115 - follow up to clang-format for CI, r= kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11940
diff changeset
  1580
    {                                                   \
de6b0f33d1ab3f94e2e7025bce727f15ebb075e8 Bug 1295115 - follow up to clang-format for CI, r= kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11940
diff changeset
  1581
        siBuffer, (unsigned char *)str, sizeof(str) - 1 \
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1582
    }
11420
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1583
12490
de6b0f33d1ab3f94e2e7025bce727f15ebb075e8 Bug 1295115 - follow up to clang-format for CI, r= kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11940
diff changeset
  1584
#define NAME_CONSTRAINTS_ENTRY(CA)                   \
de6b0f33d1ab3f94e2e7025bce727f15ebb075e8 Bug 1295115 - follow up to clang-format for CI, r= kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11940
diff changeset
  1585
    {                                                \
de6b0f33d1ab3f94e2e7025bce727f15ebb075e8 Bug 1295115 - follow up to clang-format for CI, r= kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11940
diff changeset
  1586
        STRING_TO_SECITEM(CA##_SUBJECT_DN)           \
de6b0f33d1ab3f94e2e7025bce727f15ebb075e8 Bug 1295115 - follow up to clang-format for CI, r= kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11940
diff changeset
  1587
        ,                                            \
de6b0f33d1ab3f94e2e7025bce727f15ebb075e8 Bug 1295115 - follow up to clang-format for CI, r= kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11940
diff changeset
  1588
            STRING_TO_SECITEM(CA##_NAME_CONSTRAINTS) \
11420
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1589
    }
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1590
13264
f52feaa506006947b546dde5b954b59aae1bad98 Bug 1349705, add domain name constraints for "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" to NSS function CERT_GetImposedNameConstraints, r=keeler
Kai Engert <kaie@kuix.de>
parents: 12742
diff changeset
  1591
/* clang-format off */
11420
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1592
13264
f52feaa506006947b546dde5b954b59aae1bad98 Bug 1349705, add domain name constraints for "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" to NSS function CERT_GetImposedNameConstraints, r=keeler
Kai Engert <kaie@kuix.de>
parents: 12742
diff changeset
  1593
/* Agence Nationale de la Securite des Systemes d'Information (ANSSI) */
11757
0b33a08417988d298e025b0584ce653ca040574b Bug 1227624 - lib/certdb clang-format protection, r=wtc
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11709
diff changeset
  1594
0b33a08417988d298e025b0584ce653ca040574b Bug 1227624 - lib/certdb clang-format protection, r=wtc
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11709
diff changeset
  1595
#define ANSSI_SUBJECT_DN                                                       \
0b33a08417988d298e025b0584ce653ca040574b Bug 1227624 - lib/certdb clang-format protection, r=wtc
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11709
diff changeset
  1596
    "\x30\x81\x85"                                                             \
0b33a08417988d298e025b0584ce653ca040574b Bug 1227624 - lib/certdb clang-format protection, r=wtc
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11709
diff changeset
  1597
    "\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02" "FR"       /* C */          \
0b33a08417988d298e025b0584ce653ca040574b Bug 1227624 - lib/certdb clang-format protection, r=wtc
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11709
diff changeset
  1598
    "\x31\x0F\x30\x0D\x06\x03\x55\x04\x08\x13\x06" "France"   /* ST */         \
0b33a08417988d298e025b0584ce653ca040574b Bug 1227624 - lib/certdb clang-format protection, r=wtc
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11709
diff changeset
  1599
    "\x31\x0E\x30\x0C\x06\x03\x55\x04\x07\x13\x05" "Paris"    /* L */          \
0b33a08417988d298e025b0584ce653ca040574b Bug 1227624 - lib/certdb clang-format protection, r=wtc
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11709
diff changeset
  1600
    "\x31\x10\x30\x0E\x06\x03\x55\x04\x0A\x13\x07" "PM/SGDN"  /* O */          \
0b33a08417988d298e025b0584ce653ca040574b Bug 1227624 - lib/certdb clang-format protection, r=wtc
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11709
diff changeset
  1601
    "\x31\x0E\x30\x0C\x06\x03\x55\x04\x0B\x13\x05" "DCSSI"    /* OU */         \
0b33a08417988d298e025b0584ce653ca040574b Bug 1227624 - lib/certdb clang-format protection, r=wtc
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11709
diff changeset
  1602
    "\x31\x0E\x30\x0C\x06\x03\x55\x04\x03\x13\x05" "IGC/A"    /* CN */         \
0b33a08417988d298e025b0584ce653ca040574b Bug 1227624 - lib/certdb clang-format protection, r=wtc
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11709
diff changeset
  1603
    "\x31\x23\x30\x21\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x09\x01"             \
0b33a08417988d298e025b0584ce653ca040574b Bug 1227624 - lib/certdb clang-format protection, r=wtc
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11709
diff changeset
  1604
    "\x16\x14" "igca@sgdn.pm.gouv.fr" /* emailAddress */                       \
11420
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1605
11757
0b33a08417988d298e025b0584ce653ca040574b Bug 1227624 - lib/certdb clang-format protection, r=wtc
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11709
diff changeset
  1606
#define ANSSI_NAME_CONSTRAINTS                                                 \
0b33a08417988d298e025b0584ce653ca040574b Bug 1227624 - lib/certdb clang-format protection, r=wtc
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11709
diff changeset
  1607
    "\x30\x5D\xA0\x5B"                                                         \
0b33a08417988d298e025b0584ce653ca040574b Bug 1227624 - lib/certdb clang-format protection, r=wtc
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11709
diff changeset
  1608
    "\x30\x05\x82\x03" ".fr"                                                   \
0b33a08417988d298e025b0584ce653ca040574b Bug 1227624 - lib/certdb clang-format protection, r=wtc
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11709
diff changeset
  1609
    "\x30\x05\x82\x03" ".gp"                                                   \
0b33a08417988d298e025b0584ce653ca040574b Bug 1227624 - lib/certdb clang-format protection, r=wtc
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11709
diff changeset
  1610
    "\x30\x05\x82\x03" ".gf"                                                   \
0b33a08417988d298e025b0584ce653ca040574b Bug 1227624 - lib/certdb clang-format protection, r=wtc
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11709
diff changeset
  1611
    "\x30\x05\x82\x03" ".mq"                                                   \
0b33a08417988d298e025b0584ce653ca040574b Bug 1227624 - lib/certdb clang-format protection, r=wtc
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11709
diff changeset
  1612
    "\x30\x05\x82\x03" ".re"                                                   \
0b33a08417988d298e025b0584ce653ca040574b Bug 1227624 - lib/certdb clang-format protection, r=wtc
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11709
diff changeset
  1613
    "\x30\x05\x82\x03" ".yt"                                                   \
0b33a08417988d298e025b0584ce653ca040574b Bug 1227624 - lib/certdb clang-format protection, r=wtc
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11709
diff changeset
  1614
    "\x30\x05\x82\x03" ".pm"                                                   \
0b33a08417988d298e025b0584ce653ca040574b Bug 1227624 - lib/certdb clang-format protection, r=wtc
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11709
diff changeset
  1615
    "\x30\x05\x82\x03" ".bl"                                                   \
0b33a08417988d298e025b0584ce653ca040574b Bug 1227624 - lib/certdb clang-format protection, r=wtc
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11709
diff changeset
  1616
    "\x30\x05\x82\x03" ".mf"                                                   \
0b33a08417988d298e025b0584ce653ca040574b Bug 1227624 - lib/certdb clang-format protection, r=wtc
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11709
diff changeset
  1617
    "\x30\x05\x82\x03" ".wf"                                                   \
0b33a08417988d298e025b0584ce653ca040574b Bug 1227624 - lib/certdb clang-format protection, r=wtc
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11709
diff changeset
  1618
    "\x30\x05\x82\x03" ".pf"                                                   \
0b33a08417988d298e025b0584ce653ca040574b Bug 1227624 - lib/certdb clang-format protection, r=wtc
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11709
diff changeset
  1619
    "\x30\x05\x82\x03" ".nc"                                                   \
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1620
    "\x30\x05\x82\x03" ".tf"
11757
0b33a08417988d298e025b0584ce653ca040574b Bug 1227624 - lib/certdb clang-format protection, r=wtc
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11709
diff changeset
  1621
13264
f52feaa506006947b546dde5b954b59aae1bad98 Bug 1349705, add domain name constraints for "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" to NSS function CERT_GetImposedNameConstraints, r=keeler
Kai Engert <kaie@kuix.de>
parents: 12742
diff changeset
  1622
/* TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1 */
f52feaa506006947b546dde5b954b59aae1bad98 Bug 1349705, add domain name constraints for "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" to NSS function CERT_GetImposedNameConstraints, r=keeler
Kai Engert <kaie@kuix.de>
parents: 12742
diff changeset
  1623
f52feaa506006947b546dde5b954b59aae1bad98 Bug 1349705, add domain name constraints for "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" to NSS function CERT_GetImposedNameConstraints, r=keeler
Kai Engert <kaie@kuix.de>
parents: 12742
diff changeset
  1624
#define TUBITAK1_SUBJECT_DN                                                    \
f52feaa506006947b546dde5b954b59aae1bad98 Bug 1349705, add domain name constraints for "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" to NSS function CERT_GetImposedNameConstraints, r=keeler
Kai Engert <kaie@kuix.de>
parents: 12742
diff changeset
  1625
    "\x30\x81\xd2"                                                             \
f52feaa506006947b546dde5b954b59aae1bad98 Bug 1349705, add domain name constraints for "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" to NSS function CERT_GetImposedNameConstraints, r=keeler
Kai Engert <kaie@kuix.de>
parents: 12742
diff changeset
  1626
    "\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02"                             \
f52feaa506006947b546dde5b954b59aae1bad98 Bug 1349705, add domain name constraints for "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" to NSS function CERT_GetImposedNameConstraints, r=keeler
Kai Engert <kaie@kuix.de>
parents: 12742
diff changeset
  1627
    /* C */ "TR"                                                               \
f52feaa506006947b546dde5b954b59aae1bad98 Bug 1349705, add domain name constraints for "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" to NSS function CERT_GetImposedNameConstraints, r=keeler
Kai Engert <kaie@kuix.de>
parents: 12742
diff changeset
  1628
    "\x31\x18\x30\x16\x06\x03\x55\x04\x07\x13\x0f"                             \
f52feaa506006947b546dde5b954b59aae1bad98 Bug 1349705, add domain name constraints for "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" to NSS function CERT_GetImposedNameConstraints, r=keeler
Kai Engert <kaie@kuix.de>
parents: 12742
diff changeset
  1629
    /* L */ "Gebze - Kocaeli"                                                  \
f52feaa506006947b546dde5b954b59aae1bad98 Bug 1349705, add domain name constraints for "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" to NSS function CERT_GetImposedNameConstraints, r=keeler
Kai Engert <kaie@kuix.de>
parents: 12742
diff changeset
  1630
    "\x31\x42\x30\x40\x06\x03\x55\x04\x0a\x13\x39"                             \
f52feaa506006947b546dde5b954b59aae1bad98 Bug 1349705, add domain name constraints for "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" to NSS function CERT_GetImposedNameConstraints, r=keeler
Kai Engert <kaie@kuix.de>
parents: 12742
diff changeset
  1631
    /* O */ "Turkiye Bilimsel ve Teknolojik Arastirma Kurumu - TUBITAK"        \
f52feaa506006947b546dde5b954b59aae1bad98 Bug 1349705, add domain name constraints for "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" to NSS function CERT_GetImposedNameConstraints, r=keeler
Kai Engert <kaie@kuix.de>
parents: 12742
diff changeset
  1632
    "\x31\x2d\x30\x2b\x06\x03\x55\x04\x0b\x13\x24"                             \
f52feaa506006947b546dde5b954b59aae1bad98 Bug 1349705, add domain name constraints for "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" to NSS function CERT_GetImposedNameConstraints, r=keeler
Kai Engert <kaie@kuix.de>
parents: 12742
diff changeset
  1633
    /* OU */ "Kamu Sertifikasyon Merkezi - Kamu SM"                            \
f52feaa506006947b546dde5b954b59aae1bad98 Bug 1349705, add domain name constraints for "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" to NSS function CERT_GetImposedNameConstraints, r=keeler
Kai Engert <kaie@kuix.de>
parents: 12742
diff changeset
  1634
    "\x31\x36\x30\x34\x06\x03\x55\x04\x03\x13\x2d"                             \
f52feaa506006947b546dde5b954b59aae1bad98 Bug 1349705, add domain name constraints for "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" to NSS function CERT_GetImposedNameConstraints, r=keeler
Kai Engert <kaie@kuix.de>
parents: 12742
diff changeset
  1635
    /* CN */ "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1"
f52feaa506006947b546dde5b954b59aae1bad98 Bug 1349705, add domain name constraints for "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" to NSS function CERT_GetImposedNameConstraints, r=keeler
Kai Engert <kaie@kuix.de>
parents: 12742
diff changeset
  1636
f52feaa506006947b546dde5b954b59aae1bad98 Bug 1349705, add domain name constraints for "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" to NSS function CERT_GetImposedNameConstraints, r=keeler
Kai Engert <kaie@kuix.de>
parents: 12742
diff changeset
  1637
#define TUBITAK1_NAME_CONSTRAINTS                                              \
f52feaa506006947b546dde5b954b59aae1bad98 Bug 1349705, add domain name constraints for "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" to NSS function CERT_GetImposedNameConstraints, r=keeler
Kai Engert <kaie@kuix.de>
parents: 12742
diff changeset
  1638
    "\x30\x65\xa0\x63"                                                         \
f52feaa506006947b546dde5b954b59aae1bad98 Bug 1349705, add domain name constraints for "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" to NSS function CERT_GetImposedNameConstraints, r=keeler
Kai Engert <kaie@kuix.de>
parents: 12742
diff changeset
  1639
    "\x30\x09\x82\x07" ".gov.tr"                                               \
f52feaa506006947b546dde5b954b59aae1bad98 Bug 1349705, add domain name constraints for "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" to NSS function CERT_GetImposedNameConstraints, r=keeler
Kai Engert <kaie@kuix.de>
parents: 12742
diff changeset
  1640
    "\x30\x09\x82\x07" ".k12.tr"                                               \
f52feaa506006947b546dde5b954b59aae1bad98 Bug 1349705, add domain name constraints for "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" to NSS function CERT_GetImposedNameConstraints, r=keeler
Kai Engert <kaie@kuix.de>
parents: 12742
diff changeset
  1641
    "\x30\x09\x82\x07" ".pol.tr"                                               \
f52feaa506006947b546dde5b954b59aae1bad98 Bug 1349705, add domain name constraints for "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" to NSS function CERT_GetImposedNameConstraints, r=keeler
Kai Engert <kaie@kuix.de>
parents: 12742
diff changeset
  1642
    "\x30\x09\x82\x07" ".mil.tr"                                               \
f52feaa506006947b546dde5b954b59aae1bad98 Bug 1349705, add domain name constraints for "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" to NSS function CERT_GetImposedNameConstraints, r=keeler
Kai Engert <kaie@kuix.de>
parents: 12742
diff changeset
  1643
    "\x30\x09\x82\x07" ".tsk.tr"                                               \
f52feaa506006947b546dde5b954b59aae1bad98 Bug 1349705, add domain name constraints for "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" to NSS function CERT_GetImposedNameConstraints, r=keeler
Kai Engert <kaie@kuix.de>
parents: 12742
diff changeset
  1644
    "\x30\x09\x82\x07" ".kep.tr"                                               \
f52feaa506006947b546dde5b954b59aae1bad98 Bug 1349705, add domain name constraints for "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" to NSS function CERT_GetImposedNameConstraints, r=keeler
Kai Engert <kaie@kuix.de>
parents: 12742
diff changeset
  1645
    "\x30\x09\x82\x07" ".bel.tr"                                               \
f52feaa506006947b546dde5b954b59aae1bad98 Bug 1349705, add domain name constraints for "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" to NSS function CERT_GetImposedNameConstraints, r=keeler
Kai Engert <kaie@kuix.de>
parents: 12742
diff changeset
  1646
    "\x30\x09\x82\x07" ".edu.tr"                                               \
f52feaa506006947b546dde5b954b59aae1bad98 Bug 1349705, add domain name constraints for "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" to NSS function CERT_GetImposedNameConstraints, r=keeler
Kai Engert <kaie@kuix.de>
parents: 12742
diff changeset
  1647
    "\x30\x09\x82\x07" ".org.tr"
f52feaa506006947b546dde5b954b59aae1bad98 Bug 1349705, add domain name constraints for "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" to NSS function CERT_GetImposedNameConstraints, r=keeler
Kai Engert <kaie@kuix.de>
parents: 12742
diff changeset
  1648
11757
0b33a08417988d298e025b0584ce653ca040574b Bug 1227624 - lib/certdb clang-format protection, r=wtc
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11709
diff changeset
  1649
/* clang-format on */
11420
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1650
13264
f52feaa506006947b546dde5b954b59aae1bad98 Bug 1349705, add domain name constraints for "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" to NSS function CERT_GetImposedNameConstraints, r=keeler
Kai Engert <kaie@kuix.de>
parents: 12742
diff changeset
  1651
static const SECItem builtInNameConstraints[][2] = {
f52feaa506006947b546dde5b954b59aae1bad98 Bug 1349705, add domain name constraints for "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" to NSS function CERT_GetImposedNameConstraints, r=keeler
Kai Engert <kaie@kuix.de>
parents: 12742
diff changeset
  1652
    NAME_CONSTRAINTS_ENTRY(ANSSI),
f52feaa506006947b546dde5b954b59aae1bad98 Bug 1349705, add domain name constraints for "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" to NSS function CERT_GetImposedNameConstraints, r=keeler
Kai Engert <kaie@kuix.de>
parents: 12742
diff changeset
  1653
    NAME_CONSTRAINTS_ENTRY(TUBITAK1)
f52feaa506006947b546dde5b954b59aae1bad98 Bug 1349705, add domain name constraints for "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" to NSS function CERT_GetImposedNameConstraints, r=keeler
Kai Engert <kaie@kuix.de>
parents: 12742
diff changeset
  1654
};
11420
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1655
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1656
SECStatus
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1657
CERT_GetImposedNameConstraints(const SECItem *derSubject, SECItem *extensions)
11107
742307da0792066e4b4ca46aa7b28399868507ae Bug 952572, Hard code ANSSI(DCISS) to french gov dns space, r=kaie
Camilo Viecco <cviecco@mozilla.com>
parents: 10759
diff changeset
  1658
{
11420
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1659
    size_t i;
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1660
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1661
    if (!extensions) {
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1662
        PORT_SetError(SEC_ERROR_INVALID_ARGS);
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1663
        return SECFailure;
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1664
    }
11107
742307da0792066e4b4ca46aa7b28399868507ae Bug 952572, Hard code ANSSI(DCISS) to french gov dns space, r=kaie
Camilo Viecco <cviecco@mozilla.com>
parents: 10759
diff changeset
  1665
11420
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1666
    for (i = 0; i < PR_ARRAY_SIZE(builtInNameConstraints); ++i) {
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1667
        if (SECITEM_ItemsAreEqual(derSubject, &builtInNameConstraints[i][0])) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1668
            return SECITEM_CopyItem(NULL, extensions,
11420
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1669
                                    &builtInNameConstraints[i][1]);
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1670
        }
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1671
    }
11107
742307da0792066e4b4ca46aa7b28399868507ae Bug 952572, Hard code ANSSI(DCISS) to french gov dns space, r=kaie
Camilo Viecco <cviecco@mozilla.com>
parents: 10759
diff changeset
  1672
11420
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1673
    PORT_SetError(SEC_ERROR_EXTENSION_NOT_FOUND);
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1674
    return SECFailure;
11107
742307da0792066e4b4ca46aa7b28399868507ae Bug 952572, Hard code ANSSI(DCISS) to french gov dns space, r=kaie
Camilo Viecco <cviecco@mozilla.com>
parents: 10759
diff changeset
  1675
}
742307da0792066e4b4ca46aa7b28399868507ae Bug 952572, Hard code ANSSI(DCISS) to french gov dns space, r=kaie
Camilo Viecco <cviecco@mozilla.com>
parents: 10759
diff changeset
  1676
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1677
/*
11420
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1678
 * Extract the name constraints extension from the CA cert.
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1679
 * If the certificate contains no name constraints extension, but
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1680
 * CERT_GetImposedNameConstraints returns a name constraints extension
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1681
 * for the subject of the certificate, then that extension will be returned.
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1682
 */
7829
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1683
SECStatus
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1684
CERT_FindNameConstraintsExten(PLArenaPool *arena, CERTCertificate *cert,
7829
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1685
                              CERTNameConstraints **constraints)
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1686
{
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1687
    SECStatus rv = SECSuccess;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1688
    SECItem constraintsExtension;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1689
    void *mark = NULL;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1690
7829
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1691
    *constraints = NULL;
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1692
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1693
    rv = CERT_FindCertExtension(cert, SEC_OID_X509_NAME_CONSTRAINTS,
7829
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1694
                                &constraintsExtension);
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1695
    if (rv != SECSuccess) {
11107
742307da0792066e4b4ca46aa7b28399868507ae Bug 952572, Hard code ANSSI(DCISS) to french gov dns space, r=kaie
Camilo Viecco <cviecco@mozilla.com>
parents: 10759
diff changeset
  1696
        if (PORT_GetError() != SEC_ERROR_EXTENSION_NOT_FOUND) {
742307da0792066e4b4ca46aa7b28399868507ae Bug 952572, Hard code ANSSI(DCISS) to french gov dns space, r=kaie
Camilo Viecco <cviecco@mozilla.com>
parents: 10759
diff changeset
  1697
            return rv;
7829
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1698
        }
11420
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1699
        rv = CERT_GetImposedNameConstraints(&cert->derSubject,
07da6d86695a416e404dfa4ff973fb0ab26ed49b Bug 991783 - Add generic mechanism to add name constraints to built-in certificates r=wtc
Richard Barnes <rbarnes@mozilla.com>
parents: 11178
diff changeset
  1700
                                            &constraintsExtension);
11107
742307da0792066e4b4ca46aa7b28399868507ae Bug 952572, Hard code ANSSI(DCISS) to french gov dns space, r=kaie
Camilo Viecco <cviecco@mozilla.com>
parents: 10759
diff changeset
  1701
        if (rv != SECSuccess) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1702
            if (PORT_GetError() == SEC_ERROR_EXTENSION_NOT_FOUND) {
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1703
                return SECSuccess;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1704
            }
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1705
            return rv;
11107
742307da0792066e4b4ca46aa7b28399868507ae Bug 952572, Hard code ANSSI(DCISS) to french gov dns space, r=kaie
Camilo Viecco <cviecco@mozilla.com>
parents: 10759
diff changeset
  1706
        }
7829
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1707
    }
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1708
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1709
    mark = PORT_ArenaMark(arena);
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1710
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1711
    *constraints = cert_DecodeNameConstraints(arena, &constraintsExtension);
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1712
    if (*constraints == NULL) { /* decode failed */
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1713
        rv = SECFailure;
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1714
    }
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1715
    PORT_Free(constraintsExtension.data);
7829
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1716
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1717
    if (rv == SECFailure) {
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1718
        PORT_ArenaRelease(arena, mark);
11940
0e6e8153513e40154dc1907c2aff318b5342e73e Bug 1251185, NSS clang-format: else line-break fixes, r=ttaubert
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11776
diff changeset
  1719
    } else {
7829
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1720
        PORT_ArenaUnmark(arena, mark);
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1721
    }
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1722
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1723
    return rv;
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1724
}
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1725
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1726
/* Verify name against all the constraints relevant to that type of
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1727
** the name.
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1728
*/
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1729
SECStatus
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1730
CERT_CheckNameSpace(PLArenaPool *arena, const CERTNameConstraints *constraints,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1731
                    const CERTGeneralName *currentName)
7829
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1732
{
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1733
    CERTNameConstraint *matchingConstraints;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1734
    SECStatus rv = SECSuccess;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1735
7829
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1736
    if (constraints->excluded != NULL) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1737
        rv = CERT_GetNameConstraintByType(constraints->excluded,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1738
                                          currentName->type,
7829
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1739
                                          &matchingConstraints, arena);
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1740
        if (rv == SECSuccess && matchingConstraints != NULL) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1741
            rv = cert_CompareNameWithConstraints(currentName,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1742
                                                 matchingConstraints, PR_TRUE);
7829
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1743
        }
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1744
        if (rv != SECSuccess) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1745
            return (rv);
7829
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1746
        }
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1747
    }
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1748
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1749
    if (constraints->permited != NULL) {
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1750
        rv = CERT_GetNameConstraintByType(constraints->permited,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1751
                                          currentName->type,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1752
                                          &matchingConstraints, arena);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1753
        if (rv == SECSuccess && matchingConstraints != NULL) {
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1754
            rv = cert_CompareNameWithConstraints(currentName,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1755
                                                 matchingConstraints, PR_FALSE);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1756
        }
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1757
        if (rv != SECSuccess) {
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1758
            return (rv);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1759
        }
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1760
    }
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1761
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1762
    return (SECSuccess);
7829
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1763
}
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1764
4520
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1765
/* Extract the name constraints extension from the CA cert.
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1766
** Test each and every name in namesList against all the constraints
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1767
** relevant to that type of name.
7829
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1768
** Returns NULL in pBadCert for success, if all names are acceptable.
4520
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1769
** If some name is not acceptable, returns a pointer to the cert that
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1770
** contained that name.
ba501a6c027d6e9b139eeddb1cc13be74aaec237 Rewrite of cert_CompareNameWithConstraints and the static functions it
nelsonb%netscape.com
parents: 4508
diff changeset
  1771
*/
4573
df5098f0764affec5de2607e48cb2854e186458a Move the declaration for CERT_CompareNameSpace from cert.h to genname.h
nelsonb%netscape.com
parents: 4572
diff changeset
  1772
SECStatus
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1773
CERT_CompareNameSpace(CERTCertificate *cert, CERTGeneralName *namesList,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1774
                      CERTCertificate **certsList, PLArenaPool *reqArena,
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1775
                      CERTCertificate **pBadCert)
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1776
{
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1777
    SECStatus rv = SECSuccess;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1778
    CERTNameConstraints *constraints;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1779
    CERTGeneralName *currentName;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1780
    int count = 0;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1781
    CERTCertificate *badCert = NULL;
8027
32f77bee42f93d6d6323e9d098ce5a4f00d15fca Bug 394040 - Tstclnt crashed in NISCC testing, r=julien
nelson%bolyard.com
parents: 7985
diff changeset
  1782
32f77bee42f93d6d6323e9d098ce5a4f00d15fca Bug 394040 - Tstclnt crashed in NISCC testing, r=julien
nelson%bolyard.com
parents: 7985
diff changeset
  1783
    /* If no names to check, then no names can be bad. */
32f77bee42f93d6d6323e9d098ce5a4f00d15fca Bug 394040 - Tstclnt crashed in NISCC testing, r=julien
nelson%bolyard.com
parents: 7985
diff changeset
  1784
    if (!namesList)
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1785
        goto done;
7829
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1786
    rv = CERT_FindNameConstraintsExten(reqArena, cert, &constraints);
4536
324efa4007330cd11669ed42d4ffa9bc5330b911 Further refinements to the Name Constraints checking logic, to make it
nelsonb%netscape.com
parents: 4520
diff changeset
  1787
    if (rv != SECSuccess) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1788
        count = -1;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1789
        goto done;
4536
324efa4007330cd11669ed42d4ffa9bc5330b911 Further refinements to the Name Constraints checking logic, to make it
nelsonb%netscape.com
parents: 4520
diff changeset
  1790
    }
7829
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1791
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1792
    currentName = namesList;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1793
    do {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1794
        if (constraints) {
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1795
            rv = CERT_CheckNameSpace(reqArena, constraints, currentName);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1796
            if (rv != SECSuccess) {
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1797
                break;
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1798
            }
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1799
        }
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1800
        currentName = CERT_GetNextGeneralName(currentName);
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1801
        count++;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1802
    } while (currentName != namesList);
7829
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1803
4573
df5098f0764affec5de2607e48cb2854e186458a Move the declaration for CERT_CompareNameSpace from cert.h to genname.h
nelsonb%netscape.com
parents: 4572
diff changeset
  1804
done:
df5098f0764affec5de2607e48cb2854e186458a Move the declaration for CERT_CompareNameSpace from cert.h to genname.h
nelsonb%netscape.com
parents: 4572
diff changeset
  1805
    if (rv != SECSuccess) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1806
        badCert = (count >= 0) ? certsList[count] : cert;
4573
df5098f0764affec5de2607e48cb2854e186458a Move the declaration for CERT_CompareNameSpace from cert.h to genname.h
nelsonb%netscape.com
parents: 4572
diff changeset
  1807
    }
df5098f0764affec5de2607e48cb2854e186458a Move the declaration for CERT_CompareNameSpace from cert.h to genname.h
nelsonb%netscape.com
parents: 4572
diff changeset
  1808
    if (pBadCert)
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1809
        *pBadCert = badCert;
7829
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1810
4573
df5098f0764affec5de2607e48cb2854e186458a Move the declaration for CERT_CompareNameSpace from cert.h to genname.h
nelsonb%netscape.com
parents: 4572
diff changeset
  1811
    return rv;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1812
}
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1813
4557
f860395e272947a29b22099f8e5f515b710e1de8 a) Add more missing null pointer tests that I discovered. Bug 208649.
nelsonb%netscape.com
parents: 4544
diff changeset
  1814
#if 0
f860395e272947a29b22099f8e5f515b710e1de8 a) Add more missing null pointer tests that I discovered. Bug 208649.
nelsonb%netscape.com
parents: 4544
diff changeset
  1815
/* not exported from shared libs, not used.  Turn on if we ever need it. */
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1816
SECStatus
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1817
CERT_CompareGeneralName(CERTGeneralName *a, CERTGeneralName *b)
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1818
{
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1819
    CERTGeneralName *currentA;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1820
    CERTGeneralName *currentB;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1821
    PRBool found;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1822
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1823
    currentA = a;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1824
    currentB = b;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1825
    if (a != NULL) {
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1826
	do {
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1827
	    if (currentB == NULL) {
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1828
		return SECFailure;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1829
	    }
5047
07097a7fb9e0dd0733cdb210ba7943bc4f6e66fc Export cert functions that decode extensions and traverse decoded
nelsonb%netscape.com
parents: 5021
diff changeset
  1830
	    currentB = CERT_GetNextGeneralName(currentB);
07097a7fb9e0dd0733cdb210ba7943bc4f6e66fc Export cert functions that decode extensions and traverse decoded
nelsonb%netscape.com
parents: 5021
diff changeset
  1831
	    currentA = CERT_GetNextGeneralName(currentA);
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1832
	} while (currentA != a);
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1833
    }
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1834
    if (currentB != b) {
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1835
	return SECFailure;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1836
    }
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1837
    currentA = a;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1838
    do {
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1839
	currentB = b;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1840
	found = PR_FALSE;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1841
	do {
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1842
	    if (currentB->type == currentA->type) {
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1843
		switch (currentB->type) {
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1844
		  case certDNSName:
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1845
		  case certEDIPartyName:
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1846
		  case certIPAddress:
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1847
		  case certRegisterID:
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1848
		  case certRFC822Name:
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1849
		  case certX400Address:
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1850
		  case certURI:
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1851
		    if (SECITEM_CompareItem(&currentA->name.other,
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1852
					    &currentB->name.other)
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1853
			== SECEqual) {
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1854
			found = PR_TRUE;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1855
		    }
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1856
		    break;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1857
		  case certOtherName:
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1858
		    if (SECITEM_CompareItem(&currentA->name.OthName.oid,
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1859
					    &currentB->name.OthName.oid)
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1860
			== SECEqual &&
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1861
			SECITEM_CompareItem(&currentA->name.OthName.name,
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1862
					    &currentB->name.OthName.name)
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1863
			== SECEqual) {
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1864
			found = PR_TRUE;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1865
		    }
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1866
		    break;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1867
		  case certDirectoryName:
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1868
		    if (CERT_CompareName(&currentA->name.directoryName,
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1869
					 &currentB->name.directoryName)
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1870
			== SECEqual) {
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1871
			found = PR_TRUE;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1872
		    }
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1873
		}
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1874
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1875
	    }
5047
07097a7fb9e0dd0733cdb210ba7943bc4f6e66fc Export cert functions that decode extensions and traverse decoded
nelsonb%netscape.com
parents: 5021
diff changeset
  1876
	    currentB = CERT_GetNextGeneralName(currentB);
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1877
	} while (currentB != b && found != PR_TRUE);
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1878
	if (found != PR_TRUE) {
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1879
	    return SECFailure;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1880
	}
5047
07097a7fb9e0dd0733cdb210ba7943bc4f6e66fc Export cert functions that decode extensions and traverse decoded
nelsonb%netscape.com
parents: 5021
diff changeset
  1881
	currentA = CERT_GetNextGeneralName(currentA);
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1882
    } while (currentA != a);
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1883
    return SECSuccess;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1884
}
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1885
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1886
SECStatus
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1887
CERT_CompareGeneralNameLists(CERTGeneralNameList *a, CERTGeneralNameList *b)
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1888
{
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1889
    SECStatus rv;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1890
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1891
    if (a == b) {
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1892
	return SECSuccess;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1893
    }
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1894
    if (a != NULL && b != NULL) {
1031
d82fc414b80dd1c98a99f0f57fa4b98edd470945 Bugzilla: 64132. NSS lock instrumentation
larryh%netscape.com
parents: 713
diff changeset
  1895
	PZ_Lock(a->lock);
d82fc414b80dd1c98a99f0f57fa4b98edd470945 Bugzilla: 64132. NSS lock instrumentation
larryh%netscape.com
parents: 713
diff changeset
  1896
	PZ_Lock(b->lock);
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1897
	rv = CERT_CompareGeneralName(a->name, b->name);
1031
d82fc414b80dd1c98a99f0f57fa4b98edd470945 Bugzilla: 64132. NSS lock instrumentation
larryh%netscape.com
parents: 713
diff changeset
  1898
	PZ_Unlock(a->lock);
d82fc414b80dd1c98a99f0f57fa4b98edd470945 Bugzilla: 64132. NSS lock instrumentation
larryh%netscape.com
parents: 713
diff changeset
  1899
	PZ_Unlock(b->lock);
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1900
    } else {
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1901
	rv = SECFailure;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1902
    }
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1903
    return rv;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1904
}
4557
f860395e272947a29b22099f8e5f515b710e1de8 a) Add more missing null pointer tests that I discovered. Bug 208649.
nelsonb%netscape.com
parents: 4544
diff changeset
  1905
#endif
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1906
4557
f860395e272947a29b22099f8e5f515b710e1de8 a) Add more missing null pointer tests that I discovered. Bug 208649.
nelsonb%netscape.com
parents: 4544
diff changeset
  1907
#if 0
f860395e272947a29b22099f8e5f515b710e1de8 a) Add more missing null pointer tests that I discovered. Bug 208649.
nelsonb%netscape.com
parents: 4544
diff changeset
  1908
/* This function is not exported from NSS shared libraries, and is not
f860395e272947a29b22099f8e5f515b710e1de8 a) Add more missing null pointer tests that I discovered. Bug 208649.
nelsonb%netscape.com
parents: 4544
diff changeset
  1909
** used inside of NSS.
f860395e272947a29b22099f8e5f515b710e1de8 a) Add more missing null pointer tests that I discovered. Bug 208649.
nelsonb%netscape.com
parents: 4544
diff changeset
  1910
** XXX it doesn't check for failed allocations. :-(
f860395e272947a29b22099f8e5f515b710e1de8 a) Add more missing null pointer tests that I discovered. Bug 208649.
nelsonb%netscape.com
parents: 4544
diff changeset
  1911
*/
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1912
void *
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1913
CERT_GetGeneralNameFromListByType(CERTGeneralNameList *list,
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1914
				  CERTGeneralNameType type,
10759
0b69d6cc3acd5e723d4cafefd956e61466b80c53 Bug 802430: Allow NSS to be built with NO_NSPR_10_SUPPORT, r=wtc
Brian Smith <bsmith@mozilla.com>
parents: 10705
diff changeset
  1915
				  PLArenaPool *arena)
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1916
{
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1917
    CERTName *name = NULL;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1918
    SECItem *item = NULL;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1919
    OtherName *other = NULL;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1920
    OtherName *tmpOther = NULL;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1921
    void *data;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1922
1031
d82fc414b80dd1c98a99f0f57fa4b98edd470945 Bugzilla: 64132. NSS lock instrumentation
larryh%netscape.com
parents: 713
diff changeset
  1923
    PZ_Lock(list->lock);
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1924
    data = CERT_GetGeneralNameByType(list->name, type, PR_FALSE);
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1925
    if (data != NULL) {
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1926
	switch (type) {
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1927
	  case certDNSName:
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1928
	  case certEDIPartyName:
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1929
	  case certIPAddress:
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1930
	  case certRegisterID:
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1931
	  case certRFC822Name:
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1932
	  case certX400Address:
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1933
	  case certURI:
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1934
	    if (arena != NULL) {
4557
f860395e272947a29b22099f8e5f515b710e1de8 a) Add more missing null pointer tests that I discovered. Bug 208649.
nelsonb%netscape.com
parents: 4544
diff changeset
  1935
		item = PORT_ArenaNew(arena, SECItem);
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1936
		if (item != NULL) {
4557
f860395e272947a29b22099f8e5f515b710e1de8 a) Add more missing null pointer tests that I discovered. Bug 208649.
nelsonb%netscape.com
parents: 4544
diff changeset
  1937
XXX		    SECITEM_CopyItem(arena, item, (SECItem *) data);
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1938
		}
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1939
	    } else {
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1940
		item = SECITEM_DupItem((SECItem *) data);
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1941
	    }
1031
d82fc414b80dd1c98a99f0f57fa4b98edd470945 Bugzilla: 64132. NSS lock instrumentation
larryh%netscape.com
parents: 713
diff changeset
  1942
	    PZ_Unlock(list->lock);
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1943
	    return item;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1944
	  case certOtherName:
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1945
	    other = (OtherName *) data;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1946
	    if (arena != NULL) {
4557
f860395e272947a29b22099f8e5f515b710e1de8 a) Add more missing null pointer tests that I discovered. Bug 208649.
nelsonb%netscape.com
parents: 4544
diff changeset
  1947
		tmpOther = PORT_ArenaNew(arena, OtherName);
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1948
	    } else {
4557
f860395e272947a29b22099f8e5f515b710e1de8 a) Add more missing null pointer tests that I discovered. Bug 208649.
nelsonb%netscape.com
parents: 4544
diff changeset
  1949
		tmpOther = PORT_New(OtherName);
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1950
	    }
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1951
	    if (tmpOther != NULL) {
4557
f860395e272947a29b22099f8e5f515b710e1de8 a) Add more missing null pointer tests that I discovered. Bug 208649.
nelsonb%netscape.com
parents: 4544
diff changeset
  1952
XXX		SECITEM_CopyItem(arena, &tmpOther->oid, &other->oid);
f860395e272947a29b22099f8e5f515b710e1de8 a) Add more missing null pointer tests that I discovered. Bug 208649.
nelsonb%netscape.com
parents: 4544
diff changeset
  1953
XXX		SECITEM_CopyItem(arena, &tmpOther->name, &other->name);
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1954
	    }
1031
d82fc414b80dd1c98a99f0f57fa4b98edd470945 Bugzilla: 64132. NSS lock instrumentation
larryh%netscape.com
parents: 713
diff changeset
  1955
	    PZ_Unlock(list->lock);
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1956
	    return tmpOther;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1957
	  case certDirectoryName:
4557
f860395e272947a29b22099f8e5f515b710e1de8 a) Add more missing null pointer tests that I discovered. Bug 208649.
nelsonb%netscape.com
parents: 4544
diff changeset
  1958
	    if (arena) {
f860395e272947a29b22099f8e5f515b710e1de8 a) Add more missing null pointer tests that I discovered. Bug 208649.
nelsonb%netscape.com
parents: 4544
diff changeset
  1959
		name = PORT_ArenaZNew(list->arena, CERTName);
f860395e272947a29b22099f8e5f515b710e1de8 a) Add more missing null pointer tests that I discovered. Bug 208649.
nelsonb%netscape.com
parents: 4544
diff changeset
  1960
		if (name) {
f860395e272947a29b22099f8e5f515b710e1de8 a) Add more missing null pointer tests that I discovered. Bug 208649.
nelsonb%netscape.com
parents: 4544
diff changeset
  1961
XXX		    CERT_CopyName(arena, name, (CERTName *) data);
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1962
		}
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1963
	    }
4557
f860395e272947a29b22099f8e5f515b710e1de8 a) Add more missing null pointer tests that I discovered. Bug 208649.
nelsonb%netscape.com
parents: 4544
diff changeset
  1964
	    PZ_Unlock(list->lock);
f860395e272947a29b22099f8e5f515b710e1de8 a) Add more missing null pointer tests that I discovered. Bug 208649.
nelsonb%netscape.com
parents: 4544
diff changeset
  1965
	    return name;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1966
	}
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1967
    }
1031
d82fc414b80dd1c98a99f0f57fa4b98edd470945 Bugzilla: 64132. NSS lock instrumentation
larryh%netscape.com
parents: 713
diff changeset
  1968
    PZ_Unlock(list->lock);
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1969
    return NULL;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1970
}
4557
f860395e272947a29b22099f8e5f515b710e1de8 a) Add more missing null pointer tests that I discovered. Bug 208649.
nelsonb%netscape.com
parents: 4544
diff changeset
  1971
#endif
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1972
4557
f860395e272947a29b22099f8e5f515b710e1de8 a) Add more missing null pointer tests that I discovered. Bug 208649.
nelsonb%netscape.com
parents: 4544
diff changeset
  1973
#if 0
f860395e272947a29b22099f8e5f515b710e1de8 a) Add more missing null pointer tests that I discovered. Bug 208649.
nelsonb%netscape.com
parents: 4544
diff changeset
  1974
/* This function is not exported from NSS shared libraries, and is not
f860395e272947a29b22099f8e5f515b710e1de8 a) Add more missing null pointer tests that I discovered. Bug 208649.
nelsonb%netscape.com
parents: 4544
diff changeset
  1975
** used inside of NSS.
f860395e272947a29b22099f8e5f515b710e1de8 a) Add more missing null pointer tests that I discovered. Bug 208649.
nelsonb%netscape.com
parents: 4544
diff changeset
  1976
** XXX it should NOT be a void function, since it does allocations
f860395e272947a29b22099f8e5f515b710e1de8 a) Add more missing null pointer tests that I discovered. Bug 208649.
nelsonb%netscape.com
parents: 4544
diff changeset
  1977
** that can fail.
f860395e272947a29b22099f8e5f515b710e1de8 a) Add more missing null pointer tests that I discovered. Bug 208649.
nelsonb%netscape.com
parents: 4544
diff changeset
  1978
*/
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1979
void
11776
3896627e2a2f67d234f2dcef6eea9b7f1819f23d Bug 1227624 - clang format on lib/certdb with minor manual corrections, r=kaie
Franziskus Kiefer <franziskuskiefer@gmail.com>
parents: 11757
diff changeset
  1980
CERT_AddGeneralNameToList(CERTGeneralNameList *list,
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1981
			  CERTGeneralNameType type,
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1982
			  void *data, SECItem *oid)
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1983
{
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1984
    CERTGeneralName *name;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1985
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1986
    if (list != NULL && data != NULL) {
1031
d82fc414b80dd1c98a99f0f57fa4b98edd470945 Bugzilla: 64132. NSS lock instrumentation
larryh%netscape.com
parents: 713
diff changeset
  1987
	PZ_Lock(list->lock);
7829
03f4f61e700a94409cd538c76259557d4d58b0c2 Bug 358785: Merge NSS_LIBPKIX_BRANCH back to trunk. r=julien, r=alexei
alexei.volkov.bugs%sun.com
parents: 7288
diff changeset
  1988
	name = CERT_NewGeneralName(list->arena, type);
4557
f860395e272947a29b22099f8e5f515b710e1de8 a) Add more missing null pointer tests that I discovered. Bug 208649.
nelsonb%netscape.com
parents: 4544
diff changeset
  1989
	if (!name)
f860395e272947a29b22099f8e5f515b710e1de8 a) Add more missing null pointer tests that I discovered. Bug 208649.
nelsonb%netscape.com
parents: 4544
diff changeset
  1990
	    goto done;
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1991
	switch (type) {
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1992
	  case certDNSName:
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1993
	  case certEDIPartyName:
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1994
	  case certIPAddress:
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1995
	  case certRegisterID:
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1996
	  case certRFC822Name:
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1997
	  case certX400Address:
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  1998
	  case certURI:
4557
f860395e272947a29b22099f8e5f515b710e1de8 a) Add more missing null pointer tests that I discovered. Bug 208649.
nelsonb%netscape.com
parents: 4544
diff changeset
  1999
XXX	    SECITEM_CopyItem(list->arena, &name->name.other, (SECItem *)data);
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  2000
	    break;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  2001
	  case certOtherName:
4557
f860395e272947a29b22099f8e5f515b710e1de8 a) Add more missing null pointer tests that I discovered. Bug 208649.
nelsonb%netscape.com
parents: 4544
diff changeset
  2002
XXX	    SECITEM_CopyItem(list->arena, &name->name.OthName.name,
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  2003
			     (SECItem *) data);
4557
f860395e272947a29b22099f8e5f515b710e1de8 a) Add more missing null pointer tests that I discovered. Bug 208649.
nelsonb%netscape.com
parents: 4544
diff changeset
  2004
XXX	    SECITEM_CopyItem(list->arena, &name->name.OthName.oid,
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  2005
			     oid);
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  2006
	    break;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  2007
	  case certDirectoryName:
4557
f860395e272947a29b22099f8e5f515b710e1de8 a) Add more missing null pointer tests that I discovered. Bug 208649.
nelsonb%netscape.com
parents: 4544
diff changeset
  2008
XXX	    CERT_CopyName(list->arena, &name->name.directoryName,
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  2009
			  (CERTName *) data);
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  2010
	    break;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  2011
	}
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  2012
	list->name = cert_CombineNamesLists(list->name, name);
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  2013
	list->len++;
4557
f860395e272947a29b22099f8e5f515b710e1de8 a) Add more missing null pointer tests that I discovered. Bug 208649.
nelsonb%netscape.com
parents: 4544
diff changeset
  2014
done:
1031
d82fc414b80dd1c98a99f0f57fa4b98edd470945 Bugzilla: 64132. NSS lock instrumentation
larryh%netscape.com
parents: 713
diff changeset
  2015
	PZ_Unlock(list->lock);
206
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  2016
    }
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  2017
    return;
4ca6e95453644d479278092289806c37227d6da7 Initial NSS Open Source checkin
relyea%netscape.com
parents:
diff changeset
  2018
}
4557
f860395e272947a29b22099f8e5f515b710e1de8 a) Add more missing null pointer tests that I discovered. Bug 208649.
nelsonb%netscape.com
parents: 4544
diff changeset
  2019
#endif