From 3d449c4eed0464cd7dc95fe473ac1839932b0d4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20M=C3=B6ller?= <nisse@lysator.liu.se> Date: Sun, 30 Nov 1997 22:21:57 +0100 Subject: [PATCH] Handle certificate attributes better. Rev: lib/modules/Standards.pmod/PKCS.pmod/Certificate.pmod:1.2 --- .../Standards.pmod/PKCS.pmod/Certificate.pmod | 44 ++++++++++++++++--- 1 file changed, 38 insertions(+), 6 deletions(-) diff --git a/lib/modules/Standards.pmod/PKCS.pmod/Certificate.pmod b/lib/modules/Standards.pmod/PKCS.pmod/Certificate.pmod index 86244d6357..ec21aefb13 100644 --- a/lib/modules/Standards.pmod/PKCS.pmod/Certificate.pmod +++ b/lib/modules/Standards.pmod/PKCS.pmod/Certificate.pmod @@ -16,7 +16,7 @@ Version ::= INTEGER Attributes ::= SET OF Attribute --- From the last section of PKCS-9. Is this used??? +-- From the last section of PKCS-9. Attribute ::= SEQUENCE { attribyteType ::= OBJECT IDENTIFIER, attributeValue ::= SET OF ANY } @@ -124,12 +124,12 @@ Version ::= INTEGER */ -import asn1.encode; -import identifiers; +import Standards.ASN1.Encode; +import Identifiers; class AttributeValueAssertion { - import asn1.encode; + import Standards.ASN1.Encode; inherit asn1_sequence; void create(mapping(string:object) types, string type, @@ -146,7 +146,7 @@ class AttributeValueAssertion /* RelativeDistinguishedName */ class attribute_set { - import asn1.encode; + import Standards.ASN1.Encode; inherit asn1_set; void create(mapping(string:object) types, mapping(string:object) pairs) @@ -165,6 +165,38 @@ object build_distinguished_name(mapping(string:object) ... args) return asn1_sequence(@Array.map(args, lambda(mapping rdn) { return attribute_set( - identifiers.name_ids, rdn); + Identifiers.name_ids, rdn); } )); } + +class Attribute +{ + import Standards.ASN1.Encode; + inherit asn1_sequence; + + void create(mapping(string:object) types, string type, + array(object) v) + { + if (!types[type]) + throw( ({ sprintf("Attribute: " + "Unknown attribute type '%s'\n", + type), backtrace() }) ); + ::create(types[type], asn1_set(@ v)); + } +} + +class Attributes +{ + import Standards.ASN1.Encode; + inherit asn1_set; + + void create(mapping(string:object) types, mapping(string:array(object)) m) + { + ::create(@ Array.map(indices(m), + lambda(string field, mapping m, mapping t) + { + return Attribute(t, field, m[field]); + }, m, types)); + } +} + -- GitLab