Parcourir la source

Changes for LibInvercargill

Billy Barrow il y a 1 semaine
Parent
commit
c8bc3db62b

+ 2 - 2
src/lib/Asset.vala

@@ -1,5 +1,5 @@
 using Invercargill;
-using Invercargill.Convert;
+using Invercargill.DataStructures;
 using Gee;
 
 namespace Ppub {
@@ -26,7 +26,7 @@ namespace Ppub {
             start_location = int.parse (data[1]);
             end_location = int.parse (data[2]);
 
-            flags = ate(data).skip(3).to_vector();
+            flags = Wrap.array(data).skip(3).to_vector();
         }
 
         public string to_string() {

+ 1 - 0
src/lib/Builder.vala

@@ -1,4 +1,5 @@
 using Invercargill;
+using Invercargill.DataStructures;
 using Gee;
 
 namespace Ppub {

+ 2 - 2
src/lib/Metadata.vala

@@ -1,5 +1,5 @@
 using Invercargill;
-using Invercargill.Convert;
+using Invercargill.DataStructures;
 
 namespace Ppub {
 
@@ -98,7 +98,7 @@ namespace Ppub {
                 return get_value(TAGS).split(" ");
             }
             set {
-                set_value(TAGS, ate(value).to_string(s => s, " "));
+                set_value(TAGS, Wrap.array(value).to_string(s => s, " "));
             }
         }
 

+ 11 - 11
src/lib/Ppcl.vala

@@ -1,5 +1,5 @@
 using Invercargill;
-using Invercargill.Convert;
+using Invercargill.DataStructures;
 
 namespace Ppub {
     
@@ -135,12 +135,12 @@ namespace Ppub {
 
             // Verify authoratative section
             if(verify) {
-                var checksum = new BinaryData.from_byte_array(get_string_checksum(signed_portion));
+                var checksum = Wrap.byte_array(get_string_checksum(signed_portion));
                 var signed_checksum = Sodium.Asymmetric.Signing.verify(collection_signature, id);
                 if(signed_checksum == null) {
                     throw new CollectionError.INVALID_COLLECTION_SIGNATURE("Could not verify authoratative signature");
                 }
-                if(!checksum.equals(ate(signed_checksum))) {
+                if(!checksum.equals(Wrap.array(signed_checksum))) {
                     throw new CollectionError.INVALID_COLLECTION_SIGNATURE("Authoratative signature checksum does not match calculated checksum");
                 }
             }
@@ -180,7 +180,7 @@ namespace Ppub {
                 if(signed_checksum == null) {
                     throw new CollectionError.INVALID_SHARED_SIGNATURE("Could not verify shared signature");
                 }
-                if(!checksum.equals(ate(signed_checksum))) {
+                if(!checksum.equals(Wrap.array(signed_checksum))) {
                     throw new CollectionError.INVALID_SHARED_SIGNATURE("Shared signature checksum does not match calculated checksum");
                 }
             }
@@ -244,12 +244,12 @@ namespace Ppub {
             return @"$authoritative_section\n$shared_section\nSSG $(Base64.encode(shared_signature))";
         }
 
-        private BinaryData get_checksum() {
-            return new BinaryData.from_byte_array(get_string_checksum(@"$authoritative_section\n$shared_section"));
+        private ReadOnlyAddressableBytes get_checksum() {
+            return Wrap.byte_array(get_string_checksum(@"$authoritative_section\n$shared_section"));
         }
 
         internal static uint8[] get_string_checksum(string data) {
-            var signed_data = new BinaryData();
+            var signed_data = new ByteComposition();
             signed_data.append_string(data);
             var checksum_calculator = new Checksum(ChecksumType.SHA512);
             var arr = signed_data.to_array();
@@ -358,7 +358,7 @@ namespace Ppub {
         }
 
         public string to_string() {
-            var combined = new BinaryData.from_byte_array(signing_key);
+            var combined = new ByteComposition.from_byte_array(signing_key);
             combined.append_byte_array(sealing_key);
             return @"CLMPK:$(Base64.encode(combined.to_array()))";
         }
@@ -481,7 +481,7 @@ namespace Ppub {
         private void sign(CollectionMemberCredentials member_credentials) {
             var signed_portion = get_signed_portion();
             var line_checksum = Collection.get_string_checksum(signed_portion);
-            var to_sign = new BinaryData.from_byte_array(line_checksum);
+            var to_sign = new ByteComposition.from_byte_array(line_checksum);
             to_sign.append_byte_array(publication_checksum);
 
             signature = Sodium.Asymmetric.Signing.sign(to_sign.to_array(), member_credentials.secret_signing_key);
@@ -510,12 +510,12 @@ namespace Ppub {
                 throw new CollectionError.INVALID_MEMBER(@"Undeclared member \"$member\" on publication entry");
             }
 
-            var checksum = new BinaryData.from_byte_array(Collection.get_string_checksum(get_signed_portion()));
+            var checksum = Wrap.byte_array(Collection.get_string_checksum(get_signed_portion()));
             var signature_data = Sodium.Asymmetric.Signing.verify(signature, collection_member.public_keys.signing_key);
             if(signature_data == null) {
                 throw new CollectionError.INVALID_COLLECTION_SIGNATURE("Invalid publication signature");
             }
-            if(!checksum.equals(ate(signature_data[0:64]))) {
+            if(!checksum.equals(Wrap.array(signature_data[0:64]))) {
                 throw new CollectionError.INVALID_COLLECTION_SIGNATURE("Publication signature does not match metadata");
             }
 

+ 1 - 0
src/lib/Ppub.vala

@@ -1,4 +1,5 @@
 using Invercargill;
+using Invercargill.DataStructures;
 using Gee;
 
 namespace Ppub {

+ 1 - 0
src/lib/Ppvm.vala

@@ -1,4 +1,5 @@
 using Invercargill;
+using Invercargill.DataStructures;
 
 namespace Ppub {
 

+ 3 - 4
src/pprf/Client.vala

@@ -1,7 +1,6 @@
 
 using Pprf.Messages;
 using Invercargill;
-using Invercargill.Convert;
 
 namespace Pprf {
 
@@ -26,9 +25,9 @@ namespace Pprf {
             throw new ClientError.NO_PEERS("Decentralised PPCL not yet supported, please specify domain");
         }
         var dns = Ppub.CollectionServerRecord.resolve_records(uri.via_server_record);
-        var collection_id = new BinaryData.from_byte_array(uri.collection_id);
+        var collection_id = Wrap.byte_array(uri.collection_id);
         foreach (var entry in dns) {
-            if(!collection_id.equals(ate(entry.collection_id))) {
+            if(!collection_id.equals(Wrap.array(entry.collection_id))) {
                 continue;
             }
             if(entry.uri.get_scheme() == "http" || entry.uri.get_scheme() == "https") {
@@ -124,7 +123,7 @@ namespace Pprf {
 
             var result = get_publication(identifier, publication, truncate_level);
             var stream = result.ppub_data.as_stream();
-            var data = new BinaryData();
+            var data = new ByteComposition();
             var size = (size_t)result.ppub_data.body_size;
             while(data.read_in(stream.read_bytes(size), ref size));
             print("Got publication\n");

+ 4 - 3
src/pprf/HttpClient.vala

@@ -1,6 +1,7 @@
 
 using Pprf.Messages;
 using Invercargill;
+using Invercargill.DataStructures;
 
 namespace Pprf {
 
@@ -76,7 +77,7 @@ namespace Pprf {
 
         public class Receipticle : OutputStream {
 
-            private BinaryData output = new BinaryData();
+            private ByteBuffer output;
             private const int max_size = 8192;
 
             private Cond cond = Cond ();
@@ -122,7 +123,7 @@ namespace Pprf {
                 }
 
                 remaining = int.min(buffer.length, remaining);
-                output.append_byte_array(buffer[:remaining]);
+                output = output.concat(Wrap.byte_array(buffer[:remaining])).assert_promotion<BinaryData>().to_byte_buffer();
                 return buffer[remaining:];
             }
 
@@ -135,7 +136,7 @@ namespace Pprf {
                     throw error;
                 }
                 var written = output.write_to(buffer, buffer.length);
-                output = output.slice((int)written, output.count());
+                output = output.slice((int)written, output.count()).to_byte_buffer();
                 cond.broadcast();
                 mutex.unlock();
                 return written;

+ 6 - 6
src/pprf/Identity.vala

@@ -1,5 +1,5 @@
 using Invercargill;
-using Invercargill.Convert;
+using Invercargill.DataStructures;
 
 namespace Pprf {
 
@@ -18,7 +18,7 @@ namespace Pprf {
 
         public MemberIdentity(Ppub.Collection collection, string member_name, Ppub.CollectionMemberCredentials credentials) {
             name = member_name;
-            this.collection_id = new BinaryData.from_byte_array(collection.id);
+            this.collection_id = Wrap.byte_array(collection.id);
             this.credentials = credentials;
             refresh(collection);
         }
@@ -26,7 +26,7 @@ namespace Pprf {
         public void refresh(Ppub.Collection collection) {
             collection_shared_signature_key = collection.shared_signature_key;
             collection_secret = collection.members.first(m => m.name == name).collection_secret.copy();
-            current_state_token = new BinaryData.from_byte_array(collection.current_state_token);
+            current_state_token = Wrap.byte_array(collection.current_state_token);
         }
 
         public uint8[] sign_with_individual_signature(uint8[] data) {
@@ -45,10 +45,10 @@ namespace Pprf {
         public static Enumerable<MemberIdentity> get_usable_identities(Enumerable<Ppub.CollectionMemberCredentials> credentials, Ppub.Collection collection) {
             var identities = new Vector<MemberIdentity>();
             foreach (var member in collection.members) {
-                var sign_key = new BinaryData.from_byte_array(member.public_keys.signing_key);
-                var seal_key = new BinaryData.from_byte_array(member.public_keys.sealing_key);
+                var sign_key = Wrap.byte_array(member.public_keys.signing_key);
+                var seal_key = Wrap.byte_array(member.public_keys.sealing_key);
 
-                var cred = credentials.first_or_default(c => sign_key.equals(ate(c.public_signing_key)) && seal_key.equals(ate(c.public_sealing_key)));
+                var cred = credentials.first_or_default(c => sign_key.equals(Wrap.array(c.public_signing_key)) && seal_key.equals(Wrap.array(c.public_sealing_key)));
                 if(cred != null) {
                     identities.add(new MemberIdentity(collection, member.name, cred));
                 }

+ 1 - 1
src/pprf/Messages/AuthenticatedMessage.vala

@@ -14,7 +14,7 @@ namespace Pprf.Messages {
 
             var name_len = stream.read_byte();
             if(name_len > 0) {
-                member_name = new BinaryData.from_bytes(stream.read_bytes (name_len)).to_raw_string();
+                member_name = Wrap.bytes(stream.read_bytes (name_len)).to_raw_string();
             }
 
             var data_len = stream.read_uint16();

+ 1 - 1
src/pprf/Messages/BeginUpload.vala

@@ -15,7 +15,7 @@ namespace Pprf.Messages {
             base.deserialise (stream);
             file_size = stream.read_uint64();
             var name_size = stream.read_byte();
-            member_name = new BinaryData.from_bytes(stream.read_bytes(name_size)).to_raw_string();
+            member_name = Wrap.bytes(stream.read_bytes(name_size)).to_raw_string();
         }
     
         public override uint64 calculate_size() {

+ 1 - 1
src/pprf/Messages/CollectionMessage.vala

@@ -10,7 +10,7 @@ namespace Pprf.Messages {
             base.deserialise (stream);
             var id = new uint8[Sodium.Asymmetric.Signing.PUBLIC_KEY_BYTES];
             stream.read(id);
-            collection_id = new BinaryData.from_byte_array (id);
+            collection_id = Wrap.byte_array(id);
         }
 
         public override uint64 calculate_size() {

+ 1 - 1
src/pprf/Messages/Failure.vala

@@ -19,7 +19,7 @@ namespace Pprf.Messages {
             if(msg_len > 0) {
                 var name_data = new uint8[msg_len];
                 stream.read(name_data);
-                message = new BinaryData.from_byte_array(name_data).to_raw_string();
+                message = Wrap.byte_array(name_data).to_raw_string();
             }
         }
     

+ 1 - 1
src/pprf/Messages/FinaliseUpload.vala

@@ -27,7 +27,7 @@ namespace Pprf.Messages {
             if(name_len > 0) {
                 var name_data = new uint8[name_len];
                 stream.read(name_data);
-                destination = new BinaryData.from_byte_array(name_data).to_raw_string();
+                destination = Wrap.byte_array(name_data).to_raw_string();
             }
         }
     

+ 3 - 3
src/pprf/Messages/GetAsset.vala

@@ -29,14 +29,14 @@ namespace Pprf.Messages {
             if(pub_name_len > 0) {
                 var data = new uint8[pub_name_len];
                 stream.read(data);
-                publication_name = new BinaryData.from_byte_array(data).to_raw_string();
+                publication_name = Wrap.byte_array(data).to_raw_string();
             }
 
             var ass_name_len = stream.read_uint16();
             if(ass_name_len > 0) {
                 var data = new uint8[ass_name_len];
                 stream.read(data);
-                asset_name = new BinaryData.from_byte_array(data).to_raw_string();
+                asset_name = Wrap.byte_array(data).to_raw_string();
             }
 
             skip = stream.read_uint64();
@@ -95,7 +95,7 @@ namespace Pprf.Messages {
             if(mime_len > 0) {
                 var data = new uint8[mime_len];
                 stream.read(data);
-                mime_type = new BinaryData.from_byte_array(data).to_raw_string();
+                mime_type = Wrap.byte_array(data).to_raw_string();
             }
 
             var data_len = (size_t)stream.read_uint64();

+ 1 - 1
src/pprf/Messages/GetCollection.vala

@@ -20,7 +20,7 @@ namespace Pprf.Messages {
             base.deserialise (stream);
             
             var data_len = (size_t)stream.read_uint32();
-            var data = new BinaryData();
+            var data = new ByteComposition();
             while(data.read_in(stream.read_bytes(data_len), ref data_len));
 
             var ds = new MemoryInputStream.from_data(data.to_array());

+ 7 - 7
src/pprf/Messages/GetListing.vala

@@ -1,5 +1,5 @@
 using Invercargill;
-using Invercargill.Convert;
+using Invercargill.DataStructures;
 using Ppub;
 
 namespace Pprf.Messages {
@@ -48,7 +48,7 @@ namespace Pprf.Messages {
                 if(tag_len > 0) {
                     var tag_data = new uint8[tag_len];
                     stream.read(tag_data);
-                    tag = new BinaryData.from_byte_array(tag_data).to_raw_string();
+                    tag = Wrap.byte_array(tag_data).to_raw_string();
                 }
             }
 
@@ -57,7 +57,7 @@ namespace Pprf.Messages {
                 if(query_len > 0) {
                     var query_data = new uint8[query_len];
                     stream.read(query_data);
-                    query = new BinaryData.from_byte_array(query_data).to_raw_string();
+                    query = Wrap.byte_array(query_data).to_raw_string();
                 }
             }
 
@@ -66,7 +66,7 @@ namespace Pprf.Messages {
                 if(date_len > 0) {
                     var date_data = new uint8[date_len];
                     stream.read(date_data);
-                    var date_str = new BinaryData.from_byte_array(date_data).to_raw_string();
+                    var date_str = Wrap.byte_array(date_data).to_raw_string();
                     since = new DateTime.from_iso8601(date_str, null);
                 }
             }
@@ -226,7 +226,7 @@ namespace Pprf.Messages {
                 s += 1 + date_str.data.length;
             }
             if((cols & ListingColumn.TAGS) != 0) {
-                var tag_str = ate(metadata.tags).to_string(s => s, " ");
+                var tag_str = Wrap.array(metadata.tags).to_string(s => s, " ");
                 s += 2 + tag_str.data.length;
             }
             if((cols & ListingColumn.POSTER) != 0) {
@@ -265,7 +265,7 @@ namespace Pprf.Messages {
                 stream.put_string(date);
             }
             if((cols & ListingColumn.TAGS) != 0) {
-                var tags = ate(metadata.tags).to_string(s => s, " ");
+                var tags = Wrap.array(metadata.tags).to_string(s => s, " ");
                 stream.put_byte((uint8)tags.data.length);
                 stream.put_string(tags);
             }
@@ -291,7 +291,7 @@ namespace Pprf.Messages {
             if(length == 0) {
                 return null;
             }
-            var data = new BinaryData();
+            var data = new ByteComposition();
             var remaining = (size_t)length;
             while(data.read_in(stream.read_bytes(remaining), ref remaining));
             return data.to_raw_string();

+ 1 - 1
src/pprf/Messages/GetPublication.vala

@@ -28,7 +28,7 @@ namespace Pprf.Messages {
             if(pub_name_len > 0) {
                 var data = new uint8[pub_name_len];
                 stream.read(data);
-                publication_name = new BinaryData.from_byte_array(data).to_raw_string();
+                publication_name = Wrap.byte_array(data).to_raw_string();
             }
         }
     

+ 1 - 1
src/pprf/Messages/IdentifyServer.vala

@@ -20,7 +20,7 @@ namespace Pprf.Messages {
             base.deserialise (stream);
             var key = new uint8[Sodium.Asymmetric.Sealing.PUBLIC_KEY_BYTES];
             stream.read(key);
-            public_key = new BinaryData.from_byte_array (key);
+            public_key = Wrap.byte_array (key);
         }
 
         public override uint64 calculate_size() {

+ 5 - 5
src/pprf/Messages/Publish.vala

@@ -1,5 +1,5 @@
 using Invercargill;
-using Invercargill.Convert;
+using Invercargill.DataStructures;
 
 namespace Pprf.Messages {
 
@@ -14,7 +14,7 @@ namespace Pprf.Messages {
         public override void authenticate(MemberIdentity identity) {
             member_name = identity.name;
             var checksum = Util.string_checksum(publication_string);
-            var auth = new BinaryData.from_byte_array(checksum);
+            var auth = new ByteComposition.from_byte_array(checksum);
             auth.append(identity.current_state_token);
 
             authentication = identity.sign_with_individual_signature(auth.to_array());
@@ -27,10 +27,10 @@ namespace Pprf.Messages {
                 return false;
 
             var checksum = Util.string_checksum(publication_string);
-            var compare = new BinaryData.from_byte_array(checksum);
+            var compare = new ByteComposition.from_byte_array(checksum);
             compare.append_byte_array(collection.current_state_token);
             
-            return compare.equals(ate(auth));
+            return compare.to_byte_buffer().equals(Wrap.array(auth));
         }
     
         public override void deserialise (GLib.DataInputStream stream) throws Error {
@@ -38,7 +38,7 @@ namespace Pprf.Messages {
 
             var data_len = stream.read_uint16();
             if(data_len > 0) {
-                publication_string = new BinaryData.from_bytes(stream.read_bytes (data_len)).to_raw_string();
+                publication_string = Wrap.bytes(stream.read_bytes (data_len)).to_raw_string();
             }
         }
     

+ 3 - 4
src/pprf/Messages/RebuildIndex.vala

@@ -1,5 +1,4 @@
 using Invercargill;
-using Invercargill.Convert;
 
 namespace Pprf.Messages {
 
@@ -11,7 +10,7 @@ namespace Pprf.Messages {
 
         public override void authenticate(MemberIdentity identity) {
             member_name = identity.name;
-            var auth = new BinaryData.from_byte_array(new uint8[] { 'P', 'P', 'I', 'X', 0xFF });
+            var auth = new ByteComposition.from_byte_array(new uint8[] { 'P', 'P', 'I', 'X', 0xFF });
             auth.append(identity.current_state_token);
             authentication = identity.sign_with_individual_signature(auth.to_array());
         }
@@ -22,10 +21,10 @@ namespace Pprf.Messages {
             if(auth == null)
                 return false;
 
-            var compare = new BinaryData.from_byte_array(new uint8[] { 'P', 'P', 'I', 'X', 0xFF });
+            var compare = new ByteComposition.from_byte_array(new uint8[] { 'P', 'P', 'I', 'X', 0xFF });
             compare.append_byte_array(collection.current_state_token);
             
-            return compare.equals(ate(auth));
+            return compare.to_byte_buffer().equals(Wrap.array(auth));
         }
     }
 }

+ 3 - 4
src/pprf/Messages/RegisterName.vala

@@ -1,5 +1,4 @@
 using Invercargill;
-using Invercargill.Convert;
 
 namespace Pprf.Messages {
 
@@ -23,8 +22,8 @@ namespace Pprf.Messages {
                 return false;
 
             var checksum = Util.string_checksum(name);
-            var compare = new BinaryData.from_byte_array(checksum);          
-            return compare.equals(ate(auth));
+            var compare = Wrap.byte_array(checksum);          
+            return compare.equals(Wrap.array(auth));
         }
     
         public override void deserialise (GLib.DataInputStream stream) throws Error {
@@ -33,7 +32,7 @@ namespace Pprf.Messages {
             var name_len = stream.read_byte();
             name = "";
             if(name_len > 0) {
-                name = new BinaryData.from_bytes(stream.read_bytes (name_len)).to_raw_string();
+                name = Wrap.bytes(stream.read_bytes (name_len)).to_raw_string();
             }
         }
     

+ 4 - 5
src/pprf/Messages/Unpublish.vala

@@ -1,5 +1,4 @@
 using Invercargill;
-using Invercargill.Convert;
 
 namespace Pprf.Messages {
 
@@ -14,7 +13,7 @@ namespace Pprf.Messages {
         public override void authenticate(MemberIdentity identity) {
             member_name = identity.name;
             var checksum = Util.string_checksum(publication_name);
-            var auth = new BinaryData.from_byte_array(checksum);
+            var auth = new ByteComposition.from_byte_array(checksum);
             auth.append(identity.current_state_token);
 
             authentication = identity.sign_with_individual_signature(auth.to_array());
@@ -27,10 +26,10 @@ namespace Pprf.Messages {
                 return false;
 
             var checksum = Util.string_checksum(publication_name);
-            var compare = new BinaryData.from_byte_array(checksum);
+            var compare = new ByteComposition.from_byte_array(checksum);
             compare.append_byte_array(collection.current_state_token);
             
-            return compare.equals(ate(auth));
+            return compare.to_byte_buffer().equals(Wrap.array(auth));
         }
     
         public override void deserialise (GLib.DataInputStream stream) throws Error {
@@ -38,7 +37,7 @@ namespace Pprf.Messages {
 
             var name_len = stream.read_byte();
             if(name_len > 0) {
-                publication_name = new BinaryData.from_bytes(stream.read_bytes (name_len)).to_raw_string();
+                publication_name = Wrap.bytes(stream.read_bytes (name_len)).to_raw_string();
             }
         }
     

+ 1 - 1
src/tools/pprf/Pprf.vala

@@ -5,7 +5,7 @@ public static int main(string[] args) {
     var creds = new Ppub.CollectionMemberCredentials.from_string("PPCLMC\nPKSIG EDXLsUvOZEne+xcv+huvSaqNBs8TTldCv6hd69GdmYw=\nPKENC WF6pIAlSeol1Ikpr2N5iO8fsjoFGf02DGafJ/aBuSB4=\nSKSIG 0njSgyndiE1tND5IGM8rrd/6QQQ284mDYGarkjfK57MQNcuxS85kSd77Fy/6G69Jqo0GzxNOV0K/qF3r0Z2ZjA==\nSKENC R18jlqqbdjmf4lbocONVudFfNoB+mhSe+iffoH8DEN4=");
 
     //  var uri = new Ppub.CollectionUri.from_string(args[2]);
-    var collection_id = new Invercargill.BinaryData.from_base64("y8ibw54A93LDBKbgWm1EJ/WlbOkGX60DK+qp2lBHpjk="); // new Invercargill.BinaryData.from_byte_array(uri.collection_id); //new Invercargill.BinaryData.from_base64("y8ibw54A93LDBKbgWm1EJ/WlbOkGX60DK+qp2lBHpjk=");
+    var collection_id = Invercargill.Wrap.base64_string("y8ibw54A93LDBKbgWm1EJ/WlbOkGX60DK+qp2lBHpjk="); // new Invercargill.BinaryData.from_byte_array(uri.collection_id); //new Invercargill.BinaryData.from_base64("y8ibw54A93LDBKbgWm1EJ/WlbOkGX60DK+qp2lBHpjk=");
     
     var client = new Pprf.HttpPprfClient("http://localhost:8080/");
     var results = client.get_listing(collection_id, 0, 10, Pprf.Messages.ListingColumn.TITLE | Pprf.Messages.ListingColumn.AUTHOR | Pprf.Messages.ListingColumn.POSTER);