Search in sources :

Example 6 with SignRequest

use of co.krypt.krypton.protocol.SignRequest in project krypton-android by kryptco.

the class ClientAuthParsingTest method clientAuthParsingRSASHA1_works.

@Test
public void clientAuthParsingRSASHA1_works() throws Exception {
    SignRequest signRequest = new SignRequest();
    signRequest.data = Base64.decode("AAAAIFrZQlwF8k3UCrkwZ2E0U+qGx57wehv5ABkHJStoOCc3MgAAAANnaXQAAAAOc3NoLWNvbm5lY3Rpb24AAAAJcHVibGlja2V5AQAAAAdzc2gtcnNh");
    Assert.assertTrue(signRequest.algo().equals("ssh-rsa"));
    Assert.assertTrue(signRequest.user().equals("git"));
    Assert.assertTrue(Arrays.equals(signRequest.sessionID(), Base64.decode("WtlCXAXyTdQKuTBnYTRT6obHnvB6G/kAGQclK2g4Jzc=")));
}
Also used : SignRequest(co.krypt.krypton.protocol.SignRequest) Test(org.junit.Test)

Example 7 with SignRequest

use of co.krypt.krypton.protocol.SignRequest in project krypton-android by kryptco.

the class ClientAuthParsingTest method clientAuthParsingRSASHA256_works.

@Test
public void clientAuthParsingRSASHA256_works() throws Exception {
    SignRequest signRequest = new SignRequest();
    signRequest.data = Base64.decode("AAAAIFFE46OxITOv4tIsO9u7Jq/W6vnf4diwbdSEoeGMDB9yMgAAAAh0ZXN0dXNlcgAAAA5zc2gtY29ubmVjdGlvbgAAAAlwdWJsaWNrZXkBAAAADHJzYS1zaGEyLTI1Ng==");
    Assert.assertTrue(signRequest.algo().equals("rsa-sha2-256"));
    Assert.assertTrue(signRequest.user().equals("testuser"));
    Assert.assertTrue(Arrays.equals(signRequest.sessionID(), Base64.decode("UUTjo7EhM6/i0iw727smr9bq+d/h2LBt1ISh4YwMH3I=")));
}
Also used : SignRequest(co.krypt.krypton.protocol.SignRequest) Test(org.junit.Test)

Example 8 with SignRequest

use of co.krypt.krypton.protocol.SignRequest in project krypton-android by kryptco.

the class ClientAuthParsingTest method clientAuthParsingRSASHA512_works.

@Test
public void clientAuthParsingRSASHA512_works() throws Exception {
    SignRequest signRequest = new SignRequest();
    signRequest.data = Base64.decode("AAAAIJplnt2SRhPtYQqFfZcJwsSYrIIMaAjOxhTlrM/zNV6WMgAAAARyb290AAAADnNzaC1jb25uZWN0aW9uAAAACXB1YmxpY2tleQEAAAAMcnNhLXNoYTItNTEy");
    Assert.assertTrue(signRequest.algo().equals("rsa-sha2-512"));
    Assert.assertTrue(signRequest.user().equals("root"));
    Assert.assertTrue(Arrays.equals(signRequest.sessionID(), Base64.decode("mmWe3ZJGE+1hCoV9lwnCxJisggxoCM7GFOWsz/M1XpY=")));
}
Also used : SignRequest(co.krypt.krypton.protocol.SignRequest) Test(org.junit.Test)

Example 9 with SignRequest

use of co.krypt.krypton.protocol.SignRequest in project krypton-android by kryptco.

the class JSONUnitTest method nestedRequestDeserialization_works.

@Test
public void nestedRequestDeserialization_works() throws Exception {
    String json = "{\"request_id\":\"132\", \"unix_seconds\":0, \"sign_request\":{\"public_key_fingerprint\":\"aGkK\", \"data\": \"aGkK\"}, \"v\": \"1.0.0\"}";
    Request request = JSON.fromJson(json, Request.class);
    if (!(request.body instanceof SignRequest)) {
        throw new JsonParseException("expected sign request");
    }
}
Also used : GitSignRequest(co.krypt.krypton.protocol.GitSignRequest) SignRequest(co.krypt.krypton.protocol.SignRequest) Request(co.krypt.krypton.protocol.Request) GitSignRequest(co.krypt.krypton.protocol.GitSignRequest) SignRequest(co.krypt.krypton.protocol.SignRequest) JsonParseException(com.google.gson.JsonParseException) Test(org.junit.Test)

Example 10 with SignRequest

