Remove `UNSPECIFIED` value from `SignatureScheme` enum. Make `ECDSA_SHA512` to be default signature scheme (zero value). Define `SignatureRFC6979` type for RFC-6979 signatures. Use it in `Container` service. Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
8.3 KiB
Protocol Documentation
Table of Contents
refs/types.proto
Message Address
Objects in NeoFS are addressed by their ContainerID and ObjectID.
String presentation of Address
is the concatenation of string encoded
ContainerID
and ObjectID
delimited by '/' character.
Field | Type | Label | Description |
---|---|---|---|
container_id | ContainerID | Container identifier | |
object_id | ObjectID | Object identifier |
Message Checksum
Checksum message. Depending on checksum algorithm type the string presentation may vary:
- TZ
Hex encoded string without0x
prefix - SHA256
Hex encoded string without0x
prefix
Field | Type | Label | Description |
---|---|---|---|
type | ChecksumType | Checksum algorithm type | |
sum | bytes | Checksum itself |
Message ContainerID
NeoFS container identifier. Container structures are immutable and content-addressed.
ContainerID
is a 32 byte long
SHA256 hash of
stable-marshalled container message.
String presentation is base58 encoded string.
JSON value will be the data encoded as a string using standard base64 encoding with paddings. Either standard or URL-safe base64 encoding with/without paddings are accepted.
Field | Type | Label | Description |
---|---|---|---|
value | bytes | Container identifier in a binary format. |
Message ObjectID
NeoFS Object unique identifier. Objects are immutable and content-addressed.
It means ObjectID
will change if header
or payload
changes.
ObjectID
is a 32 byte long
SHA256 hash of
object's header
field, which, in it's turn, contains hash of object's
payload.
String presentation is base58 encoded string.
JSON value will be the data encoded as a string using standard base64 encoding with paddings. Either standard or URL-safe base64 encoding with/without paddings are accepted.
Field | Type | Label | Description |
---|---|---|---|
value | bytes | Object identifier in a binary format |
Message OwnerID
OwnerID
is a derivative of a user's main public key. The transformation
algorithm is the same as for Neo3 wallet addresses. Neo3 wallet address can
be directly used as OwnerID
.
OwnerID
is a 25 bytes sequence starting with Neo version prefix byte
followed by 20 bytes of ScrptHash and 4 bytes of checksum.
String presentation is Base58 Check Encoded string.
JSON value will be the data encoded as a string using standard base64 encoding with paddings. Either standard or URL-safe base64 encoding with/without paddings are accepted.
Field | Type | Label | Description |
---|---|---|---|
value | bytes | Identifier of the container owner in a binary format |
Message Signature
Signature of something in NeoFS.
Field | Type | Label | Description |
---|---|---|---|
key | bytes | Public key used for signing | |
sign | bytes | Signature | |
scheme | SignatureScheme | Scheme contains digital signature scheme identifier |
Message SignatureRFC6979
RFC 6979 signature.
Field | Type | Label | Description |
---|---|---|---|
key | bytes | Public key used for signing | |
sign | bytes | Deterministic ECDSA with SHA-256 hashing |
Message SubnetID
NeoFS subnetwork identifier.
String representation of a value is base-10 integer.
JSON representation is an object containing single value
number field.
Field | Type | Label | Description |
---|---|---|---|
value | fixed32 | 4-byte integer subnetwork identifier. |
Message Version
API version used by a node.
String presentation is a Semantic Versioning 2.0.0 compatible version string
with 'v' prefix. I.e. vX.Y
, where X
- major number, Y
- minor number.
Field | Type | Label | Description |
---|---|---|---|
major | uint32 | Major API version | |
minor | uint32 | Minor API version |
ChecksumType
Checksum algorithm type.
Name | Number | Description |
---|---|---|
CHECKSUM_TYPE_UNSPECIFIED | 0 | Unknown. Not used |
TZ | 1 | Tillich-Zemor homomorphic hash function |
SHA256 | 2 | SHA-256 |
SignatureScheme
Signature scheme describes digital signing scheme used for (key, signature) pair.
Name | Number | Description |
---|---|---|
ECDSA_SHA512 | 0 | ECDSA with SHA-512 hashing (FIPS 186-3) |
ECDSA_RFC6979_SHA256 | 1 | Deterministic ECDSA with SHA-256 hashing (RFC 6979) |
Scalar Value Types
.proto Type | Notes | C++ Type | Java Type | Python Type |
---|---|---|---|---|
double | double | double | float | |
float | float | float | float | |
int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int |
int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long |
uint32 | Uses variable-length encoding. | uint32 | int | int/long |
uint64 | Uses variable-length encoding. | uint64 | long | int/long |
sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int |
sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long |
fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int |
fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long |
sfixed32 | Always four bytes. | int32 | int | int |
sfixed64 | Always eight bytes. | int64 | long | int/long |
bool | bool | boolean | boolean | |
string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode |
bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str |