public static unsafe void AddPublicKey(Span <byte> a, Span <byte> b) { Span <byte> blsA = stackalloc byte[BlsPublicKeyLength]; Span <byte> blsB = stackalloc byte[BlsPublicKeyLength]; fixed(byte *aRef = a) fixed(byte *bRef = b) fixed(byte *blsARef = blsA) fixed(byte *blsBRef = blsB) { DeserializePublicKey(blsARef, aRef); DeserializePublicKey(blsBRef, bRef); switch (Platform) { case OsPlatform.Windows: Win64Lib.blsPublicKeyAdd(blsARef, blsBRef); break; case OsPlatform.Mac: MacLib.blsPublicKeyAdd(blsARef, blsBRef); break; case OsPlatform.Linux: PosixLib.blsPublicKeyAdd(blsARef, blsBRef); break; default: throw new ArgumentOutOfRangeException(Platform.ToString()); } SerializePublicKey(aRef, blsARef); } }