• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.10/Security-57031.1.35/Security/libsecurity_cryptkit/lib/

Lines Matching defs:finst

153 static feeReturn initFromRS(feedInst *finst)
156 unsigned rSize = finst->initialRSSize / 2;
159 if((finst->initialRS == NULL) ||
160 (finst->cp == NULL) ||
161 (finst->cluePlus == NULL) ||
162 (finst->clueMinus == NULL) ||
163 (finst->initialRSSize == 0)) {
169 finst->r = giant_with_data(finst->initialRS, rSize);
170 s = giant_with_data(finst->initialRS+rSize, rSize);
173 if(isZero(finst->r)) {
175 finst->initialRSSize,
176 (finst->rsCtext == NULL) ? "TRUE" : "FALSE");
180 finst->initialRSSize,
181 (finst->rsCtext == NULL) ? "TRUE" : "FALSE");
187 lesserX1OrderJustify(finst->r, finst->cp);
188 lesserX1OrderJustify(s, finst->cp);
194 finst->sPlus = newGiant(finst->cp->maxDigits);
195 finst->sMinus = newGiant(finst->cp->maxDigits);
196 gtog(finst->cp->x1Plus, finst->sPlus);
197 elliptic_simple(finst->sPlus, s, finst->cp);
198 gtog(finst->cp->x1Minus, finst->sMinus);
199 elliptic_simple(finst->sMinus, s, finst->cp);
206 printf("cluePlus : "); printGiant(finst->cluePlus);
207 printf("clueMinus: "); printGiant(finst->clueMinus);
210 elliptic_simple(finst->cluePlus, finst->r, finst->cp);
211 elliptic_simple(finst->clueMinus, finst->r, finst->cp);
214 printf("r : "); printGiant(finst->r);
216 printf("sPlus : "); printGiant(finst->sPlus);
217 printf("sMinus : "); printGiant(finst->sMinus);
218 printf("cluePlus : "); printGiant(finst->cluePlus);
219 printf("clueMinus: "); printGiant(finst->clueMinus);
236 feedInst *finst;
248 finst = (feedInst*) fmalloc(sizeof(feedInst));
249 bzero(finst, sizeof(feedInst));
250 finst->forEncrypt = forEncrypt;
251 finst->cp = curveParamsCopy(feePubKeyCurveParams(theirPubKey));
252 finst->rsBlockCount = 0;
253 finst->xp = newGiant(finst->cp->maxDigits);
254 finst->xm = newGiant(finst->cp->maxDigits);
255 finst->tmp1 = newGiant(finst->cp->maxDigits);
257 finst->tmp2 = newGiant(finst->cp->maxDigits);
264 finst->cluePlus = newGiant(finst->cp->maxDigits);
265 finst->clueMinus = newGiant(finst->cp->maxDigits);
272 gtog(k->x, finst->cluePlus); // cluePlus = theirPub+
273 elliptic_simple(finst->cluePlus, privGiant, finst->cp);
275 gtog(k->x, finst->clueMinus); // theirPub-
276 elliptic_simple(finst->clueMinus, privGiant, finst->cp);
281 if(finst->cp->primeType == FPT_General) {
282 unsigned blen = bitlen(finst->cp->basePrime);
284 finst->plainBlockSize = blen / 8;
289 finst->plainBlockSize--;
293 finst->plainBlockSize = finst->cp->q / 8;
294 if(((finst->cp->q & 0x7) == 0) && (finst->cp->k > 0)) {
299 finst->plainBlockSize--;
302 finst->cipherBlockSize = finst->cp->minBytes + 1;
309 finst->initialRSSize = finst->plainBlockSize * 2;
310 if(finst->initialRSSize > RS_MIN_SIZE) {
317 minPlainBlocks = (RS_MIN_SIZE + finst->plainBlockSize - 1) /
318 finst->plainBlockSize;
324 maxSize = minPlainBlocks * finst->plainBlockSize - 2;
329 if(finst->initialRSSize > maxSize) {
330 finst->initialRSSize = maxSize;
341 finst->feedExp = feeFEEDExpNewWithPubKey(theirPubKey,
344 if(finst->feedExp == NULL) {
351 finst->initialRS = (unsigned char*) fmalloc(finst->initialRSSize);
353 randFcn(randRef, finst->initialRS, finst->initialRSSize);
357 feeRandBytes(frand, finst->initialRS, finst->initialRSSize);
360 if(initFromRS(finst)) {
368 finst->feedExp = feeFEEDExpNewWithPubKey(myPrivKey,
371 if(finst->feedExp == NULL) {
383 expPlainSize = feeFEEDExpPlainBlockSize(finst->feedExp);
384 expCipherSize = feeFEEDExpCipherBlockSize(finst->feedExp);
385 expBlocks = (finst->initialRSSize + expPlainSize - 1) /
387 if((finst->initialRSSize % expPlainSize) == 0) {
394 finst->rsCtextSize = expBlocks * expCipherSize;
399 finst->rsSizeCipherBlocks = (finst->rsCtextSize +
400 finst->cipherBlockSize - 1) / finst->cipherBlockSize;
402 finst->rsCtext = (unsigned char*) fmalloc(finst->rsSizeCipherBlocks *
403 finst->cipherBlockSize);
411 unsigned fexpBlockSize = feeFEEDExpCipherBlockSize(finst->feedExp);
417 if((finst->cipherBlockSize + finst->cp->minBytes) !=
423 fexpBlockSize = feeFEEDExpPlainBlockSize(finst->feedExp);
424 if(fexpBlockSize != finst->plainBlockSize) {
432 return finst;
435 feeFEEDFree(finst);
441 feedInst *finst = (feedInst*) feed;
443 if(finst->cp) {
444 freeCurveParams(finst->cp);
446 if(finst->initialRS) {
447 ffree(finst->initialRS);
449 if(finst->cluePlus) {
450 freeGiant(finst->cluePlus);
452 if(finst->clueMinus) {
453 freeGiant(finst->clueMinus);
455 if(finst->sPlus) {
456 freeGiant(finst->sPlus);
458 if(finst->sMinus) {
459 freeGiant(finst->sMinus);
461 if(finst->r) {
462 freeGiant(finst->r);
464 if(finst->feedExp) {
465 feeFEEDExpFree(finst->feedExp);
467 if(finst->rsCtext) {
468 ffree(finst->rsCtext);
470 if(finst->xp) {
471 freeGiant(finst->xp);
473 if(finst->xm) {
474 freeGiant(finst->xm);
476 if(finst->tmp1) {
477 freeGiant(finst->tmp1);
479 if(finst->tmp2) {
480 freeGiant(finst->tmp2);
482 ffree(finst);
487 feedInst *finst = (feedInst *) feed;
489 return finst->plainBlockSize;
494 feedInst *finst = (feedInst *) feed;
496 return finst->cipherBlockSize;
507 feedInst *finst = (feedInst *) feed;
510 if(finst->rsBlockCount == 0) {
512 blocks += finst->rsSizeCipherBlocks;
520 finst->forEncrypt ? "encrypt" : "decrypt",
522 blocks * finst->cipherBlockSize));
523 return blocks * finst->cipherBlockSize;
535 feedInst *finst = (feedInst *) feed;
538 unsigned blocks = (plainTextSize + finst->plainBlockSize - 1) /
539 finst->plainBlockSize;
541 if(finst->forEncrypt) {
543 if(finst->rsBlockCount == 0) {
545 blocks += finst->rsSizeCipherBlocks;
550 if((plainTextSize % finst->plainBlockSize) == 0) {
562 if(finst->rsBlockCount > finst->rsSizeCipherBlocks) {
564 finst->rsBlockCount, finst->rsSizeCipherBlocks);
567 blocks += (finst->rsSizeCipherBlocks - finst->rsBlockCount);
570 finst->forEncrypt ? "encrypt" : "decrypt",
572 plainTextSize, blocks * finst->cipherBlockSize));
573 return blocks * finst->cipherBlockSize;
585 feedInst *finst = (feedInst *) feed;
588 unsigned cipherBlocks = (cipherTextSize + finst->cipherBlockSize - 1) /
589 finst->cipherBlockSize;
592 unsigned rsBlocksToGo = finst->rsSizeCipherBlocks - finst->rsBlockCount;
593 if(finst->forEncrypt) {
625 finst->forEncrypt ? "encrypt" : "decrypt",
627 cipherTextSize, cipherBlocks * finst->plainBlockSize));
628 return cipherBlocks * finst->plainBlockSize;
652 feedInst *finst = (feedInst *) feed;
660 if(plainTextLen > finst->plainBlockSize) {
663 if((plainTextLen < finst->plainBlockSize) && !finalBlock) {
666 if(finst->initialRS == NULL) {
676 if(finst->rsBlockCount == 0) {
680 if(finst->initialRS == NULL) {
688 frtn = feeFEEDExpEncrypt(finst->feedExp,
689 finst->initialRS,
690 finst->initialRSSize,
705 finst->rsBlockCount = finst->rsSizeCipherBlocks;
706 padLen = finst->cipherBlockSize -
707 (ctextLen % finst->cipherBlockSize); // zeros to write
715 if((ctextLen / finst->cipherBlockSize) != 5) {
739 unsigned char *ptext = (unsigned char*) fmalloc(finst->plainBlockSize);
740 bzero(ptext, finst->plainBlockSize);
747 if(plainTextLen < finst->plainBlockSize) {
754 ptext[finst->plainBlockSize - 1] = RESID_ZERO;
758 ptext[finst->plainBlockSize - 1] = plainTextLen;
766 deserializeGiant(ptext, finst->xp, finst->plainBlockSize);
770 deserializeGiant(plainText, finst->xp, plainTextLen);
781 whichCurve = which_curve(finst->xp, finst->cp);
783 thisClue = finst->cluePlus;
784 thisS = finst->sPlus;
788 thisClue = finst->clueMinus;
789 thisS = finst->sMinus;
793 elliptic_add(thisClue, finst->xp, finst->xm, finst->cp, SIGN_PLUS);
795 elliptic_add(finst->xm, thisClue, finst->tmp1, finst->cp, SIGN_PLUS);
797 elliptic_simple(thisClue, finst->r, finst->cp);
798 gtog(thisClue, finst->tmp2);
799 elliptic_add(finst->tmp2, thisS, thisClue, finst->cp, SIGN_PLUS);
804 if(gcompg(finst->tmp1, finst->xp) == 0) {
811 serializeGiant(finst->xm, cipherText, finst->cp->minBytes);
812 cipherText += finst->cp->minBytes;
813 ctextLen += finst->cp->minBytes;
819 printf(" xp : "); printGiant(finst->xp);
820 printf(" xm : "); printGiant(finst->xm);
821 printf(" cluePlus :"); printGiant(finst->cluePlus);
822 printf(" clueMinus :"); printGiant(finst->clueMinus);
825 if(finalBlock && (plainTextLen == finst->plainBlockSize)) {
863 feedInst *finst = (feedInst *) feed;
870 if(finst->rsCtext == NULL) {
876 if(cipherTextLen != finst->cipherBlockSize) {
880 if(finst->rsBlockCount < finst->rsSizeCipherBlocks) {
884 unsigned char *rsPtr = finst->rsCtext +
885 (finst->rsBlockCount * finst->cipherBlockSize);
892 bcopy(cipherText, rsPtr, finst->cipherBlockSize);
893 finst->rsBlockCount++;
894 if(finst->rsBlockCount < finst->rsSizeCipherBlocks) {
905 if((finst->rsBlockCount * finst->cipherBlockSize) <
906 finst->rsCtextSize) {
917 feedExpCipherSize = feeFEEDCipherBlockSize(finst->feedExp);
918 frtn = feeFEEDExpDecrypt(finst->feedExp,
919 finst->rsCtext,
920 finst->rsCtextSize,
921 &finst->initialRS,
922 &finst->initialRSSize);
932 if(finst->initialRSSize != finst->initialRSSize) {
940 if(initFromRS(finst)) {
959 deserializeGiant(cipherText, finst->xm, finst->cp->minBytes);
960 cipherText += finst->cp->minBytes;
964 thisClue = finst->cluePlus;
965 thisS = finst->sPlus;
968 thisClue = finst->clueMinus;
969 thisS = finst->sMinus;
984 elliptic_add(thisClue, finst->xm, finst->xp, finst->cp, parity);
986 elliptic_simple(thisClue, finst->r, finst->cp);
987 gtog(thisClue, finst->tmp1);
988 elliptic_add(finst->tmp1, thisS, thisClue, finst->cp, SIGN_PLUS);
995 printf(" xp : "); printGiant(finst->xp);
996 printf(" xm : "); printGiant(finst->xm);
997 printf(" cluePlus :"); printGiant(finst->cluePlus);
998 printf(" clueMinus :"); printGiant(finst->clueMinus);
1006 unsigned char *ptext = (unsigned char*) fmalloc(finst->plainBlockSize);
1008 serializeGiant(finst->xp, ptext, finst->plainBlockSize);
1009 *plainTextLen = ptext[finst->plainBlockSize - 1];
1014 else if(*plainTextLen > (finst->plainBlockSize - 1)) {
1026 *plainTextLen = finst->plainBlockSize;
1027 serializeGiant(finst->xp, plainText, *plainTextLen);