git.frostfs.info/TrueCloudLab/frostfs-sdk-go@v0.0.0-20241022124111-5361f0ecebd3/session/test/session.go (about) 1 package sessiontest 2 3 import ( 4 "crypto/ecdsa" 5 "crypto/elliptic" 6 "crypto/rand" 7 8 cidtest "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/container/id/test" 9 frostfsecdsa "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/crypto/ecdsa" 10 oidtest "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/object/id/test" 11 "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/session" 12 "github.com/google/uuid" 13 "github.com/nspcc-dev/neo-go/pkg/crypto/keys" 14 ) 15 16 var p ecdsa.PrivateKey 17 18 func init() { 19 k, err := keys.NewPrivateKey() 20 if err != nil { 21 panic(err) 22 } 23 24 p = k.PrivateKey 25 } 26 27 // Container returns random session.Container. 28 // 29 // Resulting token is unsigned. 30 func Container() *session.Container { 31 var tok session.Container 32 33 priv, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) 34 if err != nil { 35 panic(err) 36 } 37 38 tok.ForVerb(session.VerbContainerPut) 39 tok.ApplyOnlyTo(cidtest.ID()) 40 tok.SetID(uuid.New()) 41 tok.SetAuthKey((*frostfsecdsa.PublicKey)(&priv.PublicKey)) 42 tok.SetExp(11) 43 tok.SetNbf(22) 44 tok.SetIat(33) 45 46 return &tok 47 } 48 49 // ContainerSigned returns signed random session.Container. 50 // 51 // Panics if token could not be signed (actually unexpected). 52 func ContainerSigned() *session.Container { 53 tok := Container() 54 55 err := tok.Sign(p) 56 if err != nil { 57 panic(err) 58 } 59 60 return tok 61 } 62 63 // Object returns random session.Object. 64 // 65 // Resulting token is unsigned. 66 func Object() *session.Object { 67 var tok session.Object 68 69 priv, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) 70 if err != nil { 71 panic(err) 72 } 73 74 tok.ForVerb(session.VerbObjectPut) 75 tok.BindContainer(cidtest.ID()) 76 tok.LimitByObjects(oidtest.ID(), oidtest.ID()) 77 tok.SetID(uuid.New()) 78 tok.SetAuthKey((*frostfsecdsa.PublicKey)(&priv.PublicKey)) 79 tok.SetExp(11) 80 tok.SetNbf(22) 81 tok.SetIat(33) 82 83 return &tok 84 } 85 86 // ObjectSigned returns signed random session.Object. 87 // 88 // Panics if token could not be signed (actually unexpected). 89 func ObjectSigned() *session.Object { 90 tok := Object() 91 92 err := tok.Sign(p) 93 if err != nil { 94 panic(err) 95 } 96 97 return tok 98 }