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 :