1
0
zrcadlo https://github.com/henrydcase/nobs.git synchronizováno 2024-11-26 00:51:22 +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%
Tento commit je obsažen v:
Henry Case 2019-04-09 23:50:21 +01:00 odevzdal GitHub
rodič 71624cdc4c
revize 6f9706df01
V databázi nebyl nalezen žádný známý klíč pro tento podpis
ID GPG klíče: 4AEE18F83AFDEB23
3 změnil soubory, kde provedl 15 přidání a 4 odebrání

Zobrazit soubor

@ -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() {

Zobrazit soubor

@ -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 {

Zobrazit soubor

@ -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 {