Signal-Android/libsignal/service/src/main/java/org/whispersystems/signalservice/api/profiles/SignalServiceProfile.java

124 lines
2.6 KiB
Java

package org.whispersystems.signalservice.api.profiles;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import org.signal.zkgroup.InvalidInputException;
import org.signal.zkgroup.profiles.ProfileKeyCredentialResponse;
import org.whispersystems.libsignal.logging.Log;
import org.whispersystems.signalservice.FeatureFlags;
import org.whispersystems.signalservice.internal.util.JsonUtil;
import java.util.UUID;
public class SignalServiceProfile {
public enum RequestType {
PROFILE,
PROFILE_AND_CREDENTIAL
}
private static final String TAG = SignalServiceProfile.class.getSimpleName();
@JsonProperty
private String identityKey;
@JsonProperty
private String name;
@JsonProperty
private String avatar;
@JsonProperty
private String unidentifiedAccess;
@JsonProperty
private boolean unrestrictedUnidentifiedAccess;
@JsonProperty
private Capabilities capabilities;
@JsonProperty
private String username;
@JsonProperty
@JsonSerialize(using = JsonUtil.UuidSerializer.class)
@JsonDeserialize(using = JsonUtil.UuidDeserializer.class)
private UUID uuid;
@JsonProperty
private byte[] credential;
@JsonIgnore
private RequestType requestType;
public SignalServiceProfile() {}
public String getIdentityKey() {
return identityKey;
}
public String getName() {
return name;
}
public String getAvatar() {
return avatar;
}
public String getUnidentifiedAccess() {
return unidentifiedAccess;
}
public boolean isUnrestrictedUnidentifiedAccess() {
return unrestrictedUnidentifiedAccess;
}
public Capabilities getCapabilities() {
return capabilities;
}
public String getUsername() {
return username;
}
public UUID getUuid() {
return uuid;
}
public RequestType getRequestType() {
return requestType;
}
public void setRequestType(RequestType requestType) {
this.requestType = requestType;
}
public static class Capabilities {
@JsonProperty
private boolean uuid;
public Capabilities() {}
public boolean isUuid() {
return uuid;
}
}
public ProfileKeyCredentialResponse getProfileKeyCredentialResponse() {
if (!FeatureFlags.VERSIONED_PROFILES) return null;
if (credential == null) return null;
try {
return new ProfileKeyCredentialResponse(credential);
} catch (InvalidInputException e) {
Log.w(TAG, e);
return null;
}
}
}