blob: e62bc7113327dbb5b3c9ab47420df1a0f7a0b76f [file] [log] [blame]
// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package io.v.v23.security;
import java.security.interfaces.ECPublicKey;
import java.util.List;
import java.util.Map;
import io.v.v23.verror.VException;
class BlessingStoreImpl implements BlessingStore {
private final long nativePtr;
private native Blessings nativeSet(
long nativePtr, Blessings blessings, BlessingPattern forPeers) throws VException;
private native Blessings nativeForPeer(long nativePtr, String[] peerBlessings)
throws VException;
private native void nativeSetDefaultBlessings(long nativePtr, Blessings blessings)
throws VException;
private native Blessings nativeDefaultBlessings(long nativePtr) throws VException;
private native ECPublicKey nativePublicKey(long nativePtr) throws VException;
private native Map<BlessingPattern, Blessings> nativePeerBlessings(long nativePtr)
throws VException;
private native void nativeCacheDischarge(long nativePtr, Discharge discharge, Caveat caveat,
DischargeImpetus impetus);
private native void nativeClearDischarges(long nativePtr, Object[] discharges);
private native Discharge nativeDischarge(long nativePtr, Caveat caveat,
DischargeImpetus impetus);
private native String nativeDebugString(long nativePtr);
private native String nativeToString(long nativePtr);
private native void nativeFinalize(long nativePtr);
private BlessingStoreImpl(long nativePtr) {
this.nativePtr = nativePtr;
}
@Override
public Blessings set(Blessings blessings, BlessingPattern forPeers) throws VException {
return nativeSet(this.nativePtr, blessings, forPeers);
}
@Override
public Blessings forPeer(String... peerBlessings) {
try {
return nativeForPeer(this.nativePtr, peerBlessings);
} catch (VException e) {
throw new RuntimeException("Couldn't get blessings for peers", e);
}
}
@Override
public void setDefaultBlessings(Blessings blessings) throws VException {
nativeSetDefaultBlessings(this.nativePtr, blessings);
}
@Override
public Blessings defaultBlessings() {
try {
return nativeDefaultBlessings(this.nativePtr);
} catch (VException e) {
throw new RuntimeException("Couldn't get default blessings", e);
}
}
@Override
public ECPublicKey publicKey() {
try {
return nativePublicKey(this.nativePtr);
} catch (VException e) {
throw new RuntimeException("Couldn't get public key", e);
}
}
@Override
public Map<BlessingPattern, Blessings> peerBlessings() {
try {
return nativePeerBlessings(this.nativePtr);
} catch (VException e) {
throw new RuntimeException("Couldn't get peer blessings", e);
}
}
@Override
public void cacheDischarge(Discharge discharge, Caveat caveat, DischargeImpetus impetus) {
nativeCacheDischarge(nativePtr, discharge, caveat, impetus);
}
@Override
public void clearDischarges(List<Discharge> discharges) {
nativeClearDischarges(nativePtr, discharges.toArray());
}
@Override
public Discharge discharge(Caveat caveat, DischargeImpetus impetus) {
return nativeDischarge(nativePtr, caveat, impetus);
}
@Override
public String debugString() {
return nativeDebugString(this.nativePtr);
}
@Override
public String toString() {
return nativeToString(this.nativePtr);
}
@Override
protected void finalize() {
nativeFinalize(this.nativePtr);
}
}