Remove KeyType from CBOR (#306)
* removes KeyType from CBOR * type_label usage in writer
This commit is contained in:
@@ -12,7 +12,7 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
use super::values::{Constants, KeyType, Value};
|
||||
use super::values::{Constants, Value};
|
||||
use alloc::vec::Vec;
|
||||
|
||||
pub fn write(value: Value, encoded_cbor: &mut Vec<u8>) -> bool {
|
||||
@@ -35,21 +35,20 @@ impl<'a> Writer<'a> {
|
||||
if remaining_depth < 0 {
|
||||
return false;
|
||||
}
|
||||
let type_label = value.type_label();
|
||||
match value {
|
||||
Value::KeyValue(KeyType::Unsigned(unsigned)) => self.start_item(0, unsigned),
|
||||
Value::KeyValue(KeyType::Negative(negative)) => {
|
||||
self.start_item(1, -(negative + 1) as u64)
|
||||
}
|
||||
Value::KeyValue(KeyType::ByteString(byte_string)) => {
|
||||
self.start_item(2, byte_string.len() as u64);
|
||||
Value::Unsigned(unsigned) => self.start_item(type_label, unsigned),
|
||||
Value::Negative(negative) => self.start_item(type_label, -(negative + 1) as u64),
|
||||
Value::ByteString(byte_string) => {
|
||||
self.start_item(type_label, byte_string.len() as u64);
|
||||
self.encoded_cbor.extend(byte_string);
|
||||
}
|
||||
Value::KeyValue(KeyType::TextString(text_string)) => {
|
||||
self.start_item(3, text_string.len() as u64);
|
||||
Value::TextString(text_string) => {
|
||||
self.start_item(type_label, text_string.len() as u64);
|
||||
self.encoded_cbor.extend(text_string.into_bytes());
|
||||
}
|
||||
Value::Array(array) => {
|
||||
self.start_item(4, array.len() as u64);
|
||||
self.start_item(type_label, array.len() as u64);
|
||||
for el in array {
|
||||
if !self.encode_cbor(el, remaining_depth - 1) {
|
||||
return false;
|
||||
@@ -63,9 +62,9 @@ impl<'a> Writer<'a> {
|
||||
if map_len != map.len() {
|
||||
return false;
|
||||
}
|
||||
self.start_item(5, map_len as u64);
|
||||
self.start_item(type_label, map_len as u64);
|
||||
for (k, v) in map {
|
||||
if !self.encode_cbor(Value::KeyValue(k), remaining_depth - 1) {
|
||||
if !self.encode_cbor(k, remaining_depth - 1) {
|
||||
return false;
|
||||
}
|
||||
if !self.encode_cbor(v, remaining_depth - 1) {
|
||||
@@ -73,7 +72,7 @@ impl<'a> Writer<'a> {
|
||||
}
|
||||
}
|
||||
}
|
||||
Value::Simple(simple_value) => self.start_item(7, simple_value as u64),
|
||||
Value::Simple(simple_value) => self.start_item(type_label, simple_value as u64),
|
||||
}
|
||||
true
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user