mirror of
https://github.com/ncruces/go-sqlite3.git
synced 2026-01-12 14:09:13 +00:00
54 lines
1.1 KiB
Go
54 lines
1.1 KiB
Go
|
|
package hash
|
||
|
|
|
||
|
|
import (
|
||
|
|
"crypto"
|
||
|
|
|
||
|
|
"github.com/ncruces/go-sqlite3"
|
||
|
|
"github.com/ncruces/go-sqlite3/internal/util"
|
||
|
|
)
|
||
|
|
|
||
|
|
func sha224Func(ctx sqlite3.Context, arg ...sqlite3.Value) {
|
||
|
|
hashFunc(ctx, arg[0], crypto.SHA224)
|
||
|
|
}
|
||
|
|
|
||
|
|
func sha384Func(ctx sqlite3.Context, arg ...sqlite3.Value) {
|
||
|
|
hashFunc(ctx, arg[0], crypto.SHA384)
|
||
|
|
}
|
||
|
|
|
||
|
|
func sha256Func(ctx sqlite3.Context, arg ...sqlite3.Value) {
|
||
|
|
size := 256
|
||
|
|
if len(arg) > 1 {
|
||
|
|
size = arg[1].Int()
|
||
|
|
}
|
||
|
|
|
||
|
|
switch size {
|
||
|
|
case 224:
|
||
|
|
hashFunc(ctx, arg[0], crypto.SHA224)
|
||
|
|
case 256:
|
||
|
|
hashFunc(ctx, arg[0], crypto.SHA256)
|
||
|
|
default:
|
||
|
|
ctx.ResultError(util.ErrorString("sha256: size must be 224, 256"))
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func sha512Func(ctx sqlite3.Context, arg ...sqlite3.Value) {
|
||
|
|
size := 512
|
||
|
|
if len(arg) > 1 {
|
||
|
|
size = arg[1].Int()
|
||
|
|
}
|
||
|
|
|
||
|
|
switch size {
|
||
|
|
case 224:
|
||
|
|
hashFunc(ctx, arg[0], crypto.SHA512_224)
|
||
|
|
case 256:
|
||
|
|
hashFunc(ctx, arg[0], crypto.SHA512_256)
|
||
|
|
case 384:
|
||
|
|
hashFunc(ctx, arg[0], crypto.SHA384)
|
||
|
|
case 512:
|
||
|
|
hashFunc(ctx, arg[0], crypto.SHA512)
|
||
|
|
default:
|
||
|
|
ctx.ResultError(util.ErrorString("sha512: size must be 224, 256, 384, 512"))
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|