Skip to content

Instantly share code, notes, and snippets.

@snorrelo
Last active September 12, 2017 07:27
Show Gist options
  • Save snorrelo/4aeb1213491d4821d1f5c698b1fd24bd to your computer and use it in GitHub Desktop.
Save snorrelo/4aeb1213491d4821d1f5c698b1fd24bd to your computer and use it in GitHub Desktop.
Generate Feide secret C#
// Jeg fikk det til å virke først når jeg konverterte pem sertifikatet til XML for import til RSA.
// Sånn sett kunne det sikkert ha vært interessant for andre og ha dette tilgjengelig.
// Xml er vedlagt
// Jose-jwt from https://github.com/dvsekhvalnov/jose-jwt
using Jose;
using System.Text;
using System.Security.Cryptography;
using System.Runtime.InteropServices;
public string Generate_feidesecret(string key)
{
string FeideSecret = null;
string FeidePublicCertAsXML = "<RSAKeyValue><Modulus>!!REPLACE_WITH_MODULUS_VALUE_FROM_XML!!</Modulus><Exponent>!!REPLACE_WITH_EXPONENT_VALUE_FOM_XML!!</Exponent></RSAKeyValue>";
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
RSA.FromXmlString(FeidePublicCertAsXML);
var payload = new Dictionary<string, object>()
{
{ "secret", GenerateBase32Key(16) }
};
var jsonpay = JsonConvert.SerializeObject(payload);
FeideSecret = JWT.Encode(jsonpay, RSA, JweAlgorithm.RSA_OAEP, JweEncryption.A128CBC_HS256);
return FeideSecret;
}
public string GenerateBase32Key(int length)
{
string def = "ABCDEFGHJKLMNOPQRSTUVWXYZ234567";
Random rnd = new Random();
StringBuilder ret = new StringBuilder();
for (int i = 0; i < length -1; i++)
ret.Append(def.Substring(rnd.Next(def.Length), 1));
string Base32Key = ret.ToString();
return Base32Key;
}
<RSAKeyValue>
<Modulus>up7WiUltl3/etJmKC+y8Nv1+8qDZMmB4jy4/m2iYHy/2oTWp2ghAVO+voiDx1rhAWEckc15ZhctOTS8APIIOoMLujFPOes1Hm0tj3LWhwM0vxCKEnb303oaXPHHtbrpbohnjEHg7tOgVK1mEm4MQoUfhnolK9ZrWERd+koLXvs18HfFCE+MMTlsEIEDfgprVVndxNtQMqYcDpfkDGgLkMEhtj+3Ae38kYnUVHPNWHXIm2sDYDyImBZhoF7ire45oLl718ZNLBbBdvgwQ2ZP7HWSnWgcInc+NoE6dMXN5IGdIwEUDm+eNBtasKHihGeDZXbkvbIg6VJmRY8VbQQCvJw==</Modulus>
<Exponent>AQAB</Exponent>
</RSAKeyValue>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment