satellite/metainfo: fix storing enc key/nonce (#2759)
This commit is contained in:
parent
e22c0bff94
commit
83461a7c01
@ -1368,6 +1368,15 @@ func (endpoint *Endpoint) CommitSegment(ctx context.Context, req *pb.SegmentComm
|
||||
RemotePieces: pieces,
|
||||
}
|
||||
|
||||
metadata, err := proto.Marshal(&pb.SegmentMeta{
|
||||
EncryptedKey: req.EncryptedKey,
|
||||
KeyNonce: req.EncryptedKeyNonce.Bytes(),
|
||||
})
|
||||
if err != nil {
|
||||
endpoint.log.Error("unable to marshal segment metadata", zap.Error(err))
|
||||
return nil, status.Errorf(codes.Internal, err.Error())
|
||||
}
|
||||
|
||||
pointer := &pb.Pointer{
|
||||
Type: pb.Pointer_REMOTE,
|
||||
Remote: remote,
|
||||
@ -1375,6 +1384,7 @@ func (endpoint *Endpoint) CommitSegment(ctx context.Context, req *pb.SegmentComm
|
||||
|
||||
CreationDate: streamID.CreationDate,
|
||||
ExpirationDate: streamID.ExpirationDate,
|
||||
Metadata: metadata,
|
||||
}
|
||||
|
||||
orderLimits := make([]*pb.OrderLimit, len(segmentID.OriginalOrderLimits))
|
||||
@ -1705,28 +1715,28 @@ func (endpoint *Endpoint) DownloadSegment(ctx context.Context, req *pb.SegmentDo
|
||||
var encryptedKeyNonce storj.Nonce
|
||||
var encryptedKey []byte
|
||||
if len(pointer.Metadata) != 0 {
|
||||
var segmentMeta *pb.SegmentMeta
|
||||
segmentMeta := pb.SegmentMeta{}
|
||||
if req.CursorPosition.Index == lastSegment {
|
||||
streamMeta := &pb.StreamMeta{}
|
||||
err = proto.Unmarshal(pointer.Metadata, streamMeta)
|
||||
if err != nil {
|
||||
return nil, status.Errorf(codes.Internal, err.Error())
|
||||
}
|
||||
segmentMeta = streamMeta.LastSegmentMeta
|
||||
segmentMeta = *streamMeta.LastSegmentMeta
|
||||
} else {
|
||||
err = proto.Unmarshal(pointer.Metadata, segmentMeta)
|
||||
err = proto.Unmarshal(pointer.Metadata, &segmentMeta)
|
||||
if err != nil {
|
||||
return nil, status.Errorf(codes.Internal, err.Error())
|
||||
}
|
||||
}
|
||||
if segmentMeta != nil {
|
||||
encryptedKeyNonce, err = storj.NonceFromBytes(segmentMeta.KeyNonce)
|
||||
if err != nil {
|
||||
return nil, status.Errorf(codes.Internal, "unable to get encryption key nonce from metadata: %v", err.Error())
|
||||
}
|
||||
|
||||
encryptedKey = segmentMeta.EncryptedKey
|
||||
encryptedKeyNonce, err = storj.NonceFromBytes(segmentMeta.KeyNonce)
|
||||
if err != nil {
|
||||
endpoint.log.Error("unable to get encryption key nonce from metadata", zap.Error(err))
|
||||
return nil, status.Errorf(codes.Internal, err.Error())
|
||||
}
|
||||
|
||||
encryptedKey = segmentMeta.EncryptedKey
|
||||
}
|
||||
|
||||
if pointer.Type == pb.Pointer_INLINE {
|
||||
|
@ -22,8 +22,9 @@ random_bytes_file () {
|
||||
dd if=/dev/urandom of="$output" count=1 bs="$size" >/dev/null 2>&1
|
||||
}
|
||||
|
||||
random_bytes_file 2x1024 "$SRC_DIR/small-upload-testfile" # create 2kb file of random bytes (inline)
|
||||
random_bytes_file 5x1024x1024 "$SRC_DIR/big-upload-testfile" # create 5mb file of random bytes (remote)
|
||||
random_bytes_file 2x1024 "$SRC_DIR/small-upload-testfile" # create 2kb file of random bytes (inline)
|
||||
random_bytes_file 5x1024x1024 "$SRC_DIR/big-upload-testfile" # create 5mb file of random bytes (remote)
|
||||
random_bytes_file 5x1024x1024 "$SRC_DIR/multisegment-upload-testfile" # create 5mb file of random bytes (remote)
|
||||
|
||||
UPLINK_DEBUG_ADDR=""
|
||||
|
||||
@ -31,12 +32,16 @@ uplink --config-dir "$GATEWAY_0_DIR" --debug.addr "$UPLINK_DEBUG_ADDR" mb "sj://
|
||||
|
||||
uplink --config-dir "$GATEWAY_0_DIR" --debug.addr "$UPLINK_DEBUG_ADDR" cp "$SRC_DIR/small-upload-testfile" "sj://$BUCKET/"
|
||||
uplink --config-dir "$GATEWAY_0_DIR" --debug.addr "$UPLINK_DEBUG_ADDR" cp "$SRC_DIR/big-upload-testfile" "sj://$BUCKET/"
|
||||
uplink --config-dir "$GATEWAY_0_DIR" --debug.addr "$UPLINK_DEBUG_ADDR" --client.segment-size "1MiB" cp "$SRC_DIR/multisegment-upload-testfile" "sj://$BUCKET/"
|
||||
|
||||
uplink --config-dir "$GATEWAY_0_DIR" --debug.addr "$UPLINK_DEBUG_ADDR" cp "sj://$BUCKET/small-upload-testfile" "$DST_DIR"
|
||||
uplink --config-dir "$GATEWAY_0_DIR" --debug.addr "$UPLINK_DEBUG_ADDR" cp "sj://$BUCKET/big-upload-testfile" "$DST_DIR"
|
||||
uplink --config-dir "$GATEWAY_0_DIR" --debug.addr "$UPLINK_DEBUG_ADDR" cp "sj://$BUCKET/multisegment-upload-testfile" "$DST_DIR"
|
||||
|
||||
|
||||
uplink --config-dir "$GATEWAY_0_DIR" --debug.addr "$UPLINK_DEBUG_ADDR" rm "sj://$BUCKET/small-upload-testfile"
|
||||
uplink --config-dir "$GATEWAY_0_DIR" --debug.addr "$UPLINK_DEBUG_ADDR" rm "sj://$BUCKET/big-upload-testfile"
|
||||
uplink --config-dir "$GATEWAY_0_DIR" --debug.addr "$UPLINK_DEBUG_ADDR" rm "sj://$BUCKET/multisegment-upload-testfile"
|
||||
|
||||
uplink --config-dir "$GATEWAY_0_DIR" --debug.addr "$UPLINK_DEBUG_ADDR" ls "sj://$BUCKET"
|
||||
|
||||
@ -58,6 +63,14 @@ else
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if cmp "$SRC_DIR/multisegment-upload-testfile" "$DST_DIR/multisegment-upload-testfile"
|
||||
then
|
||||
echo "multisegment upload testfile matches uploaded file"
|
||||
else
|
||||
echo "multisegment upload testfile does not match uploaded file"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# check if all data files were removed
|
||||
# FILES=$(find "$STORAGENODE_0_DIR/../" -type f -path "*/blob/*" ! -name "info.*")
|
||||
# if [ -z "$FILES" ];
|
||||
|
Loading…
Reference in New Issue
Block a user