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