Skip to content

Commit cdd74e3

Browse files
committed
Change Array.Copy to Buffer.BlockCopy (#3)
1 parent 0a812c4 commit cdd74e3

File tree

2 files changed

+10
-12
lines changed

2 files changed

+10
-12
lines changed

Lib.Net.Http.WebPush/Authentication/VapidAuthentication.cs

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
using System.Globalization;
44
using System.Security.Cryptography;
55
using Org.BouncyCastle.Math;
6-
using Org.BouncyCastle.Crypto.Parameters;
76
using Org.BouncyCastle.Crypto.Signers;
87
using Lib.Net.Http.WebPush.Internals;
98

@@ -59,11 +58,12 @@ internal WebPushSchemeHeadersValues(string authenticationHeaderValueParameter, s
5958
private string _subject;
6059
private string _publicKey;
6160
private string _privateKey;
62-
private ECPrivateKeyParameters _privateSigningKey;
6361
private int _relativeExpiration;
6462

6563
private static readonly DateTime _unixEpoch = new DateTime(1970, 1, 1, 0, 0, 0);
6664
private static readonly string _jwtHeaderSegment = UrlBase64Converter.ToUrlBase64String(Encoding.UTF8.GetBytes(JWT_HEADER));
65+
66+
private ECDsaSigner _jwtSigner;
6767
#endregion
6868

6969
#region Properties
@@ -140,7 +140,9 @@ public string PrivateKey
140140
}
141141

142142
_privateKey = value;
143-
_privateSigningKey = ECKeyHelper.GetECPrivateKeyParameters(decodedPrivateKey);
143+
144+
_jwtSigner = new ECDsaSigner();
145+
_jwtSigner.Init(true, ECKeyHelper.GetECPrivateKeyParameters(decodedPrivateKey));
144146
}
145147
}
146148

@@ -240,10 +242,7 @@ private string GenerateToken(string audience, DateTime absoluteExpiration)
240242
jwtInputHash = sha256Hasher.ComputeHash(Encoding.UTF8.GetBytes(jwtInput));
241243
}
242244

243-
ECDsaSigner jwtSigner = new ECDsaSigner();
244-
jwtSigner.Init(true, _privateSigningKey);
245-
246-
BigInteger[] jwtSignature = jwtSigner.GenerateSignature(jwtInputHash);
245+
BigInteger[] jwtSignature = _jwtSigner.GenerateSignature(jwtInputHash);
247246

248247
byte[] jwtSignatureFirstSegment = jwtSignature[0].ToByteArrayUnsigned();
249248
byte[] jwtSignatureSecondSegment = jwtSignature[1].ToByteArrayUnsigned();
@@ -289,7 +288,7 @@ private static void ByteArrayCopyWithPadLeft(byte[] sourceArray, byte[] destinat
289288
destinationIndex += (destinationLengthToUse - sourceArray.Length);
290289
}
291290

292-
Array.Copy(sourceArray, 0, destinationArray, destinationIndex, sourceArray.Length);
291+
Buffer.BlockCopy(sourceArray, 0, destinationArray, destinationIndex, sourceArray.Length);
293292
}
294293
#endregion
295294
}

Lib.Net.Http.WebPush/PushServiceClient.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -297,14 +297,13 @@ private static byte[] GetKeyingMaterialInfoParameter(byte[] userAgentPublicKey,
297297
// "WebPush: info" || 0x00 || ua_public || as_public || 0x01
298298
byte[] infoParameter = new byte[_keyingMaterialInfoParameterPrefix.Length + userAgentPublicKey.Length + applicationServerPublicKey.Length + 2];
299299

300-
Array.Copy(_keyingMaterialInfoParameterPrefix, infoParameter, _keyingMaterialInfoParameterPrefix.Length);
300+
Buffer.BlockCopy(_keyingMaterialInfoParameterPrefix, 0, infoParameter, 0, _keyingMaterialInfoParameterPrefix.Length);
301301
int infoParameterIndex = _keyingMaterialInfoParameterPrefix.Length + 1;
302302

303-
Array.Copy(userAgentPublicKey, 0, infoParameter, infoParameterIndex, userAgentPublicKey.Length);
303+
Buffer.BlockCopy(userAgentPublicKey, 0, infoParameter, infoParameterIndex, userAgentPublicKey.Length);
304304
infoParameterIndex += userAgentPublicKey.Length;
305305

306-
Array.Copy(applicationServerPublicKey, 0, infoParameter, infoParameterIndex, applicationServerPublicKey.Length);
307-
306+
Buffer.BlockCopy(applicationServerPublicKey, 0, infoParameter, infoParameterIndex, applicationServerPublicKey.Length);
308307
infoParameter[infoParameter.Length - 1] = KEYING_MATERIAL_INFO_PARAMETER_DELIMITER;
309308

310309
return infoParameter;

0 commit comments

Comments
 (0)