Skip to content

Commit ae9ea22

Browse files
committed
storagenode/piecestore: return node certificate chain at upload conclusion
uplinks currently get the node's certificate chain over TLS. once Noise is in use, uplinks will no longer be able to do this. we should start having the upload request return the certificate chain in the same release that starts supporting noise. Change-Id: I619b23cb8e25691bcc62d760f884403a4ccd64a0
1 parent 33bd929 commit ae9ea22

File tree

3 files changed

+9
-8
lines changed

3 files changed

+9
-8
lines changed

storagenode/peer.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ import (
2323
"storj.io/common/peertls/extensions"
2424
"storj.io/common/peertls/tlsopts"
2525
"storj.io/common/rpc"
26-
"storj.io/common/signing"
2726
"storj.io/common/storj"
2827
"storj.io/private/debug"
2928
"storj.io/private/version"
@@ -541,7 +540,7 @@ func New(log *zap.Logger, full *identity.FullIdentity, db DB, revocationDB exten
541540

542541
peer.Storage2.Endpoint, err = piecestore.NewEndpoint(
543542
peer.Log.Named("piecestore"),
544-
signing.SignerFromFullIdentity(peer.Identity),
543+
peer.Identity,
545544
peer.Storage2.Trust,
546545
peer.Storage2.Monitor,
547546
peer.Storage2.RetainService,

storagenode/piecestore/endpoint.go

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ type Endpoint struct {
9393
log *zap.Logger
9494
config Config
9595

96-
signer signing.Signer
96+
ident *identity.FullIdentity
9797
trust *trust.Pool
9898
monitor *monitor.Service
9999
retain *retain.Service
@@ -110,12 +110,12 @@ type Endpoint struct {
110110
}
111111

112112
// NewEndpoint creates a new piecestore endpoint.
113-
func NewEndpoint(log *zap.Logger, signer signing.Signer, trust *trust.Pool, monitor *monitor.Service, retain *retain.Service, pingStats pingStatsSource, store *pieces.Store, trashChore *pieces.TrashChore, pieceDeleter *pieces.Deleter, ordersStore *orders.FileStore, usage bandwidth.DB, usedSerials *usedserials.Table, config Config) (*Endpoint, error) {
113+
func NewEndpoint(log *zap.Logger, ident *identity.FullIdentity, trust *trust.Pool, monitor *monitor.Service, retain *retain.Service, pingStats pingStatsSource, store *pieces.Store, trashChore *pieces.TrashChore, pieceDeleter *pieces.Deleter, ordersStore *orders.FileStore, usage bandwidth.DB, usedSerials *usedserials.Table, config Config) (*Endpoint, error) {
114114
return &Endpoint{
115115
log: log,
116116
config: config,
117117

118-
signer: signer,
118+
ident: ident,
119119
trust: trust,
120120
monitor: monitor,
121121
retain: retain,
@@ -498,7 +498,7 @@ func (endpoint *Endpoint) Upload(stream pb.DRPCPiecestore_UploadStream) (err err
498498
}
499499
}
500500

501-
storageNodeHash, err := signing.SignPieceHash(ctx, endpoint.signer, &pb.PieceHash{
501+
storageNodeHash, err := signing.SignPieceHash(ctx, signing.SignerFromFullIdentity(endpoint.ident), &pb.PieceHash{
502502
PieceId: limit.PieceId,
503503
Hash: calculatedHash,
504504
HashAlgorithm: hashAlgorithm,
@@ -510,7 +510,9 @@ func (endpoint *Endpoint) Upload(stream pb.DRPCPiecestore_UploadStream) (err err
510510
}
511511

512512
closeErr := rpctimeout.Run(ctx, endpoint.config.StreamOperationTimeout, func(_ context.Context) (err error) {
513-
return stream.SendAndClose(&pb.PieceUploadResponse{Done: storageNodeHash})
513+
return stream.SendAndClose(&pb.PieceUploadResponse{
514+
Done: storageNodeHash,
515+
NodeCertchain: identity.EncodePeerIdentity(endpoint.ident.PeerIdentity())})
514516
})
515517
if errs.Is(closeErr, io.EOF) {
516518
closeErr = nil

storagenode/piecestore/verification.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ func (endpoint *Endpoint) verifyOrderLimit(ctx context.Context, limit *pb.OrderL
3535
switch {
3636
case limit.Limit < 0:
3737
return rpcstatus.Error(rpcstatus.InvalidArgument, "order limit is negative")
38-
case endpoint.signer.ID() != limit.StorageNodeId:
38+
case endpoint.ident.ID != limit.StorageNodeId:
3939
return rpcstatus.Errorf(rpcstatus.InvalidArgument, "order intended for other storagenode: %v", limit.StorageNodeId)
4040
case endpoint.IsExpired(limit.PieceExpiration):
4141
return rpcstatus.Errorf(rpcstatus.InvalidArgument, "piece expired: %v", limit.PieceExpiration)

0 commit comments

Comments
 (0)