Example #1
0
        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);
            }
        }