Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
rfc6031.py470 linesDownload Raw Back to pyasn1_modules
1#2# This file is part of pyasn1-modules software.3#4# Created by Russ Housley with assistance from asn1ate v.0.6.0.5#6# Copyright (c) 2019, Vigil Security, LLC7# License: http://snmplabs.com/pyasn1/license.html8#9# CMS Symmetric Key Package Content Type10#11# ASN.1 source from:12# https://www.rfc-editor.org/rfc/rfc6031.txt13#14 15from pyasn1.type import char16from pyasn1.type import constraint17from pyasn1.type import namedtype18from pyasn1.type import namedval19from pyasn1.type import opentype20from pyasn1.type import tag21from pyasn1.type import univ22from pyasn1.type import useful23 24from pyasn1_modules import rfc565225from pyasn1_modules import rfc601926 27 28def _OID(*components):29    output = []30    for x in tuple(components):31        if isinstance(x, univ.ObjectIdentifier):32            output.extend(list(x))33        else:34            output.append(int(x))35    return univ.ObjectIdentifier(output)36 37 38MAX = float('inf')39 40id_pskc = univ.ObjectIdentifier('1.2.840.113549.1.9.16.12')41 42 43# Symmetric Key Package Attributes44 45id_pskc_manufacturer = _OID(id_pskc, 1)46 47class at_pskc_manufacturer(char.UTF8String):48    pass49 50 51id_pskc_serialNo = _OID(id_pskc, 2)52 53class at_pskc_serialNo(char.UTF8String):54    pass55 56 57id_pskc_model = _OID(id_pskc, 3)58 59class at_pskc_model(char.UTF8String):60    pass61 62 63id_pskc_issueNo = _OID(id_pskc, 4)64 65class at_pskc_issueNo(char.UTF8String):66    pass67 68 69id_pskc_deviceBinding = _OID(id_pskc, 5)70 71class at_pskc_deviceBinding(char.UTF8String):72    pass73 74 75id_pskc_deviceStartDate = _OID(id_pskc, 6)76 77class at_pskc_deviceStartDate(useful.GeneralizedTime):78    pass79 80 81id_pskc_deviceExpiryDate = _OID(id_pskc, 7)82 83class at_pskc_deviceExpiryDate(useful.GeneralizedTime):84    pass85 86 87id_pskc_moduleId = _OID(id_pskc, 8)88 89class at_pskc_moduleId(char.UTF8String):90    pass91 92 93id_pskc_deviceUserId = _OID(id_pskc, 26)94 95class at_pskc_deviceUserId(char.UTF8String):96    pass97 98 99# Symmetric Key Attributes100 101id_pskc_keyId = _OID(id_pskc, 9)102 103class at_pskc_keyUserId(char.UTF8String):104    pass105 106 107id_pskc_algorithm = _OID(id_pskc, 10)108 109class at_pskc_algorithm(char.UTF8String):110    pass111 112 113id_pskc_issuer = _OID(id_pskc, 11)114 115class at_pskc_issuer(char.UTF8String):116    pass117 118 119id_pskc_keyProfileId = _OID(id_pskc, 12)120 121class at_pskc_keyProfileId(char.UTF8String):122    pass123 124 125id_pskc_keyReference = _OID(id_pskc, 13)126 127class at_pskc_keyReference(char.UTF8String):128    pass129 130 131id_pskc_friendlyName = _OID(id_pskc, 14)132 133class FriendlyName(univ.Sequence):134    pass135 136FriendlyName.componentType = namedtype.NamedTypes(137    namedtype.NamedType('friendlyName', char.UTF8String()),138    namedtype.OptionalNamedType('friendlyNameLangTag', char.UTF8String())139)140 141class at_pskc_friendlyName(FriendlyName):142    pass143 144 145id_pskc_algorithmParameters = _OID(id_pskc, 15)146 147class Encoding(char.UTF8String):148    pass149 150Encoding.namedValues = namedval.NamedValues(151    ('dec',   "DECIMAL"),152    ('hex',   "HEXADECIMAL"),153    ('alpha', "ALPHANUMERIC"),154    ('b64',   "BASE64"),155    ('bin',   "BINARY")156)157 158Encoding.subtypeSpec = constraint.SingleValueConstraint(159    "DECIMAL", "HEXADECIMAL", "ALPHANUMERIC", "BASE64", "BINARY" )160 161class ChallengeFormat(univ.Sequence):162    pass163 164ChallengeFormat.componentType = namedtype.NamedTypes(165    namedtype.NamedType('encoding', Encoding()),166    namedtype.DefaultedNamedType('checkDigit',167        univ.Boolean().subtype(value=0)),168    namedtype.NamedType('min', univ.Integer().subtype(169        subtypeSpec=constraint.ValueRangeConstraint(0, MAX))),170    namedtype.NamedType('max', univ.Integer().subtype(171        subtypeSpec=constraint.ValueRangeConstraint(0, MAX)))172)173 174class ResponseFormat(univ.Sequence):175    pass176 177ResponseFormat.componentType = namedtype.NamedTypes(178    namedtype.NamedType('encoding', Encoding()),179    namedtype.NamedType('length', univ.Integer().subtype(180        subtypeSpec=constraint.ValueRangeConstraint(0, MAX))),181    namedtype.DefaultedNamedType('checkDigit',182        univ.Boolean().subtype(value=0))183)184 185class PSKCAlgorithmParameters(univ.Choice):186    pass187 188PSKCAlgorithmParameters.componentType = namedtype.NamedTypes(189    namedtype.NamedType('suite', char.UTF8String()),190    namedtype.NamedType('challengeFormat', ChallengeFormat().subtype(191        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),192    namedtype.NamedType('responseFormat', ResponseFormat().subtype(193        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1)))194)195 196class at_pskc_algorithmParameters(PSKCAlgorithmParameters):197    pass198 199 200id_pskc_counter = _OID(id_pskc, 16)201 202class at_pskc_counter(univ.Integer):203    pass204 205at_pskc_counter.subtypeSpec = constraint.ValueRangeConstraint(0, MAX)206 207 208id_pskc_time = _OID(id_pskc, 17)209 210class at_pskc_time(rfc6019.BinaryTime):211    pass212 213 214id_pskc_timeInterval = _OID(id_pskc, 18)215 216class at_pskc_timeInterval(univ.Integer):217    pass218 219at_pskc_timeInterval.subtypeSpec = constraint.ValueRangeConstraint(0, MAX)220 221 222id_pskc_timeDrift = _OID(id_pskc, 19)223 224class at_pskc_timeDrift(univ.Integer):225    pass226 227at_pskc_timeDrift.subtypeSpec = constraint.ValueRangeConstraint(0, MAX)228 229 230id_pskc_valueMAC = _OID(id_pskc, 20)231 232class ValueMac(univ.Sequence):233    pass234 235ValueMac.componentType = namedtype.NamedTypes(236    namedtype.NamedType('macAlgorithm', char.UTF8String()),237    namedtype.NamedType('mac', char.UTF8String())238)239 240class at_pskc_valueMAC(ValueMac):241    pass242 243 244id_pskc_keyUserId = _OID(id_pskc, 27)245 246class at_pskc_keyId(char.UTF8String):247    pass248 249 250id_pskc_keyStartDate = _OID(id_pskc, 21)251 252class at_pskc_keyStartDate(useful.GeneralizedTime):253    pass254 255 256id_pskc_keyExpiryDate = _OID(id_pskc, 22)257 258class at_pskc_keyExpiryDate(useful.GeneralizedTime):259    pass260 261 262id_pskc_numberOfTransactions = _OID(id_pskc, 23)263 264class at_pskc_numberOfTransactions(univ.Integer):265    pass266    267at_pskc_numberOfTransactions.subtypeSpec = constraint.ValueRangeConstraint(0, MAX)268 269 270id_pskc_keyUsages = _OID(id_pskc, 24)271 272class PSKCKeyUsage(char.UTF8String):273    pass274 275PSKCKeyUsage.namedValues = namedval.NamedValues(276    ('otp',       "OTP"),277    ('cr',        "CR"),278    ('encrypt',   "Encrypt"),279    ('integrity', "Integrity"),280    ('verify',    "Verify"),281    ('unlock',    "Unlock"),282    ('decrypt',   "Decrypt"),283    ('keywrap',   "KeyWrap"),284    ('unwrap',    "Unwrap"),285    ('derive',    "Derive"),286    ('generate',  "Generate")287)288 289PSKCKeyUsage.subtypeSpec = constraint.SingleValueConstraint(290    "OTP", "CR", "Encrypt", "Integrity", "Verify", "Unlock",291    "Decrypt", "KeyWrap", "Unwrap", "Derive", "Generate" )292 293class PSKCKeyUsages(univ.SequenceOf):294    pass295 296PSKCKeyUsages.componentType = PSKCKeyUsage()297 298class at_pskc_keyUsage(PSKCKeyUsages):299    pass300 301 302id_pskc_pinPolicy = _OID(id_pskc, 25)303 304class PINUsageMode(char.UTF8String):305    pass306 307PINUsageMode.namedValues = namedval.NamedValues(308    ("local",       "Local"),309    ("prepend",     "Prepend"),310    ("append",      "Append"),311    ("algorithmic", "Algorithmic")312)313 314PINUsageMode.subtypeSpec = constraint.SingleValueConstraint(315    "Local", "Prepend", "Append", "Algorithmic" )316 317class PINPolicy(univ.Sequence):318    pass319 320PINPolicy.componentType = namedtype.NamedTypes(321    namedtype.OptionalNamedType('pinKeyId', char.UTF8String().subtype(322        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),323    namedtype.NamedType('pinUsageMode', PINUsageMode().subtype(324        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1))),325    namedtype.OptionalNamedType('maxFailedAttempts', univ.Integer().subtype(326        subtypeSpec=constraint.ValueRangeConstraint(0, MAX)).subtype(327        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 2))),328    namedtype.OptionalNamedType('minLength', univ.Integer().subtype(329        subtypeSpec=constraint.ValueRangeConstraint(0, MAX)).subtype(330        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3))),331    namedtype.OptionalNamedType('maxLength', univ.Integer().subtype(332        subtypeSpec=constraint.ValueRangeConstraint(0, MAX)).subtype(333        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 4))),334    namedtype.OptionalNamedType('pinEncoding', Encoding().subtype(335        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 5)))336)337 338class at_pskc_pinPolicy(PINPolicy):339    pass340 341 342# Map of Symmetric Key Package Attribute OIDs to Attributes343 344sKeyPkgAttributesMap = {345     id_pskc_manufacturer: at_pskc_manufacturer(),346     id_pskc_serialNo: at_pskc_serialNo(),347     id_pskc_model: at_pskc_model(),348     id_pskc_issueNo: at_pskc_issueNo(),349     id_pskc_deviceBinding: at_pskc_deviceBinding(),350     id_pskc_deviceStartDate: at_pskc_deviceStartDate(),351     id_pskc_deviceExpiryDate: at_pskc_deviceExpiryDate(),352     id_pskc_moduleId: at_pskc_moduleId(),353     id_pskc_deviceUserId: at_pskc_deviceUserId(),354}355 356 357# Map of Symmetric Key Attribute OIDs to Attributes358 359sKeyAttributesMap = {360     id_pskc_keyId: at_pskc_keyId(),361     id_pskc_algorithm: at_pskc_algorithm(),362     id_pskc_issuer: at_pskc_issuer(),363     id_pskc_keyProfileId: at_pskc_keyProfileId(),364     id_pskc_keyReference: at_pskc_keyReference(),365     id_pskc_friendlyName: at_pskc_friendlyName(),366     id_pskc_algorithmParameters: at_pskc_algorithmParameters(),367     id_pskc_counter: at_pskc_counter(),368     id_pskc_time: at_pskc_time(),369     id_pskc_timeInterval: at_pskc_timeInterval(),370     id_pskc_timeDrift: at_pskc_timeDrift(),371     id_pskc_valueMAC: at_pskc_valueMAC(),372     id_pskc_keyUserId: at_pskc_keyUserId(),373     id_pskc_keyStartDate: at_pskc_keyStartDate(),374     id_pskc_keyExpiryDate: at_pskc_keyExpiryDate(),375     id_pskc_numberOfTransactions: at_pskc_numberOfTransactions(),376     id_pskc_keyUsages: at_pskc_keyUsage(),377     id_pskc_pinPolicy: at_pskc_pinPolicy(),378}379 380 381# This definition replaces Attribute() from rfc5652.py; it is the same except382# that opentype is added with sKeyPkgAttributesMap and sKeyAttributesMap383 384class AttributeType(univ.ObjectIdentifier):385    pass386 387 388class AttributeValue(univ.Any):389    pass390 391 392class SKeyAttribute(univ.Sequence):393    pass394 395SKeyAttribute.componentType = namedtype.NamedTypes(396    namedtype.NamedType('attrType', AttributeType()),397    namedtype.NamedType('attrValues',398        univ.SetOf(componentType=AttributeValue()),399        openType=opentype.OpenType('attrType', sKeyAttributesMap)400    )401)402 403 404class SKeyPkgAttribute(univ.Sequence):405    pass406 407SKeyPkgAttribute.componentType = namedtype.NamedTypes(408    namedtype.NamedType('attrType', AttributeType()),409    namedtype.NamedType('attrValues',410        univ.SetOf(componentType=AttributeValue()),411        openType=opentype.OpenType('attrType', sKeyPkgAttributesMap)412    )413)414 415 416# Symmetric Key Package Content Type417 418id_ct_KP_sKeyPackage = univ.ObjectIdentifier('1.2.840.113549.1.9.16.1.25')419 420 421class KeyPkgVersion(univ.Integer):422    pass423 424KeyPkgVersion.namedValues = namedval.NamedValues(425    ('v1', 1)426)427 428 429class OneSymmetricKey(univ.Sequence):430    pass431 432OneSymmetricKey.componentType = namedtype.NamedTypes(433    namedtype.OptionalNamedType('sKeyAttrs',434        univ.SequenceOf(componentType=SKeyAttribute()).subtype(435            subtypeSpec=constraint.ValueSizeConstraint(1, MAX))),436    namedtype.OptionalNamedType('sKey', univ.OctetString())437)438 439OneSymmetricKey.sizeSpec = univ.Sequence.sizeSpec + constraint.ValueSizeConstraint(1, 2)440 441 442class SymmetricKeys(univ.SequenceOf):443    pass444 445SymmetricKeys.componentType = OneSymmetricKey()446SymmetricKeys.subtypeSpec=constraint.ValueSizeConstraint(1, MAX)447 448 449class SymmetricKeyPackage(univ.Sequence):450    pass451 452SymmetricKeyPackage.componentType = namedtype.NamedTypes(453    namedtype.DefaultedNamedType('version', KeyPkgVersion().subtype(value='v1')),454    namedtype.OptionalNamedType('sKeyPkgAttrs',455        univ.SequenceOf(componentType=SKeyPkgAttribute()).subtype(456            subtypeSpec=constraint.ValueSizeConstraint(1, MAX),457            implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),458    namedtype.NamedType('sKeys', SymmetricKeys())459)460 461 462# Map of Content Type OIDs to Content Types are463# added to the ones that are in rfc5652.py464 465_cmsContentTypesMapUpdate = {466    id_ct_KP_sKeyPackage: SymmetricKeyPackage(),467}468 469rfc5652.cmsContentTypesMap.update(_cmsContentTypesMapUpdate)470 
codekingpro/portable-devtools · Team Ai