La norme utilisée utilisée est Abstract Syntax Notation One (ASN.1) de l'International Telecommunication Union (ITU) compilée en Basic Encoding Rules (BER).
PKCS-12 {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-12(12) modules(0) pkcs-12(1)}
-- 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
ContentInfo, DigestInfo FROM PKCS-7
{iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-7(7) modules(0) pkcs-7(1)}
PrivateKeyInfo, EncryptedPrivateKeyInfo FROM PKCS-8
{iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-8(8) modules(1) pkcs-8(1)}
pkcs-9, friendlyName, localKeyId, certTypes, crlTypes FROM PKCS-9
{iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) modules(0) pkcs-9(1)};
-- Object identifiers
rsadsi OBJECT IDENTIFIER ::= {iso(1) member-body(2) us(840) rsadsi(113549)}
pkcs OBJECT IDENTIFIER ::= {rsadsi pkcs(1)}
pkcs-12 OBJECT IDENTIFIER ::= {pkcs 12}
pkcs-12PbeIds OBJECT IDENTIFIER ::= {pkcs-12 1}
pbeWithSHAAnd128BitRC4 OBJECT IDENTIFIER ::= {pkcs-12PbeIds 1}
pbeWithSHAAnd40BitRC4 OBJECT IDENTIFIER ::= {pkcs-12PbeIds 2}
pbeWithSHAAnd3-KeyTripleDES-CBC OBJECT IDENTIFIER ::= {pkcs-12PbeIds 3}
pbeWithSHAAnd2-KeyTripleDES-CB COBJECT IDENTIFIER ::= {pkcs-12PbeIds 4}
pbeWithSHAAnd128BitRC2-CBC OBJECT IDENTIFIER ::= {pkcs-12PbeIds 5}
pbewithSHAAnd40BitRC2-CBC OBJECT IDENTIFIER ::= {pkcs-12PbeIds 6}
bagtypes OBJECT IDENTIFIER ::= {pkcs-12 10 1}
-- The PFX PDU
PFX ::= SEQUENCE
-- Point d'entree de l'echange des informations personnelles.
{
version INTEGER {v3(3)}(v3,...),
-- Toujours 3.
authSafe ContentInfo,
-- Information sur un contenu de type PKCS#7.ContentInfo.contentType=signedData.
macData MacData OPTIONAL
-- Pour une signature avec mot de passe.
}
MacData ::= SEQUENCE
-- Information pour la signature par l'algorithme Hmac.
{
mac DigestInfo,
-- Algorithme de signature sous-jacent de l'algorithme Hmac et un mot de passe. Par exemple id-sha1.
macSalt OCTET STRING,
-- Salt de l'algorithme de signature.
iterations INTEGER DEFAULT 1
-- Nombre d'iterations.
-- Note: The default is for historical reasons and its use is deprecated. A higher
-- value, like 1024 is recommended.
}
AuthenticatedSafe ::= SEQUENCE OF ContentInfo
-- Data if unencrypted
-- EncryptedData if password-encrypted
-- EnvelopedData if public key-encrypted
SafeContents ::= SEQUENCE OF SafeBag
SafeBag ::= SEQUENCE
-- Piece d'information telle une cle, un certificat, etc.
{
bagId BAG-TYPE.&id ({PKCS12BagSet}),
-- Identification de la piece d'information.
bagValue [0] EXPLICIT BAG-TYPE.&Type({PKCS12BagSet}{@bagId}),
-- Type de la piece d'information - keyBag, pkcs-8ShroudedKeyBag, certBag, crlBag, secretBag ou safeContentsBag.
bagAttributes SET OF PKCS12Attribute OPTIONAL
-- Liste d'attributs associe a la piece d'information.
}
-- Bag types
keyBag BAG-TYPE ::= {KeyBag IDENTIFIED BY {bagtypes 1}}
pkcs-8ShroudedKeyBag BAG-TYPE ::= {PKCS8ShroudedKeyBag IDENTIFIED BY {bagtypes 2}}
certBag BAG-TYPE ::= {CertBag IDENTIFIED BY {bagtypes 3}}
crlBag BAG-TYPE ::= {CRLBag IDENTIFIED BY {bagtypes 4}}
secretBag BAG-TYPE ::= {SecretBag IDENTIFIED BY {bagtypes 5}}
safeContentsBag BAG-TYPE ::= {SafeContents IDENTIFIED BY {bagtypes 6}}
PKCS12BagSet BAG-TYPE ::=
{
keyBag | pkcs8ShroudedKeyBag | certBag | crlBag | secretBag | safeContentsBag,
... -- For future extensions
}
BAG-TYPE ::= TYPE-IDENTIFIER
-- KeyBag
KeyBag ::= PrivateKeyInfo
-- Contient une cle privee au format PCKS#8.PrivateKeyInfo.
-- Shrouded KeyBag
PKCS8ShroudedKeyBag ::= EncryptedPrivateKeyInfo
-- Contient une cle privee au format PCKS#8.PrivateKeyInfo qui a ete encryptee.
-- CertBag
CertBag ::= SEQUENCE
-- Contient un certificat.
{
certId BAG-TYPE.&id ({CertTypes}),
-- Identifiant du certificat.
certValue [0] EXPLICIT BAG-TYPE.&Type ({CertTypes}{@certId})
-- Valeur en fonction du type de certificat.
}
x509Certificate BAG-TYPE ::= { OCTET STRING IDENTIFIED BY {certTypes 1}}
-- DER-encoded X.509 certificate stored in OCTET STRING
sdsiCertificate BAG-TYPE ::= {IA5String IDENTIFIED BY {certTypes 2}}
-- Base64-encoded SDSI certificate stored in IA5String
CertTypes BAG-TYPE ::=
{
x509Certificate | sdsiCertificate,
... -- For future extensions
}
-- CRLBag
CRLBag ::= SEQUENCE
-- Contient une liste de revocation de certificats.
{
crlId BAG-TYPE.&id ({CRLTypes}),
-- Identifiant du certificat revoque.
crltValue [0] EXPLICIT BAG-TYPE.&Type ({CRLTypes}{@crlId})
-- Certificat revoque.
}
x509CRL BAG-TYPE ::= { OCTET STRING IDENTIFIED BY {certTypes 1}}
-- DER-encoded X.509 CRL stored in OCTET STRING
CRLTypes BAG-TYPE ::=
{
x509CRL,
... -- For future extensions
}
-- Secret Bag
SecretBag ::= SEQUENCE
-- Contient un secret provenant des informations personnelles.
{
secretTypeId BAG-TYPE.&id ({SecretTypes}),
-- Identifiant du type du secret.
secretValue [0] EXPLICIT BAG-TYPE.&Type ({SecretTypes}{@secretTypeId})
-- Valeur du secret.
}
SecretTypes BAG-TYPE ::= { ... -- For future extensions }
-- Attributes
PKCS12Attribute ::= SEQUENCE
-- Attributs lisibles associes a une cle.
{
-- This type is compatible with the X.500 type ’Attribute’
attrId ATTRIBUTE.&id ({PKCS12AttrSet}),
-- Identifiant de l'attribut.
attrValues SET OF ATTRIBUTE.&Type ({PKCS12AttrSet}{@attrId})
-- Type de l'attribut.
}
PKCS12AttrSet ATTRIBUTE ::=
{
friendlyName | localKeyId,
... -- Other attributes are allowed
}
END
De plus :