public SignedPrivateApiRequest SignRequest(PrivateApiRequest request, long nonce) { string signableString = request.FormatIntoSignableString(nonce); var signature = SigningExtensions.SignStringUsingSha512(signableString, currentRsaParameters); return(new SignedPrivateApiRequest(request, signature, nonce)); }
private static void AssertSignatureIsValide(PrivateApiRequest request, SignedPrivateApiRequest signedRequest) { using (var rsa = RSA.Create()) { rsa.ImportParameters(TestData.Credentials.PrivateRsaParameters); string signableString = request.FormatIntoSignableString(TestData.RequestNonce); var signableStringData = Encoding.UTF8.GetBytes(signableString); bool isValidSignature = rsa.VerifyData(signableStringData, signedRequest.Signature, HashAlgorithmName.SHA512, RSASignaturePadding.Pkcs1); Assert.That(isValidSignature, Is.True); } }
public SignedPrivateApiRequest SignRequest(PrivateApiRequest request, long nonce) => null; //ncrunch: no coverage
/// <summary> /// https://github.com/Fairlay/FairlayDotNetClient/wiki/Private-API#fairlay-private-api-documentation-v0 /// </summary> public static string FormatIntoSignableString(this PrivateApiRequest request, long nonce) => $"{nonce}|{request.UserId}|{request.Header}|{request.Body}";
private static void AssertIsEmptyRequestBody(PrivateApiRequest request) => Assert.That(request.Body, Is.Empty);
public SignedPrivateApiRequest(PrivateApiRequest request, byte[] signature, long nonce) : base( request.UserId, request.Header, request.Body) { Signature = signature; Nonce = nonce; }