public IActionResult CreateMessage(CreateMessageModel model) { if (ModelState.IsValid) { var email = new Message { EmailSender = User.Identity.Name, EmailReceiver = model.EmailReceiver, Text = model.Text, AttachedFile = model.File }; var rsaEncryption = new RSAEncryption(email.EmailReceiver); var digitalSignature = new DigitalSignature(email.EmailSender); var encryptedMessage = _messageEncryptionService.EncryptData(email, rsaEncryption, digitalSignature); if (email.AttachedFile != null) { _fileEncryptionService.EncryptFile(email.AttachedFile, encryptedMessage, rsaEncryption, digitalSignature); } return(RedirectToAction(nameof(MessageSentSuccessfully))); } return(View()); }
public ChatTopic UploadChatTopic(Chat tag, HypertextFormatType formatType, string hypertext, int miningLimit, TimeSpan miningTime, DigitalSignature digitalSignature) { lock (this.ThisLock) { var uploadItem = new UploadItem(); uploadItem.Type = "ChatTopic"; uploadItem.ChatTopic = new ChatTopic(tag, DateTime.UtcNow, formatType, hypertext, digitalSignature); uploadItem.MiningLimit = miningLimit; uploadItem.MiningTime = miningTime; uploadItem.DigitalSignature = digitalSignature; _settings.UploadItems.RemoveAll((target) => { return(target.Type == uploadItem.Type && target.ChatTopic.Tag == uploadItem.ChatTopic.Tag && target.DigitalSignature == digitalSignature); }); _settings.UploadItems.Add(uploadItem); return(uploadItem.ChatTopic); } }
public void TestBasicSigningAndVerification() { var encryptionManager = new EncryptionManager(new KeyStore(new KeyStoreRepository(new DataContext()))); var hashManager = new HashManager(); var cryptoService = new CryptographyService.CryptographyService(encryptionManager, hashManager); var wrappedCryptoService = new CryptoServiceWrapper <FabricSigning>(cryptoService, null); var signingContent = GenerateSampleFabricSignContent(); var signingOutcome = wrappedCryptoService.SignContent(signingContent); var signature = new DigitalSignature <FabricSigning>() { OriginalContent = signingContent, SignedContent = signingOutcome.Signature, SignatoryReference = signingOutcome.SignatoryReference }; var signOutcome = wrappedCryptoService.VerifySignature(signature); Assert.IsTrue(signOutcome.SignatoryMatchedToSignature); Assert.IsTrue(signOutcome.SignedContentMatchesToSignature); // This represents application side verification of signed content. Helpful to identify what in content has changed Assert.IsTrue(signOutcome.ExpectedContent?.Agreements?.FirstOrDefault().Description == signOutcome.SignedContent?.Agreements?.FirstOrDefault().Description); }
public WikiDocument UploadWikiDocument(Wiki tag, IEnumerable <WikiPage> wikiPages, int miningLimit, TimeSpan miningTime, DigitalSignature digitalSignature) { lock (this.ThisLock) { var uploadItem = new UploadItem(); uploadItem.Type = "WikiDocument"; uploadItem.WikiDocument = new WikiDocument(tag, DateTime.UtcNow, wikiPages, digitalSignature); uploadItem.MiningLimit = miningLimit; uploadItem.MiningTime = miningTime; uploadItem.DigitalSignature = digitalSignature; _settings.UploadItems.RemoveAll((target) => { return(target.Type == uploadItem.Type && target.WikiDocument.Tag == uploadItem.WikiDocument.Tag && target.DigitalSignature == digitalSignature); }); _settings.UploadItems.Add(uploadItem); return(uploadItem.WikiDocument); } }
public Task Upload(Tag tag, ChatMessage chatMessage, DigitalSignature digitalSignature, TimeSpan miningTime, CancellationToken token) { if (tag == null) { throw new ArgumentNullException(nameof(tag)); } if (chatMessage == null) { throw new ArgumentNullException(nameof(chatMessage)); } if (digitalSignature == null) { throw new ArgumentNullException(nameof(digitalSignature)); } return(_coreManager.VolatileSetStream(ContentConverter.ToStream(chatMessage), TimeSpan.FromDays(360), token) .ContinueWith(task => { MulticastMetadata multicastMetadata; try { var miner = new Miner(CashAlgorithm.Version1, -1, miningTime); multicastMetadata = new MulticastMetadata("ChatMessage", tag, DateTime.UtcNow, task.Result, digitalSignature, miner, token); } catch (MinerException) { return; } _coreManager.UploadMetadata(multicastMetadata); })); }
public byte[] CreateSignature(byte[] data, string signCertCN) { X509Certificate2 certificateSign = CertManager.GetCertificateFromStorage(StoreName.My, StoreLocation.LocalMachine, signCertCN); return(DigitalSignature.Create(data, HashAlgorithm.SHA1, certificateSign)); }
public VerificationResult <T> VerifySignature(DigitalSignature <T> signature) { var serializedOriginalContent = JsonConvert.SerializeObject(signature.OriginalContent); var mappedSigniture = new DigitalSignature <string> { SignatoryReference = signature.SignatoryReference, SignedContent = signature.SignedContent, OriginalContent = serializedOriginalContent }; var serverVerification = cryptoService.VerifySignature(mappedSigniture); var expectedContent = JsonConvert.DeserializeObject <T>(serverVerification.ExpectedContent); var signedContent = JsonConvert.DeserializeObject <T>(serverVerification.SignedContent); return(new VerificationResult <T> { CreatedDateTime = serverVerification.CreatedDateTime, IpAddress = serverVerification.IpAddress, SignatoryEmailAddress = serverVerification.SignatoryEmailAddress, SignatoryMatchedToSignature = serverVerification.SignatoryMatchedToSignature, SignedContentMatchesToSignature = serverVerification.SignedContentMatchesToSignature, SignedContent = signedContent, ExpectedContent = expectedContent }); }
public bool Verify() { if (!DigitalSignature.Verify(Hash, Inputs.First().PublicKey, Signature)) { return(false); } if (Outputs.Sum(a => a.Amount) > Inputs.Sum(b => b.Amount)) { return(false); } var isVerified = true; Inputs.ForEach(a => { var utxo = Transaction.CollectUTXO(BlocksController.blockChain, a.PublicKey); if (utxo.Values.Where(b => b.Outputs.Any(c => c.PublicKey.Equals(a.PublicKey) && b.Hash.Equals(a.TxHash))).Count() != 1) { isVerified = false; } }); if (!isVerified) { return(false); } return(true); }
private void _okButton_Click(object sender, RoutedEventArgs e) { this.DialogResult = true; string name = _nameTextBox.Text; string comment = string.IsNullOrWhiteSpace(_commentTextBox.Text) ? null : _commentTextBox.Text; var digitalSignatureComboBoxItem = _signatureComboBox.SelectedItem as DigitalSignatureComboBoxItem; DigitalSignature digitalSignature = digitalSignatureComboBoxItem == null ? null : digitalSignatureComboBoxItem.Value; var now = DateTime.UtcNow; foreach (var box in _boxes) { lock (box.ThisLock) { if (!_nameTextBox.IsReadOnly) { box.Name = name; } box.Comment = comment; box.CreationTime = now; if (digitalSignature == null) { box.CreateCertificate(null); } else { box.CreateCertificate(digitalSignature); } } } }
public static void Run() { // ExStart:1 //Source directory string sourceDir = RunExamples.Get_SourceDirectory(); //Output directory string outputDir = RunExamples.Get_OutputDirectory(); Workbook workbook = new Workbook(sourceDir + "sourceFile.xlsx"); string password = "******"; string pfx = "pfxFile"; DigitalSignature signature = new DigitalSignature(File.ReadAllBytes(pfx), password, "testXAdES", DateTime.Now); signature.XAdESType = XAdESType.XAdES; DigitalSignatureCollection dsCollection = new DigitalSignatureCollection(); dsCollection.Add(signature); workbook.SetDigitalSignature(dsCollection); workbook.Save(outputDir + "XAdESSignatureSupport_out.xlsx"); // ExEnd:1 Console.WriteLine("XAdESSignatureSupport executed successfully."); }
public static void Run() { // ExStart:AssignAndValidateDigitalSignatures // The path to the documents directory. string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); // dsc is signature collection contains one or more signature needed to sign DigitalSignatureCollection dsc = new DigitalSignatureCollection(); // Cert must contain private key, it can be contructed from cert file or windows certificate collection. aa is password of cert X509Certificate2 cert = new X509Certificate2(dataDir + "mykey2.pfx", "aa"); DigitalSignature ds = new DigitalSignature(cert, "test for sign", DateTime.Now); dsc.Add(ds); Workbook wb = new Workbook(); // wb.SetDigitalSignature signs all signatures in dsc wb.SetDigitalSignature(dsc); wb.Save(dataDir + @"newfile_out.xlsx"); // open the file wb = new Workbook(dataDir + @"newfile_out.xlsx"); System.Console.WriteLine(wb.IsDigitallySigned); // Get digitalSignature collection from workbook dsc = wb.GetDigitalSignature(); foreach (DigitalSignature dst in dsc) { System.Console.WriteLine(dst.Comments); //test for sign -OK System.Console.WriteLine(dst.SignTime); //11/25/2010 1:22:01 PM -OK System.Console.WriteLine(dst.IsValid); //True -OK } // ExEnd:AssignAndValidateDigitalSignatures }
public bool Verify() { try { if (PublicKey == null || Sign == null) { return(false); } var rew = new Reward() { Achivement = Achivement, Coin = Coin, Exp = Exp, SkillPoint = SkillPoint, PublicKey = PublicKey, }; var json = Util.SerializeJsonBinary(rew, false); var ds = DigitalSignature.FromKey(Util.FromBase58(Achivement.PublicPub)); return(ds.Verify(json, Util.FromBase58(Sign))); } catch { } return(false); }
public IActionResult Post([FromBody] WebhookRequest webhookRequest, [FromHeader(Name = "DigitalSignature")] string digitalSignature) { Console.WriteLine($"Received webhook: {webhookRequest.Type}, payload: {webhookRequest.Payload}"); // It is important to get body from request object to calculate hash // Conversion back from WebhookRequest object may result in different string that will fail validation Request.Body.Position = 0; using var reader = new StreamReader(Request.Body); var body = reader.ReadToEnd(); var verified = DigitalSignature.Verify(digitalSignature, body, _authProfile.ClearBankPublicKey); if (!verified) { return(BadRequest("Incorrect signature")); } // In production system you should put that webhook into the internal queue for processing // Don't do heavy processing here and respond to webhook as quick as possible var result = new WebhookResponse { Nonce = webhookRequest.Nonce }; var response = JsonSerializer.Serialize(result); var signature = DigitalSignature.Generate(response, _authProfile.ClientPrivateKey); Request.HttpContext.Response.Headers.Add("DigitalSignature", signature); return(Content(response)); }
public void Test_AmoebaConverter_Seed() { var seed = new Seed(); seed.Name = "aaaa.zip"; seed.Keywords.AddRange(new KeywordCollection { "bbbb", "cccc", "dddd", }); seed.CreationTime = DateTime.Now; seed.Length = 10000; seed.Comment = "eeee"; seed.Rank = 1; seed.Key = new Key(new byte[32], HashAlgorithm.Sha256); seed.CompressionAlgorithm = CompressionAlgorithm.Xz; seed.CryptoAlgorithm = CryptoAlgorithm.Aes256; seed.CryptoKey = new byte[32 + 32]; DigitalSignature digitalSignature = new DigitalSignature("123", DigitalSignatureAlgorithm.Rsa2048_Sha256); seed.CreateCertificate(digitalSignature); var stringSeed = AmoebaConverter.ToSeedString(seed); var seed2 = AmoebaConverter.FromSeedString(stringSeed); Assert.AreEqual(seed, seed2, "AmoebaConverter #2"); }
public void Test_AmoebaConverter_Box() { var box = new Box(); box.Name = "Box"; box.Comment = "Comment"; box.CreationTime = DateTime.Now; box.Boxes.Add(new Box() { Name = "Box" }); box.Seeds.Add(new Seed() { Name = "Seed" }); DigitalSignature digitalSignature = new DigitalSignature("123", DigitalSignatureAlgorithm.EcDsaP521_Sha256); box.CreateCertificate(digitalSignature); Box box2; using (var streamBox = AmoebaConverter.ToBoxStream(box)) { box2 = AmoebaConverter.FromBoxStream(streamBox); } Assert.AreEqual(box, box2, "AmoebaConverter #3"); }
public bool ResetPinCode(SecureString pin) { try { X509Certificate2 certificate = CertManager.GetCertificateFromStorage(StoreName.My, StoreLocation.LocalMachine, username); X509Certificate2 certificateSign = CertManager.GetCertificateFromStorage(StoreName.My, StoreLocation.LocalMachine, username + "Sign"); // hash klijentskog PINa byte[] hash = DigitalSignature.CreateHash(new System.Net.NetworkCredential(string.Empty, pin).Password, "SHA1"); /// Create a signature using SHA1 hash algorithm byte[] signature = DigitalSignature.Create(new System.Net.NetworkCredential(string.Empty, pin).Password, "SHA1", certificateSign); Console.WriteLine("Delete all cert files and press any key"); Console.ReadKey(); return(ResetPinCode(signature, certificate)); } catch (Exception e) { Console.WriteLine("[ResetPinCode] ERROR = {0}", e.Message); return(false); } }
public void Upload(string filePath, string name, IEnumerable <string> keywords, string comment, DigitalSignature digitalSignature, int priority) { lock (this.ThisLock) { UploadItem item = new UploadItem(); item.State = UploadState.ComputeHash; item.Type = UploadType.Upload; item.Rank = 1; item.FilePath = filePath; item.CompressionAlgorithm = CompressionAlgorithm.Xz; item.CryptoAlgorithm = CryptoAlgorithm.Aes256; item.CorrectionAlgorithm = CorrectionAlgorithm.ReedSolomon8; item.HashAlgorithm = HashAlgorithm.Sha256; item.DigitalSignature = digitalSignature; item.Seed = new Seed(); item.Seed.Name = name; item.Seed.Keywords.AddRange(keywords); item.Seed.CreationTime = DateTime.UtcNow; item.Seed.Comment = comment; item.BlockLength = 1024 * 1024 * 1; item.Priority = priority; _settings.UploadItems.Add(item); _ids.Add(_id, item); _id++; } }
private void DCGenerateCertificateButton_Click(object sender, RoutedEventArgs e) { //Create a RSAWrapper object using the dropdown box selection. RSAWrapper envelopeRsaAlgorithm = new RSAWrapper(DCEnvelopeRsaDropdown.SelectedItem.ToString()); //Create a CipherMode object using the dropdown box selection. CipherMode cipherMode = HelperExtensions.StringToCipherMode(DCEnvelopeCipherDropdown.SelectedItem.ToString()); //Create a SymmetricAlgorithmWrapper object using the dropdown box selection and the CipherMode object. SymmetricAlgorithmWrapper symmetricAlgorithmType = HelperExtensions.StringToSymAlg(DCEnvelopeSymDropdown.SelectedItem.ToString(), cipherMode, DCEnvelopeCipherDropdown.SelectedItem.ToString()); //Create a DigitalEnvelope object using the dropdown box selection, the SymmetricAlgorithmWrapper object and the RSAWrapper object. DigitalEnvelope digitalEnvelope = new DigitalEnvelope(symmetricAlgorithmType, envelopeRsaAlgorithm, DCInputTextBox.Text); //Decrypt the envelope. DigitalEnvelopeEncrypted result = digitalEnvelope.CreateEnvelope(); //Create a HashAlgorithmName object using the dropdown box selection. HashAlgorithmName hashAlgorithmName = HelperExtensions.StringToHashAlgorithm(DCSignatureHashDropdown.SelectedItem.ToString()); //Create a RSAWrapper object using the dropdown box selection and the HashAlgorithmName object. RSAWrapper rsaAlgorithm = new RSAWrapper(DCSignatureRsaDropdown.SelectedItem.ToString(), hashAlgorithmName); //Create a DigitalSignature object using the RSAWrapper object and the encrypted envelope data. DigitalSignature digitalSignature = new DigitalSignature(rsaAlgorithm, result.EncryptedDataKeyPair()); //Create a signature for the encrypted envelope data. digitalSignature.CreateSignature(); DCInputTextBlock.Text = "Certificate generated successfully!"; }
//Authenticate the signature file. private void DSAuthenticateButton_Click(object sender, RoutedEventArgs e) { //Create a DigitalSignature object that will load all the necessary properties from saved files. DigitalSignature digitalSignature = new DigitalSignature(DSInputTextBox.Text, DSInputSignatureTextBox.Text, DSInputPublicKeyTextBox.Text); DSInputTextBlock.Text = digitalSignature.AuthenticateSignature() ? "Signature valid!" : "Signature invalid!"; }
public void Share(string filePath, string name, IEnumerable <string> keywords, string comment, DigitalSignature digitalSignature, int priority) { if (_disposed) { throw new ObjectDisposedException(this.GetType().FullName); } if (!_isLoaded) { throw new AmoebaManagerException("AmoebaManager is not loaded."); } lock (this.ThisLock) { _uploadManager.Share(filePath, name, keywords, comment, digitalSignature, priority); } }
public void HashAlgorithmTests(int keySize, string hashAlgorithm) { var ds = new DigitalSignature(keySize, hashAlgorithm); ds.AssignNewKey(); byte[] hash; switch (hashAlgorithm) { case "SHA1": hash = Hash.Create(HashType.SHA1, "Hello world", string.Empty); break; case "SHA256": hash = Hash.Create(HashType.SHA256, "Hello world", string.Empty); break; case "SHA384": hash = Hash.Create(HashType.SHA384, "Hello world", string.Empty); break; case "SHA512": hash = Hash.Create(HashType.SHA512, "Hello world", string.Empty); break; default: throw new ArgumentException("hashAlgorithm"); } var signature = ds.SignData(hash); var result = ds.VerifySignature(hash, signature); Assert.IsTrue(result); }
public void MulticastUpload(Tag tag, Message message, int miningLimit, TimeSpan miningTime, DigitalSignature digitalSignature) { if (tag == null) throw new ArgumentNullException(nameof(tag)); if (message == null) throw new ArgumentNullException(nameof(message)); if (digitalSignature == null) throw new ArgumentNullException(nameof(digitalSignature)); lock (_thisLock) { var item = new BackgroundUploadItem(); item.State = BackgroundUploadState.Encoding; item.Tag = tag; item.Message = message; item.Scheme = "Multicast"; item.Type = "Message"; item.CreationTime = DateTime.UtcNow; item.Depth = 1; item.BlockLength = 1024 * 1024 * 1; item.CorrectionAlgorithm = CorrectionAlgorithm.ReedSolomon8; item.HashAlgorithm = HashAlgorithm.Sha256; item.MiningLimit = miningLimit; item.MiningTime = miningTime; item.DigitalSignature = digitalSignature; _settings.UploadItems.Add(item); } }
private DigitalSignature method_1(Interface9 A_0, bool A_1) { int num = 1; this.digitalSignature_0 = new DigitalSignature(DigitalSignatureType.XmlDsig); this.digitalSignature_0.SignedXmlResult = A_1; while (this.class393_0.method_9(BookmarkStart.b("琦䀨䰪䌬丮䔰䘲䜴制", num))) { string str = this.class393_0.method_1(); if (str != null) { if (str != BookmarkStart.b("琦䀨䰪䌬䨮唰稲嬴儶嘸", num)) { if (!(str == BookmarkStart.b("氦䰨刪搬䄮地尲", num))) { if (!(str == BookmarkStart.b("栦䬨䄪䠬䰮䔰", num))) { goto Label_0084; } this.method_4(); } else { this.method_2(); } } else { this.method_7(); } continue; } Label_0084: this.method_15(); } bool flag = A_1; SHA1 sha = new SHA1CryptoServiceProvider(); foreach (Class731 class2 in this.digitalSignature_0.References) { if (class2.method_6()) { Stream stream = A_0.imethod_0(class2); foreach (Class557 class3 in class2.method_5()) { stream = class3.method_0(stream); } stream.Position = 0L; bool flag2 = Convert.ToBase64String(sha.ComputeHash(stream)) == class2.method_3(); class2.method_8(flag2); flag &= flag2; } else { class2.method_8(A_1); } } this.digitalSignature_0.method_2(flag); return(this.digitalSignature_0); }
public async Task <IActionResult> Update(int id, [FromBody] CreateUpdateDigitalSignature update) { if (!ModelState.IsValid) { return(new BadRequestObjectResult(new ErrorsResponse(ModelState))); } var username = User.FindFirst(c => c.Type == JwtRegisteredClaimNames.Sub).Value; var signature = new DigitalSignature { Id = id, Title = update.title, UserName = update.userName, FileName = update.fileName, imgData = update.imgData }; try { await Task.Run(() => _context.SaveChanges(() => _signatures.Update(signature))); return(Ok()); } catch (NotFoundException) { return(NotFound()); } }
public async Task <ActionResult <string> > Call([FromBody] ApiRequest request) { var requestMessage = new HttpRequestMessage(HttpMethod.Post, "v1/test"); requestMessage.Headers.Authorization = new AuthenticationHeaderValue("Bearer", _authProfile.ApiToken); // It is important to sign exactly same payload that is going to be send in the http request // Conversion from object to JSON in different places may result in different strings and request will fail digital signature validation var requestAsString = JsonSerializer.Serialize(request); requestMessage.Content = new StringContent(requestAsString, Encoding.UTF8, "application/json"); requestMessage.Headers.Add("DigitalSignature", DigitalSignature.Generate(requestAsString, _authProfile.ClientPrivateKey)); // X-Request-Id - unique string that identifies the request. Do not reuse the same in 24 hour period. // If your request result in server error, use the same X-Request-Id for retries requestMessage.Headers.Add("X-Request-Id", Guid.NewGuid().ToString("N")); using var client = new HttpClient { BaseAddress = new Uri(_authProfile.ApiUrl) }; var response = await client.SendAsync(requestMessage); // You should save X-Correlation-Id for future reference // If you have any questions about your request our support will ask you to provide X-Request-Id and X-Correlation-Id response.Headers.TryGetValues("X-Correlation-Id", out var headers); var correlationId = headers?.First(); var body = await response.Content.ReadAsStringAsync(); return($"Body: {body}, correlation id: {correlationId}"); }
internal virtual DigitalSignature CreateDigitalSignature() { // TODO: Instantiate an appropriate concrete class. DigitalSignature target = null; return(target); }
static void Main(string[] args) { // 公開鍵と秘密鍵を自動生成 var ds = DigitalSignature.Generate(); // 送金データを作成 var txA = Encoding.UTF8.GetBytes("アドレスAからアドレスBに50枚送ります"); // 送金データの署名を作成(秘密鍵で署名) var signA = ds.Sign(txA); // --- 誰かが受け取ったとする --- // 検証用のデジタル署名インスタンスを作成 var ds2 = DigitalSignature.FromKey(ds.PublicKey); // 送金データの検証(公開鍵で検証) var res = ds2.Verify(txA, signA); Console.WriteLine($"検証結果: {res}"); // true // ためしに改ざん送金データを作成 var txZ = Encoding.UTF8.GetBytes("アドレスAからアドレスZに100枚送ります"); // これは失敗 res = ds2.Verify(txZ, signA); Console.WriteLine($"検証結果: {res}"); // false Console.ReadLine(); }
public override void CreateCertificate(DigitalSignature digitalSignature) { lock (this.ThisLock) { base.CreateCertificate(digitalSignature); } }
public void SaveAndLoadKeys() { var ds = new DigitalSignature(); ds.AssignNewKey(); ds.SavePublicKey(out var exponent1, out var modulus1); ds.SavePrivateKey(out var exponent2, out var modulus2, out var p, out var q, out var dp, out var dq, out var inverseQ, out var d); var signature1 = ds.SignData(_hash); var result1 = ds.VerifySignature(_hash, signature1); Assert.IsTrue(result1); var sut = new DigitalSignature(); sut.LoadPublicKey(exponent1, modulus1); sut.LoadPrivateKey(exponent2, modulus2, p, q, dp, dq, inverseQ, d); var signature2 = ds.SignData(_hash); var result2 = ds.VerifySignature(_hash, signature2); Assert.IsTrue(result2); Assert.AreEqual(signature1, signature2); }
public static void Run() { //Source directory string sourceDir = RunExamples.Get_SourceDirectory(); //Output directory string outputDir = RunExamples.Get_OutputDirectory(); // Create workbook object from excel file Workbook wb = new Workbook(sourceDir + "sampleDigitallySignVbaProjectWithCertificate.xlsm"); // Please use System.Security.Cryptography.X509Certificates namespace for X509Certificate2 class X509Certificate2 cert = new X509Certificate2(sourceDir + "sampleDigitallySignVbaProjectWithCertificate.pfx", "1234"); // Create a Digital Signature DigitalSignature ds = new DigitalSignature(cert, "Signing Digital Signature using Aspose.Cells", DateTime.Now); // Sign VBA Code Project with Digital Signature wb.VbaProject.Sign(ds); // Save the workbook wb.Save(outputDir + "outputDigitallySignVbaProjectWithCertificate.xlsm"); Console.WriteLine("DigitallySignVbaProjectWithCertificate executed successfully."); }
public Profile UploadProfile( int cost, ExchangePublicKey exchangePublicKey, IEnumerable <string> trustSignatures, IEnumerable <string> deleteSignatures, IEnumerable <Wiki> wikis, IEnumerable <Chat> chats, DigitalSignature digitalSignature) { lock (this.ThisLock) { var uploadItem = new UploadItem(); uploadItem.Type = "Profile"; uploadItem.Profile = new Profile(DateTime.UtcNow, cost, exchangePublicKey, trustSignatures, deleteSignatures, wikis, chats, digitalSignature); uploadItem.DigitalSignature = digitalSignature; _settings.UploadItems.RemoveAll((target) => { return(target.Type == uploadItem.Type && target.DigitalSignature == digitalSignature); }); _settings.UploadItems.Add(uploadItem); return(uploadItem.Profile); } }
public SecureConnection(SecureConnectionVersion version, SecureConnectionType type, Connection connection, DigitalSignature digitalSignature, BufferManager bufferManager) { _type = type; _connection = connection; _digitalSignature = digitalSignature; _bufferManager = bufferManager; _myVersion = version; }
public void Test_DigitalSigunature() { foreach (var a in new DigitalSignatureAlgorithm[] { DigitalSignatureAlgorithm.Rsa2048_Sha256, DigitalSignatureAlgorithm.EcDsaP521_Sha256 }) { DigitalSignature sigunature = new DigitalSignature("123", a); using (var streamSigunature = DigitalSignatureConverter.ToDigitalSignatureStream(sigunature)) { var sigunature2 = DigitalSignatureConverter.FromDigitalSignatureStream(streamSigunature); Assert.AreEqual(sigunature, sigunature2, "AmoebaConverter #4"); } } }
public static void Run() { // ExStart:1 // The path to the documents directory. string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); // Create workbook object from excel file Workbook wb = new Workbook(dataDir + "Book1.xlsm"); // Please use System.Security.Cryptography.X509Certificates namespace for X509Certificate2 class X509Certificate2 cert = new X509Certificate2(dataDir + "SampleCert.pfx", "1234"); // Create a Digital Signature DigitalSignature ds = new DigitalSignature(cert, "Signing Digital Signature using Aspose.Cells", DateTime.Now); // Sign VBA Code Project with Digital Signature wb.VbaProject.Sign(ds); // Save the workbook wb.Save(dataDir + "DigitallySigned_out.xlsm"); // ExEnd:1 }
public void Upload(string filePath, string name, IEnumerable<string> keywords, DigitalSignature digitalSignature, int priority) { lock (_thisLock) { var item = new UploadItem(); item.State = UploadState.ComputeHash; item.Type = UploadType.Upload; item.Name = name; item.Keywords.AddRange(keywords); item.CreationTime = DateTime.UtcNow; item.Depth = 1; item.FilePath = filePath; item.CompressionAlgorithm = CompressionAlgorithm.Xz; item.CryptoAlgorithm = CryptoAlgorithm.Aes256; item.CorrectionAlgorithm = CorrectionAlgorithm.ReedSolomon8; item.HashAlgorithm = HashAlgorithm.Sha256; item.DigitalSignature = digitalSignature; item.BlockLength = 1024 * 1024 * 1; item.Priority = priority; _settings.UploadItems.Add(item); _idManager.Add(item); } }
public void Share(string filePath, string name, IEnumerable<string> keywords, DigitalSignature digitalSignature, int priority) { lock (_thisLock) { if (_settings.UploadItems .Where(n => n.Type == UploadType.Share) .Any(n => n.FilePath == filePath)) return; if (_cacheManager.Contains(filePath)) return; var item = new UploadItem(); item.State = UploadState.ComputeHash; item.Type = UploadType.Share; item.Name = name; item.CreationTime = DateTime.UtcNow; item.Keywords.AddRange(keywords); item.Depth = 1; item.FilePath = filePath; item.CompressionAlgorithm = CompressionAlgorithm.Xz; item.CryptoAlgorithm = CryptoAlgorithm.Aes256; item.CorrectionAlgorithm = CorrectionAlgorithm.ReedSolomon8; item.HashAlgorithm = HashAlgorithm.Sha256; item.DigitalSignature = digitalSignature; item.BlockLength = 1024 * 1024 * 1; item.Priority = priority; _settings.UploadItems.Add(item); int id = _idManager.Add(item); _shareIdLink.Add(filePath, id); } }
public void Share(string filePath, string name, IEnumerable<string> keywords, string comment, DigitalSignature digitalSignature, int priority) { lock (this.ThisLock) { UploadItem item = new UploadItem(); item.State = UploadState.ComputeHash; item.Type = UploadType.Share; item.Rank = 1; item.FilePath = filePath; item.CompressionAlgorithm = CompressionAlgorithm.Xz; item.CryptoAlgorithm = CryptoAlgorithm.Aes256; item.CorrectionAlgorithm = CorrectionAlgorithm.ReedSolomon8; item.HashAlgorithm = HashAlgorithm.Sha256; item.DigitalSignature = digitalSignature; item.Seed = new Seed(); item.Seed.Name = name; item.Seed.Keywords.AddRange(keywords); item.Seed.CreationTime = DateTime.UtcNow; item.Seed.Comment = comment; item.BlockLength = 1024 * 1024 * 1; item.Priority = priority; _settings.UploadItems.Add(item); _ids.Add(_id, item); List<int> idList = null; if (!_shareLink.TryGetValue(filePath, out idList)) { idList = new List<int>(); _shareLink[filePath] = idList; } idList.Add(_id); _id++; } }
public static Stream ToDigitalSignatureStream(DigitalSignature item) { return Converter.ToDigitalSignatureStream(item); }
public void Test_ConnectionManager() { for (int i = 0; i < 4; i++) { TcpListener listener = new TcpListener(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 60000)); listener.Start(); var listenerAcceptSocket = listener.BeginAcceptSocket(null, null); TcpClient client = new TcpClient(); client.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 60000)); var server = listener.EndAcceptSocket(listenerAcceptSocket); listener.Stop(); var tcpClient = new BaseConnection(new SocketCap(client.Client), null, Test_Library_Net_Outopos.MaxReceiveCount, _bufferManager); var tcpServer = new BaseConnection(new SocketCap(server), null, Test_Library_Net_Outopos.MaxReceiveCount, _bufferManager); List<ConnectionManager> connectionManagers = new List<ConnectionManager>(); { ConnectionManager serverConnectionManager; ConnectionManager clientConnectionManager; Node serverNode = null; Node clientNode = null; byte[] serverSessionId = null; byte[] clientSessionId = null; { var id = new byte[32]; _random.NextBytes(id); var uris = new string[] { "net.tcp://localhost:9000", "net.tcp://localhost:9001", "net.tcp://localhost:9002" }; serverNode = new Node(id, uris); } { var id = new byte[32]; _random.NextBytes(id); var uris = new string[] { "net.tcp://localhost:9000", "net.tcp://localhost:9001", "net.tcp://localhost:9002" }; clientNode = new Node(id, uris); } { serverSessionId = new byte[32]; _random.NextBytes(serverSessionId); } { clientSessionId = new byte[32]; _random.NextBytes(clientSessionId); } serverConnectionManager = new ConnectionManager(tcpServer, serverSessionId, serverNode, ConnectDirection.In, _bufferManager); clientConnectionManager = new ConnectionManager(tcpClient, clientSessionId, clientNode, ConnectDirection.Out, _bufferManager); Thread serverThread = new Thread(new ThreadStart(() => { serverConnectionManager.Connect(); })); Thread clientThread = new Thread(new ThreadStart(() => { clientConnectionManager.Connect(); })); serverThread.Start(); clientThread.Start(); serverThread.Join(); clientThread.Join(); Assert.IsTrue(CollectionUtilities.Equals(serverConnectionManager.SesstionId, clientSessionId), "ConnectionManager SessionId #1"); Assert.IsTrue(CollectionUtilities.Equals(clientConnectionManager.SesstionId, serverSessionId), "ConnectionManager SessionId #2"); Assert.AreEqual(serverConnectionManager.Node, clientNode, "ConnectionManager Node #1"); Assert.AreEqual(clientConnectionManager.Node, serverNode, "ConnectionManager Node #2"); connectionManagers.Add(serverConnectionManager); connectionManagers.Add(clientConnectionManager); } connectionManagers.Randomize(); { var queue = new WaitQueue<PullNodesEventArgs>(); var receiverConnection = connectionManagers[0]; var senderConnection = connectionManagers[1]; receiverConnection.PullNodesEvent += (object sender, PullNodesEventArgs e) => { queue.Enqueue(e); }; List<Node> nodes = new List<Node>(); for (int j = 0; j < 32; j++) { Node node = null; { var id = new byte[32]; _random.NextBytes(id); var uris = new string[] { "net.tcp://localhost:9000", "net.tcp://localhost:9001", "net.tcp://localhost:9002" }; node = new Node(id, uris); } nodes.Add(node); } senderConnection.PushNodes(nodes); var item = queue.Dequeue(); Assert.IsTrue(CollectionUtilities.Equals(nodes, item.Nodes), "ConnectionManager #1"); } connectionManagers.Randomize(); { var queue = new WaitQueue<PullBlocksLinkEventArgs>(); var receiverConnection = connectionManagers[0]; var senderConnection = connectionManagers[1]; receiverConnection.PullBlocksLinkEvent += (object sender, PullBlocksLinkEventArgs e) => { queue.Enqueue(e); }; var keys = new List<Key>(); for (int j = 0; j < 32; j++) { Key key = null; { var id = new byte[32]; _random.NextBytes(id); key = new Key(id, HashAlgorithm.Sha256); } keys.Add(key); } senderConnection.PushBlocksLink(keys); var item = queue.Dequeue(); Assert.IsTrue(CollectionUtilities.Equals(keys, item.Keys), "ConnectionManager #2"); } connectionManagers.Randomize(); { var queue = new WaitQueue<PullBlocksRequestEventArgs>(); var receiverConnection = connectionManagers[0]; var senderConnection = connectionManagers[1]; receiverConnection.PullBlocksRequestEvent += (object sender, PullBlocksRequestEventArgs e) => { queue.Enqueue(e); }; var keys = new List<Key>(); for (int j = 0; j < 32; j++) { Key key = null; { var id = new byte[32]; _random.NextBytes(id); key = new Key(id, HashAlgorithm.Sha256); } keys.Add(key); } senderConnection.PushBlocksRequest(keys); var item = queue.Dequeue(); Assert.IsTrue(CollectionUtilities.Equals(keys, item.Keys), "ConnectionManager #3"); } connectionManagers.Randomize(); { var queue = new WaitQueue<PullBlockEventArgs>(); var receiverConnection = connectionManagers[0]; var senderConnection = connectionManagers[1]; receiverConnection.PullBlockEvent += (object sender, PullBlockEventArgs e) => { queue.Enqueue(e); }; var buffer = _bufferManager.TakeBuffer(1024 * 1024 * 8); var key = new Key(Sha256.ComputeHash(buffer), HashAlgorithm.Sha256); senderConnection.PushBlock(key, new ArraySegment<byte>(buffer, 0, 1024 * 1024 * 4)); var item = queue.Dequeue(); Assert.AreEqual(key, item.Key, "ConnectionManager #4.1"); Assert.IsTrue(CollectionUtilities.Equals(buffer, 0, item.Value.Array, item.Value.Offset, 1024 * 1024 * 4), "ConnectionManager #4.2"); _bufferManager.ReturnBuffer(buffer); _bufferManager.ReturnBuffer(item.Value.Array); } connectionManagers.Randomize(); { var queue = new WaitQueue<PullBroadcastMetadatasRequestEventArgs>(); var receiverConnection = connectionManagers[0]; var senderConnection = connectionManagers[1]; receiverConnection.PullBroadcastMetadatasRequestEvent += (object sender, PullBroadcastMetadatasRequestEventArgs e) => { queue.Enqueue(e); }; var digitalSignature = new DigitalSignature("123", DigitalSignatureAlgorithm.EcDsaP521_Sha256); var signatures = new SignatureCollection(); for (int j = 0; j < 32; j++) { signatures.Add(digitalSignature.ToString()); } senderConnection.PushBroadcastMetadatasRequest(signatures); var item = queue.Dequeue(); Assert.IsTrue(CollectionUtilities.Equals(signatures, item.Signatures), "ConnectionManager #5.1"); } connectionManagers.Randomize(); { var queue = new WaitQueue<PullBroadcastMetadatasEventArgs>(); var receiverConnection = connectionManagers[0]; var senderConnection = connectionManagers[1]; receiverConnection.PullBroadcastMetadatasEvent += (object sender, PullBroadcastMetadatasEventArgs e) => { queue.Enqueue(e); }; var digitalSignature = new DigitalSignature("123", DigitalSignatureAlgorithm.EcDsaP521_Sha256); var metadatas1 = new List<ProfileMetadata>(); for (int j = 0; j < 4; j++) { var id = new byte[32]; _random.NextBytes(id); var key = new Key(id, HashAlgorithm.Sha256); var metadata = new ProfileMetadata(DateTime.UtcNow, key, digitalSignature); metadatas1.Add(metadata); } senderConnection.PushBroadcastMetadatas(metadatas1); var item = queue.Dequeue(); Assert.IsTrue(CollectionUtilities.Equals(metadatas1, item.ProfileMetadatas), "ConnectionManager #6.1"); } connectionManagers.Randomize(); { var queue = new WaitQueue<PullUnicastMetadatasRequestEventArgs>(); var receiverConnection = connectionManagers[0]; var senderConnection = connectionManagers[1]; receiverConnection.PullUnicastMetadatasRequestEvent += (object sender, PullUnicastMetadatasRequestEventArgs e) => { queue.Enqueue(e); }; var digitalSignature = new DigitalSignature("123", DigitalSignatureAlgorithm.EcDsaP521_Sha256); var signatures = new SignatureCollection(); for (int j = 0; j < 32; j++) { signatures.Add(digitalSignature.ToString()); } senderConnection.PushUnicastMetadatasRequest(signatures); var item = queue.Dequeue(); Assert.IsTrue(CollectionUtilities.Equals(signatures, item.Signatures), "ConnectionManager #7.1"); } connectionManagers.Randomize(); { var queue = new WaitQueue<PullUnicastMetadatasEventArgs>(); var receiverConnection = connectionManagers[0]; var senderConnection = connectionManagers[1]; receiverConnection.PullUnicastMetadatasEvent += (object sender, PullUnicastMetadatasEventArgs e) => { queue.Enqueue(e); }; var digitalSignature = new DigitalSignature("123", DigitalSignatureAlgorithm.EcDsaP521_Sha256); var metadatas1 = new List<SignatureMessageMetadata>(); for (int j = 0; j < 4; j++) { var id = new byte[32]; _random.NextBytes(id); var key = new Key(id, HashAlgorithm.Sha256); var miner = new Miner(CashAlgorithm.Version1, -1, TimeSpan.Zero); var metadata = new SignatureMessageMetadata(digitalSignature.ToString(), DateTime.UtcNow, key, miner, digitalSignature); metadatas1.Add(metadata); } senderConnection.PushUnicastMetadatas(metadatas1); var item = queue.Dequeue(); Assert.IsTrue(CollectionUtilities.Equals(metadatas1, item.SignatureMessageMetadatas), "ConnectionManager #8.1"); } connectionManagers.Randomize(); { var queue = new WaitQueue<PullMulticastMetadatasRequestEventArgs>(); var receiverConnection = connectionManagers[0]; var senderConnection = connectionManagers[1]; receiverConnection.PullMulticastMetadatasRequestEvent += (object sender, PullMulticastMetadatasRequestEventArgs e) => { queue.Enqueue(e); }; var wikis = new WikiCollection(); var chats = new ChatCollection(); for (int j = 0; j < 32; j++) { var id = new byte[32]; _random.NextBytes(id); var key = new Key(id, HashAlgorithm.Sha256); wikis.Add(new Wiki(RandomString.GetValue(256), id)); } for (int j = 0; j < 32; j++) { var id = new byte[32]; _random.NextBytes(id); var key = new Key(id, HashAlgorithm.Sha256); chats.Add(new Chat(RandomString.GetValue(256), id)); } senderConnection.PushMulticastMetadatasRequest(wikis, chats); var item = queue.Dequeue(); Assert.IsTrue(CollectionUtilities.Equals(wikis, item.Wikis), "ConnectionManager #9.1"); Assert.IsTrue(CollectionUtilities.Equals(chats, item.Chats), "ConnectionManager #9.2"); } connectionManagers.Randomize(); { var queue = new WaitQueue<PullMulticastMetadatasEventArgs>(); var receiverConnection = connectionManagers[0]; var senderConnection = connectionManagers[1]; receiverConnection.PullMulticastMetadatasEvent += (object sender, PullMulticastMetadatasEventArgs e) => { queue.Enqueue(e); }; var digitalSignature = new DigitalSignature("123", DigitalSignatureAlgorithm.EcDsaP521_Sha256); var metadatas1 = new List<WikiDocumentMetadata>(); var metadatas2 = new List<ChatTopicMetadata>(); var metadatas3 = new List<ChatMessageMetadata>(); for (int j = 0; j < 4; j++) { var id = new byte[32]; _random.NextBytes(id); var key = new Key(id, HashAlgorithm.Sha256); var tag = new Wiki("oooo", new byte[32]); var miner = new Miner(CashAlgorithm.Version1, -1, TimeSpan.Zero); var metadata = new WikiDocumentMetadata(tag, DateTime.UtcNow, key, miner, digitalSignature); metadatas1.Add(metadata); } for (int j = 0; j < 4; j++) { var id = new byte[32]; _random.NextBytes(id); var key = new Key(id, HashAlgorithm.Sha256); var tag = new Chat("oooo", new byte[32]); var miner = new Miner(CashAlgorithm.Version1, -1, TimeSpan.Zero); var metadata = new ChatTopicMetadata(tag, DateTime.UtcNow, key, miner, digitalSignature); metadatas2.Add(metadata); } for (int j = 0; j < 4; j++) { var id = new byte[32]; _random.NextBytes(id); var key = new Key(id, HashAlgorithm.Sha256); var tag = new Chat("oooo", new byte[32]); var miner = new Miner(CashAlgorithm.Version1, -1, TimeSpan.Zero); var metadata = new ChatMessageMetadata(tag, DateTime.UtcNow, key, miner, digitalSignature); metadatas3.Add(metadata); } senderConnection.PushMulticastMetadatas(metadatas1, metadatas2, metadatas3); var item = queue.Dequeue(); Assert.IsTrue(CollectionUtilities.Equals(metadatas1, item.WikiDocumentMetadatas), "ConnectionManager #10.1"); Assert.IsTrue(CollectionUtilities.Equals(metadatas2, item.ChatTopicMetadatas), "ConnectionManager #10.2"); Assert.IsTrue(CollectionUtilities.Equals(metadatas3, item.ChatMessageMetadatas), "ConnectionManager #10.3"); } foreach (var connectionManager in connectionManagers) { connectionManager.Dispose(); } client.Close(); server.Close(); } }
public void Test_Seed() { foreach (var a in new DigitalSignatureAlgorithm[] { DigitalSignatureAlgorithm.Rsa2048_Sha256, DigitalSignatureAlgorithm.EcDsaP521_Sha256 }) { var seed = new Seed(); seed.Name = "aaaa.zip"; seed.Keywords.AddRange(new KeywordCollection { "bbbb", "cccc", "dddd", }); seed.CreationTime = DateTime.Now; seed.Length = 10000; seed.Comment = "eeee"; seed.Rank = 1; seed.Key = new Key(new byte[32], HashAlgorithm.Sha256); seed.CompressionAlgorithm = CompressionAlgorithm.Xz; seed.CryptoAlgorithm = CryptoAlgorithm.Aes256; seed.CryptoKey = new byte[32 + 32]; DigitalSignature digitalSignature = new DigitalSignature("123", a); seed.CreateCertificate(digitalSignature); var seed2 = seed.Clone(); Assert.AreEqual(seed, seed2, "Seed #1"); Seed seed3; using (var seedStream = seed.Export(_bufferManager)) { seed3 = Seed.Import(seedStream, _bufferManager); } Assert.AreEqual(seed, seed3, "Seed #2"); Assert.IsTrue(seed3.VerifyCertificate(), "Seed #3"); } }
public void Test_Link() { DigitalSignature digitalSignature = new DigitalSignature("123", DigitalSignatureAlgorithm.EcDsaP521_Sha256); var link = new Link(); link.TrustSignatures.Add(digitalSignature.ToString()); link.TrustSignatures.Add(digitalSignature.ToString()); link.TrustSignatures.Add(digitalSignature.ToString()); var link2 = link.Clone(); Assert.AreEqual(link, link2, "Link #1"); Link link3; using (var linkStream = link.Export(_bufferManager)) { link3 = Link.Import(linkStream, _bufferManager); } Assert.AreEqual(link, link3, "Link #2"); }
public void Test_ConnectionManager() { for (int i = 0; i < 4; i++) { TcpListener listener = new TcpListener(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 60000)); listener.Start(); var listenerAcceptSocket = listener.BeginAcceptSocket(null, null); TcpClient client = new TcpClient(); client.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 60000)); var server = listener.EndAcceptSocket(listenerAcceptSocket); listener.Stop(); var tcpClient = new BaseConnection(new SocketCap(client.Client), null, Test_Library_Net_Amoeba.MaxReceiveCount, _bufferManager); var tcpServer = new BaseConnection(new SocketCap(server), null, Test_Library_Net_Amoeba.MaxReceiveCount, _bufferManager); List<ConnectionManager> connectionManagers = new List<ConnectionManager>(); { ConnectionManager serverConnectionManager; ConnectionManager clientConnectionManager; Node serverNode = null; Node clientNode = null; byte[] serverSessionId = null; byte[] clientSessionId = null; { var id = new byte[32]; _random.NextBytes(id); var uris = new string[] { "net.tcp://localhost:9000", "net.tcp://localhost:9001", "net.tcp://localhost:9002" }; serverNode = new Node(id, uris); } { var id = new byte[32]; _random.NextBytes(id); var uris = new string[] { "net.tcp://localhost:9000", "net.tcp://localhost:9001", "net.tcp://localhost:9002" }; clientNode = new Node(id, uris); } { serverSessionId = new byte[32]; _random.NextBytes(serverSessionId); } { clientSessionId = new byte[32]; _random.NextBytes(clientSessionId); } serverConnectionManager = new ConnectionManager(tcpServer, serverSessionId, serverNode, ConnectDirection.In, _bufferManager); clientConnectionManager = new ConnectionManager(tcpClient, clientSessionId, clientNode, ConnectDirection.Out, _bufferManager); Thread serverThread = new Thread(new ThreadStart(() => { serverConnectionManager.Connect(); })); Thread clientThread = new Thread(new ThreadStart(() => { clientConnectionManager.Connect(); })); serverThread.Start(); clientThread.Start(); serverThread.Join(); clientThread.Join(); Assert.IsTrue(CollectionUtilities.Equals(serverConnectionManager.SesstionId, clientSessionId), "ConnectionManager SessionId #1"); Assert.IsTrue(CollectionUtilities.Equals(clientConnectionManager.SesstionId, serverSessionId), "ConnectionManager SessionId #2"); Assert.AreEqual(serverConnectionManager.Node, clientNode, "ConnectionManager Node #1"); Assert.AreEqual(clientConnectionManager.Node, serverNode, "ConnectionManager Node #2"); connectionManagers.Add(serverConnectionManager); connectionManagers.Add(clientConnectionManager); } connectionManagers.Randomize(); { var queue = new WaitQueue<PullNodesEventArgs>(); var receiverConnection = connectionManagers[0]; var senderConnection = connectionManagers[1]; receiverConnection.PullNodesEvent += (object sender, PullNodesEventArgs e) => { queue.Enqueue(e); }; List<Node> nodes = new List<Node>(); for (int j = 0; j < 32; j++) { Node node = null; { var id = new byte[32]; _random.NextBytes(id); var uris = new string[] { "net.tcp://localhost:9000", "net.tcp://localhost:9001", "net.tcp://localhost:9002" }; node = new Node(id, uris); } nodes.Add(node); } senderConnection.PushNodes(nodes); var item = queue.Dequeue(); Assert.IsTrue(CollectionUtilities.Equals(nodes, item.Nodes), "ConnectionManager #1"); } connectionManagers.Randomize(); { var queue = new WaitQueue<PullBlocksLinkEventArgs>(); var receiverConnection = connectionManagers[0]; var senderConnection = connectionManagers[1]; receiverConnection.PullBlocksLinkEvent += (object sender, PullBlocksLinkEventArgs e) => { queue.Enqueue(e); }; var keys = new List<Key>(); for (int j = 0; j < 32; j++) { Key key = null; { var id = new byte[32]; _random.NextBytes(id); key = new Key(id, HashAlgorithm.Sha256); } keys.Add(key); } senderConnection.PushBlocksLink(keys); var item = queue.Dequeue(); Assert.IsTrue(CollectionUtilities.Equals(keys, item.Keys), "ConnectionManager #2"); } connectionManagers.Randomize(); { var queue = new WaitQueue<PullBlocksRequestEventArgs>(); var receiverConnection = connectionManagers[0]; var senderConnection = connectionManagers[1]; receiverConnection.PullBlocksRequestEvent += (object sender, PullBlocksRequestEventArgs e) => { queue.Enqueue(e); }; var keys = new List<Key>(); for (int j = 0; j < 32; j++) { Key key = null; { var id = new byte[32]; _random.NextBytes(id); key = new Key(id, HashAlgorithm.Sha256); } keys.Add(key); } senderConnection.PushBlocksRequest(keys); var item = queue.Dequeue(); Assert.IsTrue(CollectionUtilities.Equals(keys, item.Keys), "ConnectionManager #3"); } connectionManagers.Randomize(); { var queue = new WaitQueue<PullBlockEventArgs>(); var receiverConnection = connectionManagers[0]; var senderConnection = connectionManagers[1]; receiverConnection.PullBlockEvent += (object sender, PullBlockEventArgs e) => { queue.Enqueue(e); }; var buffer = _bufferManager.TakeBuffer(1024 * 1024 * 8); var key = new Key(Sha256.ComputeHash(buffer), HashAlgorithm.Sha256); senderConnection.PushBlock(key, new ArraySegment<byte>(buffer, 0, 1024 * 1024 * 4)); var item = queue.Dequeue(); Assert.AreEqual(key, item.Key, "ConnectionManager #4.1"); Assert.IsTrue(CollectionUtilities.Equals(buffer, 0, item.Value.Array, item.Value.Offset, 1024 * 1024 * 4), "ConnectionManager #4.2"); _bufferManager.ReturnBuffer(buffer); _bufferManager.ReturnBuffer(item.Value.Array); } connectionManagers.Randomize(); { var queue = new WaitQueue<PullSeedsRequestEventArgs>(); var receiverConnection = connectionManagers[0]; var senderConnection = connectionManagers[1]; receiverConnection.PullSeedsRequestEvent += (object sender, PullSeedsRequestEventArgs e) => { queue.Enqueue(e); }; var digitalSignature = new DigitalSignature("123", DigitalSignatureAlgorithm.EcDsaP521_Sha256); var signatures = new SignatureCollection(); for (int j = 0; j < 32; j++) { signatures.Add(digitalSignature.ToString()); } senderConnection.PushSeedsRequest(signatures); var item = queue.Dequeue(); Assert.IsTrue(CollectionUtilities.Equals(signatures, item.Signatures), "ConnectionManager #5"); } connectionManagers.Randomize(); { var queue = new WaitQueue<PullSeedsEventArgs>(); var receiverConnection = connectionManagers[0]; var senderConnection = connectionManagers[1]; receiverConnection.PullSeedsEvent += (object sender, PullSeedsEventArgs e) => { queue.Enqueue(e); }; List<Seed> seeds = new List<Seed>(); for (int j = 0; j < 32; j++) { var seed = new Seed(); seed.Name = "aaaa.zip"; seed.Keywords.AddRange(new KeywordCollection { "bbbb", "cccc", "dddd", }); seed.CreationTime = DateTime.Now; seed.Length = 10000; seed.Comment = "eeee"; seed.Rank = 1; seed.Key = new Key(new byte[32], HashAlgorithm.Sha256); seed.CompressionAlgorithm = CompressionAlgorithm.Xz; seed.CryptoAlgorithm = CryptoAlgorithm.Aes256; seed.CryptoKey = new byte[32 + 32]; seeds.Add(seed); } senderConnection.PushSeeds(seeds); var item = queue.Dequeue(); Assert.IsTrue(CollectionUtilities.Equals(seeds, item.Seeds), "ConnectionManager #6"); } foreach (var connectionManager in connectionManagers) { connectionManager.Dispose(); } client.Close(); server.Close(); } }
public void Test_Box() { var box = new Box(); box.Name = "Box"; box.Comment = "Comment"; box.CreationTime = DateTime.Now; box.Seeds.Add(new Seed() { Name = "Seed" }); box.Boxes.Add(new Box() { Name = "Box" }); DigitalSignature digitalSignature = new DigitalSignature("123", DigitalSignatureAlgorithm.EcDsaP521_Sha256); box.CreateCertificate(digitalSignature); var box2 = box.Clone(); Assert.AreEqual(box, box2, "Box #1"); Box box3; using (var boxStream = box.Export(_bufferManager)) { box3 = Box.Import(boxStream, _bufferManager); } Assert.AreEqual(box, box3, "Box #2"); Assert.IsTrue(box3.VerifyCertificate(), "Box #3"); { var parentBox = new Box(); var childBox = parentBox; for (int i = 0; i < 256; i++) { var tempBox = new Box(); childBox.Boxes.Add(tempBox); childBox = tempBox; } using (var binaryBox = parentBox.Export(_bufferManager)) { } } { var parentBox = new Box(); var childBox = parentBox; for (int i = 0; i < 256 + 1; i++) { var tempBox = new Box(); childBox.Boxes.Add(tempBox); childBox = tempBox; } Assert.Throws<ArgumentException>(() => { using (var binaryBox = parentBox.Export(_bufferManager)) { } }); } { var parentBox = new T_Box(); var childBox = parentBox; for (int i = 0; i < 256; i++) { var tempBox = new T_Box(); childBox.D_Boxes.Add(tempBox); childBox = tempBox; } using (var binaryBox = parentBox.Export(_bufferManager)) { Box.Import(binaryBox, _bufferManager); } } { var parentBox = new T_Box(); var childBox = parentBox; for (int i = 0; i < 256 + 1; i++) { var tempBox = new T_Box(); childBox.D_Boxes.Add(tempBox); childBox = tempBox; } Assert.Throws<ArgumentException>(() => { using (var binaryBox = parentBox.Export(_bufferManager)) { Box.Import(binaryBox, _bufferManager); } }); } }
public DigitalSignatureComboBoxItem(DigitalSignature digitalSignature) { this.Value = digitalSignature; }
private void _okButton_Click(object sender, RoutedEventArgs e) { this.DialogResult = true; _digitalSignature = _signatureComboBox.SelectedItem as DigitalSignature; }
public void Test_Metadata() { foreach (var a in new DigitalSignatureAlgorithm[] { DigitalSignatureAlgorithm.Rsa2048_Sha256, DigitalSignatureAlgorithm.EcDsaP521_Sha256 }) { var id = new byte[32]; _random.NextBytes(id); var key = new Key(id, HashAlgorithm.Sha256); var tag = new Chat("oooo", new byte[32]); var miner = new Miner(CashAlgorithm.Version1, -1, TimeSpan.Zero); var digitalSignature = new DigitalSignature("123", a); var metadata = new ChatMessageMetadata(tag, DateTime.UtcNow, key, miner, digitalSignature); ChatMessageMetadata metadata2; { var ds = new DataContractSerializer(typeof(ChatMessageMetadata)); using (BufferStream stream = new BufferStream(BufferManager.Instance)) { using (WrapperStream wrapperStream = new WrapperStream(stream, true)) using (XmlDictionaryWriter xmlDictionaryWriter = XmlDictionaryWriter.CreateBinaryWriter(wrapperStream)) { ds.WriteObject(xmlDictionaryWriter, metadata); } stream.Position = 0; using (XmlDictionaryReader xmlDictionaryReader = XmlDictionaryReader.CreateBinaryReader(stream, XmlDictionaryReaderQuotas.Max)) { metadata2 = (ChatMessageMetadata)ds.ReadObject(xmlDictionaryReader); } } } Assert.AreEqual(metadata, metadata2, "Metadata #1"); ChatMessageMetadata metadata3; using (var metadataStream = metadata.Export(_bufferManager)) { metadata3 = ChatMessageMetadata.Import(metadataStream, _bufferManager); } Assert.AreEqual(metadata, metadata3, "Metadata #2"); Assert.IsTrue(metadata3.VerifyCertificate(), "Metadata #3"); } }
public void Upload(string filePath, string name, IEnumerable<string> keywords, DigitalSignature digitalSignature, int priority) { this.Check(); lock (this.ThisLock) { _uploadManager.Upload(filePath, name, keywords, digitalSignature, priority); } }
public static string GetSignature(DigitalSignature digitalSignature) { if (digitalSignature == null || digitalSignature.Nickname == null || digitalSignature.PublicKey == null) return null; try { if (digitalSignature.DigitalSignatureAlgorithm == DigitalSignatureAlgorithm.EcDsaP521_Sha256 || digitalSignature.DigitalSignatureAlgorithm == DigitalSignatureAlgorithm.Rsa2048_Sha256) { using (BufferStream bufferStream = new BufferStream(_bufferManager)) { Signature.WriteString(bufferStream, digitalSignature.Nickname); bufferStream.Write(digitalSignature.PublicKey, 0, digitalSignature.PublicKey.Length); bufferStream.Seek(0, SeekOrigin.Begin); var signature = digitalSignature.Nickname + "@" + NetworkConverter.ToBase64UrlString(Sha256.ComputeHash(bufferStream)); return _signatureCache.GetValue(signature, digitalSignature); } } return null; } catch (Exception) { return null; } }
public void MulticastUpload(Tag tag, Message message, int miningLimit, TimeSpan miningTime, DigitalSignature digitalSignature) { this.Check(); lock (this.ThisLock) { _backgroundUploadManager.MulticastUpload(tag, message, miningLimit, miningTime, digitalSignature); } }
private void _okButton_Click(object sender, RoutedEventArgs e) { this.DialogResult = true; var digitalSignatureComboBoxItem = _signatureComboBox.SelectedItem as DigitalSignatureComboBoxItem; DigitalSignature digitalSignature = digitalSignatureComboBoxItem == null ? null : digitalSignatureComboBoxItem.Value; _digitalSignature = digitalSignature; }
public void Upload(Profile profile, DigitalSignature digitalSignature) { this.Check(); lock (this.ThisLock) { _backgroundUploadManager.Upload(profile, digitalSignature); } }
public void UnicastUpload(string signature, Message message, ExchangePublicKey exchangePublicKey, DigitalSignature digitalSignature) { this.Check(); lock (this.ThisLock) { _backgroundUploadManager.UnicastUpload(signature, message, exchangePublicKey, digitalSignature); } }
public void Test_ConnectionManager() { for (int i = 0; i < 4; i++) { TcpListener listener = new TcpListener(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 60000)); listener.Start(); var listenerAcceptSocket = listener.BeginAcceptSocket(null, null); TcpClient client = new TcpClient(); client.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 60000)); var server = listener.EndAcceptSocket(listenerAcceptSocket); listener.Stop(); var tcpClient = new BaseConnection(new SocketCap(client.Client), null, Test_Library_Net_Amoeba.MaxReceiveCount, _bufferManager); var tcpServer = new BaseConnection(new SocketCap(server), null, Test_Library_Net_Amoeba.MaxReceiveCount, _bufferManager); List<ConnectionManager> connectionManagers = new List<ConnectionManager>(); { ConnectionManager serverConnectionManager; ConnectionManager clientConnectionManager; Node serverNode = null; Node clientNode = null; byte[] serverSessionId = null; byte[] clientSessionId = null; { var id = new byte[32]; _random.NextBytes(id); var uris = new string[] { "tcp:localhost:9000", "tcp:localhost:9001", "tcp:localhost:9002" }; serverNode = new Node(id, uris); } { var id = new byte[32]; _random.NextBytes(id); var uris = new string[] { "tcp:localhost:9000", "tcp:localhost:9001", "tcp:localhost:9002" }; clientNode = new Node(id, uris); } { serverSessionId = new byte[32]; _random.NextBytes(serverSessionId); } { clientSessionId = new byte[32]; _random.NextBytes(clientSessionId); } serverConnectionManager = new ConnectionManager(tcpServer, serverSessionId, serverNode, ConnectDirection.In, _bufferManager); clientConnectionManager = new ConnectionManager(tcpClient, clientSessionId, clientNode, ConnectDirection.Out, _bufferManager); var serverTask = Task.Run(() => serverConnectionManager.Connect()); var clientTask = Task.Run(() => clientConnectionManager.Connect()); Task.WaitAll(serverTask, clientTask); Assert.IsTrue(CollectionUtils.Equals(serverConnectionManager.SesstionId, clientSessionId), "ConnectionManager SessionId #1"); Assert.IsTrue(CollectionUtils.Equals(clientConnectionManager.SesstionId, serverSessionId), "ConnectionManager SessionId #2"); Assert.AreEqual(serverConnectionManager.Node, clientNode, "ConnectionManager Node #1"); Assert.AreEqual(clientConnectionManager.Node, serverNode, "ConnectionManager Node #2"); connectionManagers.Add(serverConnectionManager); connectionManagers.Add(clientConnectionManager); } connectionManagers.Randomize(); { var queue = new WaitQueue<PullNodesEventArgs>(); var receiverConnection = connectionManagers[0]; var senderConnection = connectionManagers[1]; receiverConnection.PullNodesEvent += (object sender, PullNodesEventArgs e) => { queue.Enqueue(e); }; List<Node> nodes = new List<Node>(); for (int j = 0; j < 32; j++) { Node node = null; { var id = new byte[32]; _random.NextBytes(id); var uris = new string[] { "net.tcp://localhost:9000", "net.tcp://localhost:9001", "net.tcp://localhost:9002" }; node = new Node(id, uris); } nodes.Add(node); } senderConnection.PushNodes(nodes); var item = queue.Dequeue(); Assert.IsTrue(CollectionUtils.Equals(nodes, item.Nodes), "ConnectionManager #1"); } connectionManagers.Randomize(); { var queue = new WaitQueue<PullBlocksLinkEventArgs>(); var receiverConnection = connectionManagers[0]; var senderConnection = connectionManagers[1]; receiverConnection.PullBlocksLinkEvent += (object sender, PullBlocksLinkEventArgs e) => { queue.Enqueue(e); }; var keys = new List<Key>(); for (int j = 0; j < 32; j++) { Key key = null; { var id = new byte[32]; _random.NextBytes(id); key = new Key(HashAlgorithm.Sha256, id); } keys.Add(key); } senderConnection.PushBlocksLink(keys); var item = queue.Dequeue(); Assert.IsTrue(CollectionUtils.Equals(keys, item.Keys), "ConnectionManager #2"); } connectionManagers.Randomize(); { var queue = new WaitQueue<PullBlocksRequestEventArgs>(); var receiverConnection = connectionManagers[0]; var senderConnection = connectionManagers[1]; receiverConnection.PullBlocksRequestEvent += (object sender, PullBlocksRequestEventArgs e) => { queue.Enqueue(e); }; var keys = new List<Key>(); for (int j = 0; j < 32; j++) { Key key = null; { var id = new byte[32]; _random.NextBytes(id); key = new Key(HashAlgorithm.Sha256, id); } keys.Add(key); } senderConnection.PushBlocksRequest(keys); var item = queue.Dequeue(); Assert.IsTrue(CollectionUtils.Equals(keys, item.Keys), "ConnectionManager #3"); } connectionManagers.Randomize(); { var queue = new WaitQueue<PullBlockEventArgs>(); var receiverConnection = connectionManagers[0]; var senderConnection = connectionManagers[1]; receiverConnection.PullBlockEvent += (object sender, PullBlockEventArgs e) => { queue.Enqueue(e); }; var buffer = _bufferManager.TakeBuffer(1024 * 1024 * 8); var key = new Key(HashAlgorithm.Sha256, Sha256.ComputeHash(buffer)); senderConnection.PushBlock(key, new ArraySegment<byte>(buffer, 0, 1024 * 1024 * 4)); var item = queue.Dequeue(); Assert.AreEqual(key, item.Key, "ConnectionManager #4.1"); Assert.IsTrue(CollectionUtils.Equals(buffer, 0, item.Value.Array, item.Value.Offset, 1024 * 1024 * 4), "ConnectionManager #4.2"); _bufferManager.ReturnBuffer(buffer); _bufferManager.ReturnBuffer(item.Value.Array); } connectionManagers.Randomize(); { var queue = new WaitQueue<PullBroadcastMetadatasRequestEventArgs>(); var receiverConnection = connectionManagers[0]; var senderConnection = connectionManagers[1]; receiverConnection.PullBroadcastMetadatasRequestEvent += (object sender, PullBroadcastMetadatasRequestEventArgs e) => { queue.Enqueue(e); }; var digitalSignature = new DigitalSignature("123", DigitalSignatureAlgorithm.Rsa2048_Sha256); var signatures = new SignatureCollection(); for (int j = 0; j < 32; j++) { signatures.Add(digitalSignature.ToString()); } senderConnection.PushBroadcastMetadatasRequest(signatures); var item = queue.Dequeue(); Assert.IsTrue(CollectionUtils.Equals(signatures, item.Signatures), "ConnectionManager #5.1"); } connectionManagers.Randomize(); { var queue = new WaitQueue<PullBroadcastMetadatasEventArgs>(); var receiverConnection = connectionManagers[0]; var senderConnection = connectionManagers[1]; receiverConnection.PullBroadcastMetadatasEvent += (object sender, PullBroadcastMetadatasEventArgs e) => { queue.Enqueue(e); }; var digitalSignature = new DigitalSignature("123", DigitalSignatureAlgorithm.Rsa2048_Sha256); var metadatas1 = new List<BroadcastMetadata>(); for (int j = 0; j < 4; j++) { var key = new Key(HashAlgorithm.Sha256, new byte[32]); var metadata = new Metadata(1, key, CompressionAlgorithm.Xz, CryptoAlgorithm.Aes256, new byte[32 + 32]); var broadcastMetadata = new BroadcastMetadata("Type", DateTime.UtcNow, metadata, digitalSignature); metadatas1.Add(broadcastMetadata); } senderConnection.PushBroadcastMetadatas(metadatas1); var item = queue.Dequeue(); Assert.IsTrue(CollectionUtils.Equals(metadatas1, item.BroadcastMetadatas), "ConnectionManager #6.1"); } connectionManagers.Randomize(); { var queue = new WaitQueue<PullUnicastMetadatasRequestEventArgs>(); var receiverConnection = connectionManagers[0]; var senderConnection = connectionManagers[1]; receiverConnection.PullUnicastMetadatasRequestEvent += (object sender, PullUnicastMetadatasRequestEventArgs e) => { queue.Enqueue(e); }; var digitalSignature = new DigitalSignature("123", DigitalSignatureAlgorithm.Rsa2048_Sha256); var signatures = new SignatureCollection(); for (int j = 0; j < 32; j++) { signatures.Add(digitalSignature.ToString()); } senderConnection.PushUnicastMetadatasRequest(signatures); var item = queue.Dequeue(); Assert.IsTrue(CollectionUtils.Equals(signatures, item.Signatures), "ConnectionManager #7.1"); } connectionManagers.Randomize(); { var queue = new WaitQueue<PullUnicastMetadatasEventArgs>(); var receiverConnection = connectionManagers[0]; var senderConnection = connectionManagers[1]; receiverConnection.PullUnicastMetadatasEvent += (object sender, PullUnicastMetadatasEventArgs e) => { queue.Enqueue(e); }; var digitalSignature = new DigitalSignature("123", DigitalSignatureAlgorithm.Rsa2048_Sha256); var metadatas1 = new List<UnicastMetadata>(); for (int j = 0; j < 4; j++) { var key = new Key(HashAlgorithm.Sha256, new byte[32]); var metadata = new Metadata(1, key, CompressionAlgorithm.Xz, CryptoAlgorithm.Aes256, new byte[32 + 32]); var unicastMetadata = new UnicastMetadata("Type", digitalSignature.ToString(), DateTime.UtcNow, metadata, digitalSignature); metadatas1.Add(unicastMetadata); } senderConnection.PushUnicastMetadatas(metadatas1); var item = queue.Dequeue(); Assert.IsTrue(CollectionUtils.Equals(metadatas1, item.UnicastMetadatas), "ConnectionManager #8.1"); } connectionManagers.Randomize(); { var queue = new WaitQueue<PullMulticastMetadatasRequestEventArgs>(); var receiverConnection = connectionManagers[0]; var senderConnection = connectionManagers[1]; receiverConnection.PullMulticastMetadatasRequestEvent += (object sender, PullMulticastMetadatasRequestEventArgs e) => { queue.Enqueue(e); }; var tags = new TagCollection(); for (int j = 0; j < 32; j++) { var id = new byte[32]; _random.NextBytes(id); tags.Add(new Tag(RandomString.GetValue(256), id)); } senderConnection.PushMulticastMetadatasRequest(tags); var item = queue.Dequeue(); Assert.IsTrue(CollectionUtils.Equals(tags, item.Tags), "ConnectionManager #9.1"); } connectionManagers.Randomize(); { var queue = new WaitQueue<PullMulticastMetadatasEventArgs>(); var receiverConnection = connectionManagers[0]; var senderConnection = connectionManagers[1]; receiverConnection.PullMulticastMetadatasEvent += (object sender, PullMulticastMetadatasEventArgs e) => { queue.Enqueue(e); }; var digitalSignature = new DigitalSignature("123", DigitalSignatureAlgorithm.Rsa2048_Sha256); var metadatas1 = new List<MulticastMetadata>(); for (int j = 0; j < 4; j++) { var key = new Key(HashAlgorithm.Sha256, new byte[32]); var metadata = new Metadata(1, key, CompressionAlgorithm.Xz, CryptoAlgorithm.Aes256, new byte[32 + 32]); var tag = new Tag("oooo", new byte[32]); var miner = new Miner(CashAlgorithm.Version1, -1, TimeSpan.Zero); var multicastMetadata = new MulticastMetadata("Type", tag, DateTime.UtcNow, metadata, miner, digitalSignature); metadatas1.Add(multicastMetadata); } senderConnection.PushMulticastMetadatas(metadatas1); var item = queue.Dequeue(); Assert.IsTrue(CollectionUtils.Equals(metadatas1, item.MulticastMetadatas), "ConnectionManager #10.1"); } foreach (var connectionManager in connectionManagers) { connectionManager.Dispose(); } client.Close(); server.Close(); } }
public void Upload(Link link, DigitalSignature digitalSignature) { this.Check(); lock (this.ThisLock) { _backgroundUploadManager.Upload(link, digitalSignature); } }
public void Test_Link() { DigitalSignature digitalSignature = new DigitalSignature("123", DigitalSignatureAlgorithm.Rsa2048_Sha256); var signatures = new List<string>(); signatures.Add(digitalSignature.ToString()); signatures.Add(digitalSignature.ToString()); signatures.Add(digitalSignature.ToString()); var link = new Link(signatures, signatures); Link link2; using (var linkStream = link.Export(_bufferManager)) { link2 = Link.Import(linkStream, _bufferManager); } Assert.AreEqual(link, link2, "Link #1"); }
public void Upload(Store store, DigitalSignature digitalSignature) { this.Check(); lock (this.ThisLock) { _backgroundUploadManager.Upload(store, digitalSignature); } }
public SignatureListViewItem(DigitalSignature signatureItem) { this.Value = signatureItem; }