Coverage Report

Created: 2018-08-29 13:53

/src/openssl/crypto/pkcs12/p12_attr.c
Line
Count
Source (jump to first uncovered line)
1
/*
2
 * Copyright 1999-2016 The OpenSSL Project Authors. All Rights Reserved.
3
 *
4
 * Licensed under the OpenSSL license (the "License").  You may not use
5
 * this file except in compliance with the License.  You can obtain a copy
6
 * in the file LICENSE in the source distribution or at
7
 * https://www.openssl.org/source/license.html
8
 */
9
10
#include <stdio.h>
11
#include "internal/cryptlib.h"
12
#include <openssl/pkcs12.h>
13
#include "p12_lcl.h"
14
15
/* Add a local keyid to a safebag */
16
17
int PKCS12_add_localkeyid(PKCS12_SAFEBAG *bag, unsigned char *name,
18
                          int namelen)
19
0
{
20
0
    if (X509at_add1_attr_by_NID(&bag->attrib, NID_localKeyID,
21
0
                                V_ASN1_OCTET_STRING, name, namelen))
22
0
        return 1;
23
0
    else
24
0
        return 0;
25
0
}
26
27
/* Add key usage to PKCS#8 structure */
28
29
int PKCS8_add_keyusage(PKCS8_PRIV_KEY_INFO *p8, int usage)
30
0
{
31
0
    unsigned char us_val = (unsigned char)usage;
32
0
    return PKCS8_pkey_add1_attr_by_NID(p8, NID_key_usage,
33
0
                                       V_ASN1_BIT_STRING, &us_val, 1);
34
0
}
35
36
/* Add a friendlyname to a safebag */
37
38
int PKCS12_add_friendlyname_asc(PKCS12_SAFEBAG *bag, const char *name,
39
                                int namelen)
40
0
{
41
0
    if (X509at_add1_attr_by_NID(&bag->attrib, NID_friendlyName,
42
0
                                MBSTRING_ASC, (unsigned char *)name, namelen))
43
0
        return 1;
44
0
    else
45
0
        return 0;
46
0
}
47
48
int PKCS12_add_friendlyname_utf8(PKCS12_SAFEBAG *bag, const char *name,
49
                                int namelen)
50
0
{
51
0
    if (X509at_add1_attr_by_NID(&bag->attrib, NID_friendlyName,
52
0
                                MBSTRING_UTF8, (unsigned char *)name, namelen))
53
0
        return 1;
54
0
    else
55
0
        return 0;
56
0
}
57
58
int PKCS12_add_friendlyname_uni(PKCS12_SAFEBAG *bag,
59
                                const unsigned char *name, int namelen)
60
0
{
61
0
    if (X509at_add1_attr_by_NID(&bag->attrib, NID_friendlyName,
62
0
                                MBSTRING_BMP, name, namelen))
63
0
        return 1;
64
0
    else
65
0
        return 0;
66
0
}
67
68
int PKCS12_add_CSPName_asc(PKCS12_SAFEBAG *bag, const char *name, int namelen)
69
0
{
70
0
    if (X509at_add1_attr_by_NID(&bag->attrib, NID_ms_csp_name,
71
0
                                MBSTRING_ASC, (unsigned char *)name, namelen))
72
0
        return 1;
73
0
    else
74
0
        return 0;
75
0
}
76
77
ASN1_TYPE *PKCS12_get_attr_gen(const STACK_OF(X509_ATTRIBUTE) *attrs,
78
                               int attr_nid)
79
0
{
80
0
    X509_ATTRIBUTE *attrib;
81
0
    int i;
82
0
    i = X509at_get_attr_by_NID(attrs, attr_nid, -1);
83
0
    attrib = X509at_get_attr(attrs, i);
84
0
    return X509_ATTRIBUTE_get0_type(attrib, 0);
85
0
}
86
87
char *PKCS12_get_friendlyname(PKCS12_SAFEBAG *bag)
88
0
{
89
0
    const ASN1_TYPE *atype;
90
0
91
0
    if ((atype = PKCS12_SAFEBAG_get0_attr(bag, NID_friendlyName)) == NULL)
92
0
        return NULL;
93
0
    if (atype->type != V_ASN1_BMPSTRING)
94
0
        return NULL;
95
0
    return OPENSSL_uni2utf8(atype->value.bmpstring->data,
96
0
                            atype->value.bmpstring->length);
97
0
}
98
99
const STACK_OF(X509_ATTRIBUTE) *
100
PKCS12_SAFEBAG_get0_attrs(const PKCS12_SAFEBAG *bag)
101
0
{
102
0
    return bag->attrib;
103
0
}