...

Source file src/github.com/cloudflare/circl/sign/dilithium/dilithium_test.go

Documentation: github.com/cloudflare/circl/sign/dilithium

     1  package dilithium
     2  
     3  import (
     4  	"encoding/hex"
     5  	"testing"
     6  
     7  	"github.com/cloudflare/circl/internal/sha3"
     8  )
     9  
    10  func hexHash(in []byte) string {
    11  	var ret [16]byte
    12  	h := sha3.NewShake256()
    13  	_, _ = h.Write(in[:])
    14  	_, _ = h.Read(ret[:])
    15  	return hex.EncodeToString(ret[:])
    16  }
    17  
    18  func TestNewKeyFromSeed(t *testing.T) {
    19  	// Test vectors generated from reference implementation
    20  	for _, tc := range []struct {
    21  		name string
    22  		esk  string
    23  		epk  string
    24  	}{
    25  		{
    26  			"Dilithium2", "afe2e91f5f5899354230744c18410498",
    27  			"7522162619f3329b5312322d3ee45b87",
    28  		},
    29  		{
    30  			"Dilithium3", "8ad3142e08b718b33f7c2668cd9d053c",
    31  			"3562fc184dce1a10aad099051705b5d3",
    32  		},
    33  		{
    34  			"Dilithium5", "3956d812a7961af6e5dad16af15c736c",
    35  			"665388291aa01e12e7f94bdc7769db18",
    36  		},
    37  		{
    38  			"Dilithium2-AES", "8466a752b0a09e63e42f66d3174a6471",
    39  			"c3f8e705a0d8dfd489b98b205670f393",
    40  		},
    41  		{
    42  			"Dilithium3-AES", "2bb713ba7cb15f3ebf05c4c1fbb1b03c",
    43  			"eb2bd8d98630835a3b18594ac436368b",
    44  		},
    45  		{
    46  			"Dilithium5-AES", "a613a08b564ee8717ba4f5ccfddc2693",
    47  			"2f541bf6fedd12854d06a6b80090932a",
    48  		},
    49  	} {
    50  		t.Run(tc.name, func(t *testing.T) {
    51  			mode := ModeByName(tc.name)
    52  			if mode == nil {
    53  				t.Fatal()
    54  			}
    55  			var seed [32]byte
    56  			pk, sk := mode.NewKeyFromSeed(seed[:])
    57  
    58  			pkh := hexHash(pk.Bytes())
    59  			skh := hexHash(sk.Bytes())
    60  			if pkh != tc.epk {
    61  				t.Fatalf("%s expected pk %s, got %s", tc.name, tc.epk, pkh)
    62  			}
    63  			if skh != tc.esk {
    64  				t.Fatalf("%s expected pk %s, got %s", tc.name, tc.esk, skh)
    65  			}
    66  		})
    67  	}
    68  }
    69  

View as plain text