// This file was generated by counterfeiter
package fake_ssh

import (
	"sync"

	"golang.org/x/crypto/ssh"
)

type FakePublicKey struct {
	TypeStub        func() string
	typeMutex       sync.RWMutex
	typeArgsForCall []struct{}
	typeReturns     struct {
		result1 string
	}
	MarshalStub        func() []byte
	marshalMutex       sync.RWMutex
	marshalArgsForCall []struct{}
	marshalReturns     struct {
		result1 []byte
	}
	VerifyStub        func(data []byte, sig *ssh.Signature) error
	verifyMutex       sync.RWMutex
	verifyArgsForCall []struct {
		data []byte
		sig  *ssh.Signature
	}
	verifyReturns struct {
		result1 error
	}
}

func (fake *FakePublicKey) Type() string {
	fake.typeMutex.Lock()
	fake.typeArgsForCall = append(fake.typeArgsForCall, struct{}{})
	fake.typeMutex.Unlock()
	if fake.TypeStub != nil {
		return fake.TypeStub()
	} else {
		return fake.typeReturns.result1
	}
}

func (fake *FakePublicKey) TypeCallCount() int {
	fake.typeMutex.RLock()
	defer fake.typeMutex.RUnlock()
	return len(fake.typeArgsForCall)
}

func (fake *FakePublicKey) TypeReturns(result1 string) {
	fake.TypeStub = nil
	fake.typeReturns = struct {
		result1 string
	}{result1}
}

func (fake *FakePublicKey) Marshal() []byte {
	fake.marshalMutex.Lock()
	fake.marshalArgsForCall = append(fake.marshalArgsForCall, struct{}{})
	fake.marshalMutex.Unlock()
	if fake.MarshalStub != nil {
		return fake.MarshalStub()
	} else {
		return fake.marshalReturns.result1
	}
}

func (fake *FakePublicKey) MarshalCallCount() int {
	fake.marshalMutex.RLock()
	defer fake.marshalMutex.RUnlock()
	return len(fake.marshalArgsForCall)
}

func (fake *FakePublicKey) MarshalReturns(result1 []byte) {
	fake.MarshalStub = nil
	fake.marshalReturns = struct {
		result1 []byte
	}{result1}
}

func (fake *FakePublicKey) Verify(data []byte, sig *ssh.Signature) error {
	fake.verifyMutex.Lock()
	fake.verifyArgsForCall = append(fake.verifyArgsForCall, struct {
		data []byte
		sig  *ssh.Signature
	}{data, sig})
	fake.verifyMutex.Unlock()
	if fake.VerifyStub != nil {
		return fake.VerifyStub(data, sig)
	} else {
		return fake.verifyReturns.result1
	}
}

func (fake *FakePublicKey) VerifyCallCount() int {
	fake.verifyMutex.RLock()
	defer fake.verifyMutex.RUnlock()
	return len(fake.verifyArgsForCall)
}

func (fake *FakePublicKey) VerifyArgsForCall(i int) ([]byte, *ssh.Signature) {
	fake.verifyMutex.RLock()
	defer fake.verifyMutex.RUnlock()
	return fake.verifyArgsForCall[i].data, fake.verifyArgsForCall[i].sig
}

func (fake *FakePublicKey) VerifyReturns(result1 error) {
	fake.VerifyStub = nil
	fake.verifyReturns = struct {
		result1 error
	}{result1}
}

var _ ssh.PublicKey = new(FakePublicKey)