use of co.krypt.krypton.protocol.SignRequest in project krypton-android by kryptco.

the class ApprovalDialog method showApprovalDialog.

public static void showApprovalDialog(final Activity activity, final String requestID) {
    Pair<Pairing, Request> pendingRequestAndPairing = Policy.getPendingRequestAndPairing(requestID);
    if (pendingRequestAndPairing == null) {
        Log.e(TAG, "user clicked notification for unknown request");
        return;
    }
    Pairing pairing = pendingRequestAndPairing.first;
    Request request = pendingRequestAndPairing.second;
    AlertDialog.Builder builder = new AlertDialog.Builder(activity);
    builder.setIcon(R.mipmap.ic_launcher);
    // setPositiveButton: right button
    // setNeutralButton: left button
    // setNegativeButton: middle button
    long temporaryApprovalSeconds = Policy.temporaryApprovalSeconds(activity, request);
    boolean temporaryApprovalEnabled = temporaryApprovalSeconds > 0;
    String temporaryApprovalDuration = Policy.temporaryApprovalDuration(activity, request);
    request.body.visit(new RequestBody.Visitor<Void, RuntimeException>() {

        @Override
        public Void visit(MeRequest meRequest) throws RuntimeException {
            return null;
        }

        @Override
        public Void visit(SignRequest signRequest) throws RuntimeException {
            builder.setPositiveButton("Once", (dialog, id) -> Policy.onAction(activity.getApplicationContext(), requestID, Policy.APPROVE_ONCE));
            if (temporaryApprovalEnabled) {
                builder.setNeutralButton("All for " + temporaryApprovalDuration, (dialog, id) -> Policy.onAction(activity.getApplicationContext(), requestID, Policy.APPROVE_ALL_TEMPORARILY));
                if (signRequest.hostNameVerified) {
                    builder.setNegativeButton("This host for " + temporaryApprovalDuration, (dialog, id) -> Policy.onAction(activity.getApplicationContext(), requestID, Policy.APPROVE_THIS_TEMPORARILY));
                }
            }
            return null;
        }

        @Override
        public Void visit(GitSignRequest gitSignRequest) throws RuntimeException {
            builder.setPositiveButton("Once", (dialog, id) -> Policy.onAction(activity.getApplicationContext(), requestID, Policy.APPROVE_ONCE));
            if (temporaryApprovalEnabled) {
                builder.setNeutralButton("All for " + temporaryApprovalDuration, (dialog, id) -> Policy.onAction(activity.getApplicationContext(), requestID, Policy.APPROVE_ALL_TEMPORARILY));
            }
            return null;
        }

        @Override
        public Void visit(UnpairRequest unpairRequest) throws RuntimeException {
            return null;
        }

        @Override
        public Void visit(HostsRequest hostsRequest) throws RuntimeException {
            builder.setPositiveButton("Allow", (dialog, id) -> Policy.onAction(activity.getApplicationContext(), requestID, Policy.APPROVE_ONCE));
            if (temporaryApprovalEnabled) {
                builder.setNeutralButton("All for " + temporaryApprovalDuration, (dialog, id) -> Policy.onAction(activity.getApplicationContext(), requestID, Policy.APPROVE_ALL_TEMPORARILY));
            }
            return null;
        }

        @Override
        public Void visit(ReadTeamRequest readTeamRequest) throws RuntimeException {
            builder.setPositiveButton("Allow for " + temporaryApprovalDuration, (dialog, id) -> Policy.onAction(activity.getApplicationContext(), requestID, Policy.APPROVE_ALL_TEMPORARILY));
            return null;
        }

        @Override
        public Void visit(LogDecryptionRequest logDecryptionRequest) throws RuntimeException {
            builder.setPositiveButton("Allow for " + temporaryApprovalDuration, (dialog, id) -> Policy.onAction(activity.getApplicationContext(), requestID, Policy.APPROVE_ALL_TEMPORARILY));
            return null;
        }

        @Override
        public Void visit(TeamOperationRequest teamOperationRequest) throws RuntimeException {
            builder.setPositiveButton("Allow", (dialog, id) -> Policy.onAction(activity.getApplicationContext(), requestID, Policy.APPROVE_ONCE));
            return null;
        }
    });
    builder.setOnDismissListener(dialogInterface -> {
        Policy.onAction(activity.getApplicationContext(), requestID, Policy.REJECT);
    });
    View requestView = activity.getLayoutInflater().inflate(R.layout.request, null);
    TextView workstationNameText = (TextView) requestView.findViewById(R.id.workstationName);
    workstationNameText.setText(pairing.workstationName);
    ConstraintLayout content = (ConstraintLayout) requestView.findViewById(R.id.content);
    request.fillView(content);
    builder.setView(requestView);
    builder.create().show();
}
Also used : AlertDialog(android.support.v7.app.AlertDialog) ReadTeamRequest(co.krypt.krypton.protocol.ReadTeamRequest) UnpairRequest(co.krypt.krypton.protocol.UnpairRequest) HostsRequest(co.krypt.krypton.protocol.HostsRequest) SignRequest(co.krypt.krypton.protocol.SignRequest) Pairing(co.krypt.krypton.pairing.Pairing) MeRequest(co.krypt.krypton.protocol.MeRequest) Request(co.krypt.krypton.protocol.Request) RequestBody(co.krypt.krypton.protocol.RequestBody) AlertDialog(android.support.v7.app.AlertDialog) TextView(android.widget.TextView) Pair(android.support.v4.util.Pair) GitSignRequest(co.krypt.krypton.protocol.GitSignRequest) View(android.view.View) LogDecryptionRequest(co.krypt.krypton.protocol.LogDecryptionRequest) ConstraintLayout(android.support.constraint.ConstraintLayout) Activity(android.app.Activity) R(co.krypt.krypton.R) Policy(co.krypt.krypton.policy.Policy) TeamOperationRequest(co.krypt.krypton.protocol.TeamOperationRequest) Log(android.util.Log) MeRequest(co.krypt.krypton.protocol.MeRequest) TeamOperationRequest(co.krypt.krypton.protocol.TeamOperationRequest) ConstraintLayout(android.support.constraint.ConstraintLayout) GitSignRequest(co.krypt.krypton.protocol.GitSignRequest) TextView(android.widget.TextView) Pairing(co.krypt.krypton.pairing.Pairing) RequestBody(co.krypt.krypton.protocol.RequestBody) SignRequest(co.krypt.krypton.protocol.SignRequest) GitSignRequest(co.krypt.krypton.protocol.GitSignRequest) ReadTeamRequest(co.krypt.krypton.protocol.ReadTeamRequest) UnpairRequest(co.krypt.krypton.protocol.UnpairRequest) HostsRequest(co.krypt.krypton.protocol.HostsRequest) SignRequest(co.krypt.krypton.protocol.SignRequest) MeRequest(co.krypt.krypton.protocol.MeRequest) Request(co.krypt.krypton.protocol.Request) GitSignRequest(co.krypt.krypton.protocol.GitSignRequest) LogDecryptionRequest(co.krypt.krypton.protocol.LogDecryptionRequest) TeamOperationRequest(co.krypt.krypton.protocol.TeamOperationRequest) HostsRequest(co.krypt.krypton.protocol.HostsRequest) UnpairRequest(co.krypt.krypton.protocol.UnpairRequest) TextView(android.widget.TextView) View(android.view.View) ReadTeamRequest(co.krypt.krypton.protocol.ReadTeamRequest) LogDecryptionRequest(co.krypt.krypton.protocol.LogDecryptionRequest)

