diff options
Diffstat (limited to 'src/asn1/asn1_att.cpp')
-rw-r--r-- | src/asn1/asn1_att.cpp | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/asn1/asn1_att.cpp b/src/asn1/asn1_att.cpp new file mode 100644 index 000000000..7c16ff3a5 --- /dev/null +++ b/src/asn1/asn1_att.cpp @@ -0,0 +1,58 @@ +/************************************************* +* Attribute Source File * +* (C) 1999-2007 Jack Lloyd * +*************************************************/ + +#include <botan/asn1_obj.h> +#include <botan/der_enc.h> +#include <botan/ber_dec.h> +#include <botan/oids.h> + +namespace Botan { + +/************************************************* +* Create an Attribute * +*************************************************/ +Attribute::Attribute(const OID& attr_oid, const MemoryRegion<byte>& attr_value) + { + oid = attr_oid; + parameters = attr_value; + } + +/************************************************* +* Create an Attribute * +*************************************************/ +Attribute::Attribute(const std::string& attr_oid, + const MemoryRegion<byte>& attr_value) + { + oid = OIDS::lookup(attr_oid); + parameters = attr_value; + } + +/************************************************* +* DER encode a Attribute * +*************************************************/ +void Attribute::encode_into(DER_Encoder& codec) const + { + codec.start_cons(SEQUENCE) + .encode(oid) + .start_cons(SET) + .raw_bytes(parameters) + .end_cons() + .end_cons(); + } + +/************************************************* +* Decode a BER encoded Attribute * +*************************************************/ +void Attribute::decode_from(BER_Decoder& codec) + { + codec.start_cons(SEQUENCE) + .decode(oid) + .start_cons(SET) + .raw_bytes(parameters) + .end_cons() + .end_cons(); + } + +} |