/// <summary> /// Pack a candidate object into storable data /// </summary> /// <param name="c">The candidate object to pack</param> /// <param name="password">The password provided by the candidate</param> /// <param name="privKey">The private key to sign the data with</param> /// <returns></returns> public static byte[] Pack(Candidate c, string password, RSAParameters privKey) { // Serialize with MsgPack var data = c.Serialize(); // Encrypted serialized data with password data = Crypto.AES_Encrypt(data, password); // Generate a unique ID by hashing the encrypted serialized data var uid = SHA512.Create().ComputeHash(data); // Append the uid to the front of encrypted data data = uid.Concat(data).ToArray(); // Sign the data and append the RSA signature to the end data = data.Concat(Crypto.RSA_Sign(data, privKey)).ToArray(); return(data); }
/// <summary> /// Pack a candidate object into storable data /// </summary> /// <param name="c">The candidate object to pack</param> /// <param name="password">The password provided by the candidate</param> /// <param name="privKey">The private key to sign the data with</param> /// <returns></returns> public static byte[] Pack(Candidate c, string password, RSAParameters privKey) { // Serialize with MsgPack var data = c.Serialize(); // Encrypted serialized data with password data = Crypto.AES_Encrypt(data, password); // Generate a unique ID by hashing the encrypted serialized data var uid = SHA512.Create().ComputeHash(data); // Append the uid to the front of encrypted data data = uid.Concat(data).ToArray(); // Sign the data and append the RSA signature to the end data = data.Concat(Crypto.RSA_Sign(data, privKey)).ToArray(); return data; }