github.com/osdi23p228/fabric@v0.0.0-20221218062954-77808885f5db/bccsp/sw/rsa_test.go (about) 1 /* 2 Copyright IBM Corp. All Rights Reserved. 3 4 SPDX-License-Identifier: Apache-2.0 5 */ 6 7 package sw 8 9 import ( 10 "crypto/rand" 11 "crypto/rsa" 12 "crypto/sha256" 13 "crypto/x509" 14 "encoding/asn1" 15 "math/big" 16 "testing" 17 18 "github.com/stretchr/testify/require" 19 ) 20 21 type rsaPublicKeyASN struct { 22 N *big.Int 23 E int 24 } 25 26 func TestRSAPublicKey(t *testing.T) { 27 lowLevelKey, err := rsa.GenerateKey(rand.Reader, 2048) 28 require.NoError(t, err) 29 k := &rsaPublicKey{&lowLevelKey.PublicKey} 30 31 require.False(t, k.Symmetric()) 32 require.False(t, k.Private()) 33 34 k.pubKey = nil 35 ski := k.SKI() 36 require.Nil(t, ski) 37 38 k.pubKey = &lowLevelKey.PublicKey 39 ski = k.SKI() 40 raw, err := asn1.Marshal(rsaPublicKeyASN{N: k.pubKey.N, E: k.pubKey.E}) 41 require.NoError(t, err, "asn1 marshal failed") 42 hash := sha256.New() 43 hash.Write(raw) 44 ski2 := hash.Sum(nil) 45 require.Equal(t, ski, ski2, "SKI is not computed in the right way.") 46 47 pk, err := k.PublicKey() 48 require.NoError(t, err) 49 require.Equal(t, k, pk) 50 51 bytes, err := k.Bytes() 52 require.NoError(t, err) 53 bytes2, err := x509.MarshalPKIXPublicKey(k.pubKey) 54 require.Equal(t, bytes2, bytes, "bytes are not computed in the right way.") 55 56 _, err = (&rsaPublicKey{}).Bytes() 57 require.EqualError(t, err, "Failed marshalling key. Key is nil.") 58 }