// Опис: Метод за екстракција и вчитување на јавен клуч од сертификат за соодветен провајдер // Влезни параметри: податочна вредност routingToken // Излезни параметри: PublicKeyClass модел public PublicKeyClass GetPublicKeyForProvider(string routingToken) { var providersRepository = new ProvidersRepository(new UnitOfWork(new InteropContext())); var cerDb = providersRepository.GetPublicKey(routingToken); var cert = new X509Certificate2(Convert.FromBase64String(cerDb)); var publicKeyCert = (RSACryptoServiceProvider)cert.PublicKey.Key; var publicKeyString = publicKeyCert.ToXmlString(false); var fromModulus = publicKeyString.IndexOf("<Modulus>") + "<Modulus>".Length; var toModulus = publicKeyString.LastIndexOf("</Modulus>"); var modulus = publicKeyString.Substring(fromModulus, toModulus - fromModulus); var fromExponent = publicKeyString.IndexOf("<Exponent>") + "<Exponent>".Length; var toExponent = publicKeyString.LastIndexOf("</Exponent>"); var exponent = publicKeyString.Substring(fromExponent, toExponent - fromExponent); var rsaParam = new RSAParameters(); rsaParam.Modulus = Convert.FromBase64String(modulus); rsaParam.Exponent = Convert.FromBase64String(exponent); var rsaParamKey = new RsaWithRsaParameterKey(); rsaParamKey.PublicKey = rsaParam; var publicKey = new PublicKeyClass(); publicKey.PublicKeyRsa = rsaParamKey; publicKey.PublicKeyString = publicKeyString; publicKey.CertString = cerDb; return(publicKey); }
public void Repository_GetPublicKey_Successfully() { var buildProvider = _dataGenerator.GenerateOneProvider(); _repository.GetPublicKey(buildProvider.RoutingToken); }