diff options
author | Graeme Lunt <graeme.lunt@smhs.co.uk> | 2011-07-14 13:47:13 +0000 |
---|---|---|
committer | Graeme Lunt <graeme.lunt@smhs.co.uk> | 2011-07-14 13:47:13 +0000 |
commit | 9e4afbfd497f48dd18fd1b7c0ccf4e548a576f2e (patch) | |
tree | 89d9ffdd065858541d5080d118ebc6f09ea1ea39 | |
parent | a7fac381ca74a9f21308f4a8db8cefade6470101 (diff) |
Update the algorithms in line with RFC 5912 including support for eliptic curve algorithms.
svn path=/trunk/; revision=38017
-rw-r--r-- | asn1/pkcs1/Makefile.common | 2 | ||||
-rw-r--r-- | asn1/pkcs1/PKCS1.asn | 57 | ||||
-rw-r--r-- | asn1/pkcs1/PKIXAlgs-2009.asn | 566 | ||||
-rw-r--r-- | asn1/pkcs1/packet-pkcs1-template.c | 20 | ||||
-rw-r--r-- | asn1/pkcs1/pkcs1.cnf | 15 | ||||
-rw-r--r-- | epan/dissectors/packet-pkcs1.c | 253 | ||||
-rw-r--r-- | epan/dissectors/packet-pkcs1.h | 2 |
7 files changed, 850 insertions, 65 deletions
diff --git a/asn1/pkcs1/Makefile.common b/asn1/pkcs1/Makefile.common index 17ffaa6dd3..146352a8c2 100644 --- a/asn1/pkcs1/Makefile.common +++ b/asn1/pkcs1/Makefile.common @@ -28,7 +28,7 @@ DISSECTOR_FILES=packet-$(PROTOCOL_NAME).c \ EXT_ASN_FILE_LIST = -ASN_FILE_LIST = PKCS1.asn +ASN_FILE_LIST = PKIXAlgs-2009.asn # The packet-$(PROTOCOL_NAME)-template.h and $(PROTOCOL_NAME).asn # files do not exist for all protocols: Please add/remove as required. diff --git a/asn1/pkcs1/PKCS1.asn b/asn1/pkcs1/PKCS1.asn deleted file mode 100644 index c586de96c5..0000000000 --- a/asn1/pkcs1/PKCS1.asn +++ /dev/null @@ -1,57 +0,0 @@ --- Module PKCS-1 --- Transcribed from RFC2313 - -PKCS-1 {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 1 } DEFINITIONS ::= -BEGIN - -IMPORTS - AlgorithmIdentifier - FROM AuthenticationFramework {joint-iso-itu-t ds(5) module(1) - authenticationFramework(7) 4}; - --- EXPORTS All --- The types and values defined in this module have been transcribed from RFC2313 - -RSAPublicKey ::= SEQUENCE { - modulus INTEGER, -- n - publicExponent INTEGER -- e -} - -RSAPrivateKey ::= SEQUENCE { - version Version, - modulus INTEGER, -- n - publicExponent INTEGER, -- e - privateExponent INTEGER, -- d - prime1 INTEGER, -- p - prime2 INTEGER, -- q - exponent1 INTEGER, -- d mod (p-1) - exponent2 INTEGER, -- d mod (q-1) - coefficient INTEGER -- (inverse of q) mod p -} - -Version ::= INTEGER - -DigestInfo ::= SEQUENCE { - digestAlgorithm DigestAlgorithmIdentifier, - digest Digest -} - -DigestAlgorithmIdentifier ::= AlgorithmIdentifier - -Digest ::= OCTET STRING - - --- These algorithms have NULL parameters --- md2 OBJECT IDENTIFIER ::= { iso(1) member-body(2) US(840) rsadsi(113549) digestAlgorithm(2) 2 } --- md4 OBJECT IDENTIFIER ::= { iso(1) member-body(2) US(840) rsadsi(113549) digestAlgorithm(2) 4 } --- md5 OBJECT IDENTIFIER ::= { iso(1) member-body(2) US(840) rsadsi(113549) digestAlgorithm(2) 5 } - - --- pkcs-1 OBJECT IDENTIFIER ::= { iso(1) member-body(2) US(840) rsadsi(113549) pkcs(1) 1 } --- rsaEncryption OBJECT IDENTIFIER ::= { pkcs-1 1 } --- md2WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 2 } --- md4WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 3 } --- md5WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 4 } - -END - diff --git a/asn1/pkcs1/PKIXAlgs-2009.asn b/asn1/pkcs1/PKIXAlgs-2009.asn new file mode 100644 index 0000000000..baaaadc14e --- /dev/null +++ b/asn1/pkcs1/PKIXAlgs-2009.asn @@ -0,0 +1,566 @@ +-- +-- $Id$ +-- Transcribed from RFC 5912 +-- + +PKIXAlgs-2009 { iso(1) identified-organization(3) dod(6) + internet(1) security(5) mechanisms(5) pkix(7) id-mod(0) + id-mod-pkix1-algorithms2008-02(56) } + + DEFINITIONS EXPLICIT TAGS ::= + BEGIN + IMPORTS + + PUBLIC-KEY, SIGNATURE-ALGORITHM, DIGEST-ALGORITHM, SMIME-CAPS + FROM AlgorithmInformation-2009 + {iso(1) identified-organization(3) dod(6) internet(1) security(5) + mechanisms(5) pkix(7) id-mod(0) + id-mod-algorithmInformation-02(58)} + + mda-sha224, mda-sha256, mda-sha384, mda-sha512 + FROM PKIX1-PSS-OAEP-Algorithms-2009 + {iso(1) identified-organization(3) dod(6) internet(1) + security(5) mechanisms(5) pkix(7) id-mod(0) + id-mod-pkix1-rsa-pkalgs-02(54)} + +-- Additional IMPORT for Wireshark + AlgorithmIdentifier + FROM AuthenticationFramework {joint-iso-itu-t ds(5) module(1) + authenticationFramework(7) 4}; + + + -- + -- Public Key (pk-) Algorithms + -- + + PublicKeys PUBLIC-KEY ::= { + pk-rsa | + pk-dsa | + pk-dh | + pk-kea, + ..., + pk-ec | + pk-ecDH | + pk-ecMQV + } + + -- + -- Signature Algorithms (sa-) + -- + + SignatureAlgs SIGNATURE-ALGORITHM ::= { + sa-rsaWithMD2 | + sa-rsaWithMD5 | + sa-rsaWithSHA1 | + sa-dsaWithSHA1 | + sa-ecdsaWithSHA1, + ..., -- Extensible + sa-dsaWithSHA224 | + sa-dsaWithSHA256 | + sa-ecdsaWithSHA224 | + sa-ecdsaWithSHA256 | + sa-ecdsaWithSHA384 | + sa-ecdsaWithSHA512 + } + + -- + -- S/MIME CAPS for algorithms in this document + -- + -- For all of the algorithms laid out in this document, the + -- parameters field for the S/MIME capabilities is defined as + -- ABSENT as there are no specific values that need to be known + -- by the receiver for negotiation. + + -- + + SMimeCaps SMIME-CAPS ::= { + sa-rsaWithMD2.&smimeCaps | + sa-rsaWithMD5.&smimeCaps | + sa-rsaWithSHA1.&smimeCaps | + sa-dsaWithSHA1.&smimeCaps | + sa-dsaWithSHA224.&smimeCaps | + sa-dsaWithSHA256.&smimeCaps | + sa-ecdsaWithSHA1.&smimeCaps | + sa-ecdsaWithSHA224.&smimeCaps | + sa-ecdsaWithSHA256.&smimeCaps | + sa-ecdsaWithSHA384.&smimeCaps | + sa-ecdsaWithSHA512.&smimeCaps, + ... } + + -- RSA PK Algorithm, Parameters, and Keys + +-- pk-rsa PUBLIC-KEY ::= { +-- IDENTIFIER rsaEncryption +-- KEY RSAPublicKey +-- PARAMS TYPE NULL ARE absent + -- Private key format not in this module -- +-- CERT-KEY-USAGE {digitalSignature, nonRepudiation, +-- keyEncipherment, dataEncipherment, keyCertSign, cRLSign} +-- } + + rsaEncryption OBJECT IDENTIFIER ::= { + iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) + pkcs-1(1) 1 } + + RSAPublicKey ::= SEQUENCE { + modulus INTEGER, -- n + publicExponent INTEGER -- e + } + +-- Wireshark additions to ensure compatibility with the original PKCS1.asn + +RSAPrivateKey ::= SEQUENCE { + version Version, + modulus INTEGER, -- n + publicExponent INTEGER, -- e + privateExponent INTEGER, -- d + prime1 INTEGER, -- p + prime2 INTEGER, -- q + exponent1 INTEGER, -- d mod (p-1) + exponent2 INTEGER, -- d mod (q-1) + coefficient INTEGER -- (inverse of q) mod p +} + +Version ::= INTEGER + +DigestInfo ::= SEQUENCE { + digestAlgorithm DigestAlgorithmIdentifier, + digest Digest +} + +DigestAlgorithmIdentifier ::= AlgorithmIdentifier + +Digest ::= OCTET STRING + +-- End of Wireshark additions + + -- DSA PK Algorithm, Parameters, and Keys + +-- pk-dsa PUBLIC-KEY ::= { +-- IDENTIFIER id-dsa +-- KEY DSAPublicKey +-- PARAMS TYPE DSA-Params ARE inheritable + -- Private key format not in this module -- +-- CERT-KEY-USAGE { digitalSignature, nonRepudiation, keyCertSign, +-- cRLSign } +-- } + + id-dsa OBJECT IDENTIFIER ::= { + iso(1) member-body(2) us(840) x9-57(10040) x9algorithm(4) 1 } + + DSA-Params ::= SEQUENCE { + p INTEGER, + q INTEGER, + g INTEGER + } + + DSAPublicKey ::= INTEGER -- public key, y + + -- Diffie-Hellman PK Algorithm, Parameters, and Keys + +-- pk-dh PUBLIC-KEY ::= { +-- IDENTIFIER dhpublicnumber +-- KEY DHPublicKey +-- PARAMS TYPE DomainParameters ARE inheritable + -- Private key format not in this module -- +-- CERT-KEY-USAGE {keyAgreement, encipherOnly, decipherOnly } +-- } + + dhpublicnumber OBJECT IDENTIFIER ::= { + iso(1) member-body(2) us(840) ansi-x942(10046) + number-type(2) 1 } + + DomainParameters ::= SEQUENCE { + p INTEGER, -- odd prime, p=jq +1 + g INTEGER, -- generator, g + q INTEGER, -- factor of p-1 + j INTEGER OPTIONAL, -- subgroup factor, j>= 2 + validationParams ValidationParams OPTIONAL + } + + ValidationParams ::= SEQUENCE { + seed BIT STRING, + pgenCounter INTEGER + } + + DHPublicKey ::= INTEGER -- public key, y = g^x mod p + + -- KEA PK Algorithm and Parameters + +-- pk-kea PUBLIC-KEY ::= { +-- IDENTIFIER id-keyExchangeAlgorithm + -- key is not encoded -- +-- PARAMS TYPE KEA-Params-Id ARE required + -- Private key format not in this module -- +-- CERT-KEY-USAGE {keyAgreement, encipherOnly, decipherOnly } +-- } + + id-keyExchangeAlgorithm OBJECT IDENTIFIER ::= { + joint-iso-itu-t(2) country(16) us(840) organization(1) + gov(101) dod(2) infosec(1) algorithms(1) 22 } + + KEA-Params-Id ::= OCTET STRING + + -- Elliptic Curve (EC) Signatures: Unrestricted Algorithms + -- (Section 2.1.1 of RFC 5480) + -- + -- EC Unrestricted Algorithm ID -- -- this is used for ECDSA + +-- pk-ec PUBLIC-KEY ::= { +-- IDENTIFIER id-ecPublicKey +-- KEY ECPoint +-- PARAMS TYPE ECParameters ARE required + -- Private key format not in this module -- +-- CERT-KEY-USAGE { digitalSignature, nonRepudiation, keyAgreement, +-- keyCertSign, cRLSign } +-- } + + ECPoint ::= OCTET STRING -- see RFC 5480 for syntax and restrictions + + id-ecPublicKey OBJECT IDENTIFIER ::= { + iso(1) member-body(2) us(840) ansi-X9-62(10045) keyType(2) 1 } + + -- Elliptic Curve (EC) Signatures: Restricted Algorithms + -- (Section 2.1.2 of RFC 5480) + -- + -- EC Diffie-Hellman Algorithm ID + +-- pk-ecDH PUBLIC-KEY ::= { +-- IDENTIFIER id-ecDH +-- KEY ECPoint +-- PARAMS TYPE ECParameters ARE required + -- Private key format not in this module -- +-- CERT-KEY-USAGE { keyAgreement, encipherOnly, decipherOnly } +-- } + + id-ecDH OBJECT IDENTIFIER ::= { + iso(1) identified-organization(3) certicom(132) schemes(1) + ecdh(12) } + + -- EC Menezes-Qu-Vanstone Algorithm ID + +-- pk-ecMQV PUBLIC-KEY ::= { +-- IDENTIFIER id-ecMQV +-- KEY ECPoint +-- PARAMS TYPE ECParameters ARE required + -- Private key format not in this module -- +-- CERT-KEY-USAGE { keyAgreement, encipherOnly, decipherOnly } +-- } + + id-ecMQV OBJECT IDENTIFIER ::= { + iso(1) identified-organization(3) certicom(132) schemes(1) + ecmqv(13) } + + -- Parameters and Keys for both Restricted and Unrestricted EC + + ECParameters ::= CHOICE { + namedCurve --CURVE.&id({NamedCurve}) -- OBJECT IDENTIFIER + -- implicitCurve NULL + -- implicitCurve MUST NOT be used in PKIX + -- specifiedCurve SpecifiedCurve + -- specifiedCurve MUST NOT be used in PKIX + -- Details for specifiedCurve can be found in [X9.62] + -- Any future additions to this CHOICE should be coordinated + -- with ANSI X.9. + } + -- If you need to be able to decode ANSI X.9 parameter structures, + -- uncomment the implicitCurve and specifiedCurve above, and also + -- uncomment the following: + -- (WITH COMPONENTS {namedCurve PRESENT}) + + -- Sec 2.1.1.1 Named Curve + + CURVE ::= CLASS { &id OBJECT IDENTIFIER UNIQUE } + WITH SYNTAX { ID &id } + + NamedCurve CURVE ::= { + { ID secp192r1 } | { ID sect163k1 } | { ID sect163r2 } | + { ID secp224r1 } | { ID sect233k1 } | { ID sect233r1 } | + { ID secp256r1 } | { ID sect283k1 } | { ID sect283r1 } | + { ID secp384r1 } | { ID sect409k1 } | { ID sect409r1 } | + { ID secp521r1 } | { ID sect571k1 } | { ID sect571r1 }, + ... -- Extensible + } + + -- Note in [X9.62] the curves are referred to as 'ansiX9' as + -- opposed to 'sec'. For example, secp192r1 is the same curve as + -- ansix9p192r1. + + -- Note that in [PKI-ALG] the secp192r1 curve was referred to as + -- prime192v1 and the secp256r1 curve was referred to as + -- prime256v1. + + -- Note that [FIPS186-3] refers to secp192r1 as P-192, + -- secp224r1 as P-224, secp256r1 as P-256, secp384r1 as P-384, + -- and secp521r1 as P-521. + + secp192r1 OBJECT IDENTIFIER ::= { + iso(1) member-body(2) us(840) ansi-X9-62(10045) curves(3) + prime(1) 1 } + + sect163k1 OBJECT IDENTIFIER ::= { + iso(1) identified-organization(3) certicom(132) curve(0) 1 } + + sect163r2 OBJECT IDENTIFIER ::= { + iso(1) identified-organization(3) certicom(132) curve(0) 15 } + + secp224r1 OBJECT IDENTIFIER ::= { + iso(1) identified-organization(3) certicom(132) curve(0) 33 } + + sect233k1 OBJECT IDENTIFIER ::= { + iso(1) identified-organization(3) certicom(132) curve(0) 26 } + + sect233r1 OBJECT IDENTIFIER ::= { + iso(1) identified-organization(3) certicom(132) curve(0) 27 } + + secp256r1 OBJECT IDENTIFIER ::= { + iso(1) member-body(2) us(840) ansi-X9-62(10045) curves(3) + prime(1) 7 } + + sect283k1 OBJECT IDENTIFIER ::= { + iso(1) identified-organization(3) certicom(132) curve(0) 16 } + + sect283r1 OBJECT IDENTIFIER ::= { + iso(1) identified-organization(3) certicom(132) curve(0) 17 } + + secp384r1 OBJECT IDENTIFIER ::= { + iso(1) identified-organization(3) certicom(132) curve(0) 34 } + + sect409k1 OBJECT IDENTIFIER ::= { + iso(1) identified-organization(3) certicom(132) curve(0) 36 } + + sect409r1 OBJECT IDENTIFIER ::= { + iso(1) identified-organization(3) certicom(132) curve(0) 37 } + + secp521r1 OBJECT IDENTIFIER ::= { + iso(1) identified-organization(3) certicom(132) curve(0) 35 } + + sect571k1 OBJECT IDENTIFIER ::= { + iso(1) identified-organization(3) certicom(132) curve(0) 38 } + + sect571r1 OBJECT IDENTIFIER ::= { + iso(1) identified-organization(3) certicom(132) curve(0) 39 } + + -- RSA with MD-2 + +-- sa-rsaWithMD2 SIGNATURE-ALGORITHM ::= { +-- IDENTIFIER md2WithRSAEncryption +-- PARAMS TYPE NULL ARE required +-- HASHES { mda-md2 } +-- PUBLIC-KEYS { pk-rsa } +-- SMIME-CAPS { IDENTIFIED BY md2WithRSAEncryption } +-- } + + md2WithRSAEncryption OBJECT IDENTIFIER ::= { + iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) + pkcs-1(1) 2 } + + -- RSA with MD-5 + +-- sa-rsaWithMD5 SIGNATURE-ALGORITHM ::= { +-- IDENTIFIER md5WithRSAEncryption +-- PARAMS TYPE NULL ARE required +-- HASHES { mda-md5 } +-- PUBLIC-KEYS { pk-rsa } +-- SMIME-CAPS { IDENTIFIED BY md5WithRSAEncryption } +-- } + + md5WithRSAEncryption OBJECT IDENTIFIER ::= { + iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) + pkcs-1(1) 4 } + + -- RSA with SHA-1 + +-- sa-rsaWithSHA1 SIGNATURE-ALGORITHM ::= { +-- IDENTIFIER sha1WithRSAEncryption +-- PARAMS TYPE NULL ARE required +-- HASHES { mda-sha1 } +-- PUBLIC-KEYS { pk-rsa } +-- SMIME-CAPS {IDENTIFIED BY sha1WithRSAEncryption } +-- } + + sha1WithRSAEncryption OBJECT IDENTIFIER ::= { + iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) + pkcs-1(1) 5 } + + -- DSA with SHA-1 + +-- sa-dsaWithSHA1 SIGNATURE-ALGORITHM ::= { +-- IDENTIFIER dsa-with-sha1 +-- VALUE DSA-Sig-Value +-- PARAMS TYPE NULL ARE absent +-- HASHES { mda-sha1 } +-- PUBLIC-KEYS { pk-dsa } +-- SMIME-CAPS { IDENTIFIED BY dsa-with-sha1 } +-- } + + dsa-with-sha1 OBJECT IDENTIFIER ::= { + iso(1) member-body(2) us(840) x9-57(10040) x9algorithm(4) 3 } + + -- DSA with SHA-224 + +-- sa-dsaWithSHA224 SIGNATURE-ALGORITHM ::= { +-- IDENTIFIER dsa-with-sha224 +-- VALUE DSA-Sig-Value +-- PARAMS TYPE NULL ARE absent +-- HASHES { mda-sha224 } +-- PUBLIC-KEYS { pk-dsa } +-- SMIME-CAPS { IDENTIFIED BY dsa-with-sha224 } +-- } + + dsa-with-sha224 OBJECT IDENTIFIER ::= { + joint-iso-ccitt(2) country(16) us(840) organization(1) gov(101) + csor(3) algorithms(4) id-dsa-with-sha2(3) 1 } + + -- DSA with SHA-256 + +-- sa-dsaWithSHA256 SIGNATURE-ALGORITHM ::= { +-- IDENTIFIER dsa-with-sha256 +-- VALUE DSA-Sig-Value +-- PARAMS TYPE NULL ARE absent +-- HASHES { mda-sha256 } +-- PUBLIC-KEYS { pk-dsa } +-- SMIME-CAPS { IDENTIFIED BY dsa-with-sha256 } +-- } + + dsa-with-sha256 OBJECT IDENTIFIER ::= { + joint-iso-ccitt(2) country(16) us(840) organization(1) gov(101) + csor(3) algorithms(4) id-dsa-with-sha2(3) 2 } + + -- ECDSA with SHA-1 + +-- sa-ecdsaWithSHA1 SIGNATURE-ALGORITHM ::= { +-- IDENTIFIER ecdsa-with-SHA1 +-- VALUE ECDSA-Sig-Value +-- PARAMS TYPE NULL ARE absent +-- HASHES { mda-sha1 } +-- PUBLIC-KEYS { pk-ec } +-- SMIME-CAPS {IDENTIFIED BY ecdsa-with-SHA1 } +-- } + + ecdsa-with-SHA1 OBJECT IDENTIFIER ::= { + iso(1) member-body(2) us(840) ansi-X9-62(10045) + signatures(4) 1 } + + -- ECDSA with SHA-224 + +-- sa-ecdsaWithSHA224 SIGNATURE-ALGORITHM ::= { +-- IDENTIFIER ecdsa-with-SHA224 +-- VALUE ECDSA-Sig-Value +-- PARAMS TYPE NULL ARE absent +-- HASHES { mda-sha224 } +-- PUBLIC-KEYS { pk-ec } +-- SMIME-CAPS { IDENTIFIED BY ecdsa-with-SHA224 } +-- } + + ecdsa-with-SHA224 OBJECT IDENTIFIER ::= { + iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) + ecdsa-with-SHA2(3) 1 } + + -- ECDSA with SHA-256 + +-- sa-ecdsaWithSHA256 SIGNATURE-ALGORITHM ::= { +-- IDENTIFIER ecdsa-with-SHA256 +-- VALUE ECDSA-Sig-Value +-- PARAMS TYPE NULL ARE absent +-- HASHES { mda-sha256 } +-- PUBLIC-KEYS { pk-ec } +-- SMIME-CAPS { IDENTIFIED BY ecdsa-with-SHA256 } +-- } + + ecdsa-with-SHA256 OBJECT IDENTIFIER ::= { + iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) + ecdsa-with-SHA2(3) 2 } + + -- ECDSA with SHA-384 + +-- sa-ecdsaWithSHA384 SIGNATURE-ALGORITHM ::= { +-- IDENTIFIER ecdsa-with-SHA384 +-- VALUE ECDSA-Sig-Value +-- PARAMS TYPE NULL ARE absent +-- HASHES { mda-sha384 } +-- PUBLIC-KEYS { pk-ec } +-- SMIME-CAPS { IDENTIFIED BY ecdsa-with-SHA384 } +-- } + + ecdsa-with-SHA384 OBJECT IDENTIFIER ::= { + iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) + ecdsa-with-SHA2(3) 3 } + + -- ECDSA with SHA-512 + +-- sa-ecdsaWithSHA512 SIGNATURE-ALGORITHM ::= { +-- IDENTIFIER ecdsa-with-SHA512 +-- VALUE ECDSA-Sig-Value +-- PARAMS TYPE NULL ARE absent +-- HASHES { mda-sha512 } +-- PUBLIC-KEYS { pk-ec } +-- SMIME-CAPS { IDENTIFIED BY ecdsa-with-SHA512 } +-- } + + ecdsa-with-SHA512 OBJECT IDENTIFIER ::= { + iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) + ecdsa-with-SHA2(3) 4 } + + -- + -- Signature Values + -- + + -- DSA + + DSA-Sig-Value ::= SEQUENCE { + r INTEGER, + s INTEGER + } + + -- ECDSA + + ECDSA-Sig-Value ::= SEQUENCE { + r INTEGER, + s INTEGER + } + + -- + -- Message Digest Algorithms (mda-) + -- + + HashAlgs DIGEST-ALGORITHM ::= { + mda-md2 | + mda-md5 | + mda-sha1, + ... -- Extensible + } + -- MD-2 + +-- mda-md2 DIGEST-ALGORITHM ::= { +-- IDENTIFIER id-md2 +-- PARAMS TYPE NULL ARE preferredAbsent +-- } + + id-md2 OBJECT IDENTIFIER ::= { + iso(1) member-body(2) us(840) rsadsi(113549) + digestAlgorithm(2) 2 } + + -- MD-5 + +-- mda-md5 DIGEST-ALGORITHM ::= { +-- IDENTIFIER id-md5 +-- PARAMS TYPE NULL ARE preferredAbsent +-- } + + id-md5 OBJECT IDENTIFIER ::= { + iso(1) member-body(2) us(840) rsadsi(113549) + digestAlgorithm(2) 5 } + + -- SHA-1 + +-- mda-sha1 DIGEST-ALGORITHM ::= { +-- IDENTIFIER id-sha1 +-- PARAMS TYPE NULL ARE preferredAbsent +-- } + + id-sha1 OBJECT IDENTIFIER ::= { + iso(1) identified-organization(3) oiw(14) secsig(3) + algorithm(2) 26 } + + END diff --git a/asn1/pkcs1/packet-pkcs1-template.c b/asn1/pkcs1/packet-pkcs1-template.c index c110bb27b1..a98cbca71b 100644 --- a/asn1/pkcs1/packet-pkcs1-template.c +++ b/asn1/pkcs1/packet-pkcs1-template.c @@ -29,6 +29,7 @@ #include <glib.h> #include <epan/packet.h> +#include <epan/oids.h> #include <epan/asn1.h> #include "packet-ber.h" @@ -73,6 +74,8 @@ void proto_register_pkcs1(void) { /*--- proto_reg_handoff_pkcs1 -------------------------------------------*/ void proto_reg_handoff_pkcs1(void) { +#include "packet-pkcs1-dis-tab.c" + register_ber_oid_dissector("1.2.840.113549.2.2", dissect_ber_oid_NULL_callback, proto_pkcs1, "md2"); register_ber_oid_dissector("1.2.840.113549.2.4", dissect_ber_oid_NULL_callback, proto_pkcs1, "md4"); register_ber_oid_dissector("1.2.840.113549.2.5", dissect_ber_oid_NULL_callback, proto_pkcs1, "md5"); @@ -88,5 +91,22 @@ void proto_reg_handoff_pkcs1(void) { */ register_ber_oid_dissector("1.2.840.113549.1.1.5", dissect_ber_oid_NULL_callback, proto_pkcs1, "shaWithRSAEncryption"); register_ber_oid_dissector("1.2.840.113549.1.1.6", dissect_ber_oid_NULL_callback, proto_pkcs1, "rsaOAEPEncryptionSET"); + + oid_add_from_string("secp192r1","1.2.840.10045.3.1.1"); + oid_add_from_string("sect163k1","1.3.132.0.1"); + oid_add_from_string("sect163r2","1.3.132.0.15"); + oid_add_from_string("secp224r1","1.3.132.0.33"); + oid_add_from_string("sect233k1","1.3.132.0.26"); + oid_add_from_string("sect233r1","1.3.132.0.27"); + oid_add_from_string("secp256r1","1.2.840.10045.3.1.7"); + oid_add_from_string("sect283k1","1.3.132.0.16"); + oid_add_from_string("sect283r1","1.3.132.0.17"); + oid_add_from_string("secp384r1","1.3.132.0.34"); + oid_add_from_string("sect409k1","1.3.132.0.36"); + oid_add_from_string("sect409r1","1.3.132.0.37"); + oid_add_from_string("sect521r1","1.3.132.0.35") +; oid_add_from_string("sect571k1","1.3.132.0.38"); + oid_add_from_string("sect571r1","1.3.132.0.39"); + } diff --git a/asn1/pkcs1/pkcs1.cnf b/asn1/pkcs1/pkcs1.cnf index e50bddc6fd..91adbdfb85 100644 --- a/asn1/pkcs1/pkcs1.cnf +++ b/asn1/pkcs1/pkcs1.cnf @@ -17,6 +17,21 @@ DigestInfo #.FIELD_RENAME +#.REGISTER +DSA-Params B "1.2.840.10040.4.1" "id-dsa" +DomainParameters B "1.2.840.10046.2.1" "dhpublicnumber" +KEA-Params-Id B "2.16.840.1.101.2.1.1.22" "id-keyExchangeAlgorithm" +ECParameters B "1.2.840.10045.2.1" "id-ecPublicKey" +ECParameters B "1.3.132.1.12" "id-ecDH" +ECParameters B "1.2.840.10045.2.13" "id-ecMQV" + +#.NO_EMIT +DSAPublicKey +DHPublicKey +ECPoint +DSA-Sig-Value +ECDSA-Sig-Value + #.END diff --git a/epan/dissectors/packet-pkcs1.c b/epan/dissectors/packet-pkcs1.c index 365906e09c..0ef799589d 100644 --- a/epan/dissectors/packet-pkcs1.c +++ b/epan/dissectors/packet-pkcs1.c @@ -1,7 +1,7 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ /* packet-pkcs1.c */ -/* ../../tools/asn2wrs.py -b -p pkcs1 -c ./pkcs1.cnf -s ./packet-pkcs1-template -D . PKCS1.asn */ +/* ../../tools/asn2wrs.py -b -p pkcs1 -c ./pkcs1.cnf -s ./packet-pkcs1-template -D . PKIXAlgs-2009.asn */ /* Input file: packet-pkcs1-template.c */ @@ -37,6 +37,7 @@ #include <glib.h> #include <epan/packet.h> +#include <epan/oids.h> #include <epan/asn1.h> #include "packet-ber.h" @@ -52,6 +53,10 @@ static int proto_pkcs1 = -1; /*--- Included file: packet-pkcs1-hf.c ---*/ #line 1 "../../asn1/pkcs1/packet-pkcs1-hf.c" +static int hf_pkcs1_DSA_Params_PDU = -1; /* DSA_Params */ +static int hf_pkcs1_DomainParameters_PDU = -1; /* DomainParameters */ +static int hf_pkcs1_KEA_Params_Id_PDU = -1; /* KEA_Params_Id */ +static int hf_pkcs1_ECParameters_PDU = -1; /* ECParameters */ static int hf_pkcs1_modulus = -1; /* INTEGER */ static int hf_pkcs1_publicExponent = -1; /* INTEGER */ static int hf_pkcs1_version = -1; /* Version */ @@ -63,9 +68,19 @@ static int hf_pkcs1_exponent2 = -1; /* INTEGER */ static int hf_pkcs1_coefficient = -1; /* INTEGER */ static int hf_pkcs1_digestAlgorithm = -1; /* DigestAlgorithmIdentifier */ static int hf_pkcs1_digest = -1; /* Digest */ +static int hf_pkcs1_p = -1; /* INTEGER */ +static int hf_pkcs1_q = -1; /* INTEGER */ +static int hf_pkcs1_g = -1; /* INTEGER */ +static int hf_pkcs1_j = -1; /* INTEGER */ +static int hf_pkcs1_validationParams = -1; /* ValidationParams */ +static int hf_pkcs1_seed = -1; /* BIT_STRING */ +static int hf_pkcs1_pgenCounter = -1; /* INTEGER */ +static int hf_pkcs1_namedCurve = -1; /* OBJECT_IDENTIFIER */ +static int hf_pkcs1_r = -1; /* INTEGER */ +static int hf_pkcs1_s = -1; /* INTEGER */ /*--- End of included file: packet-pkcs1-hf.c ---*/ -#line 45 "../../asn1/pkcs1/packet-pkcs1-template.c" +#line 46 "../../asn1/pkcs1/packet-pkcs1-template.c" /* Initialize the subtree pointers */ @@ -74,9 +89,15 @@ static int hf_pkcs1_digest = -1; /* Digest */ static gint ett_pkcs1_RSAPublicKey = -1; static gint ett_pkcs1_RSAPrivateKey = -1; static gint ett_pkcs1_DigestInfo = -1; +static gint ett_pkcs1_DSA_Params = -1; +static gint ett_pkcs1_DomainParameters = -1; +static gint ett_pkcs1_ValidationParams = -1; +static gint ett_pkcs1_ECParameters = -1; +static gint ett_pkcs1_DSA_Sig_Value = -1; +static gint ett_pkcs1_ECDSA_Sig_Value = -1; /*--- End of included file: packet-pkcs1-ett.c ---*/ -#line 48 "../../asn1/pkcs1/packet-pkcs1-template.c" +#line 49 "../../asn1/pkcs1/packet-pkcs1-template.c" /*--- Included file: packet-pkcs1-fn.c ---*/ @@ -173,8 +194,135 @@ dissect_pkcs1_DigestInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offse } +static const ber_sequence_t DSA_Params_sequence[] = { + { &hf_pkcs1_p , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_pkcs1_INTEGER }, + { &hf_pkcs1_q , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_pkcs1_INTEGER }, + { &hf_pkcs1_g , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_pkcs1_INTEGER }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_pkcs1_DSA_Params(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + DSA_Params_sequence, hf_index, ett_pkcs1_DSA_Params); + + return offset; +} + + + + +static int +dissect_pkcs1_BIT_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + NULL, hf_index, -1, + NULL); + + return offset; +} + + +static const ber_sequence_t ValidationParams_sequence[] = { + { &hf_pkcs1_seed , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_pkcs1_BIT_STRING }, + { &hf_pkcs1_pgenCounter , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_pkcs1_INTEGER }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_pkcs1_ValidationParams(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + ValidationParams_sequence, hf_index, ett_pkcs1_ValidationParams); + + return offset; +} + + +static const ber_sequence_t DomainParameters_sequence[] = { + { &hf_pkcs1_p , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_pkcs1_INTEGER }, + { &hf_pkcs1_g , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_pkcs1_INTEGER }, + { &hf_pkcs1_q , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_pkcs1_INTEGER }, + { &hf_pkcs1_j , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_pkcs1_INTEGER }, + { &hf_pkcs1_validationParams, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_pkcs1_ValidationParams }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_pkcs1_DomainParameters(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + DomainParameters_sequence, hf_index, ett_pkcs1_DomainParameters); + + return offset; +} + + + + +static int +dissect_pkcs1_KEA_Params_Id(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + + +static int +dissect_pkcs1_OBJECT_IDENTIFIER(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL); + + return offset; +} + + +static const value_string pkcs1_ECParameters_vals[] = { + { 0, "namedCurve" }, + { 0, NULL } +}; + +static const ber_choice_t ECParameters_choice[] = { + { 0, &hf_pkcs1_namedCurve , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_pkcs1_OBJECT_IDENTIFIER }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_pkcs1_ECParameters(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + ECParameters_choice, hf_index, ett_pkcs1_ECParameters, + NULL); + + return offset; +} + + + +/*--- PDUs ---*/ + +static void dissect_DSA_Params_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + dissect_pkcs1_DSA_Params(FALSE, tvb, 0, &asn1_ctx, tree, hf_pkcs1_DSA_Params_PDU); +} +static void dissect_DomainParameters_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + dissect_pkcs1_DomainParameters(FALSE, tvb, 0, &asn1_ctx, tree, hf_pkcs1_DomainParameters_PDU); +} +static void dissect_KEA_Params_Id_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + dissect_pkcs1_KEA_Params_Id(FALSE, tvb, 0, &asn1_ctx, tree, hf_pkcs1_KEA_Params_Id_PDU); +} +static void dissect_ECParameters_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + dissect_pkcs1_ECParameters(FALSE, tvb, 0, &asn1_ctx, tree, hf_pkcs1_ECParameters_PDU); +} + + /*--- End of included file: packet-pkcs1-fn.c ---*/ -#line 50 "../../asn1/pkcs1/packet-pkcs1-template.c" +#line 51 "../../asn1/pkcs1/packet-pkcs1-template.c" /*--- proto_register_pkcs1 ----------------------------------------------*/ void proto_register_pkcs1(void) { @@ -184,6 +332,22 @@ void proto_register_pkcs1(void) { /*--- Included file: packet-pkcs1-hfarr.c ---*/ #line 1 "../../asn1/pkcs1/packet-pkcs1-hfarr.c" + { &hf_pkcs1_DSA_Params_PDU, + { "DSA-Params", "pkcs1.DSA_Params", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_pkcs1_DomainParameters_PDU, + { "DomainParameters", "pkcs1.DomainParameters", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_pkcs1_KEA_Params_Id_PDU, + { "KEA-Params-Id", "pkcs1.KEA_Params_Id", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_pkcs1_ECParameters_PDU, + { "ECParameters", "pkcs1.ECParameters", + FT_UINT32, BASE_DEC, VALS(pkcs1_ECParameters_vals), 0, + NULL, HFILL }}, { &hf_pkcs1_modulus, { "modulus", "pkcs1.modulus", FT_INT32, BASE_DEC, NULL, 0, @@ -228,9 +392,49 @@ void proto_register_pkcs1(void) { { "digest", "pkcs1.digest", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_pkcs1_p, + { "p", "pkcs1.p", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER", HFILL }}, + { &hf_pkcs1_q, + { "q", "pkcs1.q", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER", HFILL }}, + { &hf_pkcs1_g, + { "g", "pkcs1.g", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER", HFILL }}, + { &hf_pkcs1_j, + { "j", "pkcs1.j", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER", HFILL }}, + { &hf_pkcs1_validationParams, + { "validationParams", "pkcs1.validationParams", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_pkcs1_seed, + { "seed", "pkcs1.seed", + FT_BYTES, BASE_NONE, NULL, 0, + "BIT_STRING", HFILL }}, + { &hf_pkcs1_pgenCounter, + { "pgenCounter", "pkcs1.pgenCounter", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER", HFILL }}, + { &hf_pkcs1_namedCurve, + { "namedCurve", "pkcs1.namedCurve", + FT_OID, BASE_NONE, NULL, 0, + "OBJECT_IDENTIFIER", HFILL }}, + { &hf_pkcs1_r, + { "r", "pkcs1.r", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER", HFILL }}, + { &hf_pkcs1_s, + { "s", "pkcs1.s", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER", HFILL }}, /*--- End of included file: packet-pkcs1-hfarr.c ---*/ -#line 57 "../../asn1/pkcs1/packet-pkcs1-template.c" +#line 58 "../../asn1/pkcs1/packet-pkcs1-template.c" }; /* List of subtrees */ @@ -241,9 +445,15 @@ void proto_register_pkcs1(void) { &ett_pkcs1_RSAPublicKey, &ett_pkcs1_RSAPrivateKey, &ett_pkcs1_DigestInfo, + &ett_pkcs1_DSA_Params, + &ett_pkcs1_DomainParameters, + &ett_pkcs1_ValidationParams, + &ett_pkcs1_ECParameters, + &ett_pkcs1_DSA_Sig_Value, + &ett_pkcs1_ECDSA_Sig_Value, /*--- End of included file: packet-pkcs1-ettarr.c ---*/ -#line 62 "../../asn1/pkcs1/packet-pkcs1-template.c" +#line 63 "../../asn1/pkcs1/packet-pkcs1-template.c" }; /* Register protocol */ @@ -258,6 +468,20 @@ void proto_register_pkcs1(void) { /*--- proto_reg_handoff_pkcs1 -------------------------------------------*/ void proto_reg_handoff_pkcs1(void) { + +/*--- Included file: packet-pkcs1-dis-tab.c ---*/ +#line 1 "../../asn1/pkcs1/packet-pkcs1-dis-tab.c" + register_ber_oid_dissector("1.2.840.10040.4.1", dissect_DSA_Params_PDU, proto_pkcs1, "id-dsa"); + register_ber_oid_dissector("1.2.840.10046.2.1", dissect_DomainParameters_PDU, proto_pkcs1, "dhpublicnumber"); + register_ber_oid_dissector("2.16.840.1.101.2.1.1.22", dissect_KEA_Params_Id_PDU, proto_pkcs1, "id-keyExchangeAlgorithm"); + register_ber_oid_dissector("1.2.840.10045.2.1", dissect_ECParameters_PDU, proto_pkcs1, "id-ecPublicKey"); + register_ber_oid_dissector("1.3.132.1.12", dissect_ECParameters_PDU, proto_pkcs1, "id-ecDH"); + register_ber_oid_dissector("1.2.840.10045.2.13", dissect_ECParameters_PDU, proto_pkcs1, "id-ecMQV"); + + +/*--- End of included file: packet-pkcs1-dis-tab.c ---*/ +#line 78 "../../asn1/pkcs1/packet-pkcs1-template.c" + register_ber_oid_dissector("1.2.840.113549.2.2", dissect_ber_oid_NULL_callback, proto_pkcs1, "md2"); register_ber_oid_dissector("1.2.840.113549.2.4", dissect_ber_oid_NULL_callback, proto_pkcs1, "md4"); register_ber_oid_dissector("1.2.840.113549.2.5", dissect_ber_oid_NULL_callback, proto_pkcs1, "md5"); @@ -273,5 +497,22 @@ void proto_reg_handoff_pkcs1(void) { */ register_ber_oid_dissector("1.2.840.113549.1.1.5", dissect_ber_oid_NULL_callback, proto_pkcs1, "shaWithRSAEncryption"); register_ber_oid_dissector("1.2.840.113549.1.1.6", dissect_ber_oid_NULL_callback, proto_pkcs1, "rsaOAEPEncryptionSET"); + + oid_add_from_string("secp192r1","1.2.840.10045.3.1.1"); + oid_add_from_string("sect163k1","1.3.132.0.1"); + oid_add_from_string("sect163r2","1.3.132.0.15"); + oid_add_from_string("secp224r1","1.3.132.0.33"); + oid_add_from_string("sect233k1","1.3.132.0.26"); + oid_add_from_string("sect233r1","1.3.132.0.27"); + oid_add_from_string("secp256r1","1.2.840.10045.3.1.7"); + oid_add_from_string("sect283k1","1.3.132.0.16"); + oid_add_from_string("sect283r1","1.3.132.0.17"); + oid_add_from_string("secp384r1","1.3.132.0.34"); + oid_add_from_string("sect409k1","1.3.132.0.36"); + oid_add_from_string("sect409r1","1.3.132.0.37"); + oid_add_from_string("sect521r1","1.3.132.0.35") +; oid_add_from_string("sect571k1","1.3.132.0.38"); + oid_add_from_string("sect571r1","1.3.132.0.39"); + } diff --git a/epan/dissectors/packet-pkcs1.h b/epan/dissectors/packet-pkcs1.h index 34ba56e288..31057fddea 100644 --- a/epan/dissectors/packet-pkcs1.h +++ b/epan/dissectors/packet-pkcs1.h @@ -1,7 +1,7 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ /* packet-pkcs1.h */ -/* ../../tools/asn2wrs.py -b -p pkcs1 -c ./pkcs1.cnf -s ./packet-pkcs1-template -D . PKCS1.asn */ +/* ../../tools/asn2wrs.py -b -p pkcs1 -c ./pkcs1.cnf -s ./packet-pkcs1-template -D . PKIXAlgs-2009.asn */ /* Input file: packet-pkcs1-template.h */ |