LCOV - code coverage report
Current view: top level - third_party/openssl/crypto/x509v3 - v3_bitst.c (source / functions) Hit Total Coverage
Test: tmp.zDYK9MVh93 Lines: 0 23 0.0 %
Date: 2015-10-10 Functions: 0 2 0.0 %

          Line data    Source code
       1             : /* v3_bitst.c */
       2             : /*
       3             :  * Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL project
       4             :  * 1999.
       5             :  */
       6             : /* ====================================================================
       7             :  * Copyright (c) 1999 The OpenSSL Project.  All rights reserved.
       8             :  *
       9             :  * Redistribution and use in source and binary forms, with or without
      10             :  * modification, are permitted provided that the following conditions
      11             :  * are met:
      12             :  *
      13             :  * 1. Redistributions of source code must retain the above copyright
      14             :  *    notice, this list of conditions and the following disclaimer.
      15             :  *
      16             :  * 2. Redistributions in binary form must reproduce the above copyright
      17             :  *    notice, this list of conditions and the following disclaimer in
      18             :  *    the documentation and/or other materials provided with the
      19             :  *    distribution.
      20             :  *
      21             :  * 3. All advertising materials mentioning features or use of this
      22             :  *    software must display the following acknowledgment:
      23             :  *    "This product includes software developed by the OpenSSL Project
      24             :  *    for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
      25             :  *
      26             :  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
      27             :  *    endorse or promote products derived from this software without
      28             :  *    prior written permission. For written permission, please contact
      29             :  *    licensing@OpenSSL.org.
      30             :  *
      31             :  * 5. Products derived from this software may not be called "OpenSSL"
      32             :  *    nor may "OpenSSL" appear in their names without prior written
      33             :  *    permission of the OpenSSL Project.
      34             :  *
      35             :  * 6. Redistributions of any form whatsoever must retain the following
      36             :  *    acknowledgment:
      37             :  *    "This product includes software developed by the OpenSSL Project
      38             :  *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
      39             :  *
      40             :  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
      41             :  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
      42             :  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
      43             :  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
      44             :  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
      45             :  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
      46             :  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
      47             :  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
      48             :  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
      49             :  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
      50             :  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
      51             :  * OF THE POSSIBILITY OF SUCH DAMAGE.
      52             :  * ====================================================================
      53             :  *
      54             :  * This product includes cryptographic software written by Eric Young
      55             :  * (eay@cryptsoft.com).  This product includes software written by Tim
      56             :  * Hudson (tjh@cryptsoft.com).
      57             :  *
      58             :  */
      59             : 
      60             : #include <stdio.h>
      61             : #include "cryptlib.h"
      62             : #include <openssl/conf.h>
      63             : #include <openssl/x509v3.h>
      64             : 
      65             : static BIT_STRING_BITNAME ns_cert_type_table[] = {
      66             :     {0, "SSL Client", "client"},
      67             :     {1, "SSL Server", "server"},
      68             :     {2, "S/MIME", "email"},
      69             :     {3, "Object Signing", "objsign"},
      70             :     {4, "Unused", "reserved"},
      71             :     {5, "SSL CA", "sslCA"},
      72             :     {6, "S/MIME CA", "emailCA"},
      73             :     {7, "Object Signing CA", "objCA"},
      74             :     {-1, NULL, NULL}
      75             : };
      76             : 
      77             : static BIT_STRING_BITNAME key_usage_type_table[] = {
      78             :     {0, "Digital Signature", "digitalSignature"},
      79             :     {1, "Non Repudiation", "nonRepudiation"},
      80             :     {2, "Key Encipherment", "keyEncipherment"},
      81             :     {3, "Data Encipherment", "dataEncipherment"},
      82             :     {4, "Key Agreement", "keyAgreement"},
      83             :     {5, "Certificate Sign", "keyCertSign"},
      84             :     {6, "CRL Sign", "cRLSign"},
      85             :     {7, "Encipher Only", "encipherOnly"},
      86             :     {8, "Decipher Only", "decipherOnly"},
      87             :     {-1, NULL, NULL}
      88             : };
      89             : 
      90             : const X509V3_EXT_METHOD v3_nscert =
      91             : EXT_BITSTRING(NID_netscape_cert_type, ns_cert_type_table);
      92             : const X509V3_EXT_METHOD v3_key_usage =
      93             : EXT_BITSTRING(NID_key_usage, key_usage_type_table);
      94             : 
      95           0 : STACK_OF(CONF_VALUE) *i2v_ASN1_BIT_STRING(X509V3_EXT_METHOD *method,
      96             :                                           ASN1_BIT_STRING *bits,
      97             :                                           STACK_OF(CONF_VALUE) *ret)
      98             : {
      99             :     BIT_STRING_BITNAME *bnam;
     100           0 :     for (bnam = method->usr_data; bnam->lname; bnam++) {
     101           0 :         if (ASN1_BIT_STRING_get_bit(bits, bnam->bitnum))
     102           0 :             X509V3_add_value(bnam->lname, NULL, &ret);
     103             :     }
     104           0 :     return ret;
     105             : }
     106             : 
     107           0 : ASN1_BIT_STRING *v2i_ASN1_BIT_STRING(X509V3_EXT_METHOD *method,
     108             :                                      X509V3_CTX *ctx,
     109             :                                      STACK_OF(CONF_VALUE) *nval)
     110             : {
     111             :     CONF_VALUE *val;
     112             :     ASN1_BIT_STRING *bs;
     113             :     int i;
     114             :     BIT_STRING_BITNAME *bnam;
     115           0 :     if (!(bs = M_ASN1_BIT_STRING_new())) {
     116           0 :         X509V3err(X509V3_F_V2I_ASN1_BIT_STRING, ERR_R_MALLOC_FAILURE);
     117           0 :         return NULL;
     118             :     }
     119           0 :     for (i = 0; i < sk_CONF_VALUE_num(nval); i++) {
     120           0 :         val = sk_CONF_VALUE_value(nval, i);
     121           0 :         for (bnam = method->usr_data; bnam->lname; bnam++) {
     122           0 :             if (!strcmp(bnam->sname, val->name) ||
     123           0 :                 !strcmp(bnam->lname, val->name)) {
     124           0 :                 if (!ASN1_BIT_STRING_set_bit(bs, bnam->bitnum, 1)) {
     125           0 :                     X509V3err(X509V3_F_V2I_ASN1_BIT_STRING,
     126             :                               ERR_R_MALLOC_FAILURE);
     127           0 :                     M_ASN1_BIT_STRING_free(bs);
     128           0 :                     return NULL;
     129             :                 }
     130             :                 break;
     131             :             }
     132             :         }
     133           0 :         if (!bnam->lname) {
     134           0 :             X509V3err(X509V3_F_V2I_ASN1_BIT_STRING,
     135             :                       X509V3_R_UNKNOWN_BIT_STRING_ARGUMENT);
     136           0 :             X509V3_conf_err(val);
     137           0 :             M_ASN1_BIT_STRING_free(bs);
     138           0 :             return NULL;
     139             :         }
     140             :     }
     141             :     return bs;
     142             : }

Generated by: LCOV version 1.10