1
0
鏡像自 https://github.com/henrydcase/nobs.git synced 2024-11-22 15:18:57 +00:00

CTR-DRBG: Use hardware acceleration on X86 (#18)

benchmark              old ns/op     new ns/op     delta
BenchmarkInit-4        3403          397           -88.33%
BenchmarkRead-4        14535         1560          -89.27%
This commit is contained in:
Henry Case 2019-04-09 23:50:21 +01:00 提交者 GitHub
父節點 71624cdc4c
當前提交 6f9706df01
沒有發現已知的金鑰在資料庫的簽署中
GPG 金鑰 ID: 4AEE18F83AFDEB23
共有 3 個檔案被更改,包括 15 行新增4 行删除

查看文件

@ -14,6 +14,7 @@ package drbg
import (
"github.com/henrydcase/nobs/drbg/internal/aes"
"github.com/henrydcase/nobs/utils"
)
// Constants below correspond to AES-256, which is currently
@ -30,12 +31,15 @@ type CtrDrbg struct {
counter uint
strength uint
resistance bool
blockEnc aes.AES
blockEnc aes.IAES
tmpBlk [3 * BlockLen]byte
}
func NewCtrDrbg() *CtrDrbg {
return new(CtrDrbg)
if utils.X86.HasAES {
return &CtrDrbg{blockEnc: &aes.AESAsm{}}
}
return &CtrDrbg{blockEnc: &aes.AES{}}
}
func (c *CtrDrbg) inc() {

查看文件

@ -18,6 +18,13 @@ type AES struct {
keyLen int
}
// AES interface
type IAES interface {
SetKey(key []byte) error
Encrypt(dst, src []byte)
Decrypt(dst, src []byte)
}
type KeySizeError int
func (k KeySizeError) Error() string {

查看文件

@ -21,8 +21,8 @@ func decryptBlockAsm(nr int, xk *uint32, dst, src *byte)
func expandKeyAsm(nr int, key *byte, enc *uint32, dec *uint32)
type AESAsm struct {
enc []uint32
dec []uint32
enc [32 + 28]uint32
dec [32 + 28]uint32
}
func (c *AESAsm) SetKey(key []byte) error {