[#1] Define SDK main functional #1
103 changed files with 416 additions and 417 deletions
28
README.md
28
README.md
|
@ -21,12 +21,12 @@ neo-go wallet export -w <path_to_your_wallet> -d <address_from_p1>
|
|||
### Container
|
||||
|
||||
```java
|
||||
import info.FrostFS.sdk.dto.container.Container;
|
||||
import info.FrostFS.sdk.dto.netmap.PlacementPolicy;
|
||||
import info.FrostFS.sdk.dto.netmap.Replica;
|
||||
import info.FrostFS.sdk.enums.BasicAcl;
|
||||
import info.FrostFS.sdk.jdo.ClientSettings;
|
||||
import info.FrostFS.sdk.services.FrostFSClient;
|
||||
import info.frostfs.sdk.dto.container.Container;
|
||||
import info.frostfs.sdk.dto.netmap.PlacementPolicy;
|
||||
import info.frostfs.sdk.dto.netmap.Replica;
|
||||
import info.frostfs.sdk.enums.BasicAcl;
|
||||
import info.frostfs.sdk.jdo.ClientSettings;
|
||||
import info.frostfs.sdk.services.FrostFSClient;
|
||||
|
||||
public class ContainerExample {
|
||||
|
||||
|
@ -53,13 +53,13 @@ public class ContainerExample {
|
|||
### Object
|
||||
|
||||
```java
|
||||
import info.FrostFS.sdk.enums.ObjectType;
|
||||
import info.FrostFS.sdk.dto.container.ContainerId;
|
||||
import info.FrostFS.sdk.dto.object.ObjectAttribute;
|
||||
import info.FrostFS.sdk.dto.object.ObjectFilter;
|
||||
import info.FrostFS.sdk.dto.object.ObjectHeader;
|
||||
import info.FrostFS.sdk.jdo.PutObjectParameters;
|
||||
import info.FrostFS.sdk.services.FrostFSClient;
|
||||
import info.frostfs.sdk.enums.ObjectType;
|
||||
import info.frostfs.sdk.dto.container.ContainerId;
|
||||
import info.frostfs.sdk.dto.object.ObjectAttribute;
|
||||
import info.frostfs.sdk.dto.object.ObjectFilter;
|
||||
import info.frostfs.sdk.dto.object.ObjectHeader;
|
||||
import info.frostfs.sdk.jdo.PutObjectParameters;
|
||||
import info.frostfs.sdk.services.FrostFSClient;
|
||||
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
|
@ -71,7 +71,7 @@ public class ObjectExample {
|
|||
FrostFSClient frostFSClient = new FrostFSClient(clientSettings);
|
||||
|
||||
// Put object
|
||||
info.FrostFS.sdk.dto.object.ObjectId objectId;
|
||||
info.frostfs.sdk.dto.object.ObjectId objectId;
|
||||
try (FileInputStream fis = new FileInputStream("cat.jpg")) {
|
||||
var cat = new ObjectHeader(
|
||||
containerId, ObjectType.REGULAR, new ObjectAttribute[]{new ObjectAttribute("Filename", "cat.jpg")}
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>info.FrostFS.sdk</groupId>
|
||||
<artifactId>FrostFS-sdk-java</artifactId>
|
||||
<groupId>info.frostfs.sdk</groupId>
|
||||
<artifactId>frostfs-sdk-java</artifactId>
|
||||
<version>0.1.0</version>
|
||||
</parent>
|
||||
|
||||
|
@ -19,12 +19,12 @@
|
|||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>info.FrostFS.sdk</groupId>
|
||||
<groupId>info.frostfs.sdk</groupId>
|
||||
<artifactId>cryptography</artifactId>
|
||||
<version>0.1.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>info.FrostFS.sdk</groupId>
|
||||
<groupId>info.frostfs.sdk</groupId>
|
||||
<artifactId>models</artifactId>
|
||||
<version>0.1.0</version>
|
||||
</dependency>
|
||||
|
|
|
@ -1,13 +0,0 @@
|
|||
package info.FrostFS.sdk.services;
|
||||
|
||||
import info.FrostFS.sdk.dto.netmap.NetmapSnapshot;
|
||||
import info.FrostFS.sdk.dto.netmap.NodeInfo;
|
||||
import info.FrostFS.sdk.jdo.NetworkSettings;
|
||||
|
||||
public interface NetmapClient {
|
||||
NetmapSnapshot getNetmapSnapshot();
|
||||
|
||||
NodeInfo getLocalNodeInfo();
|
||||
|
||||
NetworkSettings getNetworkSettings();
|
||||
}
|
|
@ -1,8 +0,0 @@
|
|||
package info.FrostFS.sdk.services;
|
||||
|
||||
import info.FrostFS.sdk.dto.object.ObjectHeader;
|
||||
import info.FrostFS.sdk.dto.object.ObjectId;
|
||||
|
||||
public interface ToolsClient {
|
||||
ObjectId calculateObjectId(ObjectHeader header);
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package info.FrostFS.sdk.constants;
|
||||
package info.frostfs.sdk.constants;
|
||||
|
||||
public class CryptoConst {
|
||||
public static final String SIGNATURE_ALGORITHM = "NONEwithECDSAinP1363Format";
|
|
@ -1,8 +1,8 @@
|
|||
package info.FrostFS.sdk.jdo;
|
||||
package info.frostfs.sdk.jdo;
|
||||
|
||||
import info.FrostFS.sdk.dto.OwnerId;
|
||||
import info.FrostFS.sdk.dto.Version;
|
||||
import info.FrostFS.sdk.services.FrostFSClient;
|
||||
import info.frostfs.sdk.dto.OwnerId;
|
||||
import info.frostfs.sdk.dto.Version;
|
||||
import info.frostfs.sdk.services.FrostFSClient;
|
||||
import io.grpc.Channel;
|
||||
|
||||
public class ClientEnvironment {
|
|
@ -1,4 +1,4 @@
|
|||
package info.FrostFS.sdk.jdo;
|
||||
package info.frostfs.sdk.jdo;
|
||||
|
||||
import io.grpc.ChannelCredentials;
|
||||
import org.apache.commons.lang3.StringUtils;
|
|
@ -1,8 +1,8 @@
|
|||
package info.FrostFS.sdk.jdo;
|
||||
package info.frostfs.sdk.jdo;
|
||||
|
||||
import java.security.PrivateKey;
|
||||
|
||||
import static info.FrostFS.sdk.KeyExtension.*;
|
||||
import static info.frostfs.sdk.KeyExtension.*;
|
||||
|
||||
public class ECDsa {
|
||||
private final byte[] publicKeyByte;
|
|
@ -1,4 +1,4 @@
|
|||
package info.FrostFS.sdk.jdo;
|
||||
package info.frostfs.sdk.jdo;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
|
@ -1,6 +1,6 @@
|
|||
package info.FrostFS.sdk.jdo;
|
||||
package info.frostfs.sdk.jdo;
|
||||
|
||||
import info.FrostFS.sdk.dto.object.ObjectHeader;
|
||||
import info.frostfs.sdk.dto.object.ObjectHeader;
|
||||
|
||||
import java.io.FileInputStream;
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
package info.FrostFS.sdk.services;
|
||||
package info.frostfs.sdk.services;
|
||||
|
||||
import info.FrostFS.sdk.dto.container.Container;
|
||||
import info.FrostFS.sdk.dto.container.ContainerId;
|
||||
import info.frostfs.sdk.dto.container.Container;
|
||||
import info.frostfs.sdk.dto.container.ContainerId;
|
||||
|
||||
import java.util.List;
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
package info.FrostFS.sdk.services;
|
||||
package info.frostfs.sdk.services;
|
||||
|
||||
import info.FrostFS.sdk.jdo.ClientEnvironment;
|
||||
import info.frostfs.sdk.jdo.ClientEnvironment;
|
||||
|
||||
public class ContextAccessor {
|
||||
private final ClientEnvironment context;
|
|
@ -1,26 +1,26 @@
|
|||
package info.FrostFS.sdk.services;
|
||||
package info.frostfs.sdk.services;
|
||||
|
||||
import frostFS.session.Types;
|
||||
import info.FrostFS.sdk.dto.SessionToken;
|
||||
import info.FrostFS.sdk.dto.Version;
|
||||
import info.FrostFS.sdk.dto.container.Container;
|
||||
import info.FrostFS.sdk.dto.container.ContainerId;
|
||||
import info.FrostFS.sdk.dto.netmap.NetmapSnapshot;
|
||||
import info.FrostFS.sdk.dto.netmap.NodeInfo;
|
||||
import info.FrostFS.sdk.dto.object.ObjectFilter;
|
||||
import info.FrostFS.sdk.dto.object.ObjectFrostFS;
|
||||
import info.FrostFS.sdk.dto.object.ObjectHeader;
|
||||
import info.FrostFS.sdk.dto.object.ObjectId;
|
||||
import info.FrostFS.sdk.jdo.ClientEnvironment;
|
||||
import info.FrostFS.sdk.jdo.ClientSettings;
|
||||
import info.FrostFS.sdk.jdo.NetworkSettings;
|
||||
import info.FrostFS.sdk.jdo.PutObjectParameters;
|
||||
import info.FrostFS.sdk.services.impl.*;
|
||||
import frostfs.session.Types;
|
||||
import info.frostfs.sdk.dto.SessionToken;
|
||||
import info.frostfs.sdk.dto.Version;
|
||||
import info.frostfs.sdk.dto.container.Container;
|
||||
import info.frostfs.sdk.dto.container.ContainerId;
|
||||
import info.frostfs.sdk.dto.netmap.NetmapSnapshot;
|
||||
import info.frostfs.sdk.dto.netmap.NodeInfo;
|
||||
import info.frostfs.sdk.dto.object.ObjectFilter;
|
||||
import info.frostfs.sdk.dto.object.ObjectFrostFS;
|
||||
import info.frostfs.sdk.dto.object.ObjectHeader;
|
||||
import info.frostfs.sdk.dto.object.ObjectId;
|
||||
import info.frostfs.sdk.jdo.ClientEnvironment;
|
||||
import info.frostfs.sdk.jdo.ClientSettings;
|
||||
import info.frostfs.sdk.jdo.NetworkSettings;
|
||||
import info.frostfs.sdk.jdo.PutObjectParameters;
|
||||
import info.frostfs.sdk.services.impl.*;
|
||||
import io.grpc.Channel;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static info.FrostFS.sdk.tools.GrpcClient.initGrpcChannel;
|
||||
import static info.frostfs.sdk.tools.GrpcClient.initGrpcChannel;
|
||||
import static java.util.Objects.isNull;
|
||||
|
||||
public class FrostFSClient implements ContainerClient, ObjectClient, NetmapClient, SessionClient, ToolsClient {
|
|
@ -0,0 +1,13 @@
|
|||
package info.frostfs.sdk.services;
|
||||
|
||||
import info.frostfs.sdk.dto.netmap.NetmapSnapshot;
|
||||
import info.frostfs.sdk.dto.netmap.NodeInfo;
|
||||
import info.frostfs.sdk.jdo.NetworkSettings;
|
||||
|
||||
public interface NetmapClient {
|
||||
NetmapSnapshot getNetmapSnapshot();
|
||||
|
||||
NodeInfo getLocalNodeInfo();
|
||||
|
||||
NetworkSettings getNetworkSettings();
|
||||
}
|
|
@ -1,11 +1,11 @@
|
|||
package info.FrostFS.sdk.services;
|
||||
package info.frostfs.sdk.services;
|
||||
|
||||
import info.FrostFS.sdk.dto.container.ContainerId;
|
||||
import info.FrostFS.sdk.dto.object.ObjectFilter;
|
||||
import info.FrostFS.sdk.dto.object.ObjectFrostFS;
|
||||
import info.FrostFS.sdk.dto.object.ObjectHeader;
|
||||
import info.FrostFS.sdk.dto.object.ObjectId;
|
||||
import info.FrostFS.sdk.jdo.PutObjectParameters;
|
||||
import info.frostfs.sdk.dto.container.ContainerId;
|
||||
import info.frostfs.sdk.dto.object.ObjectFilter;
|
||||
import info.frostfs.sdk.dto.object.ObjectFrostFS;
|
||||
import info.frostfs.sdk.dto.object.ObjectHeader;
|
||||
import info.frostfs.sdk.dto.object.ObjectId;
|
||||
import info.frostfs.sdk.jdo.PutObjectParameters;
|
||||
|
||||
public interface ObjectClient {
|
||||
ObjectHeader getObjectHead(ContainerId containerId, ObjectId objectId);
|
|
@ -1,6 +1,6 @@
|
|||
package info.FrostFS.sdk.services;
|
||||
package info.frostfs.sdk.services;
|
||||
|
||||
import info.FrostFS.sdk.dto.SessionToken;
|
||||
import info.frostfs.sdk.dto.SessionToken;
|
||||
|
||||
public interface SessionClient {
|
||||
SessionToken createSession(long expiration);
|
|
@ -0,0 +1,8 @@
|
|||
package info.frostfs.sdk.services;
|
||||
|
||||
import info.frostfs.sdk.dto.object.ObjectHeader;
|
||||
import info.frostfs.sdk.dto.object.ObjectId;
|
||||
|
||||
public interface ToolsClient {
|
||||
ObjectId calculateObjectId(ObjectHeader header);
|
||||
}
|
|
@ -1,24 +1,25 @@
|
|||
package info.FrostFS.sdk.services.impl;
|
||||
package info.frostfs.sdk.services.impl;
|
||||
|
||||
import frostFS.container.ContainerServiceGrpc;
|
||||
import frostFS.container.Service;
|
||||
import info.FrostFS.sdk.dto.container.Container;
|
||||
import info.FrostFS.sdk.dto.container.ContainerId;
|
||||
import info.FrostFS.sdk.jdo.ClientEnvironment;
|
||||
import info.FrostFS.sdk.mappers.OwnerIdMapper;
|
||||
import info.FrostFS.sdk.mappers.VersionMapper;
|
||||
import info.FrostFS.sdk.mappers.container.ContainerIdMapper;
|
||||
import info.FrostFS.sdk.mappers.container.ContainerMapper;
|
||||
import info.FrostFS.sdk.services.ContainerClient;
|
||||
import info.FrostFS.sdk.services.ContextAccessor;
|
||||
import info.FrostFS.sdk.tools.Verifier;
|
||||
import frostfs.container.ContainerServiceGrpc;
|
||||
import frostfs.container.Service;
|
||||
import info.frostfs.sdk.dto.container.Container;
|
||||
import info.frostfs.sdk.dto.container.ContainerId;
|
||||
import info.frostfs.sdk.jdo.ClientEnvironment;
|
||||
import info.frostfs.sdk.mappers.OwnerIdMapper;
|
||||
import info.frostfs.sdk.mappers.VersionMapper;
|
||||
import info.frostfs.sdk.mappers.container.ContainerIdMapper;
|
||||
import info.frostfs.sdk.mappers.container.ContainerMapper;
|
||||
import info.frostfs.sdk.services.ContainerClient;
|
||||
import info.frostfs.sdk.services.ContextAccessor;
|
||||
import info.frostfs.sdk.tools.Verifier;
|
||||
import info.frostfs.sdk.tools.RequestConstructor;
|
||||
import info.frostfs.sdk.tools.RequestSigner;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static info.FrostFS.sdk.tools.RequestConstructor.addMetaHeader;
|
||||
import static info.FrostFS.sdk.tools.RequestSigner.sign;
|
||||
import static info.FrostFS.sdk.tools.RequestSigner.signRFC6979;
|
||||
import static info.frostfs.sdk.tools.RequestConstructor.addMetaHeader;
|
||||
import static info.frostfs.sdk.tools.RequestSigner.signRFC6979;
|
||||
|
||||
public class ContainerService extends ContextAccessor implements ContainerClient {
|
||||
private final ContainerServiceGrpc.ContainerServiceBlockingStub serviceBlockingStub;
|
||||
|
@ -36,8 +37,8 @@ public class ContainerService extends ContextAccessor implements ContainerClient
|
|||
.build()
|
||||
);
|
||||
|
||||
addMetaHeader(request);
|
||||
sign(request, getContext().getKey());
|
||||
RequestConstructor.addMetaHeader(request);
|
||||
RequestSigner.sign(request, getContext().getKey());
|
||||
|
||||
var response = serviceBlockingStub.get(request.build());
|
||||
|
||||
|
@ -53,8 +54,8 @@ public class ContainerService extends ContextAccessor implements ContainerClient
|
|||
.build()
|
||||
);
|
||||
|
||||
addMetaHeader(request);
|
||||
sign(request, getContext().getKey());
|
||||
RequestConstructor.addMetaHeader(request);
|
||||
RequestSigner.sign(request, getContext().getKey());
|
||||
|
||||
var response = serviceBlockingStub.list(request.build());
|
||||
|
||||
|
@ -78,13 +79,13 @@ public class ContainerService extends ContextAccessor implements ContainerClient
|
|||
Service.PutRequest.Body.newBuilder()
|
||||
.setContainer(grpcContainer)
|
||||
.setSignature(
|
||||
signRFC6979(getContext().getKey(), grpcContainer)
|
||||
RequestSigner.signRFC6979(getContext().getKey(), grpcContainer)
|
||||
)
|
||||
.build()
|
||||
);
|
||||
|
||||
addMetaHeader(request);
|
||||
sign(request, getContext().getKey());
|
||||
RequestConstructor.addMetaHeader(request);
|
||||
RequestSigner.sign(request, getContext().getKey());
|
||||
|
||||
var response = serviceBlockingStub.put(request.build());
|
||||
|
||||
|
@ -99,14 +100,14 @@ public class ContainerService extends ContextAccessor implements ContainerClient
|
|||
.setBody(
|
||||
Service.DeleteRequest.Body.newBuilder()
|
||||
.setContainerId(grpcContainerId)
|
||||
.setSignature(signRFC6979(
|
||||
.setSignature(RequestSigner.signRFC6979(
|
||||
getContext().getKey(), grpcContainerId.getValue()
|
||||
))
|
||||
.build()
|
||||
);
|
||||
|
||||
addMetaHeader(request);
|
||||
sign(request, getContext().getKey());
|
||||
RequestConstructor.addMetaHeader(request);
|
||||
RequestSigner.sign(request, getContext().getKey());
|
||||
|
||||
var response = serviceBlockingStub.delete(request.build());
|
||||
|
|
@ -1,22 +1,22 @@
|
|||
package info.FrostFS.sdk.services.impl;
|
||||
package info.frostfs.sdk.services.impl;
|
||||
|
||||
import frostFS.netmap.NetmapServiceGrpc;
|
||||
import frostFS.netmap.Service;
|
||||
import frostFS.netmap.Types;
|
||||
import info.FrostFS.sdk.dto.netmap.NetmapSnapshot;
|
||||
import info.FrostFS.sdk.dto.netmap.NodeInfo;
|
||||
import info.FrostFS.sdk.jdo.ClientEnvironment;
|
||||
import info.FrostFS.sdk.jdo.NetworkSettings;
|
||||
import info.FrostFS.sdk.mappers.netmap.NetmapSnapshotMapper;
|
||||
import info.FrostFS.sdk.mappers.netmap.NodeInfoMapper;
|
||||
import info.FrostFS.sdk.services.ContextAccessor;
|
||||
import info.FrostFS.sdk.services.NetmapClient;
|
||||
import info.FrostFS.sdk.tools.Verifier;
|
||||
import frostfs.netmap.NetmapServiceGrpc;
|
||||
import frostfs.netmap.Service;
|
||||
import frostfs.netmap.Types;
|
||||
import info.frostfs.sdk.dto.netmap.NetmapSnapshot;
|
||||
import info.frostfs.sdk.dto.netmap.NodeInfo;
|
||||
import info.frostfs.sdk.jdo.ClientEnvironment;
|
||||
import info.frostfs.sdk.jdo.NetworkSettings;
|
||||
import info.frostfs.sdk.mappers.netmap.NetmapSnapshotMapper;
|
||||
import info.frostfs.sdk.mappers.netmap.NodeInfoMapper;
|
||||
import info.frostfs.sdk.services.ContextAccessor;
|
||||
import info.frostfs.sdk.services.NetmapClient;
|
||||
import info.frostfs.sdk.tools.Verifier;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
import static info.FrostFS.sdk.tools.RequestConstructor.addMetaHeader;
|
||||
import static info.FrostFS.sdk.tools.RequestSigner.sign;
|
||||
import static info.frostfs.sdk.tools.RequestConstructor.addMetaHeader;
|
||||
import static info.frostfs.sdk.tools.RequestSigner.sign;
|
||||
import static java.util.Objects.nonNull;
|
||||
|
||||
public class NetmapService extends ContextAccessor implements NetmapClient {
|
|
@ -1,8 +1,8 @@
|
|||
package info.FrostFS.sdk.services.impl;
|
||||
package info.frostfs.sdk.services.impl;
|
||||
|
||||
import frostFS.object.Service;
|
||||
import frostFS.object.Types;
|
||||
import info.FrostFS.sdk.tools.Verifier;
|
||||
import frostfs.object.Service;
|
||||
import frostfs.object.Types;
|
||||
import info.frostfs.sdk.tools.Verifier;
|
||||
|
||||
import java.util.Iterator;
|
||||
|
|
@ -1,26 +1,26 @@
|
|||
package info.FrostFS.sdk.services.impl;
|
||||
package info.frostfs.sdk.services.impl;
|
||||
|
||||
import com.google.common.collect.Iterables;
|
||||
import com.google.protobuf.ByteString;
|
||||
import frostFS.object.ObjectServiceGrpc;
|
||||
import frostFS.object.Service;
|
||||
import frostFS.refs.Types;
|
||||
import info.FrostFS.sdk.constants.AppConst;
|
||||
import info.FrostFS.sdk.dto.Split;
|
||||
import info.FrostFS.sdk.dto.container.ContainerId;
|
||||
import info.FrostFS.sdk.dto.object.*;
|
||||
import info.FrostFS.sdk.jdo.ClientEnvironment;
|
||||
import info.FrostFS.sdk.jdo.PutObjectParameters;
|
||||
import info.FrostFS.sdk.mappers.OwnerIdMapper;
|
||||
import info.FrostFS.sdk.mappers.VersionMapper;
|
||||
import info.FrostFS.sdk.mappers.container.ContainerIdMapper;
|
||||
import info.FrostFS.sdk.mappers.object.ObjectFilterMapper;
|
||||
import info.FrostFS.sdk.mappers.object.ObjectFrostFSMapper;
|
||||
import info.FrostFS.sdk.mappers.object.ObjectHeaderMapper;
|
||||
import info.FrostFS.sdk.mappers.object.ObjectIdMapper;
|
||||
import info.FrostFS.sdk.services.ContextAccessor;
|
||||
import info.FrostFS.sdk.services.ObjectClient;
|
||||
import info.FrostFS.sdk.tools.Verifier;
|
||||
import frostfs.object.ObjectServiceGrpc;
|
||||
import frostfs.object.Service;
|
||||
import frostfs.refs.Types;
|
||||
import info.frostfs.sdk.constants.AppConst;
|
||||
import info.frostfs.sdk.dto.Split;
|
||||
import info.frostfs.sdk.dto.container.ContainerId;
|
||||
import info.frostfs.sdk.dto.object.*;
|
||||
import info.frostfs.sdk.jdo.ClientEnvironment;
|
||||
import info.frostfs.sdk.jdo.PutObjectParameters;
|
||||
import info.frostfs.sdk.mappers.OwnerIdMapper;
|
||||
import info.frostfs.sdk.mappers.VersionMapper;
|
||||
import info.frostfs.sdk.mappers.container.ContainerIdMapper;
|
||||
import info.frostfs.sdk.mappers.object.ObjectFilterMapper;
|
||||
import info.frostfs.sdk.mappers.object.ObjectFrostFSMapper;
|
||||
import info.frostfs.sdk.mappers.object.ObjectHeaderMapper;
|
||||
import info.frostfs.sdk.mappers.object.ObjectIdMapper;
|
||||
import info.frostfs.sdk.services.ContextAccessor;
|
||||
import info.frostfs.sdk.services.ObjectClient;
|
||||
import info.frostfs.sdk.tools.Verifier;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
|
||||
import java.io.FileInputStream;
|
||||
|
@ -29,10 +29,10 @@ import java.util.ArrayList;
|
|||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import static info.FrostFS.sdk.Helper.getSha256;
|
||||
import static info.FrostFS.sdk.tools.RequestConstructor.addMetaHeader;
|
||||
import static info.FrostFS.sdk.tools.RequestConstructor.addObjectSessionToken;
|
||||
import static info.FrostFS.sdk.tools.RequestSigner.sign;
|
||||
import static info.frostfs.sdk.Helper.getSha256;
|
||||
import static info.frostfs.sdk.tools.RequestConstructor.addMetaHeader;
|
||||
import static info.frostfs.sdk.tools.RequestConstructor.addObjectSessionToken;
|
||||
import static info.frostfs.sdk.tools.RequestSigner.sign;
|
||||
import static java.util.Objects.nonNull;
|
||||
|
||||
public class ObjectService extends ContextAccessor implements ObjectClient {
|
||||
|
@ -90,7 +90,7 @@ public class ObjectService extends ContextAccessor implements ObjectClient {
|
|||
addMetaHeader(request);
|
||||
addObjectSessionToken(
|
||||
request, sessionToken, ContainerIdMapper.toGrpcMessage(cid), ObjectIdMapper.toGrpcMessage(oid),
|
||||
frostFS.session.Types.ObjectSessionContext.Verb.GET, getContext().getKey()
|
||||
frostfs.session.Types.ObjectSessionContext.Verb.GET, getContext().getKey()
|
||||
);
|
||||
sign(request, getContext().getKey());
|
||||
|
||||
|
@ -159,7 +159,7 @@ public class ObjectService extends ContextAccessor implements ObjectClient {
|
|||
addMetaHeader(request);
|
||||
addObjectSessionToken(
|
||||
request, sessionToken, grpcObject.getHeader().getContainerId(), grpcObject.getObjectId(),
|
||||
frostFS.session.Types.ObjectSessionContext.Verb.PUT, getContext().getKey()
|
||||
frostfs.session.Types.ObjectSessionContext.Verb.PUT, getContext().getKey()
|
||||
);
|
||||
sign(request, getContext().getKey());
|
||||
|
||||
|
@ -170,7 +170,7 @@ public class ObjectService extends ContextAccessor implements ObjectClient {
|
|||
return ObjectId.fromHash(grpcObject.getObjectId().getValue().toByteArray());
|
||||
}
|
||||
|
||||
private frostFS.object.Types.Object getObject(Service.GetRequest request) {
|
||||
private frostfs.object.Types.Object getObject(Service.GetRequest request) {
|
||||
var iterator = getObjectInit(request);
|
||||
var obj = iterator.readHeader();
|
||||
var payload = new byte[Math.toIntExact(obj.getHeader().getPayloadLength())];
|
||||
|
@ -218,7 +218,7 @@ public class ObjectService extends ContextAccessor implements ObjectClient {
|
|||
addMetaHeader(initRequest);
|
||||
addObjectSessionToken(
|
||||
initRequest, sessionToken, hdr.getContainerId(), oid,
|
||||
frostFS.session.Types.ObjectSessionContext.Verb.PUT, getContext().getKey()
|
||||
frostfs.session.Types.ObjectSessionContext.Verb.PUT, getContext().getKey()
|
||||
);
|
||||
sign(initRequest, getContext().getKey());
|
||||
|
|
@ -1,21 +1,21 @@
|
|||
package info.FrostFS.sdk.services.impl;
|
||||
package info.frostfs.sdk.services.impl;
|
||||
|
||||
import com.google.protobuf.ByteString;
|
||||
import frostFS.object.Types;
|
||||
import info.FrostFS.sdk.dto.object.ObjectFrostFS;
|
||||
import info.FrostFS.sdk.dto.object.ObjectHeader;
|
||||
import info.FrostFS.sdk.dto.object.ObjectId;
|
||||
import info.FrostFS.sdk.jdo.ClientEnvironment;
|
||||
import info.FrostFS.sdk.mappers.OwnerIdMapper;
|
||||
import info.FrostFS.sdk.mappers.VersionMapper;
|
||||
import info.FrostFS.sdk.mappers.object.ObjectHeaderMapper;
|
||||
import info.FrostFS.sdk.mappers.object.ObjectIdMapper;
|
||||
import info.FrostFS.sdk.services.ContextAccessor;
|
||||
import info.FrostFS.sdk.services.ToolsClient;
|
||||
import frostfs.object.Types;
|
||||
import info.frostfs.sdk.dto.object.ObjectFrostFS;
|
||||
import info.frostfs.sdk.dto.object.ObjectHeader;
|
||||
import info.frostfs.sdk.dto.object.ObjectId;
|
||||
import info.frostfs.sdk.jdo.ClientEnvironment;
|
||||
import info.frostfs.sdk.mappers.OwnerIdMapper;
|
||||
import info.frostfs.sdk.mappers.VersionMapper;
|
||||
import info.frostfs.sdk.mappers.object.ObjectHeaderMapper;
|
||||
import info.frostfs.sdk.mappers.object.ObjectIdMapper;
|
||||
import info.frostfs.sdk.services.ContextAccessor;
|
||||
import info.frostfs.sdk.services.ToolsClient;
|
||||
import org.apache.commons.collections4.ListUtils;
|
||||
|
||||
import static info.FrostFS.sdk.Helper.getSha256;
|
||||
import static info.FrostFS.sdk.tools.RequestSigner.signData;
|
||||
import static info.frostfs.sdk.Helper.getSha256;
|
||||
import static info.frostfs.sdk.tools.RequestSigner.signData;
|
||||
import static java.util.Objects.nonNull;
|
||||
|
||||
public class ObjectTools extends ContextAccessor implements ToolsClient {
|
||||
|
@ -23,9 +23,9 @@ public class ObjectTools extends ContextAccessor implements ToolsClient {
|
|||
super(context);
|
||||
}
|
||||
|
||||
private static frostFS.refs.Types.Checksum sha256Checksum(byte[] data) {
|
||||
return frostFS.refs.Types.Checksum.newBuilder()
|
||||
.setType(frostFS.refs.Types.ChecksumType.SHA256)
|
||||
private static frostfs.refs.Types.Checksum sha256Checksum(byte[] data) {
|
||||
return frostfs.refs.Types.Checksum.newBuilder()
|
||||
.setType(frostfs.refs.Types.ChecksumType.SHA256)
|
||||
.setSum(ByteString.copyFrom(getSha256(data)))
|
||||
.build();
|
||||
}
|
||||
|
@ -35,7 +35,7 @@ public class ObjectTools extends ContextAccessor implements ToolsClient {
|
|||
var grpcHeader = createHeader(header, new byte[]{});
|
||||
|
||||
return ObjectIdMapper.toModel(
|
||||
frostFS.refs.Types.ObjectID.newBuilder().setValue(getSha256(grpcHeader)).build()
|
||||
frostfs.refs.Types.ObjectID.newBuilder().setValue(getSha256(grpcHeader)).build()
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -58,13 +58,13 @@ public class ObjectTools extends ContextAccessor implements ToolsClient {
|
|||
|
||||
if (nonNull(split.getParentHeader())) {
|
||||
var grpcParentHeader = createHeader(split.getParentHeader(), new byte[]{});
|
||||
var parent = frostFS.refs.Types.ObjectID.newBuilder().setValue(getSha256(grpcParentHeader)).build();
|
||||
var parent = frostfs.refs.Types.ObjectID.newBuilder().setValue(getSha256(grpcParentHeader)).build();
|
||||
|
||||
splitGrpc
|
||||
.setParent(parent)
|
||||
.setParentHeader(grpcParentHeader)
|
||||
.setParentSignature(
|
||||
frostFS.refs.Types.Signature.newBuilder()
|
||||
frostfs.refs.Types.Signature.newBuilder()
|
||||
.setKey(ByteString.copyFrom(getContext().getKey().getPublicKeyByte()))
|
||||
.setSign(ByteString.copyFrom(signData(getContext().getKey(), parent.toByteArray())))
|
||||
);
|
||||
|
@ -78,13 +78,13 @@ public class ObjectTools extends ContextAccessor implements ToolsClient {
|
|||
}
|
||||
|
||||
var grpcHeader = grpcHeaderBuilder.build();
|
||||
var objectId = frostFS.refs.Types.ObjectID.newBuilder().setValue(getSha256(grpcHeader)).build();
|
||||
var objectId = frostfs.refs.Types.ObjectID.newBuilder().setValue(getSha256(grpcHeader)).build();
|
||||
return Types.Object.newBuilder()
|
||||
.setHeader(grpcHeader)
|
||||
.setObjectId(objectId)
|
||||
.setPayload(ByteString.copyFrom(objectFrostFs.getPayload()))
|
||||
.setSignature(
|
||||
frostFS.refs.Types.Signature.newBuilder()
|
||||
frostfs.refs.Types.Signature.newBuilder()
|
||||
.setKey(ByteString.copyFrom(getContext().getKey().getPublicKeyByte()))
|
||||
.setSign(ByteString.copyFrom(signData(getContext().getKey(), objectId.toByteArray())))
|
||||
)
|
|
@ -1,7 +1,7 @@
|
|||
package info.FrostFS.sdk.services.impl;
|
||||
package info.frostfs.sdk.services.impl;
|
||||
|
||||
import frostFS.object.ObjectServiceGrpc;
|
||||
import frostFS.object.Service;
|
||||
import frostfs.object.ObjectServiceGrpc;
|
||||
import frostfs.object.Service;
|
||||
import io.grpc.stub.StreamObserver;
|
||||
|
||||
import static java.util.Objects.isNull;
|
|
@ -1,7 +1,7 @@
|
|||
package info.FrostFS.sdk.services.impl;
|
||||
package info.frostfs.sdk.services.impl;
|
||||
|
||||
import frostFS.object.Service;
|
||||
import info.FrostFS.sdk.tools.Verifier;
|
||||
import frostfs.object.Service;
|
||||
import info.frostfs.sdk.tools.Verifier;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
@ -13,7 +13,7 @@ public class SearchReader {
|
|||
this.call = call;
|
||||
}
|
||||
|
||||
public List<frostFS.refs.Types.ObjectID> read() {
|
||||
public List<frostfs.refs.Types.ObjectID> read() {
|
||||
if (!call.hasNext()) {
|
||||
return null;
|
||||
}
|
|
@ -1,17 +1,18 @@
|
|||
package info.FrostFS.sdk.services.impl;
|
||||
package info.frostfs.sdk.services.impl;
|
||||
|
||||
import frostFS.session.Service;
|
||||
import frostFS.session.SessionServiceGrpc;
|
||||
import frostFS.session.Types;
|
||||
import info.FrostFS.sdk.dto.SessionToken;
|
||||
import info.FrostFS.sdk.jdo.ClientEnvironment;
|
||||
import info.FrostFS.sdk.mappers.OwnerIdMapper;
|
||||
import info.FrostFS.sdk.mappers.SessionMapper;
|
||||
import info.FrostFS.sdk.services.ContextAccessor;
|
||||
import info.FrostFS.sdk.services.SessionClient;
|
||||
import frostfs.session.Service;
|
||||
import frostfs.session.SessionServiceGrpc;
|
||||
import frostfs.session.Types;
|
||||
import info.frostfs.sdk.dto.SessionToken;
|
||||
import info.frostfs.sdk.jdo.ClientEnvironment;
|
||||
import info.frostfs.sdk.mappers.OwnerIdMapper;
|
||||
import info.frostfs.sdk.mappers.SessionMapper;
|
||||
import info.frostfs.sdk.services.ContextAccessor;
|
||||
import info.frostfs.sdk.services.SessionClient;
|
||||
import info.frostfs.sdk.tools.RequestConstructor;
|
||||
|
||||
import static info.FrostFS.sdk.tools.RequestConstructor.addMetaHeader;
|
||||
import static info.FrostFS.sdk.tools.RequestSigner.sign;
|
||||
import static info.frostfs.sdk.tools.RequestConstructor.addMetaHeader;
|
||||
import static info.frostfs.sdk.tools.RequestSigner.sign;
|
||||
|
||||
public class SessionService extends ContextAccessor implements SessionClient {
|
||||
private final SessionServiceGrpc.SessionServiceBlockingStub serviceBlockingStub;
|
||||
|
@ -36,7 +37,7 @@ public class SessionService extends ContextAccessor implements SessionClient {
|
|||
.setExpiration(expiration).build()
|
||||
);
|
||||
|
||||
addMetaHeader(request);
|
||||
RequestConstructor.addMetaHeader(request);
|
||||
sign(request, getContext().getKey());
|
||||
|
||||
return createSession(request.build());
|
|
@ -1,4 +1,4 @@
|
|||
package info.FrostFS.sdk.tools;
|
||||
package info.frostfs.sdk.tools;
|
||||
|
||||
import io.grpc.Channel;
|
||||
import io.grpc.ChannelCredentials;
|
|
@ -1,4 +1,4 @@
|
|||
package info.FrostFS.sdk.tools;
|
||||
package info.frostfs.sdk.tools;
|
||||
|
||||
import com.google.protobuf.Message;
|
||||
import com.google.protobuf.MessageOrBuilder;
|
|
@ -1,15 +1,15 @@
|
|||
package info.FrostFS.sdk.tools;
|
||||
package info.frostfs.sdk.tools;
|
||||
|
||||
import com.google.protobuf.Message;
|
||||
import frostFS.session.Types;
|
||||
import info.FrostFS.sdk.dto.MetaHeader;
|
||||
import info.FrostFS.sdk.jdo.ECDsa;
|
||||
import info.FrostFS.sdk.mappers.MetaHeaderMapper;
|
||||
import frostfs.session.Types;
|
||||
import info.frostfs.sdk.dto.MetaHeader;
|
||||
import info.frostfs.sdk.jdo.ECDsa;
|
||||
import info.frostfs.sdk.mappers.MetaHeaderMapper;
|
||||
|
||||
import static info.FrostFS.sdk.constants.FieldConst.META_HEADER_FIELD_NAME;
|
||||
import static info.FrostFS.sdk.tools.MessageHelper.getField;
|
||||
import static info.FrostFS.sdk.tools.MessageHelper.setField;
|
||||
import static info.FrostFS.sdk.tools.RequestSigner.signMessagePart;
|
||||
import static info.frostfs.sdk.constants.FieldConst.META_HEADER_FIELD_NAME;
|
||||
import static info.frostfs.sdk.tools.MessageHelper.getField;
|
||||
import static info.frostfs.sdk.tools.MessageHelper.setField;
|
||||
import static info.frostfs.sdk.tools.RequestSigner.signMessagePart;
|
||||
import static java.util.Objects.isNull;
|
||||
|
||||
public class RequestConstructor {
|
||||
|
@ -27,8 +27,8 @@ public class RequestConstructor {
|
|||
|
||||
public static void addObjectSessionToken(Message.Builder request,
|
||||
Types.SessionToken sessionToken,
|
||||
frostFS.refs.Types.ContainerID cid,
|
||||
frostFS.refs.Types.ObjectID oid,
|
||||
frostfs.refs.Types.ContainerID cid,
|
||||
frostfs.refs.Types.ObjectID oid,
|
||||
Types.ObjectSessionContext.Verb verb,
|
||||
ECDsa key) {
|
||||
var header = (Types.RequestMetaHeader) getField(request, META_HEADER_FIELD_NAME);
|
|
@ -1,9 +1,10 @@
|
|||
package info.FrostFS.sdk.tools;
|
||||
package info.frostfs.sdk.tools;
|
||||
|
||||
import com.google.protobuf.ByteString;
|
||||
import com.google.protobuf.Message;
|
||||
import frostFS.session.Types;
|
||||
import info.FrostFS.sdk.jdo.ECDsa;
|
||||
import frostfs.session.Types;
|
||||
import info.frostfs.sdk.jdo.ECDsa;
|
||||
import info.frostfs.sdk.constants.CryptoConst;
|
||||
import org.apache.commons.codec.digest.DigestUtils;
|
||||
import org.bouncycastle.asn1.sec.SECNamedCurves;
|
||||
import org.bouncycastle.asn1.sec.SECObjectIdentifiers;
|
||||
|
@ -15,10 +16,7 @@ import org.bouncycastle.crypto.signers.HMacDSAKCalculator;
|
|||
import java.math.BigInteger;
|
||||
import java.security.Signature;
|
||||
|
||||
import static info.FrostFS.sdk.constants.CryptoConst.SIGNATURE_ALGORITHM;
|
||||
import static info.FrostFS.sdk.constants.FieldConst.*;
|
||||
import static info.FrostFS.sdk.tools.MessageHelper.getField;
|
||||
import static info.FrostFS.sdk.tools.MessageHelper.setField;
|
||||
import static info.frostfs.sdk.constants.FieldConst.*;
|
||||
import static org.bouncycastle.crypto.util.DigestFactory.createSHA256;
|
||||
import static org.bouncycastle.util.BigIntegers.asUnsignedByteArray;
|
||||
|
||||
|
@ -30,7 +28,7 @@ public class RequestSigner {
|
|||
var hash = new byte[65];
|
||||
hash[0] = 0x04;
|
||||
try {
|
||||
Signature signature = Signature.getInstance(SIGNATURE_ALGORITHM);
|
||||
Signature signature = Signature.getInstance(CryptoConst.SIGNATURE_ALGORITHM);
|
||||
signature.initSign(key.getPrivateKey());
|
||||
signature.update(DigestUtils.sha512(data));
|
||||
byte[] sig = signature.sign();
|
||||
|
@ -67,33 +65,33 @@ public class RequestSigner {
|
|||
return signature;
|
||||
}
|
||||
|
||||
public static frostFS.refs.Types.SignatureRFC6979 signRFC6979(ECDsa key, Message message) {
|
||||
return frostFS.refs.Types.SignatureRFC6979.newBuilder()
|
||||
public static frostfs.refs.Types.SignatureRFC6979 signRFC6979(ECDsa key, Message message) {
|
||||
return frostfs.refs.Types.SignatureRFC6979.newBuilder()
|
||||
.setKey(ByteString.copyFrom(key.getPublicKeyByte()))
|
||||
.setSign(ByteString.copyFrom(signRFC6979(key, message.toByteArray())))
|
||||
.build();
|
||||
}
|
||||
|
||||
public static frostFS.refs.Types.SignatureRFC6979 signRFC6979(ECDsa key, ByteString data) {
|
||||
return frostFS.refs.Types.SignatureRFC6979.newBuilder()
|
||||
public static frostfs.refs.Types.SignatureRFC6979 signRFC6979(ECDsa key, ByteString data) {
|
||||
return frostfs.refs.Types.SignatureRFC6979.newBuilder()
|
||||
.setKey(ByteString.copyFrom(key.getPublicKeyByte()))
|
||||
.setSign(ByteString.copyFrom(signRFC6979(key, data.toByteArray())))
|
||||
.build();
|
||||
}
|
||||
|
||||
public static frostFS.refs.Types.Signature signMessagePart(ECDsa key, Message data) {
|
||||
public static frostfs.refs.Types.Signature signMessagePart(ECDsa key, Message data) {
|
||||
var data2Sign = data.getSerializedSize() == 0 ? new byte[]{} : data.toByteArray();
|
||||
return frostFS.refs.Types.Signature.newBuilder()
|
||||
return frostfs.refs.Types.Signature.newBuilder()
|
||||
.setKey(ByteString.copyFrom(key.getPublicKeyByte()))
|
||||
.setSign(ByteString.copyFrom(signData(key, data2Sign)))
|
||||
.build();
|
||||
}
|
||||
|
||||
public static void sign(Message.Builder request, ECDsa key) {
|
||||
var meta = getField(request, META_HEADER_FIELD_NAME);
|
||||
var body = getField(request, BODY_FIELD_NAME);
|
||||
var verify = getField(request, VERIFY_HEADER_FIELD_NAME);
|
||||
var verifyOrigin = getField(verify, ORIGIN_FIELD_NAME);
|
||||
var meta = MessageHelper.getField(request, META_HEADER_FIELD_NAME);
|
||||
var body = MessageHelper.getField(request, BODY_FIELD_NAME);
|
||||
var verify = MessageHelper.getField(request, VERIFY_HEADER_FIELD_NAME);
|
||||
var verifyOrigin = MessageHelper.getField(verify, ORIGIN_FIELD_NAME);
|
||||
|
||||
Message.Builder verifyBuilder;
|
||||
if (verify instanceof Types.RequestVerificationHeader) {
|
||||
|
@ -107,14 +105,14 @@ public class RequestSigner {
|
|||
}
|
||||
|
||||
if (verifyOrigin.getSerializedSize() == 0) {
|
||||
setField(verifyBuilder, BODY_SIGNATURE_FIELD_NAME, signMessagePart(key, body));
|
||||
MessageHelper.setField(verifyBuilder, BODY_SIGNATURE_FIELD_NAME, signMessagePart(key, body));
|
||||
} else {
|
||||
setField(verifyBuilder, ORIGIN_FIELD_NAME, verifyOrigin);
|
||||
MessageHelper.setField(verifyBuilder, ORIGIN_FIELD_NAME, verifyOrigin);
|
||||
}
|
||||
|
||||
setField(verifyBuilder, META_SIGNATURE_FIELD_NAME, signMessagePart(key, meta));
|
||||
setField(verifyBuilder, ORIGIN_SIGNATURE_FIELD_NAME, signMessagePart(key, verifyOrigin));
|
||||
setField(request, VERIFY_HEADER_FIELD_NAME, verifyBuilder.build());
|
||||
MessageHelper.setField(verifyBuilder, META_SIGNATURE_FIELD_NAME, signMessagePart(key, meta));
|
||||
MessageHelper.setField(verifyBuilder, ORIGIN_SIGNATURE_FIELD_NAME, signMessagePart(key, verifyOrigin));
|
||||
MessageHelper.setField(request, VERIFY_HEADER_FIELD_NAME, verifyBuilder.build());
|
||||
}
|
||||
|
||||
}
|
|
@ -1,8 +1,9 @@
|
|||
package info.FrostFS.sdk.tools;
|
||||
package info.frostfs.sdk.tools;
|
||||
|
||||
import com.google.protobuf.Message;
|
||||
import frostFS.session.Types;
|
||||
import info.FrostFS.sdk.mappers.StatusMapper;
|
||||
import frostfs.session.Types;
|
||||
import info.frostfs.sdk.mappers.StatusMapper;
|
||||
import info.frostfs.sdk.constants.CryptoConst;
|
||||
import org.apache.commons.codec.digest.DigestUtils;
|
||||
import org.bouncycastle.asn1.sec.SECNamedCurves;
|
||||
import org.bouncycastle.asn1.sec.SECObjectIdentifiers;
|
||||
|
@ -16,10 +17,8 @@ import java.security.PublicKey;
|
|||
import java.security.Signature;
|
||||
import java.util.Arrays;
|
||||
|
||||
import static info.FrostFS.sdk.KeyExtension.getPublicKeyFromBytes;
|
||||
import static info.FrostFS.sdk.constants.CryptoConst.SIGNATURE_ALGORITHM;
|
||||
import static info.FrostFS.sdk.constants.FieldConst.*;
|
||||
import static info.FrostFS.sdk.tools.MessageHelper.getField;
|
||||
import static info.frostfs.sdk.KeyExtension.getPublicKeyFromBytes;
|
||||
import static info.frostfs.sdk.constants.FieldConst.*;
|
||||
import static java.util.Objects.isNull;
|
||||
import static org.bouncycastle.crypto.util.DigestFactory.createSHA256;
|
||||
import static org.bouncycastle.util.BigIntegers.fromUnsignedByteArray;
|
||||
|
@ -29,7 +28,7 @@ public class Verifier {
|
|||
public static final String ERROR_INVALID_RESPONSE = "Invalid response";
|
||||
public static final int RFC6979_SIG_SIZE = 64;
|
||||
|
||||
public static boolean verifyRFC6979(frostFS.refs.Types.SignatureRFC6979 signature, Message data) {
|
||||
public static boolean verifyRFC6979(frostfs.refs.Types.SignatureRFC6979 signature, Message data) {
|
||||
return verifyRFC6979(signature.getKey().toByteArray(), data.toByteArray(), signature.getSign().toByteArray());
|
||||
}
|
||||
|
||||
|
@ -68,7 +67,7 @@ public class Verifier {
|
|||
throw new IllegalArgumentException(ERROR_INVALID_RESPONSE);
|
||||
}
|
||||
|
||||
var metaHeader = (Types.ResponseMetaHeader) getField(response, META_HEADER_FIELD_NAME);
|
||||
var metaHeader = (Types.ResponseMetaHeader) MessageHelper.getField(response, META_HEADER_FIELD_NAME);
|
||||
var status = StatusMapper.toModel(metaHeader.getStatus());
|
||||
if (!status.isSuccess()) {
|
||||
throw new IllegalArgumentException(status.toString());
|
||||
|
@ -76,16 +75,16 @@ public class Verifier {
|
|||
}
|
||||
|
||||
public static boolean verify(Message response) {
|
||||
var body = getField(response, BODY_FIELD_NAME);
|
||||
var metaHeader = (Types.ResponseMetaHeader) getField(response, META_HEADER_FIELD_NAME);
|
||||
var verifyHeader = (Types.ResponseVerificationHeader) getField(response, VERIFY_HEADER_FIELD_NAME);
|
||||
var body = MessageHelper.getField(response, BODY_FIELD_NAME);
|
||||
var metaHeader = (Types.ResponseMetaHeader) MessageHelper.getField(response, META_HEADER_FIELD_NAME);
|
||||
var verifyHeader = (Types.ResponseVerificationHeader) MessageHelper.getField(response, VERIFY_HEADER_FIELD_NAME);
|
||||
|
||||
return verifyMatryoshkaLevel(body, metaHeader, verifyHeader);
|
||||
}
|
||||
|
||||
public static boolean verifyMatryoshkaLevel(Message data,
|
||||
frostFS.session.Types.ResponseMetaHeader meta,
|
||||
frostFS.session.Types.ResponseVerificationHeader verification) {
|
||||
frostfs.session.Types.ResponseMetaHeader meta,
|
||||
frostfs.session.Types.ResponseVerificationHeader verification) {
|
||||
if (!verifyMessagePart(verification.getMetaSignature(), meta)) return false;
|
||||
var origin = verification.getOrigin();
|
||||
if (!verifyMessagePart(verification.getOriginSignature(), origin)) return false;
|
||||
|
@ -96,7 +95,7 @@ public class Verifier {
|
|||
&& verifyMatryoshkaLevel(data, meta.getOrigin(), origin);
|
||||
}
|
||||
|
||||
public static boolean verifyMessagePart(frostFS.refs.Types.Signature sig, Message data) {
|
||||
public static boolean verifyMessagePart(frostfs.refs.Types.Signature sig, Message data) {
|
||||
if (sig.getSerializedSize() == 0 || sig.getKey().isEmpty() || sig.getSign().isEmpty()) return false;
|
||||
|
||||
var publicKey = getPublicKeyFromBytes(sig.getKey().toByteArray());
|
||||
|
@ -107,7 +106,7 @@ public class Verifier {
|
|||
|
||||
public static boolean verifyData(PublicKey publicKey, byte[] data, byte[] sig) {
|
||||
try {
|
||||
Signature signature = Signature.getInstance(SIGNATURE_ALGORITHM);
|
||||
Signature signature = Signature.getInstance(CryptoConst.SIGNATURE_ALGORITHM);
|
||||
signature.initVerify(publicKey);
|
||||
signature.update(DigestUtils.sha512(data));
|
||||
return signature.verify(Arrays.copyOfRange(sig, 1, sig.length));
|
|
@ -4,8 +4,8 @@
|
|||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>info.FrostFS.sdk</groupId>
|
||||
<artifactId>FrostFS-sdk-java</artifactId>
|
||||
<groupId>info.frostfs.sdk</groupId>
|
||||
<artifactId>frostfs-sdk-java</artifactId>
|
||||
<version>0.1.0</version>
|
||||
</parent>
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
package info.FrostFS.sdk;
|
||||
package info.frostfs.sdk;
|
||||
|
||||
public class ArrayHelper {
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
package info.FrostFS.sdk;
|
||||
package info.frostfs.sdk;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import static info.FrostFS.sdk.ArrayHelper.concat;
|
||||
import static info.FrostFS.sdk.Helper.getSha256;
|
||||
import static info.frostfs.sdk.ArrayHelper.concat;
|
||||
import static info.frostfs.sdk.Helper.getSha256;
|
||||
import static java.util.Objects.isNull;
|
||||
|
||||
public class Base58 {
|
|
@ -1,4 +1,4 @@
|
|||
package info.FrostFS.sdk;
|
||||
package info.frostfs.sdk;
|
||||
|
||||
import com.google.protobuf.ByteString;
|
||||
import com.google.protobuf.Message;
|
|
@ -1,4 +1,4 @@
|
|||
package info.FrostFS.sdk;
|
||||
package info.frostfs.sdk;
|
||||
|
||||
import org.bouncycastle.asn1.sec.SECNamedCurves;
|
||||
import org.bouncycastle.asn1.sec.SECObjectIdentifiers;
|
||||
|
@ -23,8 +23,8 @@ import java.security.spec.ECPublicKeySpec;
|
|||
import java.security.spec.InvalidKeySpecException;
|
||||
import java.util.Arrays;
|
||||
|
||||
import static info.FrostFS.sdk.Helper.getRIPEMD160;
|
||||
import static info.FrostFS.sdk.Helper.getSha256;
|
||||
import static info.frostfs.sdk.Helper.getRIPEMD160;
|
||||
import static info.frostfs.sdk.Helper.getSha256;
|
||||
import static org.bouncycastle.util.BigIntegers.fromUnsignedByteArray;
|
||||
|
||||
public class KeyExtension {
|
|
@ -4,8 +4,8 @@
|
|||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>info.FrostFS.sdk</groupId>
|
||||
<artifactId>FrostFS-sdk-java</artifactId>
|
||||
<groupId>info.frostfs.sdk</groupId>
|
||||
<artifactId>frostfs-sdk-java</artifactId>
|
||||
<version>0.1.0</version>
|
||||
</parent>
|
||||
|
||||
|
@ -24,12 +24,12 @@
|
|||
<version>3.14.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>info.FrostFS.sdk</groupId>
|
||||
<groupId>info.frostfs.sdk</groupId>
|
||||
<artifactId>cryptography</artifactId>
|
||||
<version>0.1.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>info.FrostFS.sdk</groupId>
|
||||
<groupId>info.frostfs.sdk</groupId>
|
||||
<artifactId>protos</artifactId>
|
||||
<version>0.1.0</version>
|
||||
</dependency>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
package info.FrostFS.sdk;
|
||||
package info.frostfs.sdk;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.UUID;
|
|
@ -1,4 +1,4 @@
|
|||
package info.FrostFS.sdk.constants;
|
||||
package info.frostfs.sdk.constants;
|
||||
|
||||
public class AppConst {
|
||||
public static final int OBJECT_CHUNK_SIZE = 3 * (1 << 20);
|
|
@ -1,4 +1,4 @@
|
|||
package info.FrostFS.sdk.constants;
|
||||
package info.frostfs.sdk.constants;
|
||||
|
||||
public class FieldConst {
|
||||
public static final String META_HEADER_FIELD_NAME = "meta_header";
|
|
@ -1,4 +1,4 @@
|
|||
package info.FrostFS.sdk.constants;
|
||||
package info.frostfs.sdk.constants;
|
||||
|
||||
public class XHeaderConst {
|
||||
public static final String RESERVED_XHEADER_PREFIX = "__SYSTEM__";
|
|
@ -1,4 +1,4 @@
|
|||
package info.FrostFS.sdk.dto;
|
||||
package info.frostfs.sdk.dto;
|
||||
|
||||
public class MetaHeader {
|
||||
private Version version;
|
|
@ -1,8 +1,8 @@
|
|||
package info.FrostFS.sdk.dto;
|
||||
package info.frostfs.sdk.dto;
|
||||
|
||||
import info.FrostFS.sdk.Base58;
|
||||
import info.frostfs.sdk.Base58;
|
||||
|
||||
import static info.FrostFS.sdk.KeyExtension.publicKeyToAddress;
|
||||
import static info.frostfs.sdk.KeyExtension.publicKeyToAddress;
|
||||
|
||||
public class OwnerId {
|
||||
private final String value;
|
|
@ -1,4 +1,4 @@
|
|||
package info.FrostFS.sdk.dto;
|
||||
package info.frostfs.sdk.dto;
|
||||
|
||||
public class SessionToken {
|
||||
private final byte[] id;
|
|
@ -1,6 +1,6 @@
|
|||
package info.FrostFS.sdk.dto;
|
||||
package info.frostfs.sdk.dto;
|
||||
|
||||
import info.FrostFS.sdk.enums.SignatureScheme;
|
||||
import info.frostfs.sdk.enums.SignatureScheme;
|
||||
|
||||
public class Signature {
|
||||
private byte[] key;
|
|
@ -1,7 +1,7 @@
|
|||
package info.FrostFS.sdk.dto;
|
||||
package info.frostfs.sdk.dto;
|
||||
|
||||
import info.FrostFS.sdk.dto.object.ObjectHeader;
|
||||
import info.FrostFS.sdk.dto.object.ObjectId;
|
||||
import info.frostfs.sdk.dto.object.ObjectHeader;
|
||||
import info.frostfs.sdk.dto.object.ObjectId;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
|
@ -1,9 +1,9 @@
|
|||
package info.FrostFS.sdk.dto;
|
||||
package info.frostfs.sdk.dto;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import static info.FrostFS.sdk.UUIDExtension.asBytes;
|
||||
import static info.FrostFS.sdk.UUIDExtension.asUuid;
|
||||
import static info.frostfs.sdk.UUIDExtension.asBytes;
|
||||
import static info.frostfs.sdk.UUIDExtension.asUuid;
|
||||
import static java.util.Objects.isNull;
|
||||
|
||||
public class SplitId {
|
|
@ -1,6 +1,6 @@
|
|||
package info.FrostFS.sdk.dto;
|
||||
package info.frostfs.sdk.dto;
|
||||
|
||||
import info.FrostFS.sdk.enums.StatusCode;
|
||||
import info.frostfs.sdk.enums.StatusCode;
|
||||
|
||||
import static java.util.Objects.isNull;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package info.FrostFS.sdk.dto;
|
||||
package info.frostfs.sdk.dto;
|
||||
|
||||
public class Version {
|
||||
private int major;
|
|
@ -1,8 +1,8 @@
|
|||
package info.FrostFS.sdk.dto.container;
|
||||
package info.frostfs.sdk.dto.container;
|
||||
|
||||
import info.FrostFS.sdk.dto.Version;
|
||||
import info.FrostFS.sdk.dto.netmap.PlacementPolicy;
|
||||
import info.FrostFS.sdk.enums.BasicAcl;
|
||||
import info.frostfs.sdk.dto.Version;
|
||||
import info.frostfs.sdk.dto.netmap.PlacementPolicy;
|
||||
import info.frostfs.sdk.enums.BasicAcl;
|
||||
|
||||
import java.util.UUID;
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
package info.FrostFS.sdk.dto.container;
|
||||
package info.frostfs.sdk.dto.container;
|
||||
|
||||
import info.FrostFS.sdk.Base58;
|
||||
import info.FrostFS.sdk.constants.AppConst;
|
||||
import info.frostfs.sdk.Base58;
|
||||
import info.frostfs.sdk.constants.AppConst;
|
||||
|
||||
public class ContainerId {
|
||||
private String value;
|
|
@ -1,4 +1,4 @@
|
|||
package info.FrostFS.sdk.dto.netmap;
|
||||
package info.frostfs.sdk.dto.netmap;
|
||||
|
||||
import java.util.List;
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
package info.FrostFS.sdk.dto.netmap;
|
||||
package info.frostfs.sdk.dto.netmap;
|
||||
|
||||
import info.FrostFS.sdk.dto.Version;
|
||||
import info.FrostFS.sdk.enums.NodeState;
|
||||
import info.frostfs.sdk.dto.Version;
|
||||
import info.frostfs.sdk.enums.NodeState;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
|
@ -1,4 +1,4 @@
|
|||
package info.FrostFS.sdk.dto.netmap;
|
||||
package info.frostfs.sdk.dto.netmap;
|
||||
|
||||
public class PlacementPolicy {
|
||||
private final Replica[] replicas;
|
|
@ -1,4 +1,4 @@
|
|||
package info.FrostFS.sdk.dto.netmap;
|
||||
package info.frostfs.sdk.dto.netmap;
|
||||
|
||||
import static java.util.Objects.isNull;
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
package info.FrostFS.sdk.dto.object;
|
||||
package info.frostfs.sdk.dto.object;
|
||||
|
||||
import info.FrostFS.sdk.dto.container.ContainerId;
|
||||
import info.frostfs.sdk.dto.container.ContainerId;
|
||||
|
||||
import java.security.MessageDigest;
|
||||
|
||||
import static info.FrostFS.sdk.Helper.getSha256Instance;
|
||||
import static info.frostfs.sdk.Helper.getSha256Instance;
|
||||
|
||||
public class LargeObject extends ObjectFrostFS {
|
||||
private final MessageDigest payloadHash;
|
|
@ -1,8 +1,8 @@
|
|||
package info.FrostFS.sdk.dto.object;
|
||||
package info.frostfs.sdk.dto.object;
|
||||
|
||||
import info.FrostFS.sdk.dto.Split;
|
||||
import info.FrostFS.sdk.dto.SplitId;
|
||||
import info.FrostFS.sdk.dto.container.ContainerId;
|
||||
import info.frostfs.sdk.dto.Split;
|
||||
import info.frostfs.sdk.dto.SplitId;
|
||||
import info.frostfs.sdk.dto.container.ContainerId;
|
||||
|
||||
import java.util.List;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package info.FrostFS.sdk.dto.object;
|
||||
package info.frostfs.sdk.dto.object;
|
||||
|
||||
public class ObjectAttribute {
|
||||
private String key;
|
|
@ -1,8 +1,8 @@
|
|||
package info.FrostFS.sdk.dto.object;
|
||||
package info.frostfs.sdk.dto.object;
|
||||
|
||||
import info.FrostFS.sdk.dto.OwnerId;
|
||||
import info.FrostFS.sdk.dto.Version;
|
||||
import info.FrostFS.sdk.enums.ObjectMatchType;
|
||||
import info.frostfs.sdk.dto.OwnerId;
|
||||
import info.frostfs.sdk.dto.Version;
|
||||
import info.frostfs.sdk.enums.ObjectMatchType;
|
||||
|
||||
public class ObjectFilter {
|
||||
private static final String HEADER_PREFIX = "$Object:";
|
|
@ -1,8 +1,8 @@
|
|||
package info.FrostFS.sdk.dto.object;
|
||||
package info.frostfs.sdk.dto.object;
|
||||
|
||||
import info.FrostFS.sdk.dto.Split;
|
||||
import info.FrostFS.sdk.dto.container.ContainerId;
|
||||
import info.FrostFS.sdk.enums.ObjectType;
|
||||
import info.frostfs.sdk.dto.Split;
|
||||
import info.frostfs.sdk.dto.container.ContainerId;
|
||||
import info.frostfs.sdk.enums.ObjectType;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
|
@ -1,10 +1,10 @@
|
|||
package info.FrostFS.sdk.dto.object;
|
||||
package info.frostfs.sdk.dto.object;
|
||||
|
||||
import info.FrostFS.sdk.dto.OwnerId;
|
||||
import info.FrostFS.sdk.dto.Split;
|
||||
import info.FrostFS.sdk.dto.Version;
|
||||
import info.FrostFS.sdk.dto.container.ContainerId;
|
||||
import info.FrostFS.sdk.enums.ObjectType;
|
||||
import info.frostfs.sdk.dto.OwnerId;
|
||||
import info.frostfs.sdk.dto.Split;
|
||||
import info.frostfs.sdk.dto.Version;
|
||||
import info.frostfs.sdk.dto.container.ContainerId;
|
||||
import info.frostfs.sdk.enums.ObjectType;
|
||||
|
||||
import java.util.List;
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
package info.FrostFS.sdk.dto.object;
|
||||
package info.frostfs.sdk.dto.object;
|
||||
|
||||
import info.FrostFS.sdk.Base58;
|
||||
import info.FrostFS.sdk.constants.AppConst;
|
||||
import info.frostfs.sdk.Base58;
|
||||
import info.frostfs.sdk.constants.AppConst;
|
||||
|
||||
public class ObjectId {
|
||||
private final String value;
|
|
@ -1,4 +1,4 @@
|
|||
package info.FrostFS.sdk.enums;
|
||||
package info.frostfs.sdk.enums;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
|
@ -1,4 +1,4 @@
|
|||
package info.FrostFS.sdk.enums;
|
||||
package info.frostfs.sdk.enums;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
|
@ -1,4 +1,4 @@
|
|||
package info.FrostFS.sdk.enums;
|
||||
package info.frostfs.sdk.enums;
|
||||
|
||||
public enum ObjectMatchType {
|
||||
UNSPECIFIED(0),
|
|
@ -1,4 +1,4 @@
|
|||
package info.FrostFS.sdk.enums;
|
||||
package info.frostfs.sdk.enums;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
|
@ -1,4 +1,4 @@
|
|||
package info.FrostFS.sdk.enums;
|
||||
package info.frostfs.sdk.enums;
|
||||
|
||||
public enum SignatureScheme {
|
||||
ECDSA_SHA512(0),
|
|
@ -1,4 +1,4 @@
|
|||
package info.FrostFS.sdk.enums;
|
||||
package info.frostfs.sdk.enums;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
|
@ -1,7 +1,7 @@
|
|||
package info.FrostFS.sdk.mappers;
|
||||
package info.frostfs.sdk.mappers;
|
||||
|
||||
import frostFS.session.Types;
|
||||
import info.FrostFS.sdk.dto.MetaHeader;
|
||||
import frostfs.session.Types;
|
||||
import info.frostfs.sdk.dto.MetaHeader;
|
||||
|
||||
public class MetaHeaderMapper {
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
package info.FrostFS.sdk.mappers;
|
||||
package info.frostfs.sdk.mappers;
|
||||
|
||||
import com.google.protobuf.ByteString;
|
||||
import frostFS.refs.Types;
|
||||
import info.FrostFS.sdk.dto.OwnerId;
|
||||
import frostfs.refs.Types;
|
||||
import info.frostfs.sdk.dto.OwnerId;
|
||||
|
||||
public class OwnerIdMapper {
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
package info.FrostFS.sdk.mappers;
|
||||
package info.frostfs.sdk.mappers;
|
||||
|
||||
import com.google.protobuf.CodedOutputStream;
|
||||
import com.google.protobuf.InvalidProtocolBufferException;
|
||||
import frostFS.session.Types;
|
||||
import frostfs.session.Types;
|
||||
|
||||
import java.io.IOException;
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
package info.FrostFS.sdk.mappers;
|
||||
package info.frostfs.sdk.mappers;
|
||||
|
||||
import com.google.protobuf.ByteString;
|
||||
import frostFS.refs.Types;
|
||||
import info.FrostFS.sdk.dto.Signature;
|
||||
import frostfs.refs.Types;
|
||||
import info.frostfs.sdk.dto.Signature;
|
||||
|
||||
import static java.util.Objects.isNull;
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
package info.FrostFS.sdk.mappers;
|
||||
package info.frostfs.sdk.mappers;
|
||||
|
||||
import frostFS.status.Types;
|
||||
import info.FrostFS.sdk.dto.Status;
|
||||
import info.FrostFS.sdk.enums.StatusCode;
|
||||
import frostfs.status.Types;
|
||||
import info.frostfs.sdk.dto.Status;
|
||||
import info.frostfs.sdk.enums.StatusCode;
|
||||
|
||||
import static java.util.Objects.isNull;
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
package info.FrostFS.sdk.mappers;
|
||||
package info.frostfs.sdk.mappers;
|
||||
|
||||
import frostFS.refs.Types;
|
||||
import info.FrostFS.sdk.dto.Version;
|
||||
import frostfs.refs.Types;
|
||||
import info.frostfs.sdk.dto.Version;
|
||||
|
||||
public class VersionMapper {
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
package info.FrostFS.sdk.mappers.container;
|
||||
package info.frostfs.sdk.mappers.container;
|
||||
|
||||
import com.google.protobuf.ByteString;
|
||||
import frostFS.refs.Types;
|
||||
import info.FrostFS.sdk.dto.container.ContainerId;
|
||||
import frostfs.refs.Types;
|
||||
import info.frostfs.sdk.dto.container.ContainerId;
|
||||
|
||||
public class ContainerIdMapper {
|
||||
|
|
@ -1,14 +1,14 @@
|
|||
package info.FrostFS.sdk.mappers.container;
|
||||
package info.frostfs.sdk.mappers.container;
|
||||
|
||||
import com.google.protobuf.ByteString;
|
||||
import frostFS.container.Types;
|
||||
import info.FrostFS.sdk.dto.container.Container;
|
||||
import info.FrostFS.sdk.enums.BasicAcl;
|
||||
import info.FrostFS.sdk.mappers.VersionMapper;
|
||||
import info.FrostFS.sdk.mappers.netmap.PlacementPolicyMapper;
|
||||
import frostfs.container.Types;
|
||||
import info.frostfs.sdk.dto.container.Container;
|
||||
import info.frostfs.sdk.enums.BasicAcl;
|
||||
import info.frostfs.sdk.mappers.VersionMapper;
|
||||
import info.frostfs.sdk.mappers.netmap.PlacementPolicyMapper;
|
||||
|
||||
import static info.FrostFS.sdk.UUIDExtension.asBytes;
|
||||
import static info.FrostFS.sdk.UUIDExtension.asUuid;
|
||||
import static info.frostfs.sdk.UUIDExtension.asBytes;
|
||||
import static info.frostfs.sdk.UUIDExtension.asUuid;
|
||||
import static java.util.Objects.isNull;
|
||||
|
||||
public class ContainerMapper {
|
|
@ -1,7 +1,7 @@
|
|||
package info.FrostFS.sdk.mappers.netmap;
|
||||
package info.frostfs.sdk.mappers.netmap;
|
||||
|
||||
import frostFS.netmap.Service;
|
||||
import info.FrostFS.sdk.dto.netmap.NetmapSnapshot;
|
||||
import frostfs.netmap.Service;
|
||||
import info.frostfs.sdk.dto.netmap.NetmapSnapshot;
|
||||
|
||||
import java.util.stream.Collectors;
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
package info.FrostFS.sdk.mappers.netmap;
|
||||
package info.frostfs.sdk.mappers.netmap;
|
||||
|
||||
import frostFS.netmap.Service;
|
||||
import frostFS.netmap.Types.NodeInfo.Attribute;
|
||||
import frostFS.refs.Types;
|
||||
import info.FrostFS.sdk.dto.netmap.NodeInfo;
|
||||
import info.FrostFS.sdk.enums.NodeState;
|
||||
import info.FrostFS.sdk.mappers.VersionMapper;
|
||||
import frostfs.netmap.Service;
|
||||
import frostfs.netmap.Types.NodeInfo.Attribute;
|
||||
import frostfs.refs.Types;
|
||||
import info.frostfs.sdk.dto.netmap.NodeInfo;
|
||||
import info.frostfs.sdk.enums.NodeState;
|
||||
import info.frostfs.sdk.mappers.VersionMapper;
|
||||
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
@ -17,7 +17,7 @@ public class NodeInfoMapper {
|
|||
return toModel(nodeInfo.getNodeInfo(), nodeInfo.getVersion());
|
||||
}
|
||||
|
||||
public static NodeInfo toModel(frostFS.netmap.Types.NodeInfo nodeInfo, Types.Version version) {
|
||||
public static NodeInfo toModel(frostfs.netmap.Types.NodeInfo nodeInfo, Types.Version version) {
|
||||
NodeState nodeState = NodeState.get(nodeInfo.getState().getNumber());
|
||||
if (isNull(nodeState)) {
|
||||
throw new IllegalArgumentException(
|
|
@ -1,8 +1,8 @@
|
|||
package info.FrostFS.sdk.mappers.netmap;
|
||||
package info.frostfs.sdk.mappers.netmap;
|
||||
|
||||
import frostFS.netmap.Types;
|
||||
import info.FrostFS.sdk.dto.netmap.PlacementPolicy;
|
||||
import info.FrostFS.sdk.dto.netmap.Replica;
|
||||
import frostfs.netmap.Types;
|
||||
import info.frostfs.sdk.dto.netmap.PlacementPolicy;
|
||||
import info.frostfs.sdk.dto.netmap.Replica;
|
||||
|
||||
public class PlacementPolicyMapper {
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
package info.FrostFS.sdk.mappers.netmap;
|
||||
package info.frostfs.sdk.mappers.netmap;
|
||||
|
||||
import frostFS.netmap.Types;
|
||||
import info.FrostFS.sdk.dto.netmap.Replica;
|
||||
import frostfs.netmap.Types;
|
||||
import info.frostfs.sdk.dto.netmap.Replica;
|
||||
|
||||
public class ReplicaMapper {
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
package info.FrostFS.sdk.mappers.object;
|
||||
package info.frostfs.sdk.mappers.object;
|
||||
|
||||
import frostFS.object.Types;
|
||||
import info.FrostFS.sdk.dto.object.ObjectAttribute;
|
||||
import frostfs.object.Types;
|
||||
import info.frostfs.sdk.dto.object.ObjectAttribute;
|
||||
|
||||
public class ObjectAttributeMapper {
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
package info.FrostFS.sdk.mappers.object;
|
||||
package info.frostfs.sdk.mappers.object;
|
||||
|
||||
import frostFS.object.Service;
|
||||
import frostFS.object.Types;
|
||||
import info.FrostFS.sdk.dto.object.ObjectFilter;
|
||||
import frostfs.object.Service;
|
||||
import frostfs.object.Types;
|
||||
import info.frostfs.sdk.dto.object.ObjectFilter;
|
||||
|
||||
import static java.util.Objects.isNull;
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
package info.FrostFS.sdk.mappers.object;
|
||||
package info.frostfs.sdk.mappers.object;
|
||||
|
||||
import frostFS.object.Types;
|
||||
import info.FrostFS.sdk.dto.object.ObjectFrostFS;
|
||||
import info.FrostFS.sdk.dto.object.ObjectId;
|
||||
import frostfs.object.Types;
|
||||
import info.frostfs.sdk.dto.object.ObjectFrostFS;
|
||||
import info.frostfs.sdk.dto.object.ObjectId;
|
||||
|
||||
public class ObjectFrostFSMapper {
|
||||
|
|
@ -1,12 +1,12 @@
|
|||
package info.FrostFS.sdk.mappers.object;
|
||||
package info.frostfs.sdk.mappers.object;
|
||||
|
||||
import frostFS.object.Types;
|
||||
import info.FrostFS.sdk.dto.container.ContainerId;
|
||||
import info.FrostFS.sdk.dto.object.ObjectAttribute;
|
||||
import info.FrostFS.sdk.dto.object.ObjectHeader;
|
||||
import info.FrostFS.sdk.enums.ObjectType;
|
||||
import info.FrostFS.sdk.mappers.VersionMapper;
|
||||
import info.FrostFS.sdk.mappers.container.ContainerIdMapper;
|
||||
import frostfs.object.Types;
|
||||
import info.frostfs.sdk.dto.container.ContainerId;
|
||||
import info.frostfs.sdk.dto.object.ObjectAttribute;
|
||||
import info.frostfs.sdk.dto.object.ObjectHeader;
|
||||
import info.frostfs.sdk.enums.ObjectType;
|
||||
import info.frostfs.sdk.mappers.VersionMapper;
|
||||
import info.frostfs.sdk.mappers.container.ContainerIdMapper;
|
||||
|
||||
import java.util.stream.Collectors;
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
package info.FrostFS.sdk.mappers.object;
|
||||
package info.frostfs.sdk.mappers.object;
|
||||
|
||||
import com.google.protobuf.ByteString;
|
||||
import frostFS.refs.Types;
|
||||
import info.FrostFS.sdk.dto.object.ObjectId;
|
||||
import frostfs.refs.Types;
|
||||
import info.frostfs.sdk.dto.object.ObjectId;
|
||||
|
||||
public class ObjectIdMapper {
|
||||
|
4
pom.xml
4
pom.xml
|
@ -4,8 +4,8 @@
|
|||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>info.FrostFS.sdk</groupId>
|
||||
<artifactId>FrostFS-sdk-java</artifactId>
|
||||
<groupId>info.frostfs.sdk</groupId>
|
||||
<artifactId>frostfs-sdk-java</artifactId>
|
||||
<version>0.1.0</version>
|
||||
<packaging>pom</packaging>
|
||||
<modules>
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>info.FrostFS.sdk</groupId>
|
||||
<artifactId>FrostFS-sdk-java</artifactId>
|
||||
<groupId>info.frostfs.sdk</groupId>
|
||||
<artifactId>frostfs-sdk-java</artifactId>
|
||||
<version>0.1.0</version>
|
||||
</parent>
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@ syntax = "proto3";
|
|||
package neo.fs.v2.accounting;
|
||||
|
||||
option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/accounting/grpc;accounting";
|
||||
option java_package = "frostFS.accounting";
|
||||
option java_package = "frostfs.accounting";
|
||||
|
||||
import "accounting/types.proto";
|
||||
import "refs/types.proto";
|
||||
|
|
|
@ -3,7 +3,7 @@ syntax = "proto3";
|
|||
package neo.fs.v2.accounting;
|
||||
|
||||
option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/accounting/grpc;accounting";
|
||||
option java_package = "frostFS.accounting";
|
||||
option java_package = "frostfs.accounting";
|
||||
|
||||
// Standard floating point data type can't be used in NeoFS due to inexactness
|
||||
// of the result when doing lots of small number operations. To solve the lost
|
||||
|
|
|
@ -3,7 +3,7 @@ syntax = "proto3";
|
|||
package neo.fs.v2.acl;
|
||||
|
||||
option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/acl/grpc;acl";
|
||||
option java_package = "frostFS.acl";
|
||||
option java_package = "frostfs.acl";
|
||||
|
||||
import "refs/types.proto";
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ import "apemanager/types.proto";
|
|||
import "session/types.proto";
|
||||
|
||||
option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/apemanager/grpc;apemanager";
|
||||
option java_package = "frostFS.apemanager";
|
||||
option java_package = "frostfs.apemanager";
|
||||
|
||||
// `APEManagerService` provides API to manage rule chains within sidechain's
|
||||
// `Policy` smart contract.
|
||||
|
|
|
@ -3,7 +3,7 @@ syntax = "proto3";
|
|||
package frostfs.v2.apemanager;
|
||||
|
||||
option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/apemanager/grpc;apemanager";
|
||||
option java_package = "frostFS.apemanager";
|
||||
option java_package = "frostfs.apemanager";
|
||||
|
||||
// TargetType is a type target to which a rule chain is defined.
|
||||
enum TargetType {
|
||||
|
|
|
@ -3,7 +3,7 @@ syntax = "proto3";
|
|||
package neo.fs.v2.container;
|
||||
|
||||
option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/container/grpc;container";
|
||||
option java_package = "frostFS.container";
|
||||
option java_package = "frostfs.container";
|
||||
|
||||
import "acl/types.proto";
|
||||
import "container/types.proto";
|
||||
|
|
|
@ -3,7 +3,7 @@ syntax = "proto3";
|
|||
package neo.fs.v2.container;
|
||||
|
||||
option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/container/grpc;container";
|
||||
option java_package = "frostFS.container";
|
||||
option java_package = "frostfs.container";
|
||||
|
||||
import "netmap/types.proto";
|
||||
import "refs/types.proto";
|
||||
|
|
|
@ -3,7 +3,7 @@ syntax = "proto3";
|
|||
package neo.fs.v2.lock;
|
||||
|
||||
option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/lock/grpc;lock";
|
||||
option java_package = "frostFS.lock";
|
||||
option java_package = "frostfs.lock";
|
||||
|
||||
import "refs/types.proto";
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@ syntax = "proto3";
|
|||
package neo.fs.v2.netmap;
|
||||
|
||||
option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/netmap/grpc;netmap";
|
||||
option java_package = "frostFS.netmap";
|
||||
option java_package = "frostfs.netmap";
|
||||
|
||||
import "netmap/types.proto";
|
||||
import "refs/types.proto";
|
||||
|
|
|
@ -3,7 +3,7 @@ syntax = "proto3";
|
|||
package neo.fs.v2.netmap;
|
||||
|
||||
option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/netmap/grpc;netmap";
|
||||
option java_package = "frostFS.netmap";
|
||||
option java_package = "frostfs.netmap";
|
||||
|
||||
// Operations on filters
|
||||
enum Operation {
|
||||
|
|
|
@ -3,7 +3,7 @@ syntax = "proto3";
|
|||
package neo.fs.v2.object;
|
||||
|
||||
option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/object/grpc;object";
|
||||
option java_package = "frostFS.object";
|
||||
option java_package = "frostfs.object";
|
||||
|
||||
import "object/types.proto";
|
||||
import "refs/types.proto";
|
||||
|
|
|
@ -3,7 +3,7 @@ syntax = "proto3";
|
|||
package neo.fs.v2.object;
|
||||
|
||||
option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/object/grpc;object";
|
||||
option java_package = "frostFS.object";
|
||||
option java_package = "frostfs.object";
|
||||
|
||||
import "refs/types.proto";
|
||||
import "session/types.proto";
|
||||
|
|
|
@ -3,7 +3,7 @@ syntax = "proto3";
|
|||
package neo.fs.v2.refs;
|
||||
|
||||
option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs/grpc;refs";
|
||||
option java_package = "frostFS.refs";
|
||||
option java_package = "frostfs.refs";
|
||||
|
||||
// Objects in NeoFS are addressed by their ContainerID and ObjectID.
|
||||
//
|
||||
|
|
|
@ -3,7 +3,7 @@ syntax = "proto3";
|
|||
package neo.fs.v2.session;
|
||||
|
||||
option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/session/grpc;session";
|
||||
option java_package = "frostFS.session";
|
||||
option java_package = "frostfs.session";
|
||||
|
||||
import "refs/types.proto";
|
||||
import "session/types.proto";
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue