aboutsummaryrefslogtreecommitdiffstats
path: root/lib/public_key/asn1/PKCS-8.asn1
blob: 7413519b570f8d534836413357010125e8ebf5ea (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
PKCS-8 {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-8(8)
        modules(1) pkcs-8(1)} 

-- $Revision: 1.5 $

-- This module has been checked for conformance with the ASN.1
-- standard by the OSS ASN.1 Tools

DEFINITIONS IMPLICIT TAGS ::= 

BEGIN

-- EXPORTS All --
-- All types and values defined in this module is exported for use in other
-- ASN.1 modules.

IMPORTS

-- informationFramework
--        FROM UsefulDefinitions {joint-iso-itu-t(2) ds(5) module(1)
--                                usefulDefinitions(0) 3} 

Attribute
--        FROM InformationFramework informationFramework
        FROM InformationFramework;

-- This import is really unnecessary since ALGORITHM-IDENTIFIER is defined as a 
-- TYPE-IDENTIFIER
-- Renome this import and replace all occurences of ALGORITHM-IDENTIFIER with
-- TYPE-IDENTIFIER as a workaround for weaknesses in the ASN.1 compiler
--AlgorithmIdentifier, ALGORITHM-IDENTIFIER
--        FROM PKCS5v2-0 {iso(1) member-body(2) us(840) rsadsi(113549)
--        pkcs(1) pkcs-5(5) modules(16) pkcs-5(1)};

-- Inlined from PKCS5v2-0 since it is the only thing imported from that module
-- AlgorithmIdentifier { ALGORITHM-IDENTIFIER:InfoObjectSet } ::= 
AlgorithmIdentifier { TYPE-IDENTIFIER:InfoObjectSet } ::= 
SEQUENCE {
--  algorithm ALGORITHM-IDENTIFIER.&id({InfoObjectSet}),
  algorithm TYPE-IDENTIFIER.&id({InfoObjectSet}),
--  parameters ALGORITHM-IDENTIFIER.&Type({InfoObjectSet}
  parameters TYPE-IDENTIFIER.&Type({InfoObjectSet}
    {@algorithm}) OPTIONAL }

-- Private-key information syntax

PrivateKeyInfo ::= SEQUENCE {
  version Version,
--  privateKeyAlgorithm AlgorithmIdentifier {{PrivateKeyAlgorithms}},
  privateKeyAlgorithm AlgorithmIdentifier {{...}},
  privateKey PrivateKey,
  attributes [0] Attributes OPTIONAL }

Version ::= INTEGER {v1(0)} (v1,...)

PrivateKey ::= OCTET STRING

-- Attributes ::= SET OF Attribute
Attributes ::= SET OF Attribute {{...}}

-- Encrypted private-key information syntax

EncryptedPrivateKeyInfo ::= SEQUENCE {
--    encryptionAlgorithm AlgorithmIdentifier {{KeyEncryptionAlgorithms}},
    encryptionAlgorithm AlgorithmIdentifier {{...}},
    encryptedData EncryptedData 
}

EncryptedData ::= OCTET STRING

-- PrivateKeyAlgorithms ALGORITHM-IDENTIFIER ::= {
PrivateKeyAlgorithms TYPE-IDENTIFIER ::= {
    ... -- For local profiles
}

-- KeyEncryptionAlgorithms ALGORITHM-IDENTIFIER ::= {
KeyEncryptionAlgorithms TYPE-IDENTIFIER ::= {
    ... -- For local profiles
}

END