public string SignN3Rsa(string data) { var cspParams = new CspParameters {KeyContainerName = "XML_DSIG_RSA_KEY"}; var key = new RSACryptoServiceProvider(cspParams); var cspBlob = key.ExportCspBlob(false); var base64Blob = Convert.ToBase64String(cspBlob); var rsaFormatter = new RSAPKCS1SignatureFormatter(key); rsaFormatter.SetHashAlgorithm("MD5"); var hash = Md5Helper.GetMd5Hash(data); var base64Hash = Convert.ToBase64String(hash); var sign = rsaFormatter.CreateSignature(hash); var base64Sign = Convert.ToBase64String(sign); var signData = new SignData { data = data, public_key = base64Blob, hash = base64Hash, sign = base64Sign }; return new SerializationHelper<SignData>().Serialize(signData); }
//INFO: метод для тестирования public string SignN3Gost(string data) { var storeCurrentUser = new X509Store(StoreName.My, StoreLocation.CurrentUser); storeCurrentUser.Open(OpenFlags.ReadOnly); var coll = storeCurrentUser.Certificates .Find(X509FindType.FindByThumbprint, "4d 19 79 84 52 9a 80 4a c4 86 3a 82 6a 8d ab 85 3f 95 e5 01", false)[0]; //b8 be f8 22 e8 63 2a 74 d4 2e 58 df 91 9c 2f e3 75 ea e1 e4 просрочен //4d 19 79 84 52 9a 80 4a c4 86 3a 82 6a 8d ab 85 3f 95 e5 01 var gost = (Gost3410CryptoServiceProvider) coll.PrivateKey; var base64Blob = Convert.ToBase64String(coll.Export(X509ContentType.Cert)); var gostSignatureFormatter = new GostSignatureFormatter(gost); gostSignatureFormatter.SetHashAlgorithm("Gost3411"); var hash = Md5Helper.GetGost3411Hash(data); var base64Hash = Convert.ToBase64String(hash); var sign = gostSignatureFormatter.CreateSignature(hash); var base64Sign = Convert.ToBase64String(sign); var signData = new SignData { data = data, public_key = base64Blob, hash = base64Hash, sign = base64Sign }; return JsonConvert.SerializeObject(signData); }