Merge "Counterpart of https://vanadium-review.googlesource.com/16748"
diff --git a/v23/security/jni.go b/v23/security/jni.go
index 7587a18..5f4b630 100644
--- a/v23/security/jni.go
+++ b/v23/security/jni.go
@@ -473,33 +473,6 @@
return C.jobject(unsafe.Pointer(jKey))
}
-//export Java_io_v_v23_security_VPrincipalImpl_nativeBlessingsInfo
-func Java_io_v_v23_security_VPrincipalImpl_nativeBlessingsInfo(jenv *C.JNIEnv, jPrincipalImpl C.jobject, goPtr C.jlong, jBlessings C.jobject) C.jobject {
- env := jutil.Env(uintptr(unsafe.Pointer(jenv)))
- blessings, err := GoBlessings(env, jutil.Object(uintptr(unsafe.Pointer(jBlessings))))
- if err != nil {
- jutil.JThrowV(env, err)
- return nil
- }
- info := (*(*security.Principal)(jutil.NativePtr(goPtr))).BlessingsInfo(blessings)
- infomap := make(map[jutil.Object]jutil.Object)
- for name, caveats := range info {
- jName := jutil.JString(env, name)
- jCaveatArray, err := JavaCaveatArray(env, caveats)
- if err != nil {
- jutil.JThrowV(env, err)
- return nil
- }
- infomap[jName] = jCaveatArray
- }
- jInfo, err := jutil.JObjectMap(env, infomap)
- if err != nil {
- jutil.JThrowV(env, err)
- return nil
- }
- return C.jobject(unsafe.Pointer(jInfo))
-}
-
//export Java_io_v_v23_security_VPrincipalImpl_nativeBlessingStore
func Java_io_v_v23_security_VPrincipalImpl_nativeBlessingStore(jenv *C.JNIEnv, jVPrincipalImpl C.jobject, goPtr C.jlong) C.jobject {
env := jutil.Env(uintptr(unsafe.Pointer(jenv)))
@@ -1031,18 +1004,39 @@
return C.jobjectArray(unsafe.Pointer(jArr))
}
-//export Java_io_v_v23_security_VSecurity_nativeAddToRoots
-func Java_io_v_v23_security_VSecurity_nativeAddToRoots(jenv *C.JNIEnv, jVPrincipalClass C.jclass, jPrincipal C.jobject, jBlessings C.jobject) {
+//export Java_io_v_v23_security_VSecurity_nativeGetBlessingNames
+func Java_io_v_v23_security_VSecurity_nativeGetBlessingNames(jenv *C.JNIEnv, jVSecurityClass C.jclass, jPrincipal C.jobject, jBlessings C.jobject) C.jobjectArray {
env := jutil.Env(uintptr(unsafe.Pointer(jenv)))
+ principal, err := GoPrincipal(env, jutil.Object(uintptr(unsafe.Pointer(jPrincipal))))
+ if err != nil {
+ jutil.JThrowV(env, err)
+ }
+ blessings, err := GoBlessings(env, jutil.Object(uintptr(unsafe.Pointer(jBlessings))))
+ if err != nil {
+ jutil.JThrowV(env, err)
+ return nil
+ }
+ blessingStrs := security.BlessingNames(principal, blessings)
+ jArr, err := jutil.JStringArray(env, blessingStrs)
+ if err != nil {
+ jutil.JThrowV(env, err)
+ return nil
+ }
+ return C.jobjectArray(unsafe.Pointer(jArr))
+}
+
+//export Java_io_v_v23_security_VSecurity_nativeAddToRoots
+func Java_io_v_v23_security_VSecurity_nativeAddToRoots(jenv *C.JNIEnv, jVSecurityClass C.jclass, jPrincipal C.jobject, jBlessings C.jobject) {
+ env := jutil.Env(uintptr(unsafe.Pointer(jenv)))
+ principal, err := GoPrincipal(env, jutil.Object(uintptr(unsafe.Pointer(jPrincipal))))
+ if err != nil {
+ jutil.JThrowV(env, err)
+ }
blessings, err := GoBlessings(env, jutil.Object(uintptr(unsafe.Pointer(jBlessings))))
if err != nil {
jutil.JThrowV(env, err)
return
}
- principal, err := GoPrincipal(env, jutil.Object(uintptr(unsafe.Pointer(jPrincipal))))
- if err != nil {
- jutil.JThrowV(env, err)
- }
if err := security.AddToRoots(principal, blessings); err != nil {
jutil.JThrowV(env, err)
}
diff --git a/v23/security/principal.go b/v23/security/principal.go
index ec99fb5..af5e0bd 100644
--- a/v23/security/principal.go
+++ b/v23/security/principal.go
@@ -137,32 +137,6 @@
return key
}
-func (p *principal) BlessingsInfo(blessings security.Blessings) map[string][]security.Caveat {
- env, freeFunc := jutil.GetEnv()
- defer freeFunc()
- jBlessings, err := JavaBlessings(env, blessings)
- if err != nil {
- log.Printf("Couldn't convert Go blessings to Java: %v", err)
- return nil
- }
- infomap, err := jutil.CallMapMethod(env, p.jPrincipal, "blessingsInfo", []jutil.Sign{blessingsSign}, jBlessings)
- if err != nil {
- log.Printf("Couldn't get Java blessings info: %v", err)
- return nil
- }
- ret := make(map[string][]security.Caveat)
- for jName, jCaveats := range infomap {
- name := jutil.GoString(env, jName)
- caveats, err := GoCaveats(env, jCaveats)
- if err != nil {
- log.Printf("Couldn't convert Java Caveats to Go: %v", err)
- return nil
- }
- ret[name] = caveats
- }
- return ret
-}
-
func (p *principal) BlessingStore() security.BlessingStore {
env, freeFunc := jutil.GetEnv()
defer freeFunc()