Aggregations

SignRequest (co.krypt.krypton.protocol.SignRequest)10 GitSignRequest (co.krypt.krypton.protocol.GitSignRequest)7 HostsRequest (co.krypt.krypton.protocol.HostsRequest)6 LogDecryptionRequest (co.krypt.krypton.protocol.LogDecryptionRequest)6 MeRequest (co.krypt.krypton.protocol.MeRequest)6 ReadTeamRequest (co.krypt.krypton.protocol.ReadTeamRequest)6 RequestBody (co.krypt.krypton.protocol.RequestBody)6 TeamOperationRequest (co.krypt.krypton.protocol.TeamOperationRequest)6 UnpairRequest (co.krypt.krypton.protocol.UnpairRequest)6 Intent (android.content.Intent)4 Test (org.junit.Test)4 PendingIntent (android.app.PendingIntent)3 NotificationCompat (android.support.v4.app.NotificationCompat)3 NotificationManagerCompat (android.support.v4.app.NotificationManagerCompat)3 TaskStackBuilder (android.support.v4.app.TaskStackBuilder)3 RemoteViews (android.widget.RemoteViews)3 Log (android.util.Log)2 Analytics (co.krypt.krypton.analytics.Analytics)2 Unrecoverable (co.krypt.krypton.exception.Unrecoverable)2 CommitInfo (co.krypt.krypton.git.CommitInfo)2