feat(tfstated): implement GET and POST methods, states are encrypted in a sqlite3 database

This commit is contained in:
Julien Dessaux 2024-09-30 00:58:49 +02:00
parent baf5aac08e
commit 4ff490806c
Signed by: adyxax
GPG key ID: F92E51B86E07177E
18 changed files with 627 additions and 2 deletions

31
pkg/scrypto/pkcs5.go Normal file
View file

@ -0,0 +1,31 @@
package scrypto
import (
"bytes"
"fmt"
)
func PadPKCS5(data []byte, blockSize int) []byte {
paddingSize := blockSize - len(data)%blockSize
padding := bytes.Repeat([]byte{byte(paddingSize)}, paddingSize)
return append(data, padding...)
}
func UnpadPKCS5(data []byte, blockSize int) ([]byte, error) {
dataSize := len(data)
if dataSize%blockSize != 0 {
return nil, fmt.Errorf("truncated data")
}
if len(data) == 0 {
return data, nil
} else {
paddingSize := int(data[dataSize-1])
if paddingSize > dataSize || paddingSize > blockSize {
return nil, fmt.Errorf("invalid padding size %d", paddingSize)
}
return data[:dataSize-paddingSize], nil
}
}