Skip to content

Commit

Permalink
Move to generated keys in RSA tests (#826)
Browse files Browse the repository at this point in the history
<!-- Thank you for submitting a Pull Request. If you're new to
contributing to BCApps please read our pull request guideline below
* https://github.com/microsoft/BCApps/Contributing.md
-->
#### Summary 
Add methods to generate XML keys. Use new method to generate keys needed
in tests.

#### Work Item(s) <!-- Add the issue number here after the #. The issue
needs to be open and approved. Submitting PRs with no linked issues or
unapproved issues is highly discouraged. -->
Fixes
[AB#500563](https://dynamicssmb2.visualstudio.com/1fcb79e7-ab07-432a-a3c6-6cf5a88ba4a5/_workitems/edit/500563)

---------

Co-authored-by: Magnus Hartvig Grønbech <[email protected]>
  • Loading branch information
Groenbech96 and Magnus Hartvig Grønbech authored Mar 26, 2024
1 parent 0db99e9 commit cf12bc8
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -155,4 +155,17 @@ codeunit 1445 RSACryptoServiceProvider
begin
RSACryptoServiceProviderImpl.Decrypt(XmlString, EncryptedTextInStream, OaepPadding, DecryptedTextOutStream);
end;

/// <summary>
/// The CreateRSAKeyPair procedure is a function that generates a public and private RSA key pair.
/// </summary>
/// <param name="PublicKeyInXml">This is an output parameter that returns the public key in XML format.</param>
/// <param name="PrivateKeyInXml">This is an output parameter that returns the private key in XML format. This is a sensitive information hence marked as SecretText.</param>
/// <returns>
/// This function does not return a value. The output is via the two parameters PublicKeyInXml and PrivateKeyInXml.
/// </returns>
procedure CreateRSAKeyPair(var PublicKeyInXml: Text; var PrivateKeyInXml: SecretText)
begin
RSACryptoServiceProviderImpl.CreateRSAKeyPair(PublicKeyInXml, PrivateKeyInXml);
end;
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,17 @@ codeunit 1446 "RSACryptoServiceProvider Impl." implements "Signature Algorithm v
DotNetAsymmetricAlgorithm := DotNetRSACryptoServiceProvider;
end;

[NonDebuggable]
procedure CreateRSAKeyPair(var PublicKeyInXml: Text; var PrivateKeyInXml: SecretText)
var
DotnetRSA: DotNet RSA;
begin
RSACryptoServiceProvider();
DotnetRSA := DotNetRSACryptoServiceProvider.Create();
PublicKeyInXml := DotnetRSA.ToXmlString(false);
PrivateKeyInXml := DotnetRSA.ToXmlString(true);
end;

#region SignData
procedure SignData(XmlString: SecretText; DataInStream: InStream; HashAlgorithm: Enum "Hash Algorithm"; SignatureOutStream: OutStream)
begin
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,7 @@ codeunit 132613 RSACryptoServiceProviderTests
begin
if IsInitialized then
exit;
PrivateKeyXmlStringSecret := Base64Convert.FromBase64('PFJTQUtleVZhbHVlPjxNb2R1bHVzPmNKMHBpL2ZBcXJTRy9TZTUrZGdzcksyNjNwSUkvQjhieGZyWDBoMm1aN0VZUWhURXhYa2d6Z0xwS3dFRWFmdUs0MFVqUjEzNlNLQ3I5S240aHpPek1zam5hMXJJRXJCUnMzcU5IS1NxS3JzdkhaUTljRFo3RElVekh2cVh0Q01KMFo0clFBZlZLcWl2bGZqd3RJR1ZPSXRKK0RMT1E4S2tZNjJiOTI2YzhMTEtGUG5SU1ZxQnQrL3lGbEJ3M1NlQWdNYzBtaXRKRUhvYW5LdExXc3RLVzlDTW55OWc1R1V2cnZaY0wwUjR4NkpabFlGTVMwQnBmdFJNbmFrbnI3VXpxMGdvWnY4OHhmb1IrTW1ud1ZUOWdTU0ZRRW1rOVRHaVdjdUV1bnFNUmZ4b3htQW0zVGt3RTRMSDVDNHVNMWRlUGVnWDM0bmoyZmphOWhpUWtReHVqdz09PC9Nb2R1bHVzPjxFeHBvbmVudD5BUUFCPC9FeHBvbmVudD48UD5zSW5SbG0wSGRWeTMrUlo0NDhLNTZaSVNDdkNQNlVMZGZJMk10RU96MlZ2cUN2Z0Vham1BckJkYmYzaUVFNUlXRWhNbEtRRGJCVktZdVMvcW1hanROc202cVhUMXFiRldIdGRQcGNmQ3BMeVFHT2Y0dStFb2xnK2FIWFlIYytNejdSdjBIOSt2NUlxejVWMzZ0ck11N0Q4clF5QVNMeHR2L3BYZ1ZDVzRpUk09PC9QPjxRPm8wMXpmb0UxazBzdmdhRGNzUHEzNWxPaTlsV25LVWUvNzA2eDdjeDNES1drQmR4aUhOSDJFVjhsTVhnS2hra2s2YmNocWo3dXNaQi9OdVBZaER0TWRsYnd3REdkTmFmZ09qKy94Q2loUEFRaFo3T3l5M01sb3hOemsrWHlZUzg4VjVOdFhiSmkrelpmSHJWbXowR2xmczJoNHVSZ0ZEZWw3cVBZUW5GSUVCVT08L1E+PERQPmY3TFJob3hMYnR1b3dHYysveEdtUll4QnZPUVNWVnJtdCtmME5aa2JpVWp4WFFuV3Q3ZnNtWTh6d2xzOHZxTlhqNitGbThsZ3BOTUFZa1NFNEszUEdXaUd1M2s5RW9pU2tUQ1NEb3NYQXU3YkZRa0haWEFUV2FqamhCZ1NnQU9EVmlwNFJtNFozNmx0UTZiZGFqYm01RUUxWEJMZzFHNTJicU9mWjM3NW96MD08L0RQPjxEUT5WTC94WEluNklBTTVHSEUvbDZuR253Wnc0Sjc3TGZWS3F3dVFVL1YxSTE4ampOY2ZKQTNqUW9pNmFMMy8yRWxGbXZXcnh3cjZIYlQ4RUtTV3phbG91VkhOaURFM2dZMHFWWkNZR1Zsc3RCVUFzUzBWY1hqRTQ2bElwazBFU1dPV1VXejFxVmJXLzhEc0JLZm9QMCsyYitTUVM0eHlRSXZRMWRTNmUyRUhJVEU9PC9EUT48SW52ZXJzZVE+Z1lvNmZtSEl0bGtZcG4wWWRSUE9icVRmZURhZm96WnMxaWQ3S2lORWRIakx1MkN3NmhnZEpXVjArUXlSdFFzZDMraTM2eFc2d3FQMmg3QVRsQkJ0cEhLU2lmTmo2VGRSWUEvVUZsZldsWm1yUzdoWjdNQ3FaMmlUNTVQZjJWa3k3RUEwdFY2a1pvOENvRzdYRWtmU2tadzR0Q2hGN1Nja0FTSWF0US9aY2RNPTwvSW52ZXJzZVE+PEQ+T2xGNVdZM0ZEZUlOWWY1M3RpWTRCSGkzcEZsMkk3S3NmRnVKOXJyNkdRckNLRDUvSkZDMUoxcWtpMnVzY0lJZWk5R2JFbk5ka016OEgra0IxbXAwcTZFVkR5aGxJaUNEUHZJQkw4c3FnSlNOTXNFNUMrcDYwS0lPTmtYSjJEU28rZy95RCtlK2dhZjN2aSs3MzQ2WHl6OSszL1RYa29teS9oZkRCR0VaRHlDbnZnN2gyRUdzRnh4N1RRbVdneWxoT3YweTdaQXp5Q0Rmc3JEUy90Mk8rcHNoWm9PYkpWZGVlVlNlaVF4QVZLYTNFTzdJRHFLNm5pSHV2azhOMVgyejBBYWFWaVlJUDdJZ0JXMmdZNXJwcTlRa25HZHhxb2I2VHFvQlV4aFBSM2VVblAvbWhnOWlXejZiNW42RnhsR2tSVkxSMndjaVQ1Z25TMzFjaEJ3cXVRPT08L0Q+PC9SU0FLZXlWYWx1ZT4=');
PublicKeyXmlString := Base64Convert.FromBase64('PFJTQUtleVZhbHVlPjxNb2R1bHVzPmNKMHBpL2ZBcXJTRy9TZTUrZGdzcksyNjNwSUkvQjhieGZyWDBoMm1aN0VZUWhURXhYa2d6Z0xwS3dFRWFmdUs0MFVqUjEzNlNLQ3I5S240aHpPek1zam5hMXJJRXJCUnMzcU5IS1NxS3JzdkhaUTljRFo3RElVekh2cVh0Q01KMFo0clFBZlZLcWl2bGZqd3RJR1ZPSXRKK0RMT1E4S2tZNjJiOTI2YzhMTEtGUG5SU1ZxQnQrL3lGbEJ3M1NlQWdNYzBtaXRKRUhvYW5LdExXc3RLVzlDTW55OWc1R1V2cnZaY0wwUjR4NkpabFlGTVMwQnBmdFJNbmFrbnI3VXpxMGdvWnY4OHhmb1IrTW1ud1ZUOWdTU0ZRRW1rOVRHaVdjdUV1bnFNUmZ4b3htQW0zVGt3RTRMSDVDNHVNMWRlUGVnWDM0bmoyZmphOWhpUWtReHVqdz09PC9Nb2R1bHVzPjxFeHBvbmVudD5BUUFCPC9FeHBvbmVudD48L1JTQUtleVZhbHVlPg==');
RSACryptoServiceProvider.CreateRSAKeyPair(PublicKeyXmlString, PrivateKeyXmlStringSecret);
IsInitialized := true;
end;

Expand Down

0 comments on commit cf12bc8

Please sign in to comment.