Differences From Artifact [e8fb04db87]:
- File src/OFASN1Enumerated.m — part of check-in [52b963d843] at 2018-10-16 00:07:21 on branch trunk — Remove intermediate OFASN1IntegerOrEnumerated (user: js, size: 1736) [annotate] [blame] [check-ins using]
To Artifact [e9e319365f]:
- File
src/OFASN1Enumerated.m
— part of check-in
[b1944fd052]
at
2018-10-27 13:01:38
on branch trunk
— Do not subclass OFASN1Value
The reason for this is that OFASN1Value requires an initializer for DER
encoding, however, it might be beneficial to create an ASN.1 type
without providing DER encoding for it. (user: js, size: 2043) [annotate] [blame] [check-ins using]
︙ | ︙ | |||
24 25 26 27 28 29 30 31 32 33 34 35 36 | #import "OFInvalidArgumentException.h" extern intmax_t of_asn1_integer_parse(const unsigned char *buffer, size_t length); @implementation OFASN1Enumerated @synthesize integerValue = _integerValue; - (instancetype)initWithTagClass: (of_asn1_tag_class_t)tagClass tagNumber: (of_asn1_tag_number_t)tagNumber constructed: (bool)constructed DEREncodedContents: (OFData *)DEREncodedContents { | > > > > > | < < < | | > > > | > > > > > > > > > > > > > > > > > > > > | 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | #import "OFInvalidArgumentException.h" extern intmax_t of_asn1_integer_parse(const unsigned char *buffer, size_t length); @implementation OFASN1Enumerated @synthesize integerValue = _integerValue; - (instancetype)init { OF_INVALID_INIT_METHOD } - (instancetype)initWithTagClass: (of_asn1_tag_class_t)tagClass tagNumber: (of_asn1_tag_number_t)tagNumber constructed: (bool)constructed DEREncodedContents: (OFData *)DEREncodedContents { self = [super init]; @try { if (tagClass != OF_ASN1_TAG_CLASS_UNIVERSAL || tagNumber != OF_ASN1_TAG_NUMBER_ENUMERATED || constructed) @throw [OFInvalidArgumentException exception]; if ([DEREncodedContents itemSize] != 1) @throw [OFInvalidArgumentException exception]; _integerValue = of_asn1_integer_parse( [DEREncodedContents items], [DEREncodedContents count]); } @catch (id e) { [self release]; @throw e; } return self; } - (bool)isEqual: (id)object { OFASN1Enumerated *enumerated; if (![object isKindOfClass: [OFASN1Enumerated class]]) return false; enumerated = object; if (enumerated->_integerValue != _integerValue) return false; return true; } - (uint32_t)hash { return (uint32_t)_integerValue; } - (OFString *)description { return [OFString stringWithFormat: @"<OFASN1Enumerated: %jd>", _integerValue]; } @end |