/// <summary> /// Add a device to an application profile /// </summary> /// <param name="Entry">Applicationprofile entry to update</param> /// <param name="PersonalProfile">Personal profile to link to</param> /// <param name="Device">Signed device profile.</param> public void AddDevice(ApplicationProfileEntry Entry, PersonalProfile PersonalProfile, SignedDeviceProfile Device) { // Add an entry into the application profile // This is not required for profile maintenance but // is needed for navigation (it seems. //Entry.ApplicationProfile.AddDevice(Device); // Add entries into the application profile entry // This sets up the permissions. Entry.AddDevice(Device); var SignedAppProfile = MeshClient.GetApplicationProfile(Entry.Identifier); if (SignedAppProfile == null) return; var AppProfile = SignedAppProfile.Signed; AppProfile.Link(PersonalProfile); AppProfile.EncryptPrivate(); var NewSignedAppProfile = new SignedApplicationProfile(AppProfile); MeshClient.Publish(NewSignedAppProfile); }
/// <summary> /// Add an application to the profile /// </summary> /// <param name="ApplicationProfile">The application profile to add.</param> /// <returns>The appliccation profile entry</returns> public ApplicationProfileEntry Add(ApplicationProfile ApplicationProfile) { var ApplicationProfileEntry = new ApplicationProfileEntry(); ApplicationProfileEntry.Identifier = ApplicationProfile.Identifier; ApplicationProfileEntry.Type = ApplicationProfile.Tag(); if (Applications == null) { Applications = new List<ApplicationProfileEntry>(); } Applications.Add(ApplicationProfileEntry); return ApplicationProfileEntry; }
private void GetPasswordProfile () { PasswordEntry = SignedPersonalProfile.Signed.GetApplicationEntryPassword( null); PasswordRegistration = Machine.Get(PasswordEntry); SignedApplicationWeb = PasswordRegistration.Profile; PasswordProfile = SignedApplicationWeb.Signed as PasswordProfile; PasswordProfile.Link (SignedPersonalProfile.Signed, PasswordEntry); PasswordProfilePrivate = PasswordProfile.Private; return; }
///// <summary> ///// Create a new application profile and add it to the UserProfile. ///// </summary> ///// <param name="PersonalProfile">The personal profile to attach to.</param> ///// <param name="Type">Application type</param> ///// <param name="Tag">Friendly name</param> //public ApplicationProfile(PersonalProfile PersonalProfile, // string Type, string Tag) { // this.PersonalProfile = PersonalProfile; // Identifier = Goedel.Cryptography.UDF.Random(); // } /// <summary> /// Connect an application profile read from store to a PersonalProfile object. /// </summary> /// <param name="PersonalProfile">Personal profile to link</param> public void Link(PersonalProfile PersonalProfile) { ApplicationProfileEntry = PersonalProfile.GetApplicationEntry(Identifier); if (ApplicationProfileEntry == null) throw new Throw("Not found"); Link(PersonalProfile, ApplicationProfileEntry); ApplicationProfileEntry.ApplicationProfile = this; }
/// <summary> /// Connect an application profile read from store to a PersonalProfile object. /// </summary> /// <param name="PersonalProfile">Personal profile to link</param> /// <param name="ApplicationProfileEntry">Profile entry to link to</param> public void Link(PersonalProfile PersonalProfile, ApplicationProfileEntry ApplicationProfileEntry) { this.PersonalProfile = PersonalProfile; this.ApplicationProfileEntry = ApplicationProfileEntry; ApplicationProfileEntry.ApplicationProfile = this; }
/// <summary> /// Construct an instance from the specified tagged JSONReader stream. /// </summary> /// <param name="JSONReader">Input stream</param> /// <param name="Out">The created object</param> public static void Deserialize(JSONReader JSONReader, out JSONObject Out) { JSONReader.StartObject (); if (JSONReader.EOR) { Out = null; return; } string token = JSONReader.ReadToken (); Out = null; switch (token) { case "PublicKey" : { var Result = new PublicKey (); Result.Deserialize (JSONReader); Out = Result; break; } case "SignedData" : { var Result = new SignedData (); Result.Deserialize (JSONReader); Out = Result; break; } case "EncryptedData" : { var Result = new EncryptedData (); Result.Deserialize (JSONReader); Out = Result; break; } case "Connection" : { var Result = new Connection (); Result.Deserialize (JSONReader); Out = Result; break; } case "Entry" : { var Result = new Entry (); Result.Deserialize (JSONReader); Out = Result; break; } case "SignedProfile" : { var Result = new SignedProfile (); Result.Deserialize (JSONReader); Out = Result; break; } case "Profile" : { Out = null; throw new Exception ("Can't create abstract type"); } case "SignedDeviceProfile" : { var Result = new SignedDeviceProfile (); Result.Deserialize (JSONReader); Out = Result; break; } case "DeviceProfile" : { var Result = new DeviceProfile (); Result.Deserialize (JSONReader); Out = Result; break; } case "DevicePrivateProfile" : { var Result = new DevicePrivateProfile (); Result.Deserialize (JSONReader); Out = Result; break; } case "SignedMasterProfile" : { var Result = new SignedMasterProfile (); Result.Deserialize (JSONReader); Out = Result; break; } case "MasterProfile" : { var Result = new MasterProfile (); Result.Deserialize (JSONReader); Out = Result; break; } case "SignedPersonalProfile" : { var Result = new SignedPersonalProfile (); Result.Deserialize (JSONReader); Out = Result; break; } case "PersonalProfile" : { var Result = new PersonalProfile (); Result.Deserialize (JSONReader); Out = Result; break; } case "SignedApplicationProfile" : { var Result = new SignedApplicationProfile (); Result.Deserialize (JSONReader); Out = Result; break; } case "EncryptedProfile" : { var Result = new EncryptedProfile (); Result.Deserialize (JSONReader); Out = Result; break; } case "ApplicationProfile" : { var Result = new ApplicationProfile (); Result.Deserialize (JSONReader); Out = Result; break; } case "ApplicationProfilePrivate" : { var Result = new ApplicationProfilePrivate (); Result.Deserialize (JSONReader); Out = Result; break; } case "ApplicationProfileEntry" : { var Result = new ApplicationProfileEntry (); Result.Deserialize (JSONReader); Out = Result; break; } case "EscrowEntry" : { var Result = new EscrowEntry (); Result.Deserialize (JSONReader); Out = Result; break; } case "OfflineEscrowEntry" : { var Result = new OfflineEscrowEntry (); Result.Deserialize (JSONReader); Out = Result; break; } case "OnlineEscrowEntry" : { var Result = new OnlineEscrowEntry (); Result.Deserialize (JSONReader); Out = Result; break; } case "EscrowedKeySet" : { var Result = new EscrowedKeySet (); Result.Deserialize (JSONReader); Out = Result; break; } case "ConnectionRequest" : { var Result = new ConnectionRequest (); Result.Deserialize (JSONReader); Out = Result; break; } case "SignedConnectionRequest" : { var Result = new SignedConnectionRequest (); Result.Deserialize (JSONReader); Out = Result; break; } case "ConnectionResult" : { var Result = new ConnectionResult (); Result.Deserialize (JSONReader); Out = Result; break; } case "SignedConnectionResult" : { var Result = new SignedConnectionResult (); Result.Deserialize (JSONReader); Out = Result; break; } default : { throw new Exception ("Not supported"); } } JSONReader.EndObject (); }
/// <summary> /// Deserialize a tagged stream /// </summary> /// <param name="JSONReader">The input stream</param> /// <returns>The created object.</returns> public static new ApplicationProfileEntry FromTagged (JSONReader JSONReader) { ApplicationProfileEntry Out = null; JSONReader.StartObject (); if (JSONReader.EOR) { return null; } string token = JSONReader.ReadToken (); switch (token) { case "ApplicationProfileEntry" : { var Result = new ApplicationProfileEntry (); Result.Deserialize (JSONReader); Out = Result; break; } default : { //Ignore the unknown data //throw new Exception ("Not supported"); break; } } JSONReader.EndObject (); return Out; }
/// <summary> /// Having read a tag, process the corresponding value data. /// </summary> /// <param name="JSONReader">The input stream</param> /// <param name="Tag">The tag</param> public override void DeserializeToken (JSONReader JSONReader, string Tag) { switch (Tag) { case "SignedMasterProfile" : { // An untagged structure SignedMasterProfile = new SignedMasterProfile (JSONReader); break; } case "Devices" : { // Have a sequence of values bool _Going = JSONReader.StartArray (); Devices = new List <SignedDeviceProfile> (); while (_Going) { // an untagged structure. var _Item = new SignedDeviceProfile (JSONReader); Devices.Add (_Item); _Going = JSONReader.NextArray (); } break; } case "Applications" : { // Have a sequence of values bool _Going = JSONReader.StartArray (); Applications = new List <ApplicationProfileEntry> (); while (_Going) { // an untagged structure. var _Item = new ApplicationProfileEntry (JSONReader); Applications.Add (_Item); _Going = JSONReader.NextArray (); } break; } default : { base.DeserializeToken(JSONReader, Tag); break; } } // check up that all the required elements are present }