36 lines
856 B
Go
36 lines
856 B
Go
|
package s3crypto
|
||
|
|
||
|
// Padder handles padding of crypto data
|
||
|
type Padder interface {
|
||
|
// Pad will pad the byte array.
|
||
|
// The second parameter is NOT how many
|
||
|
// bytes to pad by, but how many bytes
|
||
|
// have been read prior to the padding.
|
||
|
// This allows for streamable padding.
|
||
|
Pad([]byte, int) ([]byte, error)
|
||
|
// Unpad will unpad the byte bytes. Unpad
|
||
|
// methods must be constant time.
|
||
|
Unpad([]byte) ([]byte, error)
|
||
|
// Name returns the name of the padder.
|
||
|
// This is used when decrypting on
|
||
|
// instantiating new padders.
|
||
|
Name() string
|
||
|
}
|
||
|
|
||
|
// NoPadder does not pad anything
|
||
|
var NoPadder = Padder(noPadder{})
|
||
|
|
||
|
type noPadder struct{}
|
||
|
|
||
|
func (padder noPadder) Pad(b []byte, n int) ([]byte, error) {
|
||
|
return b, nil
|
||
|
}
|
||
|
|
||
|
func (padder noPadder) Unpad(b []byte) ([]byte, error) {
|
||
|
return b, nil
|
||
|
}
|
||
|
|
||
|
func (padder noPadder) Name() string {
|
||
|
return "NoPadding"
|
||
|
}
|