SELECT proc
FROM
2 => {
-- CheckSimpleCredentials
credentials: AuthenticationP14V2.Credentials;
verifier: AuthenticationP14V2.SeqWords;
ok: BOOLEAN;
credentials.type ← VAL[CrRPC.GetCARDINAL[h]];
{
length1: CARDINAL ~ CrRPC.GetCARDINAL[h];
credentials.value ← NEW[AuthenticationP14V2.SeqWordsObject[length1]];
FOR i0:
CARDINAL
IN [0..length1)
DO
credentials.value.body[i0] ← CrRPC.GetCARDINAL[h];
ENDLOOP;
};
{
length1: CARDINAL ~ CrRPC.GetCARDINAL[h];
verifier ← NEW[AuthenticationP14V2.SeqWordsObject[length1]];
FOR i0:
CARDINAL
IN [0..length1)
DO
verifier.body[i0] ← CrRPC.GetCARDINAL[h];
ENDLOOP;
};
[ok] ← CheckSimpleCredentials[h, credentials, verifier];
beginReturn[h];
CrRPC.PutBOOL[h, ok];
};
4 => {
-- ChangeStrongKey
credentials: AuthenticationP14V2.Credentials;
verifier: AuthenticationP14V2.SeqWords;
newKey: AuthenticationP14V2.Block;
credentials.type ← VAL[CrRPC.GetCARDINAL[h]];
{
length1: CARDINAL ~ CrRPC.GetCARDINAL[h];
credentials.value ← NEW[AuthenticationP14V2.SeqWordsObject[length1]];
FOR i0:
CARDINAL
IN [0..length1)
DO
credentials.value.body[i0] ← CrRPC.GetCARDINAL[h];
ENDLOOP;
};
{
length1: CARDINAL ~ CrRPC.GetCARDINAL[h];
verifier ← NEW[AuthenticationP14V2.SeqWordsObject[length1]];
FOR i0:
CARDINAL
IN [0..length1)
DO
verifier.body[i0] ← CrRPC.GetCARDINAL[h];
ENDLOOP;
};
FOR i0:
CARDINAL
IN [0..4)
DO
newKey[i0] ← CrRPC.GetCARDINAL[h];
ENDLOOP;
[] ← ChangeStrongKey[h, credentials, verifier, newKey];
beginReturn[h];
};
5 => {
-- DeleteStrongKey
credentials: AuthenticationP14V2.Credentials;
verifier: AuthenticationP14V2.SeqWords;
name: CHNameP2V0.ThreePartName;
credentials.type ← VAL[CrRPC.GetCARDINAL[h]];
{
length1: CARDINAL ~ CrRPC.GetCARDINAL[h];
credentials.value ← NEW[AuthenticationP14V2.SeqWordsObject[length1]];
FOR i0:
CARDINAL
IN [0..length1)
DO
credentials.value.body[i0] ← CrRPC.GetCARDINAL[h];
ENDLOOP;
};
{
length1: CARDINAL ~ CrRPC.GetCARDINAL[h];
verifier ← NEW[AuthenticationP14V2.SeqWordsObject[length1]];
FOR i0:
CARDINAL
IN [0..length1)
DO
verifier.body[i0] ← CrRPC.GetCARDINAL[h];
ENDLOOP;
};
name.organization ← CrRPC.GetROPE[h];
name.domain ← CrRPC.GetROPE[h];
name.object ← CrRPC.GetROPE[h];
[] ← DeleteStrongKey[h, credentials, verifier, name];
beginReturn[h];
};
3 => {
-- CreateStrongKey
credentials: AuthenticationP14V2.Credentials;
verifier: AuthenticationP14V2.SeqWords;
name: CHNameP2V0.ThreePartName;
key: AuthenticationP14V2.Block;
credentials.type ← VAL[CrRPC.GetCARDINAL[h]];
{
length1: CARDINAL ~ CrRPC.GetCARDINAL[h];
credentials.value ← NEW[AuthenticationP14V2.SeqWordsObject[length1]];
FOR i0:
CARDINAL
IN [0..length1)
DO
credentials.value.body[i0] ← CrRPC.GetCARDINAL[h];
ENDLOOP;
};
{
length1: CARDINAL ~ CrRPC.GetCARDINAL[h];
verifier ← NEW[AuthenticationP14V2.SeqWordsObject[length1]];
FOR i0:
CARDINAL
IN [0..length1)
DO
verifier.body[i0] ← CrRPC.GetCARDINAL[h];
ENDLOOP;
};
name.organization ← CrRPC.GetROPE[h];
name.domain ← CrRPC.GetROPE[h];
name.object ← CrRPC.GetROPE[h];
FOR i0:
CARDINAL
IN [0..4)
DO
key[i0] ← CrRPC.GetCARDINAL[h];
ENDLOOP;
[] ← CreateStrongKey[h, credentials, verifier, name, key];
beginReturn[h];
};
7 => {
-- ChangeSimpleKey
credentials: AuthenticationP14V2.Credentials;
verifier: AuthenticationP14V2.SeqWords;
newKey: CARDINAL;
credentials.type ← VAL[CrRPC.GetCARDINAL[h]];
{
length1: CARDINAL ~ CrRPC.GetCARDINAL[h];
credentials.value ← NEW[AuthenticationP14V2.SeqWordsObject[length1]];
FOR i0:
CARDINAL
IN [0..length1)
DO
credentials.value.body[i0] ← CrRPC.GetCARDINAL[h];
ENDLOOP;
};
{
length1: CARDINAL ~ CrRPC.GetCARDINAL[h];
verifier ← NEW[AuthenticationP14V2.SeqWordsObject[length1]];
FOR i0:
CARDINAL
IN [0..length1)
DO
verifier.body[i0] ← CrRPC.GetCARDINAL[h];
ENDLOOP;
};
newKey ← CrRPC.GetCARDINAL[h];
[] ← ChangeSimpleKey[h, credentials, verifier, newKey];
beginReturn[h];
};
8 => {
-- DeleteSimpleKey
credentials: AuthenticationP14V2.Credentials;
verifier: AuthenticationP14V2.SeqWords;
name: CHNameP2V0.ThreePartName;
credentials.type ← VAL[CrRPC.GetCARDINAL[h]];
{
length1: CARDINAL ~ CrRPC.GetCARDINAL[h];
credentials.value ← NEW[AuthenticationP14V2.SeqWordsObject[length1]];
FOR i0:
CARDINAL
IN [0..length1)
DO
credentials.value.body[i0] ← CrRPC.GetCARDINAL[h];
ENDLOOP;
};
{
length1: CARDINAL ~ CrRPC.GetCARDINAL[h];
verifier ← NEW[AuthenticationP14V2.SeqWordsObject[length1]];
FOR i0:
CARDINAL
IN [0..length1)
DO
verifier.body[i0] ← CrRPC.GetCARDINAL[h];
ENDLOOP;
};
name.organization ← CrRPC.GetROPE[h];
name.domain ← CrRPC.GetROPE[h];
name.object ← CrRPC.GetROPE[h];
[] ← DeleteSimpleKey[h, credentials, verifier, name];
beginReturn[h];
};
6 => {
-- CreateSimpleKey
credentials: AuthenticationP14V2.Credentials;
verifier: AuthenticationP14V2.SeqWords;
name: CHNameP2V0.ThreePartName;
key: CARDINAL;
credentials.type ← VAL[CrRPC.GetCARDINAL[h]];
{
length1: CARDINAL ~ CrRPC.GetCARDINAL[h];
credentials.value ← NEW[AuthenticationP14V2.SeqWordsObject[length1]];
FOR i0:
CARDINAL
IN [0..length1)
DO
credentials.value.body[i0] ← CrRPC.GetCARDINAL[h];
ENDLOOP;
};
{
length1: CARDINAL ~ CrRPC.GetCARDINAL[h];
verifier ← NEW[AuthenticationP14V2.SeqWordsObject[length1]];
FOR i0:
CARDINAL
IN [0..length1)
DO
verifier.body[i0] ← CrRPC.GetCARDINAL[h];
ENDLOOP;
};
name.organization ← CrRPC.GetROPE[h];
name.domain ← CrRPC.GetROPE[h];
name.object ← CrRPC.GetROPE[h];
key ← CrRPC.GetCARDINAL[h];
[] ← CreateSimpleKey[h, credentials, verifier, name, key];
beginReturn[h];
};
1 => {
-- GetStrongCredentials
initiator: CHNameP2V0.ThreePartName;
recipient: CHNameP2V0.ThreePartName;
nonce: CARD;
encryptedCredentialsPackage: AuthenticationP14V2.SeqWords;
initiator.organization ← CrRPC.GetROPE[h];
initiator.domain ← CrRPC.GetROPE[h];
initiator.object ← CrRPC.GetROPE[h];
recipient.organization ← CrRPC.GetROPE[h];
recipient.domain ← CrRPC.GetROPE[h];
recipient.object ← CrRPC.GetROPE[h];
nonce ← CrRPC.GetCARD[h];
[encryptedCredentialsPackage] ← GetStrongCredentials[h, initiator, recipient, nonce];
beginReturn[h];
CrRPC.PutCARDINAL[h, encryptedCredentialsPackage.length];
FOR i0:
CARDINAL
IN [0..encryptedCredentialsPackage.length)
DO
CrRPC.PutCARDINAL[h, encryptedCredentialsPackage.body[i0]];
ENDLOOP;
};
ENDCASE => {
beginReject[h, CrRPC.noSuchProcedure];
};