Ich ermüde, um das JWT-Token für den Aufruf von Apns zu generieren. hier ist mein Code:System.Security.Cryptography.CryptographicException: Die angeforderte Operation wird nicht unterstützt. Windows Server 2012
var header = new Dictionary<string, object>()
{
{ "kid" , keyID }
};
var payload = new Dictionary<string, object>()
{
{ "iss", teamID },
{ "iat", DateTimeOffset.Now.ToUnixTimeSeconds().ToString() }
};
var privateKey = GetApnsPrivateKey(authKeyPath);
var token = JWT.Encode(payload, privateKey, JwsAlgorithm.ES256, header);
public static CngKey GetApnsPrivateKey(string authKeyPath)
{
using (var reader = new StreamReader(new FileStream(authKeyPath, FileMode.Open, FileAccess.Read, FileShare.Read)))
{
var ecPrivateKeyParameters = (ECPrivateKeyParameters)new PemReader(reader).ReadObject();
var x = ecPrivateKeyParameters.Parameters.G.AffineXCoord.GetEncoded();
var y = ecPrivateKeyParameters.Parameters.G.AffineYCoord.GetEncoded();
var d = ecPrivateKeyParameters.D.ToByteArrayUnsigned();
return EccKey.New(x, y, d);
Code auf meinem Rechner funktioniert nur gut, aber im Server werfen sie diese Ausnahme auf GetApnsPrivateKey
Methode:
System.Security.Cryptography.CryptographicException: The requested operation is not supported
nach wenig Suche im Forum i seinen wegen herausgefunden CNG Key Storage Provider: https://msdn.microsoft.com/en-us/library/windows/desktop/aa376242.aspx?f=255&MSPPError=-2147217396 Jetzt frage ich mich, gibt es eine Möglichkeit, das Problem zu lösen?
'EccKey.New' ist keine NetFx-Methode, also woher kam es/was ist seine Implementierung? – bartonjs
Hallo liebe @ Bartonjs. EccKey.New ist die Cryptography-Bibliotheksmethode. Hier ist der vollständige Pfad der Methode: Security.Cryptography.EccKey.New (x, y, d); – David