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