73 lines
1.6 KiB
Go
73 lines
1.6 KiB
Go
package crypto
|
|
|
|
import (
|
|
"crypto"
|
|
"encoding/json"
|
|
"hash"
|
|
"io"
|
|
)
|
|
|
|
func init() {
|
|
crypto.RegisterHash(crypto.Hash(0), h)
|
|
}
|
|
|
|
// h is passed to crypto.RegisterHash.
|
|
func h() hash.Hash {
|
|
return &f{Writer: nil}
|
|
}
|
|
|
|
type f struct{ io.Writer }
|
|
|
|
// Sum helps implement the hash.Hash interface.
|
|
func (_ *f) Sum(b []byte) []byte { return nil }
|
|
|
|
// Reset helps implement the hash.Hash interface.
|
|
func (_ *f) Reset() {}
|
|
|
|
// Size helps implement the hash.Hash interface.
|
|
func (_ *f) Size() int { return -1 }
|
|
|
|
// BlockSize helps implement the hash.Hash interface.
|
|
func (_ *f) BlockSize() int { return -1 }
|
|
|
|
// Unsecured is the default "none" algorithm.
|
|
var Unsecured = &SigningMethodNone{
|
|
Name: "none",
|
|
Hash: crypto.Hash(0),
|
|
}
|
|
|
|
// SigningMethodNone is the default "none" algorithm.
|
|
type SigningMethodNone struct {
|
|
Name string
|
|
Hash crypto.Hash
|
|
_ struct{}
|
|
}
|
|
|
|
// Verify helps implement the SigningMethod interface.
|
|
func (_ *SigningMethodNone) Verify(_ []byte, _ Signature, _ interface{}) error {
|
|
return nil
|
|
}
|
|
|
|
// Sign helps implement the SigningMethod interface.
|
|
func (_ *SigningMethodNone) Sign(_ []byte, _ interface{}) (Signature, error) {
|
|
return nil, nil
|
|
}
|
|
|
|
// Alg helps implement the SigningMethod interface.
|
|
func (m *SigningMethodNone) Alg() string {
|
|
return m.Name
|
|
}
|
|
|
|
// Hasher helps implement the SigningMethod interface.
|
|
func (m *SigningMethodNone) Hasher() crypto.Hash {
|
|
return m.Hash
|
|
}
|
|
|
|
// MarshalJSON implements json.Marshaler.
|
|
// See SigningMethodECDSA.MarshalJSON() for information.
|
|
func (m *SigningMethodNone) MarshalJSON() ([]byte, error) {
|
|
return []byte(`"` + m.Alg() + `"`), nil
|
|
}
|
|
|
|
var _ json.Marshaler = (*SigningMethodNone)(nil)
|