Skip to content

Instantly share code, notes, and snippets.

@mmcloughlin
mmcloughlin / intercept.md
Created March 9, 2021 00:53
Notes on function call interception.
goos: linux
goarch: amd64
pkg: crypto/cipher
BenchmarkAESGCMSeal1K-8 20815730 557 ns/op 1837.65 MB/s
BenchmarkAESGCMOpen1K-8 22296660 533 ns/op 1921.06 MB/s
BenchmarkAESGCMSign8K-8 5809227 2065 ns/op 3968.00 MB/s
BenchmarkAESGCMSeal8K-8 3583026 3364 ns/op 2434.99 MB/s
BenchmarkAESGCMOpen8K-8 3652791 3291 ns/op 2488.84 MB/s
BenchmarkAESCTR1K-8 4263354 2814 ns/op 362.08 MB/s
BenchmarkAESCTR8K-8 547248 21890 ns/op 374.01 MB/s
@mmcloughlin
mmcloughlin / addchain.out
Last active January 2, 2020 04:01
Addition chain results.
--- PASS: TestEnsembleResultsInversionChains/curve25519_field (36.96s)
ensemble_test.go:155: n-2=7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeb
ensemble_test.go:177: best: opt(runs(continued_fractions(dichotomic)))
ensemble_test.go:178: total: 266
ensemble_test.go:181: known: 265
ensemble_test.go:182: delta: +1
--- PASS: TestEnsembleResultsInversionChains/p256_field (25.46s)
ensemble_test.go:155: n-3=ffffffff00000001000000000000000000000000fffffffffffffffffffffffc
ensemble_test.go:177: best: opt(runs(continued_fractions(dichotomic)))
ensemble_test.go:178: total: 266
package main
import (
"crypto/elliptic"
"crypto/rand"
"fmt"
"log"
"math/big"
"github.com/cloudflare/circl/ecc/p384"
#
# Opcode values.
#
HALT = 0
LOAD = 1
STORE = 2
ADDC = 3
MVAC = 4
JEQ = 5
JLT = 6
@mmcloughlin
mmcloughlin / README.md
Last active April 9, 2019 02:28
Elementary school multiplication in avo.

Elementary school multiplication in avo.

@mmcloughlin
mmcloughlin / eval.go
Created February 13, 2019 22:27
Evaluate arithmetic expressions in Go
package main
import (
"errors"
"go/constant"
"go/token"
"go/types"
"log"
)
TEXT ·Imm(SB),0,$0
// types
ADDQ $1, AX
// ADDQ $0.3, AX
// ADDQ $"hellowor", AX
ADDSD $(3.141), X0
// ADDSD $20, X0
// sizes
// Yu2
#include "textflag.h"
DATA b<>+0(SB)/8, $0x0011223344556677
DATA b<>+8(SB)/8, $"strconst"
DATA b<>+16(SB)/8, $3.141592
DATA b<>+24(SB)/4, $3.141592
// 28-31: empty
DATA b<>+32(SB)/4, $0x00112233
DATA b<>+36(SB)/2, $0x4455
DATA b<>+38(SB)/1, $0x66
package argsize
func Index3(a [7]byte) byte
func Expect(a [7]byte) byte { return a[3] }