コード例 #1
0
        public unsafe KeyPair GenerateKeyPair(byte *privateKey)
        {
            var publicKey = new byte[DhLen];

            Libsodium.crypto_scalarmult_curve25519_base(publicKey, privateKey);
            return(new KeyPair(privateKey, DhLen, publicKey));
        }
コード例 #2
0
        internal static Signature64 Random()
        {
            var value = default(Signature64);
            var ptr   = Unsafe.AsPointer(ref value);

            Libsodium.randombytes_buf(ptr, (UIntPtr)Size);
            return(value);
        }
コード例 #3
0
        public KeyPair GenerateKeyPair()
        {
            unsafe
            {
                var sk = (byte *)Libsodium.sodium_malloc((ulong)DhLen);
                for (var i = 0; i < DhLen; i++)
                {
                    sk[i] = fixedPrivateKey[i];
                }

                return(GenerateKeyPair(sk));
            }
        }
コード例 #4
0
ファイル: SecureHashProvider.cs プロジェクト: danielcrenna/ID
        public VerifyHashResult PasswordVerify(ReadOnlySpan <byte> password, ReadOnlySpan <byte> hash)
        {
            unsafe
            {
                fixed(byte *p = &password.GetPinnableReference())
                {
                    fixed(byte *h = &hash.GetPinnableReference())
                    {
                        var result = Libsodium.crypto_pwhash_str_verify(h, p, password.Length);

                        if (result != 0)
                        {
                            return(VerifyHashResult.Invalid);
                        }

                        return(VerifyHashResult.Valid);
                    }
                }
            }
        }
コード例 #5
0
ファイル: SecureHashProvider.cs プロジェクト: danielcrenna/ID
        public ReadOnlySpan <byte> Password(ReadOnlySpan <byte> password)
        {
            const int  size     = 128;
            const long opsLimit = 3;

            Span <byte> buffer = new byte[size];

            var memLimit = (int)_options.CurrentValue.PasswordHashMaxBytes;

            unsafe
            {
                fixed(byte *b = buffer)
                {
                    fixed(byte *p = password)
                    {
                        Libsodium.crypto_pwhash_str(b, p, password.Length, opsLimit, memLimit);
                    }
                }
            }

            return(buffer);
        }