Updated DB_Helper by adding firebase methods.
This commit is contained in:
parent
485cc3bbba
commit
c82121d036
1810 changed files with 537281 additions and 1 deletions
357
venv/Lib/site-packages/pyasn1_modules/rfc7292.py
Normal file
357
venv/Lib/site-packages/pyasn1_modules/rfc7292.py
Normal file
|
@ -0,0 +1,357 @@
|
|||
# This file is being contributed to pyasn1-modules software.
|
||||
#
|
||||
# Created by Russ Housley with assistance from the asn1ate tool.
|
||||
#
|
||||
# Copyright (c) 2019, Vigil Security, LLC
|
||||
# License: http://snmplabs.com/pyasn1/license.html
|
||||
#
|
||||
# PKCS #12: Personal Information Exchange Syntax v1.1
|
||||
#
|
||||
# ASN.1 source from:
|
||||
# https://www.rfc-editor.org/rfc/rfc7292.txt
|
||||
# https://www.rfc-editor.org/errata_search.php?rfc=7292
|
||||
|
||||
from pyasn1.type import char
|
||||
from pyasn1.type import constraint
|
||||
from pyasn1.type import namedtype
|
||||
from pyasn1.type import namedval
|
||||
from pyasn1.type import opentype
|
||||
from pyasn1.type import tag
|
||||
from pyasn1.type import univ
|
||||
|
||||
from pyasn1_modules import rfc2315
|
||||
from pyasn1_modules import rfc5652
|
||||
from pyasn1_modules import rfc5280
|
||||
from pyasn1_modules import rfc5958
|
||||
|
||||
|
||||
def _OID(*components):
|
||||
output = []
|
||||
for x in tuple(components):
|
||||
if isinstance(x, univ.ObjectIdentifier):
|
||||
output.extend(list(x))
|
||||
else:
|
||||
output.append(int(x))
|
||||
|
||||
return univ.ObjectIdentifier(output)
|
||||
|
||||
|
||||
# Initialize the maps used in PKCS#12
|
||||
|
||||
pkcs12BagTypeMap = { }
|
||||
|
||||
pkcs12CertBagMap = { }
|
||||
|
||||
pkcs12CRLBagMap = { }
|
||||
|
||||
pkcs12SecretBagMap = { }
|
||||
|
||||
|
||||
# Imports from RFC 2315, RFC 5652, and RFC 5958
|
||||
|
||||
DigestInfo = rfc2315.DigestInfo
|
||||
|
||||
|
||||
ContentInfo = rfc5652.ContentInfo
|
||||
|
||||
PKCS12Attribute = rfc5652.Attribute
|
||||
|
||||
|
||||
EncryptedPrivateKeyInfo = rfc5958.EncryptedPrivateKeyInfo
|
||||
|
||||
PrivateKeyInfo = rfc5958.PrivateKeyInfo
|
||||
|
||||
|
||||
# CMSSingleAttribute is the same as Attribute in RFC 5652 except the attrValues
|
||||
# SET must have one and only one member
|
||||
|
||||
class AttributeType(univ.ObjectIdentifier):
|
||||
pass
|
||||
|
||||
|
||||
class AttributeValue(univ.Any):
|
||||
pass
|
||||
|
||||
|
||||
class AttributeValues(univ.SetOf):
|
||||
pass
|
||||
|
||||
AttributeValues.componentType = AttributeValue()
|
||||
|
||||
|
||||
class CMSSingleAttribute(univ.Sequence):
|
||||
pass
|
||||
|
||||
CMSSingleAttribute.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('attrType', AttributeType()),
|
||||
namedtype.NamedType('attrValues',
|
||||
AttributeValues().subtype(sizeSpec=constraint.ValueSizeConstraint(1, 1)),
|
||||
openType=opentype.OpenType('attrType', rfc5652.cmsAttributesMap)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
# Object identifier arcs
|
||||
|
||||
rsadsi = _OID(1, 2, 840, 113549)
|
||||
|
||||
pkcs = _OID(rsadsi, 1)
|
||||
|
||||
pkcs_9 = _OID(pkcs, 9)
|
||||
|
||||
certTypes = _OID(pkcs_9, 22)
|
||||
|
||||
crlTypes = _OID(pkcs_9, 23)
|
||||
|
||||
pkcs_12 = _OID(pkcs, 12)
|
||||
|
||||
|
||||
# PBE Algorithm Identifiers and Parameters Structure
|
||||
|
||||
pkcs_12PbeIds = _OID(pkcs_12, 1)
|
||||
|
||||
pbeWithSHAAnd128BitRC4 = _OID(pkcs_12PbeIds, 1)
|
||||
|
||||
pbeWithSHAAnd40BitRC4 = _OID(pkcs_12PbeIds, 2)
|
||||
|
||||
pbeWithSHAAnd3_KeyTripleDES_CBC = _OID(pkcs_12PbeIds, 3)
|
||||
|
||||
pbeWithSHAAnd2_KeyTripleDES_CBC = _OID(pkcs_12PbeIds, 4)
|
||||
|
||||
pbeWithSHAAnd128BitRC2_CBC = _OID(pkcs_12PbeIds, 5)
|
||||
|
||||
pbeWithSHAAnd40BitRC2_CBC = _OID(pkcs_12PbeIds, 6)
|
||||
|
||||
|
||||
class Pkcs_12PbeParams(univ.Sequence):
|
||||
pass
|
||||
|
||||
Pkcs_12PbeParams.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('salt', univ.OctetString()),
|
||||
namedtype.NamedType('iterations', univ.Integer())
|
||||
)
|
||||
|
||||
|
||||
# Bag types
|
||||
|
||||
bagtypes = _OID(pkcs_12, 10, 1)
|
||||
|
||||
class BAG_TYPE(univ.Sequence):
|
||||
pass
|
||||
|
||||
BAG_TYPE.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('id', univ.ObjectIdentifier()),
|
||||
namedtype.NamedType('unnamed1', univ.Any(),
|
||||
openType=opentype.OpenType('attrType', pkcs12BagTypeMap)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
id_keyBag = _OID(bagtypes, 1)
|
||||
|
||||
class KeyBag(PrivateKeyInfo):
|
||||
pass
|
||||
|
||||
|
||||
id_pkcs8ShroudedKeyBag = _OID(bagtypes, 2)
|
||||
|
||||
class PKCS8ShroudedKeyBag(EncryptedPrivateKeyInfo):
|
||||
pass
|
||||
|
||||
|
||||
id_certBag = _OID(bagtypes, 3)
|
||||
|
||||
class CertBag(univ.Sequence):
|
||||
pass
|
||||
|
||||
CertBag.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('certId', univ.ObjectIdentifier()),
|
||||
namedtype.NamedType('certValue',
|
||||
univ.Any().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)),
|
||||
openType=opentype.OpenType('certId', pkcs12CertBagMap)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
x509Certificate = CertBag()
|
||||
x509Certificate['certId'] = _OID(certTypes, 1)
|
||||
x509Certificate['certValue'] = univ.OctetString()
|
||||
# DER-encoded X.509 certificate stored in OCTET STRING
|
||||
|
||||
|
||||
sdsiCertificate = CertBag()
|
||||
sdsiCertificate['certId'] = _OID(certTypes, 2)
|
||||
sdsiCertificate['certValue'] = char.IA5String()
|
||||
# Base64-encoded SDSI certificate stored in IA5String
|
||||
|
||||
|
||||
id_CRLBag = _OID(bagtypes, 4)
|
||||
|
||||
class CRLBag(univ.Sequence):
|
||||
pass
|
||||
|
||||
CRLBag.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('crlId', univ.ObjectIdentifier()),
|
||||
namedtype.NamedType('crlValue',
|
||||
univ.Any().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)),
|
||||
openType=opentype.OpenType('crlId', pkcs12CRLBagMap)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
x509CRL = CRLBag()
|
||||
x509CRL['crlId'] = _OID(crlTypes, 1)
|
||||
x509CRL['crlValue'] = univ.OctetString()
|
||||
# DER-encoded X.509 CRL stored in OCTET STRING
|
||||
|
||||
|
||||
id_secretBag = _OID(bagtypes, 5)
|
||||
|
||||
class SecretBag(univ.Sequence):
|
||||
pass
|
||||
|
||||
SecretBag.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('secretTypeId', univ.ObjectIdentifier()),
|
||||
namedtype.NamedType('secretValue',
|
||||
univ.Any().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)),
|
||||
openType=opentype.OpenType('secretTypeId', pkcs12SecretBagMap)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
id_safeContentsBag = _OID(bagtypes, 6)
|
||||
|
||||
class SafeBag(univ.Sequence):
|
||||
pass
|
||||
|
||||
SafeBag.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('bagId', univ.ObjectIdentifier()),
|
||||
namedtype.NamedType('bagValue',
|
||||
univ.Any().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0)),
|
||||
openType=opentype.OpenType('bagId', pkcs12BagTypeMap)
|
||||
),
|
||||
namedtype.OptionalNamedType('bagAttributes',
|
||||
univ.SetOf(componentType=PKCS12Attribute())
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class SafeContents(univ.SequenceOf):
|
||||
pass
|
||||
|
||||
SafeContents.componentType = SafeBag()
|
||||
|
||||
|
||||
# The PFX PDU
|
||||
|
||||
class AuthenticatedSafe(univ.SequenceOf):
|
||||
pass
|
||||
|
||||
AuthenticatedSafe.componentType = ContentInfo()
|
||||
# Data if unencrypted
|
||||
# EncryptedData if password-encrypted
|
||||
# EnvelopedData if public key-encrypted
|
||||
|
||||
|
||||
class MacData(univ.Sequence):
|
||||
pass
|
||||
|
||||
MacData.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('mac', DigestInfo()),
|
||||
namedtype.NamedType('macSalt', univ.OctetString()),
|
||||
namedtype.DefaultedNamedType('iterations', univ.Integer().subtype(value=1))
|
||||
# Note: The default is for historical reasons and its use is deprecated
|
||||
)
|
||||
|
||||
|
||||
class PFX(univ.Sequence):
|
||||
pass
|
||||
|
||||
PFX.componentType = namedtype.NamedTypes(
|
||||
namedtype.NamedType('version',
|
||||
univ.Integer(namedValues=namedval.NamedValues(('v3', 3)))
|
||||
),
|
||||
namedtype.NamedType('authSafe', ContentInfo()),
|
||||
namedtype.OptionalNamedType('macData', MacData())
|
||||
)
|
||||
|
||||
|
||||
# Local key identifier (also defined as certificateAttribute in rfc2985.py)
|
||||
|
||||
pkcs_9_at_localKeyId = _OID(pkcs_9, 21)
|
||||
|
||||
localKeyId = CMSSingleAttribute()
|
||||
localKeyId['attrType'] = pkcs_9_at_localKeyId
|
||||
localKeyId['attrValues'][0] = univ.OctetString()
|
||||
|
||||
|
||||
# Friendly name (also defined as certificateAttribute in rfc2985.py)
|
||||
|
||||
pkcs_9_ub_pkcs9String = univ.Integer(255)
|
||||
|
||||
pkcs_9_ub_friendlyName = univ.Integer(pkcs_9_ub_pkcs9String)
|
||||
|
||||
pkcs_9_at_friendlyName = _OID(pkcs_9, 20)
|
||||
|
||||
class FriendlyName(char.BMPString):
|
||||
pass
|
||||
|
||||
FriendlyName.subtypeSpec = constraint.ValueSizeConstraint(1, pkcs_9_ub_friendlyName)
|
||||
|
||||
|
||||
friendlyName = CMSSingleAttribute()
|
||||
friendlyName['attrType'] = pkcs_9_at_friendlyName
|
||||
friendlyName['attrValues'][0] = FriendlyName()
|
||||
|
||||
|
||||
# Update the PKCS#12 maps
|
||||
|
||||
_pkcs12BagTypeMap = {
|
||||
id_keyBag: KeyBag(),
|
||||
id_pkcs8ShroudedKeyBag: PKCS8ShroudedKeyBag(),
|
||||
id_certBag: CertBag(),
|
||||
id_CRLBag: CRLBag(),
|
||||
id_secretBag: SecretBag(),
|
||||
id_safeContentsBag: SafeBag(),
|
||||
}
|
||||
|
||||
pkcs12BagTypeMap.update(_pkcs12BagTypeMap)
|
||||
|
||||
|
||||
_pkcs12CertBagMap = {
|
||||
_OID(certTypes, 1): univ.OctetString(),
|
||||
_OID(certTypes, 2): char.IA5String(),
|
||||
}
|
||||
|
||||
pkcs12CertBagMap.update(_pkcs12CertBagMap)
|
||||
|
||||
|
||||
_pkcs12CRLBagMap = {
|
||||
_OID(crlTypes, 1): univ.OctetString(),
|
||||
}
|
||||
|
||||
pkcs12CRLBagMap.update(_pkcs12CRLBagMap)
|
||||
|
||||
|
||||
# Update the Algorithm Identifier map
|
||||
|
||||
_algorithmIdentifierMapUpdate = {
|
||||
pbeWithSHAAnd128BitRC4: Pkcs_12PbeParams(),
|
||||
pbeWithSHAAnd40BitRC4: Pkcs_12PbeParams(),
|
||||
pbeWithSHAAnd3_KeyTripleDES_CBC: Pkcs_12PbeParams(),
|
||||
pbeWithSHAAnd2_KeyTripleDES_CBC: Pkcs_12PbeParams(),
|
||||
pbeWithSHAAnd128BitRC2_CBC: Pkcs_12PbeParams(),
|
||||
pbeWithSHAAnd40BitRC2_CBC: Pkcs_12PbeParams(),
|
||||
}
|
||||
|
||||
rfc5280.algorithmIdentifierMap.update(_algorithmIdentifierMapUpdate)
|
||||
|
||||
|
||||
# Update the CMS Attribute map
|
||||
|
||||
_cmsAttributesMapUpdate = {
|
||||
pkcs_9_at_friendlyName: FriendlyName(),
|
||||
pkcs_9_at_localKeyId: univ.OctetString(),
|
||||
}
|
||||
|
||||
rfc5652.cmsAttributesMap.update(_cmsAttributesMapUpdate)
|
Loading…
Add table
Add a link
Reference in a new issue