package com.kryptnostic.directory.v1.http; import java.util.Map; import java.util.Set; import java.util.UUID; import com.codahale.metrics.annotation.Timed; import com.google.common.base.Optional; import com.kryptnostic.directory.v1.model.ByteArrayEnvelope; import com.kryptnostic.directory.v1.model.response.PublicKeyEnvelope; import com.kryptnostic.kodex.v1.constants.Names; import com.kryptnostic.kodex.v1.crypto.ciphers.BlockCiphertext; import com.kryptnostic.kodex.v1.exceptions.types.ResourceNotFoundException; import com.kryptnostic.kodex.v1.models.response.BasicResponse; import com.kryptnostic.sharing.v1.models.NotificationPreference; import retrofit.client.Response; import retrofit.http.Body; import retrofit.http.GET; import retrofit.http.POST; import retrofit.http.PUT; import retrofit.http.Path; public interface DirectoryApi { String CONTROLLER = "/directory"; String PUBLIC_KEY = "/public"; String PRIVATE_KEY = "/private"; String KODEX = "/kodex"; String OBJECT_KEY = "/object"; String NOTIFICATION_KEY = "/notifications"; String SALT_KEY = "/salt"; String RESOLUTION_KEY = "/resolve"; String INITIALIZED = "/initialized"; String MASTER_KEY = "/master"; public static final class PARAM { private PARAM() {} public static final String REALM = "/{" + Names.REALM_FIELD + "}"; public static final String USER = "/{" + Names.USER_FIELD + "}"; public static final String ID = "/{" + Names.ID_FIELD + "}"; public static final String USER_WITH_DOT = "/{" + Names.USER_FIELD + ":.+}"; public static final String REALM_WITH_DOT = "/{" + Names.REALM_FIELD + ":.+}"; } /** * @deprecated use {@link com.kryptnostic.v2.storage.api.KeyStorageApi#getRSAPublicKey(UUID user ) } instead * @param id The id of the user whose public key shall be retrieved. * @return Specified user's public key * @throws ResourceNotFoundException */ @Deprecated @Timed @GET( CONTROLLER + PUBLIC_KEY + PARAM.USER ) PublicKeyEnvelope getPublicKey( @Path( Names.USER_FIELD ) UUID id ) throws ResourceNotFoundException; /** * @deprecated use {@link com.kryptnostic.v2.storage.api.KeyStorageApi#getRSAPublicKeys(Set userIds ) } instead * @param userIds The id of the user whose public key shall be retrieved. * @return Specified user's public key * @throws ResourceNotFoundException */ @Deprecated @Timed @POST( CONTROLLER + PUBLIC_KEY ) Map<UUID, PublicKeyEnvelope> getPublicKeys( @Body Set<UUID> userIds ) throws ResourceNotFoundException; /** * @deprecated use {@link com.kryptnostic.v2.storage.api.KeyStorageApi#setRSAPublicKey(byte[] publicKey ) } instead * @param publicKey * @return */ @Deprecated @Timed @PUT( CONTROLLER + PUBLIC_KEY ) BasicResponse<String> setPublicKey( @Body PublicKeyEnvelope publicKey ); /** * Retrieves the password encrypted salt for authentication from the server. * * @deprecated use {@link com.kryptnostic.v2.storage.api.KeyStorageApi } instead * @param id The id of the user whose encrypted salt shall be retrieved. * @return A ciphertext of the password encrypted for the user. */ @Deprecated @Timed @GET( CONTROLLER + SALT_KEY + PARAM.USER ) BlockCiphertext getSalt( @Path( Names.USER_FIELD ) UUID id ) throws ResourceNotFoundException; /** * @deprecated use {@link com.kryptnostic.v2.storage.api.KeyStorageApi } instead * @param encryptedSalt * @return */ @Deprecated @Timed @PUT( CONTROLLER + SALT_KEY ) BasicResponse<String> setSalt( @Body BlockCiphertext encryptedSalt ); /** * @deprecated use {@link com.kryptnostic.v2.storage.api.KeyStorageApi } instead * @return Encrypted private key of current user */ @Deprecated @Timed @GET( CONTROLLER + PRIVATE_KEY ) BlockCiphertext getPrivateKey() throws ResourceNotFoundException; /** * @deprecated use {@link com.kryptnostic.v2.storage.api.KeyStorageApi } instead * @param encryptedPrivateKey * @return */ @Deprecated @Timed @PUT( CONTROLLER + PRIVATE_KEY ) BasicResponse<String> setPrivateKey( @Body BlockCiphertext encryptedPrivateKey ); @Deprecated @Timed @GET( CONTROLLER + MASTER_KEY ) byte[] getMasterKey(); /** * @return */ @Deprecated @Timed @PUT( CONTROLLER + MASTER_KEY ) Response setMasterKey( @Body byte[] masterKey ); /** * @deprecated use {@link com.kryptnostic.v2.storage.api.KeyStorageApi } instead * @param objectId * @return */ @Deprecated @Timed @GET( CONTROLLER + OBJECT_KEY + PARAM.ID ) BasicResponse<byte[]> getObjectCryptoService( @Path( Names.ID_FIELD ) String objectId ); /** * @deprecated use {@link com.kryptnostic.v2.storage.api.KeyStorageApi } instead * @param objectIds * @return */ @Deprecated @Timed @POST( CONTROLLER + OBJECT_KEY ) Map<String, byte[]> getObjectCryptoServices( @Body Set<String> objectIds ); /** * @deprecated use {@link com.kryptnostic.v2.storage.api.KeyStorageApi } instead * @param objectId * @param cryptoService * @return */ @Deprecated @Timed @POST( CONTROLLER + OBJECT_KEY + PARAM.ID ) BasicResponse<String> setObjectCryptoService( @Path( Names.ID_FIELD ) String objectId, @Body ByteArrayEnvelope cryptoService ); @Deprecated @GET( CONTROLLER + NOTIFICATION_KEY ) BasicResponse<NotificationPreference> getNotificationPreference(); @Deprecated @PUT( CONTROLLER + NOTIFICATION_KEY ) BasicResponse<String> setNotificationPreference( @Body NotificationPreference preferences ); @Timed @GET( CONTROLLER + PARAM.REALM ) Iterable<UUID> listUserInRealm( @Path( Names.REALM_FIELD ) String realm ); @GET( CONTROLLER + INITIALIZED + PARAM.REALM ) Iterable<UUID> listInitializedUserInRealm( @Path( Names.REALM_FIELD ) String realm ); @Timed @GET( CONTROLLER + PARAM.REALM + PARAM.USER ) Optional<UUID> getUUIDFromEmail( @Path( Names.USER_FIELD ) String email ); }