Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
rfc4357.py478 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# Additional Cryptographic Algorithms for Use with GOST 28147-89,10# GOST R 34.10-94, GOST R 34.10-2001, and GOST R 34.11-94 Algorithms11#12# ASN.1 source from:13# https://www.rfc-editor.org/rfc/rfc4357.txt14# https://www.rfc-editor.org/errata/eid592715# https://www.rfc-editor.org/errata/eid592816#17 18from pyasn1.type import constraint19from pyasn1.type import namedtype20from pyasn1.type import namedval21from pyasn1.type import tag22from pyasn1.type import univ23 24from pyasn1_modules import rfc528025 26 27# Import from RFC 528028 29AlgorithmIdentifier = rfc5280.AlgorithmIdentifier30 31 32# Object Identifiers33 34id_CryptoPro = univ.ObjectIdentifier((1, 2, 643, 2, 2,))35 36 37id_CryptoPro_modules = id_CryptoPro + (1, 1,)38 39id_CryptoPro_extensions = id_CryptoPro + (34,)40 41id_CryptoPro_policyIds = id_CryptoPro + (38,)42 43id_CryptoPro_policyQt = id_CryptoPro + (39,)44 45 46cryptographic_Gost_Useful_Definitions = id_CryptoPro_modules + (0, 1,)47 48gostR3411_94_DigestSyntax = id_CryptoPro_modules + (1, 1,)49 50gostR3410_94_PKISyntax = id_CryptoPro_modules + (2, 1,)51 52gostR3410_94_SignatureSyntax = id_CryptoPro_modules + (3, 1,)53 54gost28147_89_EncryptionSyntax = id_CryptoPro_modules + (4, 1,)55 56gostR3410_EncryptionSyntax = id_CryptoPro_modules + (5, 2,)57 58gost28147_89_ParamSetSyntax = id_CryptoPro_modules + (6, 1,)59 60gostR3411_94_ParamSetSyntax = id_CryptoPro_modules + (7, 1,)61 62gostR3410_94_ParamSetSyntax = id_CryptoPro_modules + (8, 1, 1)63 64gostR3410_2001_PKISyntax = id_CryptoPro_modules + (9, 1,)65 66gostR3410_2001_SignatureSyntax = id_CryptoPro_modules + (10, 1,)67 68gostR3410_2001_ParamSetSyntax = id_CryptoPro_modules + (12, 1,)69 70gost_CryptoPro_ExtendedKeyUsage = id_CryptoPro_modules + (13, 1,)71 72gost_CryptoPro_PrivateKey = id_CryptoPro_modules + (14, 1,)73 74gost_CryptoPro_PKIXCMP = id_CryptoPro_modules + (15, 1,)75 76gost_CryptoPro_TLS = id_CryptoPro_modules + (16, 1,)77 78gost_CryptoPro_Policy = id_CryptoPro_modules + (17, 1,)79 80gost_CryptoPro_Constants = id_CryptoPro_modules + (18, 1,)81 82 83id_CryptoPro_algorithms = id_CryptoPro84 85id_GostR3411_94_with_GostR3410_2001 = id_CryptoPro_algorithms + (3,)86 87id_GostR3411_94_with_GostR3410_94 = id_CryptoPro_algorithms + (4,)88 89id_GostR3411_94 = id_CryptoPro_algorithms + (9,)90 91id_Gost28147_89_None_KeyMeshing = id_CryptoPro_algorithms + (14, 0,)92 93id_Gost28147_89_CryptoPro_KeyMeshing = id_CryptoPro_algorithms + (14, 1,)94 95id_GostR3410_2001 = id_CryptoPro_algorithms + (19,)96 97id_GostR3410_94 = id_CryptoPro_algorithms + (20,)98 99id_Gost28147_89 = id_CryptoPro_algorithms + (21,)100 101id_Gost28147_89_MAC = id_CryptoPro_algorithms + (22,)102 103id_CryptoPro_hashes = id_CryptoPro_algorithms + (30,)104 105id_CryptoPro_encrypts = id_CryptoPro_algorithms + (31,)106 107id_CryptoPro_signs = id_CryptoPro_algorithms + (32,)108 109id_CryptoPro_exchanges = id_CryptoPro_algorithms + (33,)110 111id_CryptoPro_ecc_signs = id_CryptoPro_algorithms + (35,)112 113id_CryptoPro_ecc_exchanges = id_CryptoPro_algorithms + (36,)114 115id_CryptoPro_private_keys = id_CryptoPro_algorithms + (37,)116 117id_CryptoPro_pkixcmp_infos = id_CryptoPro_algorithms + (41,)118 119id_CryptoPro_audit_service_types = id_CryptoPro_algorithms + (42,)120 121id_CryptoPro_audit_record_types = id_CryptoPro_algorithms + (43,)122 123id_CryptoPro_attributes = id_CryptoPro_algorithms + (44,)124 125id_CryptoPro_name_service_types = id_CryptoPro_algorithms + (45,)126 127id_GostR3410_2001DH = id_CryptoPro_algorithms + (98,)128 129id_GostR3410_94DH = id_CryptoPro_algorithms + (99,)130 131 132id_Gost28147_89_TestParamSet = id_CryptoPro_encrypts + (0,)133 134id_Gost28147_89_CryptoPro_A_ParamSet = id_CryptoPro_encrypts + (1,)135 136id_Gost28147_89_CryptoPro_B_ParamSet = id_CryptoPro_encrypts + (2,)137 138id_Gost28147_89_CryptoPro_C_ParamSet = id_CryptoPro_encrypts + (3,)139 140id_Gost28147_89_CryptoPro_D_ParamSet = id_CryptoPro_encrypts + (4,)141 142id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet = id_CryptoPro_encrypts + (5,)143 144id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet = id_CryptoPro_encrypts + (6,)145 146id_Gost28147_89_CryptoPro_RIC_1_ParamSet = id_CryptoPro_encrypts + (7,)147 148 149id_GostR3410_2001_TestParamSet = id_CryptoPro_ecc_signs + (0,)150 151id_GostR3410_2001_CryptoPro_A_ParamSet = id_CryptoPro_ecc_signs + (1,)152 153id_GostR3410_2001_CryptoPro_B_ParamSet = id_CryptoPro_ecc_signs + (2,)154 155id_GostR3410_2001_CryptoPro_C_ParamSet = id_CryptoPro_ecc_signs + (3,)156 157 158id_GostR3410_2001_CryptoPro_XchA_ParamSet = id_CryptoPro_ecc_exchanges + (0,)159 160id_GostR3410_2001_CryptoPro_XchB_ParamSet = id_CryptoPro_ecc_exchanges + (1,)161 162 163id_GostR3410_94_TestParamSet = id_CryptoPro_signs + (0,)164 165id_GostR3410_94_CryptoPro_A_ParamSet = id_CryptoPro_signs + (2,)166 167id_GostR3410_94_CryptoPro_B_ParamSet = id_CryptoPro_signs + (3,)168 169id_GostR3410_94_CryptoPro_C_ParamSet = id_CryptoPro_signs + (4,)170 171id_GostR3410_94_CryptoPro_D_ParamSet = id_CryptoPro_signs + (5,)172 173 174id_GostR3410_94_CryptoPro_XchA_ParamSet = id_CryptoPro_exchanges + (1,)175 176id_GostR3410_94_CryptoPro_XchB_ParamSet = id_CryptoPro_exchanges + (2,)177 178id_GostR3410_94_CryptoPro_XchC_ParamSet = id_CryptoPro_exchanges + (3,)179 180 181id_GostR3410_94_a = id_GostR3410_94 + (1,)182 183id_GostR3410_94_aBis = id_GostR3410_94 + (2,)184 185id_GostR3410_94_b = id_GostR3410_94 + (3,)186 187id_GostR3410_94_bBis = id_GostR3410_94 + (4,)188 189 190id_GostR3411_94_TestParamSet = id_CryptoPro_hashes + (0,)191 192id_GostR3411_94_CryptoProParamSet = id_CryptoPro_hashes + (1,)193 194 195 196 197class Gost28147_89_ParamSet(univ.ObjectIdentifier):198    pass199 200Gost28147_89_ParamSet.subtypeSpec = constraint.SingleValueConstraint(201    id_Gost28147_89_TestParamSet,202    id_Gost28147_89_CryptoPro_A_ParamSet,203    id_Gost28147_89_CryptoPro_B_ParamSet,204    id_Gost28147_89_CryptoPro_C_ParamSet,205    id_Gost28147_89_CryptoPro_D_ParamSet,206    id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet,207    id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet,208    id_Gost28147_89_CryptoPro_RIC_1_ParamSet209)210 211 212class Gost28147_89_BlobParameters(univ.Sequence):213    pass214 215Gost28147_89_BlobParameters.componentType = namedtype.NamedTypes(216    namedtype.NamedType('encryptionParamSet', Gost28147_89_ParamSet())217)218 219 220class Gost28147_89_MAC(univ.OctetString):221    pass222 223Gost28147_89_MAC.subtypeSpec = constraint.ValueSizeConstraint(1, 4)224 225 226class Gost28147_89_Key(univ.OctetString):227    pass228 229Gost28147_89_Key.subtypeSpec = constraint.ValueSizeConstraint(32, 32)230 231 232class Gost28147_89_EncryptedKey(univ.Sequence):233    pass234 235Gost28147_89_EncryptedKey.componentType = namedtype.NamedTypes(236    namedtype.NamedType('encryptedKey', Gost28147_89_Key()),237    namedtype.OptionalNamedType('maskKey', Gost28147_89_Key().subtype(238        implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),239    namedtype.NamedType('macKey', Gost28147_89_MAC())240)241 242 243class Gost28147_89_IV(univ.OctetString):244    pass245 246Gost28147_89_IV.subtypeSpec = constraint.ValueSizeConstraint(8, 8)247 248 249class Gost28147_89_UZ(univ.OctetString):250    pass251 252Gost28147_89_UZ.subtypeSpec = constraint.ValueSizeConstraint(64, 64)253 254 255class Gost28147_89_ParamSetParameters(univ.Sequence):256    pass257 258Gost28147_89_ParamSetParameters.componentType = namedtype.NamedTypes(259    namedtype.NamedType('eUZ', Gost28147_89_UZ()),260    namedtype.NamedType('mode',261        univ.Integer(namedValues=namedval.NamedValues(262            ('gost28147-89-CNT', 0),263            ('gost28147-89-CFB', 1),264            ('cryptoPro-CBC', 2)265    ))),266    namedtype.NamedType('shiftBits',267        univ.Integer(namedValues=namedval.NamedValues(268            ('gost28147-89-block', 64)269    ))),270    namedtype.NamedType('keyMeshing', AlgorithmIdentifier())271)272 273 274class Gost28147_89_Parameters(univ.Sequence):275    pass276 277Gost28147_89_Parameters.componentType = namedtype.NamedTypes(278    namedtype.NamedType('iv', Gost28147_89_IV()),279    namedtype.NamedType('encryptionParamSet', Gost28147_89_ParamSet())280)281 282 283class GostR3410_2001_CertificateSignature(univ.BitString):284    pass285 286GostR3410_2001_CertificateSignature.subtypeSpec=constraint.ValueSizeConstraint(256, 512)287 288 289class GostR3410_2001_ParamSetParameters(univ.Sequence):290    pass291 292GostR3410_2001_ParamSetParameters.componentType = namedtype.NamedTypes(293    namedtype.NamedType('a', univ.Integer()),294    namedtype.NamedType('b', univ.Integer()),295    namedtype.NamedType('p', univ.Integer()),296    namedtype.NamedType('q', univ.Integer()),297    namedtype.NamedType('x', univ.Integer()),298    namedtype.NamedType('y', univ.Integer())299)300 301 302class GostR3410_2001_PublicKey(univ.OctetString):303    pass304 305GostR3410_2001_PublicKey.subtypeSpec = constraint.ValueSizeConstraint(64, 64)306 307 308class GostR3410_2001_PublicKeyParameters(univ.Sequence):309    pass310 311GostR3410_2001_PublicKeyParameters.componentType = namedtype.NamedTypes(312    namedtype.NamedType('publicKeyParamSet', univ.ObjectIdentifier().subtype(313        subtypeSpec=constraint.SingleValueConstraint(314            id_GostR3410_2001_TestParamSet,315            id_GostR3410_2001_CryptoPro_A_ParamSet,316            id_GostR3410_2001_CryptoPro_B_ParamSet,317            id_GostR3410_2001_CryptoPro_C_ParamSet,318            id_GostR3410_2001_CryptoPro_XchA_ParamSet,319            id_GostR3410_2001_CryptoPro_XchB_ParamSet320    ))),321    namedtype.NamedType('digestParamSet', univ.ObjectIdentifier().subtype(322        subtypeSpec=constraint.SingleValueConstraint(323            id_GostR3411_94_TestParamSet,324            id_GostR3411_94_CryptoProParamSet325    ))),326    namedtype.DefaultedNamedType('encryptionParamSet',327        Gost28147_89_ParamSet().subtype(value=id_Gost28147_89_CryptoPro_A_ParamSet328    ))329)330 331 332class GostR3410_94_CertificateSignature(univ.BitString):333    pass334 335GostR3410_94_CertificateSignature.subtypeSpec = constraint.ValueSizeConstraint(256, 512)336 337 338class GostR3410_94_ParamSetParameters_t(univ.Integer):339    pass340 341GostR3410_94_ParamSetParameters_t.subtypeSpec = constraint.SingleValueConstraint(512, 1024)342 343 344class GostR3410_94_ParamSetParameters(univ.Sequence):345    pass346 347GostR3410_94_ParamSetParameters.componentType = namedtype.NamedTypes(348    namedtype.NamedType('t', GostR3410_94_ParamSetParameters_t()),349    namedtype.NamedType('p', univ.Integer()),350    namedtype.NamedType('q', univ.Integer()),351    namedtype.NamedType('a', univ.Integer()),352    namedtype.OptionalNamedType('validationAlgorithm', AlgorithmIdentifier())353)354 355 356class GostR3410_94_PublicKey(univ.OctetString):357    pass358 359GostR3410_94_PublicKey.subtypeSpec = constraint.ConstraintsUnion(360    constraint.ValueSizeConstraint(64, 64),361    constraint.ValueSizeConstraint(128, 128)362)363 364 365class GostR3410_94_PublicKeyParameters(univ.Sequence):366    pass367 368GostR3410_94_PublicKeyParameters.componentType = namedtype.NamedTypes(369    namedtype.NamedType('publicKeyParamSet', univ.ObjectIdentifier().subtype(370        subtypeSpec=constraint.SingleValueConstraint(371            id_GostR3410_94_TestParamSet,372            id_GostR3410_94_CryptoPro_A_ParamSet,373            id_GostR3410_94_CryptoPro_B_ParamSet,374            id_GostR3410_94_CryptoPro_C_ParamSet,375            id_GostR3410_94_CryptoPro_D_ParamSet,376            id_GostR3410_94_CryptoPro_XchA_ParamSet,377            id_GostR3410_94_CryptoPro_XchB_ParamSet,378            id_GostR3410_94_CryptoPro_XchC_ParamSet379    ))),380    namedtype.NamedType('digestParamSet', univ.ObjectIdentifier().subtype(381        subtypeSpec=constraint.SingleValueConstraint(382            id_GostR3411_94_TestParamSet,383            id_GostR3411_94_CryptoProParamSet384    ))),385    namedtype.DefaultedNamedType('encryptionParamSet',386        Gost28147_89_ParamSet().subtype(value=id_Gost28147_89_CryptoPro_A_ParamSet387    ))388)389 390 391class GostR3410_94_ValidationBisParameters_c(univ.Integer):392    pass393 394GostR3410_94_ValidationBisParameters_c.subtypeSpec = constraint.ValueRangeConstraint(0, 4294967295)395 396 397class GostR3410_94_ValidationBisParameters(univ.Sequence):398    pass399 400GostR3410_94_ValidationBisParameters.componentType = namedtype.NamedTypes(401    namedtype.NamedType('x0', GostR3410_94_ValidationBisParameters_c()),402    namedtype.NamedType('c', GostR3410_94_ValidationBisParameters_c()),403    namedtype.OptionalNamedType('d', univ.Integer())404)405 406 407class GostR3410_94_ValidationParameters_c(univ.Integer):408    pass409 410GostR3410_94_ValidationParameters_c.subtypeSpec = constraint.ValueRangeConstraint(0, 65535)411 412 413class GostR3410_94_ValidationParameters(univ.Sequence):414    pass415 416GostR3410_94_ValidationParameters.componentType = namedtype.NamedTypes(417    namedtype.NamedType('x0', GostR3410_94_ValidationParameters_c()),418    namedtype.NamedType('c', GostR3410_94_ValidationParameters_c()),419    namedtype.OptionalNamedType('d', univ.Integer())420)421 422 423class GostR3411_94_Digest(univ.OctetString):424    pass425 426GostR3411_94_Digest.subtypeSpec = constraint.ValueSizeConstraint(32, 32)427 428 429class GostR3411_94_DigestParameters(univ.ObjectIdentifier):430    pass431 432GostR3411_94_DigestParameters.subtypeSpec = constraint.ConstraintsUnion(433     constraint.SingleValueConstraint(id_GostR3411_94_TestParamSet),434     constraint.SingleValueConstraint(id_GostR3411_94_CryptoProParamSet),435)436 437 438class GostR3411_94_ParamSetParameters(univ.Sequence):439    pass440 441GostR3411_94_ParamSetParameters.componentType = namedtype.NamedTypes(442    namedtype.NamedType('hUZ', Gost28147_89_UZ()),443    namedtype.NamedType('h0', GostR3411_94_Digest())444)445 446 447# Update the Algorithm Identifier map in rfc5280.py448 449_algorithmIdentifierMapUpdate = {450    id_Gost28147_89: Gost28147_89_Parameters(),451    id_Gost28147_89_TestParamSet: Gost28147_89_ParamSetParameters(),452    id_Gost28147_89_CryptoPro_A_ParamSet: Gost28147_89_ParamSetParameters(),453    id_Gost28147_89_CryptoPro_B_ParamSet: Gost28147_89_ParamSetParameters(),454    id_Gost28147_89_CryptoPro_C_ParamSet: Gost28147_89_ParamSetParameters(),455    id_Gost28147_89_CryptoPro_D_ParamSet: Gost28147_89_ParamSetParameters(),456    id_Gost28147_89_CryptoPro_KeyMeshing: univ.Null(""),457    id_Gost28147_89_None_KeyMeshing: univ.Null(""),458    id_GostR3410_94: GostR3410_94_PublicKeyParameters(),459    id_GostR3410_94_TestParamSet: GostR3410_94_ParamSetParameters(),460    id_GostR3410_94_CryptoPro_A_ParamSet: GostR3410_94_ParamSetParameters(),461    id_GostR3410_94_CryptoPro_B_ParamSet: GostR3410_94_ParamSetParameters(),462    id_GostR3410_94_CryptoPro_C_ParamSet: GostR3410_94_ParamSetParameters(),463    id_GostR3410_94_CryptoPro_D_ParamSet: GostR3410_94_ParamSetParameters(),464    id_GostR3410_94_CryptoPro_XchA_ParamSet: GostR3410_94_ParamSetParameters(),465    id_GostR3410_94_CryptoPro_XchB_ParamSet: GostR3410_94_ParamSetParameters(),466    id_GostR3410_94_CryptoPro_XchC_ParamSet: GostR3410_94_ParamSetParameters(),467    id_GostR3410_94_a: GostR3410_94_ValidationParameters(),468    id_GostR3410_94_aBis: GostR3410_94_ValidationBisParameters(),469    id_GostR3410_94_b: GostR3410_94_ValidationParameters(),470    id_GostR3410_94_bBis: GostR3410_94_ValidationBisParameters(),471    id_GostR3410_2001: univ.Null(""),472    id_GostR3411_94: univ.Null(""),473    id_GostR3411_94_TestParamSet: GostR3411_94_ParamSetParameters(),474    id_GostR3411_94_CryptoProParamSet: GostR3411_94_ParamSetParameters(),475}476 477rfc5280.algorithmIdentifierMap.update(_algorithmIdentifierMapUpdate)478 
codekingpro/portable-devtools · Team Ai