522 lines
21 KiB
Plaintext
522 lines
21 KiB
Plaintext
{Test program AES XTS mode functions, we Oct.2007}
|
|
|
|
program T_XTS;
|
|
|
|
{$i STD.INC}
|
|
|
|
{$ifdef APPCONS}
|
|
{$apptype console}
|
|
{$endif}
|
|
|
|
uses
|
|
{$ifdef WINCRT}
|
|
wincrt,
|
|
{$endif}
|
|
{$ifdef USEDLL}
|
|
{$ifdef VirtualPascal}
|
|
AES_Intv,
|
|
{$else}
|
|
AES_Intf,
|
|
{$endif}
|
|
{$else}
|
|
aes_type, aes_xts,
|
|
{$endif}
|
|
mem_util;
|
|
|
|
|
|
var
|
|
ctx: TAES_XTSContext;
|
|
tmp: array[0..511] of byte;
|
|
|
|
{Test vectors from IEEE P1619}
|
|
|
|
{---------------------------------------------------------------------------}
|
|
procedure test_v01;
|
|
var
|
|
pt: array[0..31] of byte;
|
|
k1,k2: array[0..15] of byte;
|
|
twk: TAESBlock;
|
|
err: integer;
|
|
const
|
|
ct: array[0..31] of byte = ($91,$7c,$f6,$9e,$bd,$68,$b2,$ec,
|
|
$9b,$9f,$e9,$a3,$ea,$dd,$a6,$92,
|
|
$cd,$43,$d2,$f5,$95,$98,$ed,$85,
|
|
$8c,$02,$c2,$65,$2f,$bf,$92,$2e);
|
|
begin
|
|
fillchar(pt,sizeof(pt),0);
|
|
fillchar(k1,sizeof(k1),0);
|
|
fillchar(k2,sizeof(k2),0);
|
|
fillchar(twk,sizeof(twk),0);
|
|
writeln('Test vector 01');
|
|
err := AES_XTS_Init_Encr(k1,k2,sizeof(k1)*8,ctx);
|
|
if err<>0 then begin
|
|
writeln(' - Error AES_XTS_Init_Encr = ', err);
|
|
halt;
|
|
end;
|
|
err := AES_XTS_Encrypt(@pt, @tmp, sizeof(pt), twk, ctx);
|
|
if err<>0 then begin
|
|
writeln(' - Error AES_XTS_Encrypt = ', err);
|
|
halt;
|
|
end;
|
|
writeln(' Enc: ',CompMem(@ct, @tmp, sizeof(ct)));
|
|
|
|
err := AES_XTS_Init_Decr(k1,k2,sizeof(k1)*8,ctx);
|
|
if err<>0 then begin
|
|
writeln(' - Error AES_XTS_Init_Decr = ', err);
|
|
halt;
|
|
end;
|
|
err := AES_XTS_Decrypt(@tmp, @tmp, sizeof(pt), twk, ctx);
|
|
if err<>0 then begin
|
|
writeln(' - Error AES_XTS_Decrypt = ', err);
|
|
halt;
|
|
end;
|
|
writeln(' Dec: ',CompMem(@pt, @tmp, sizeof(pt)));
|
|
end;
|
|
|
|
|
|
{---------------------------------------------------------------------------}
|
|
procedure test_v02;
|
|
const
|
|
k1 : array[0..15] of byte = ($11,$11,$11,$11,$11,$11,$11,$11,
|
|
$11,$11,$11,$11,$11,$11,$11,$11);
|
|
|
|
k2 : array[0..15] of byte = ($22,$22,$22,$22,$22,$22,$22,$22,
|
|
$22,$22,$22,$22,$22,$22,$22,$22);
|
|
|
|
twk: TAESBlock = ($33,$33,$33,$33,$33,0,0,0,0,0,0,0,0,0,0,0);
|
|
|
|
pt : array[0..31] of byte = ($44,$44,$44,$44,$44,$44,$44,$44,
|
|
$44,$44,$44,$44,$44,$44,$44,$44,
|
|
$44,$44,$44,$44,$44,$44,$44,$44,
|
|
$44,$44,$44,$44,$44,$44,$44,$44);
|
|
|
|
ct : array[0..31] of byte = ($c4,$54,$18,$5e,$6a,$16,$93,$6e,
|
|
$39,$33,$40,$38,$ac,$ef,$83,$8b,
|
|
$fb,$18,$6f,$ff,$74,$80,$ad,$c4,
|
|
$28,$93,$82,$ec,$d6,$d3,$94,$f0);
|
|
|
|
var
|
|
err: integer;
|
|
begin
|
|
writeln('Test vector 02');
|
|
err := AES_XTS_Init_Encr(k1,k2,sizeof(k1)*8,ctx);
|
|
if err<>0 then begin
|
|
writeln(' - Error AES_XTS_Init_Encr = ', err);
|
|
halt;
|
|
end;
|
|
err := AES_XTS_Encrypt(@pt, @tmp, sizeof(pt), twk, ctx);
|
|
if err<>0 then begin
|
|
writeln(' - Error AES_XTS_Encrypt = ', err);
|
|
halt;
|
|
end;
|
|
writeln(' Enc: ',CompMem(@ct, @tmp, sizeof(ct)));
|
|
|
|
err := AES_XTS_Init_Decr(k1,k2,sizeof(k1)*8,ctx);
|
|
if err<>0 then begin
|
|
writeln(' - Error AES_XTS_Init_Decr = ', err);
|
|
halt;
|
|
end;
|
|
err := AES_XTS_Decrypt(@tmp, @tmp, sizeof(pt), twk, ctx);
|
|
if err<>0 then begin
|
|
writeln(' - Error AES_XTS_Decrypt = ', err);
|
|
halt;
|
|
end;
|
|
writeln(' Dec: ',CompMem(@pt, @tmp, sizeof(pt)));
|
|
end;
|
|
|
|
|
|
|
|
{---------------------------------------------------------------------------}
|
|
procedure test_v04;
|
|
const
|
|
k1 : array[0..15] of byte = ($27,$18,$28,$18,$28,$45,$90,$45,$23,$53,$60,$28,$74,$71,$35,$26);
|
|
|
|
k2 : array[0..15] of byte = ($31,$41,$59,$26,$53,$58,$97,$93,$23,$84,$62,$64,$33,$83,$27,$95);
|
|
|
|
pt : array[0..511] of byte =(
|
|
$00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f,
|
|
$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$1a,$1b,$1c,$1d,$1e,$1f,
|
|
$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$2a,$2b,$2c,$2d,$2e,$2f,
|
|
$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$3a,$3b,$3c,$3d,$3e,$3f,
|
|
$40,$41,$42,$43,$44,$45,$46,$47,$48,$49,$4a,$4b,$4c,$4d,$4e,$4f,
|
|
$50,$51,$52,$53,$54,$55,$56,$57,$58,$59,$5a,$5b,$5c,$5d,$5e,$5f,
|
|
$60,$61,$62,$63,$64,$65,$66,$67,$68,$69,$6a,$6b,$6c,$6d,$6e,$6f,
|
|
$70,$71,$72,$73,$74,$75,$76,$77,$78,$79,$7a,$7b,$7c,$7d,$7e,$7f,
|
|
$80,$81,$82,$83,$84,$85,$86,$87,$88,$89,$8a,$8b,$8c,$8d,$8e,$8f,
|
|
$90,$91,$92,$93,$94,$95,$96,$97,$98,$99,$9a,$9b,$9c,$9d,$9e,$9f,
|
|
$a0,$a1,$a2,$a3,$a4,$a5,$a6,$a7,$a8,$a9,$aa,$ab,$ac,$ad,$ae,$af,
|
|
$b0,$b1,$b2,$b3,$b4,$b5,$b6,$b7,$b8,$b9,$ba,$bb,$bc,$bd,$be,$bf,
|
|
$c0,$c1,$c2,$c3,$c4,$c5,$c6,$c7,$c8,$c9,$ca,$cb,$cc,$cd,$ce,$cf,
|
|
$d0,$d1,$d2,$d3,$d4,$d5,$d6,$d7,$d8,$d9,$da,$db,$dc,$dd,$de,$df,
|
|
$e0,$e1,$e2,$e3,$e4,$e5,$e6,$e7,$e8,$e9,$ea,$eb,$ec,$ed,$ee,$ef,
|
|
$f0,$f1,$f2,$f3,$f4,$f5,$f6,$f7,$f8,$f9,$fa,$fb,$fc,$fd,$fe,$ff,
|
|
$00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f,
|
|
$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$1a,$1b,$1c,$1d,$1e,$1f,
|
|
$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$2a,$2b,$2c,$2d,$2e,$2f,
|
|
$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$3a,$3b,$3c,$3d,$3e,$3f,
|
|
$40,$41,$42,$43,$44,$45,$46,$47,$48,$49,$4a,$4b,$4c,$4d,$4e,$4f,
|
|
$50,$51,$52,$53,$54,$55,$56,$57,$58,$59,$5a,$5b,$5c,$5d,$5e,$5f,
|
|
$60,$61,$62,$63,$64,$65,$66,$67,$68,$69,$6a,$6b,$6c,$6d,$6e,$6f,
|
|
$70,$71,$72,$73,$74,$75,$76,$77,$78,$79,$7a,$7b,$7c,$7d,$7e,$7f,
|
|
$80,$81,$82,$83,$84,$85,$86,$87,$88,$89,$8a,$8b,$8c,$8d,$8e,$8f,
|
|
$90,$91,$92,$93,$94,$95,$96,$97,$98,$99,$9a,$9b,$9c,$9d,$9e,$9f,
|
|
$a0,$a1,$a2,$a3,$a4,$a5,$a6,$a7,$a8,$a9,$aa,$ab,$ac,$ad,$ae,$af,
|
|
$b0,$b1,$b2,$b3,$b4,$b5,$b6,$b7,$b8,$b9,$ba,$bb,$bc,$bd,$be,$bf,
|
|
$c0,$c1,$c2,$c3,$c4,$c5,$c6,$c7,$c8,$c9,$ca,$cb,$cc,$cd,$ce,$cf,
|
|
$d0,$d1,$d2,$d3,$d4,$d5,$d6,$d7,$d8,$d9,$da,$db,$dc,$dd,$de,$df,
|
|
$e0,$e1,$e2,$e3,$e4,$e5,$e6,$e7,$e8,$e9,$ea,$eb,$ec,$ed,$ee,$ef,
|
|
$f0,$f1,$f2,$f3,$f4,$f5,$f6,$f7,$f8,$f9,$fa,$fb,$fc,$fd,$fe,$ff);
|
|
|
|
ct : array[0..511] of byte = (
|
|
$27,$a7,$47,$9b,$ef,$a1,$d4,$76,$48,$9f,$30,$8c,$d4,$cf,$a6,$e2,
|
|
$a9,$6e,$4b,$be,$32,$08,$ff,$25,$28,$7d,$d3,$81,$96,$16,$e8,$9c,
|
|
$c7,$8c,$f7,$f5,$e5,$43,$44,$5f,$83,$33,$d8,$fa,$7f,$56,$00,$00,
|
|
$05,$27,$9f,$a5,$d8,$b5,$e4,$ad,$40,$e7,$36,$dd,$b4,$d3,$54,$12,
|
|
$32,$80,$63,$fd,$2a,$ab,$53,$e5,$ea,$1e,$0a,$9f,$33,$25,$00,$a5,
|
|
$df,$94,$87,$d0,$7a,$5c,$92,$cc,$51,$2c,$88,$66,$c7,$e8,$60,$ce,
|
|
$93,$fd,$f1,$66,$a2,$49,$12,$b4,$22,$97,$61,$46,$ae,$20,$ce,$84,
|
|
$6b,$b7,$dc,$9b,$a9,$4a,$76,$7a,$ae,$f2,$0c,$0d,$61,$ad,$02,$65,
|
|
$5e,$a9,$2d,$c4,$c4,$e4,$1a,$89,$52,$c6,$51,$d3,$31,$74,$be,$51,
|
|
$a1,$0c,$42,$11,$10,$e6,$d8,$15,$88,$ed,$e8,$21,$03,$a2,$52,$d8,
|
|
$a7,$50,$e8,$76,$8d,$ef,$ff,$ed,$91,$22,$81,$0a,$ae,$b9,$9f,$91,
|
|
$72,$af,$82,$b6,$04,$dc,$4b,$8e,$51,$bc,$b0,$82,$35,$a6,$f4,$34,
|
|
$13,$32,$e4,$ca,$60,$48,$2a,$4b,$a1,$a0,$3b,$3e,$65,$00,$8f,$c5,
|
|
$da,$76,$b7,$0b,$f1,$69,$0d,$b4,$ea,$e2,$9c,$5f,$1b,$ad,$d0,$3c,
|
|
$5c,$cf,$2a,$55,$d7,$05,$dd,$cd,$86,$d4,$49,$51,$1c,$eb,$7e,$c3,
|
|
$0b,$f1,$2b,$1f,$a3,$5b,$91,$3f,$9f,$74,$7a,$8a,$fd,$1b,$13,$0e,
|
|
$94,$bf,$f9,$4e,$ff,$d0,$1a,$91,$73,$5c,$a1,$72,$6a,$cd,$0b,$19,
|
|
$7c,$4e,$5b,$03,$39,$36,$97,$e1,$26,$82,$6f,$b6,$bb,$de,$8e,$cc,
|
|
$1e,$08,$29,$85,$16,$e2,$c9,$ed,$03,$ff,$3c,$1b,$78,$60,$f6,$de,
|
|
$76,$d4,$ce,$cd,$94,$c8,$11,$98,$55,$ef,$52,$97,$ca,$67,$e9,$f3,
|
|
$e7,$ff,$72,$b1,$e9,$97,$85,$ca,$0a,$7e,$77,$20,$c5,$b3,$6d,$c6,
|
|
$d7,$2c,$ac,$95,$74,$c8,$cb,$bc,$2f,$80,$1e,$23,$e5,$6f,$d3,$44,
|
|
$b0,$7f,$22,$15,$4b,$eb,$a0,$f0,$8c,$e8,$89,$1e,$64,$3e,$d9,$95,
|
|
$c9,$4d,$9a,$69,$c9,$f1,$b5,$f4,$99,$02,$7a,$78,$57,$2a,$ee,$bd,
|
|
$74,$d2,$0c,$c3,$98,$81,$c2,$13,$ee,$77,$0b,$10,$10,$e4,$be,$a7,
|
|
$18,$84,$69,$77,$ae,$11,$9f,$7a,$02,$3a,$b5,$8c,$ca,$0a,$d7,$52,
|
|
$af,$e6,$56,$bb,$3c,$17,$25,$6a,$9f,$6e,$9b,$f1,$9f,$dd,$5a,$38,
|
|
$fc,$82,$bb,$e8,$72,$c5,$53,$9e,$db,$60,$9e,$f4,$f7,$9c,$20,$3e,
|
|
$bb,$14,$0f,$2e,$58,$3c,$b2,$ad,$15,$b4,$aa,$5b,$65,$50,$16,$a8,
|
|
$44,$92,$77,$db,$d4,$77,$ef,$2c,$8d,$6c,$01,$7d,$b7,$38,$b1,$8d,
|
|
$eb,$4a,$42,$7d,$19,$23,$ce,$3f,$f2,$62,$73,$57,$79,$a4,$18,$f2,
|
|
$0a,$28,$2d,$f9,$20,$14,$7b,$ea,$be,$42,$1e,$e5,$31,$9d,$05,$68);
|
|
|
|
twk: TAESBlock = (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
|
|
var
|
|
err: integer;
|
|
begin
|
|
writeln('Test vector 04');
|
|
err := AES_XTS_Init_Encr(k1,k2,sizeof(k1)*8,ctx);
|
|
if err<>0 then begin
|
|
writeln(' - Error AES_XTS_Init_Encr = ', err);
|
|
halt;
|
|
end;
|
|
err := AES_XTS_Encrypt(@pt, @tmp, sizeof(pt), twk, ctx);
|
|
if err<>0 then begin
|
|
writeln(' - Error AES_XTS_Encrypt = ', err);
|
|
halt;
|
|
end;
|
|
writeln(' Enc: ',CompMem(@ct, @tmp, sizeof(ct)));
|
|
|
|
err := AES_XTS_Init_Decr(k1,k2,sizeof(k1)*8,ctx);
|
|
if err<>0 then begin
|
|
writeln(' - Error AES_XTS_Init_Decr = ', err);
|
|
halt;
|
|
end;
|
|
err := AES_XTS_Decrypt(@tmp, @tmp, sizeof(pt), twk, ctx);
|
|
if err<>0 then begin
|
|
writeln(' * Error AES_XTS_Decrypt = ', err);
|
|
halt;
|
|
end;
|
|
writeln(' Dec: ',CompMem(@pt, @tmp, sizeof(pt)));
|
|
end;
|
|
|
|
|
|
{---------------------------------------------------------------------------}
|
|
procedure test_v10;
|
|
const
|
|
k1 : array[0.. 31] of byte = ($27,$18,$28,$18,$28,$45,$90,$45,$23,$53,$60,$28,$74,$71,$35,$26,
|
|
$62,$49,$77,$57,$24,$70,$93,$69,$99,$59,$57,$49,$66,$96,$76,$27);
|
|
|
|
k2 : array[0.. 31] of byte = ($31,$41,$59,$26,$53,$58,$97,$93,$23,$84,$62,$64,$33,$83,$27,$95,
|
|
$02,$88,$41,$97,$16,$93,$99,$37,$51,$05,$82,$09,$74,$94,$45,$92);
|
|
|
|
pt : array[0..511] of byte =(
|
|
$00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f,
|
|
$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$1a,$1b,$1c,$1d,$1e,$1f,
|
|
$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$2a,$2b,$2c,$2d,$2e,$2f,
|
|
$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$3a,$3b,$3c,$3d,$3e,$3f,
|
|
$40,$41,$42,$43,$44,$45,$46,$47,$48,$49,$4a,$4b,$4c,$4d,$4e,$4f,
|
|
$50,$51,$52,$53,$54,$55,$56,$57,$58,$59,$5a,$5b,$5c,$5d,$5e,$5f,
|
|
$60,$61,$62,$63,$64,$65,$66,$67,$68,$69,$6a,$6b,$6c,$6d,$6e,$6f,
|
|
$70,$71,$72,$73,$74,$75,$76,$77,$78,$79,$7a,$7b,$7c,$7d,$7e,$7f,
|
|
$80,$81,$82,$83,$84,$85,$86,$87,$88,$89,$8a,$8b,$8c,$8d,$8e,$8f,
|
|
$90,$91,$92,$93,$94,$95,$96,$97,$98,$99,$9a,$9b,$9c,$9d,$9e,$9f,
|
|
$a0,$a1,$a2,$a3,$a4,$a5,$a6,$a7,$a8,$a9,$aa,$ab,$ac,$ad,$ae,$af,
|
|
$b0,$b1,$b2,$b3,$b4,$b5,$b6,$b7,$b8,$b9,$ba,$bb,$bc,$bd,$be,$bf,
|
|
$c0,$c1,$c2,$c3,$c4,$c5,$c6,$c7,$c8,$c9,$ca,$cb,$cc,$cd,$ce,$cf,
|
|
$d0,$d1,$d2,$d3,$d4,$d5,$d6,$d7,$d8,$d9,$da,$db,$dc,$dd,$de,$df,
|
|
$e0,$e1,$e2,$e3,$e4,$e5,$e6,$e7,$e8,$e9,$ea,$eb,$ec,$ed,$ee,$ef,
|
|
$f0,$f1,$f2,$f3,$f4,$f5,$f6,$f7,$f8,$f9,$fa,$fb,$fc,$fd,$fe,$ff,
|
|
$00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f,
|
|
$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$1a,$1b,$1c,$1d,$1e,$1f,
|
|
$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$2a,$2b,$2c,$2d,$2e,$2f,
|
|
$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$3a,$3b,$3c,$3d,$3e,$3f,
|
|
$40,$41,$42,$43,$44,$45,$46,$47,$48,$49,$4a,$4b,$4c,$4d,$4e,$4f,
|
|
$50,$51,$52,$53,$54,$55,$56,$57,$58,$59,$5a,$5b,$5c,$5d,$5e,$5f,
|
|
$60,$61,$62,$63,$64,$65,$66,$67,$68,$69,$6a,$6b,$6c,$6d,$6e,$6f,
|
|
$70,$71,$72,$73,$74,$75,$76,$77,$78,$79,$7a,$7b,$7c,$7d,$7e,$7f,
|
|
$80,$81,$82,$83,$84,$85,$86,$87,$88,$89,$8a,$8b,$8c,$8d,$8e,$8f,
|
|
$90,$91,$92,$93,$94,$95,$96,$97,$98,$99,$9a,$9b,$9c,$9d,$9e,$9f,
|
|
$a0,$a1,$a2,$a3,$a4,$a5,$a6,$a7,$a8,$a9,$aa,$ab,$ac,$ad,$ae,$af,
|
|
$b0,$b1,$b2,$b3,$b4,$b5,$b6,$b7,$b8,$b9,$ba,$bb,$bc,$bd,$be,$bf,
|
|
$c0,$c1,$c2,$c3,$c4,$c5,$c6,$c7,$c8,$c9,$ca,$cb,$cc,$cd,$ce,$cf,
|
|
$d0,$d1,$d2,$d3,$d4,$d5,$d6,$d7,$d8,$d9,$da,$db,$dc,$dd,$de,$df,
|
|
$e0,$e1,$e2,$e3,$e4,$e5,$e6,$e7,$e8,$e9,$ea,$eb,$ec,$ed,$ee,$ef,
|
|
$f0,$f1,$f2,$f3,$f4,$f5,$f6,$f7,$f8,$f9,$fa,$fb,$fc,$fd,$fe,$ff);
|
|
|
|
ct : array[0..511] of byte = (
|
|
$1c,$3b,$3a,$10,$2f,$77,$03,$86,$e4,$83,$6c,$99,$e3,$70,$cf,$9b,
|
|
$ea,$00,$80,$3f,$5e,$48,$23,$57,$a4,$ae,$12,$d4,$14,$a3,$e6,$3b,
|
|
$5d,$31,$e2,$76,$f8,$fe,$4a,$8d,$66,$b3,$17,$f9,$ac,$68,$3f,$44,
|
|
$68,$0a,$86,$ac,$35,$ad,$fc,$33,$45,$be,$fe,$cb,$4b,$b1,$88,$fd,
|
|
$57,$76,$92,$6c,$49,$a3,$09,$5e,$b1,$08,$fd,$10,$98,$ba,$ec,$70,
|
|
$aa,$a6,$69,$99,$a7,$2a,$82,$f2,$7d,$84,$8b,$21,$d4,$a7,$41,$b0,
|
|
$c5,$cd,$4d,$5f,$ff,$9d,$ac,$89,$ae,$ba,$12,$29,$61,$d0,$3a,$75,
|
|
$71,$23,$e9,$87,$0f,$8a,$cf,$10,$00,$02,$08,$87,$89,$14,$29,$ca,
|
|
$2a,$3e,$7a,$7d,$7d,$f7,$b1,$03,$55,$16,$5c,$8b,$9a,$6d,$0a,$7d,
|
|
$e8,$b0,$62,$c4,$50,$0d,$c4,$cd,$12,$0c,$0f,$74,$18,$da,$e3,$d0,
|
|
$b5,$78,$1c,$34,$80,$3f,$a7,$54,$21,$c7,$90,$df,$e1,$de,$18,$34,
|
|
$f2,$80,$d7,$66,$7b,$32,$7f,$6c,$8c,$d7,$55,$7e,$12,$ac,$3a,$0f,
|
|
$93,$ec,$05,$c5,$2e,$04,$93,$ef,$31,$a1,$2d,$3d,$92,$60,$f7,$9a,
|
|
$28,$9d,$6a,$37,$9b,$c7,$0c,$50,$84,$14,$73,$d1,$a8,$cc,$81,$ec,
|
|
$58,$3e,$96,$45,$e0,$7b,$8d,$96,$70,$65,$5b,$a5,$bb,$cf,$ec,$c6,
|
|
$dc,$39,$66,$38,$0a,$d8,$fe,$cb,$17,$b6,$ba,$02,$46,$9a,$02,$0a,
|
|
$84,$e1,$8e,$8f,$84,$25,$20,$70,$c1,$3e,$9f,$1f,$28,$9b,$e5,$4f,
|
|
$bc,$48,$14,$57,$77,$8f,$61,$60,$15,$e1,$32,$7a,$02,$b1,$40,$f1,
|
|
$50,$5e,$b3,$09,$32,$6d,$68,$37,$8f,$83,$74,$59,$5c,$84,$9d,$84,
|
|
$f4,$c3,$33,$ec,$44,$23,$88,$51,$43,$cb,$47,$bd,$71,$c5,$ed,$ae,
|
|
$9b,$e6,$9a,$2f,$fe,$ce,$b1,$be,$c9,$de,$24,$4f,$be,$15,$99,$2b,
|
|
$11,$b7,$7c,$04,$0f,$12,$bd,$8f,$6a,$97,$5a,$44,$a0,$f9,$0c,$29,
|
|
$a9,$ab,$c3,$d4,$d8,$93,$92,$72,$84,$c5,$87,$54,$cc,$e2,$94,$52,
|
|
$9f,$86,$14,$dc,$d2,$ab,$a9,$91,$92,$5f,$ed,$c4,$ae,$74,$ff,$ac,
|
|
$6e,$33,$3b,$93,$eb,$4a,$ff,$04,$79,$da,$9a,$41,$0e,$44,$50,$e0,
|
|
$dd,$7a,$e4,$c6,$e2,$91,$09,$00,$57,$5d,$a4,$01,$fc,$07,$05,$9f,
|
|
$64,$5e,$8b,$7e,$9b,$fd,$ef,$33,$94,$30,$54,$ff,$84,$01,$14,$93,
|
|
$c2,$7b,$34,$29,$ea,$ed,$b4,$ed,$53,$76,$44,$1a,$77,$ed,$43,$85,
|
|
$1a,$d7,$7f,$16,$f5,$41,$df,$d2,$69,$d5,$0d,$6a,$5f,$14,$fb,$0a,
|
|
$ab,$1c,$bb,$4c,$15,$50,$be,$97,$f7,$ab,$40,$66,$19,$3c,$4c,$aa,
|
|
$77,$3d,$ad,$38,$01,$4b,$d2,$09,$2f,$a7,$55,$c8,$24,$bb,$5e,$54,
|
|
$c4,$f3,$6f,$fd,$a9,$fc,$ea,$70,$b9,$c6,$e6,$93,$e1,$48,$c1,$51);
|
|
|
|
twk: TAESBlock = ($ff,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
|
|
var
|
|
err: integer;
|
|
begin
|
|
writeln('Test vector 10');
|
|
err := AES_XTS_Init_Encr(k1,k2,sizeof(k1)*8,ctx);
|
|
if err<>0 then begin
|
|
writeln(' - Error AES_XTS_Init_Encr = ', err);
|
|
halt;
|
|
end;
|
|
err := AES_XTS_Encrypt(@pt, @tmp, sizeof(pt), twk, ctx);
|
|
if err<>0 then begin
|
|
writeln(' - Error AES_XTS_Encrypt = ', err);
|
|
halt;
|
|
end;
|
|
writeln(' Enc: ',CompMem(@ct, @tmp, sizeof(ct)));
|
|
|
|
err := AES_XTS_Init_Decr(k1,k2,sizeof(k1)*8,ctx);
|
|
if err<>0 then begin
|
|
writeln(' - Error AES_XTS_Init_Decr = ', err);
|
|
halt;
|
|
end;
|
|
err := AES_XTS_Decrypt(@tmp, @tmp, sizeof(pt), twk, ctx);
|
|
if err<>0 then begin
|
|
writeln(' - Error AES_XTS_Decrypt = ', err);
|
|
halt;
|
|
end;
|
|
writeln(' Dec: ',CompMem(@pt, @tmp, sizeof(pt)));
|
|
end;
|
|
|
|
|
|
{---------------------------------------------------------------------------}
|
|
procedure test_v15;
|
|
const
|
|
k1 : array[0..15] of byte = ($ff,$fe,$fd,$fc,$fb,$fa,$f9,$f8,
|
|
$f7,$f6,$f5,$f4,$f3,$f2,$f1,$f0);
|
|
k2 : array[0..15] of byte = ($bf,$be,$bd,$bc,$bb,$ba,$b9,$b8,
|
|
$b7,$b6,$b5,$b4,$b3,$b2,$b1,$b0);
|
|
pt : array[0..16] of byte = ($00,$01,$02,$03,$04,$05,$06,$07,
|
|
$08,$09,$0a,$0b,$0c,$0d,$0e,$0f,$10);
|
|
ct : array[0..16] of byte = ($6c,$16,$25,$db,$46,$71,$52,$2d,
|
|
$3d,$75,$99,$60,$1d,$e7,$ca,$09,$ed);
|
|
twk: TAESBlock = ($9a,$78,$56,$34,$12,0,0,0,0,0,0,0,0,0,0,0);
|
|
var
|
|
err: integer;
|
|
begin
|
|
writeln('Test vector 15');
|
|
err := AES_XTS_Init_Encr(k1,k2,sizeof(k1)*8,ctx);
|
|
if err<>0 then begin
|
|
writeln(' - Error AES_XTS_Init_Encr = ', err);
|
|
halt;
|
|
end;
|
|
err := AES_XTS_Encrypt(@pt, @tmp, sizeof(pt), twk, ctx);
|
|
if err<>0 then begin
|
|
writeln(' - Error AES_XTS_Encrypt = ', err);
|
|
halt;
|
|
end;
|
|
writeln(' Enc: ',CompMem(@ct, @tmp, sizeof(ct)));
|
|
err := AES_XTS_Init_Decr(k1,k2,sizeof(k1)*8,ctx);
|
|
if err<>0 then begin
|
|
writeln(' - Error AES_XTS_Init_Decr = ', err);
|
|
halt;
|
|
end;
|
|
err := AES_XTS_Decrypt(@tmp, @tmp, sizeof(pt), twk, ctx);
|
|
if err<>0 then begin
|
|
writeln(' - Error AES_XTS_Decrypt = ', err);
|
|
halt;
|
|
end;
|
|
writeln(' Dec: ',CompMem(@pt, @tmp, sizeof(pt)));
|
|
end;
|
|
|
|
|
|
{---------------------------------------------------------------------------}
|
|
procedure test_v16;
|
|
const
|
|
k1 : array[0..15] of byte = ($ff,$fe,$fd,$fc,$fb,$fa,$f9,$f8,
|
|
$f7,$f6,$f5,$f4,$f3,$f2,$f1,$f0);
|
|
k2 : array[0..15] of byte = ($bf,$be,$bd,$bc,$bb,$ba,$b9,$b8,
|
|
$b7,$b6,$b5,$b4,$b3,$b2,$b1,$b0);
|
|
pt : array[0..17] of byte = ($00,$01,$02,$03,$04,$05,$06,$07,
|
|
$08,$09,$0a,$0b,$0c,$0d,$0e,$0f,$10,$11);
|
|
ct : array[0..17] of byte = ($d0,$69,$44,$4b,$7a,$7e,$0c,$ab,
|
|
$09,$e2,$44,$47,$d2,$4d,$eb,$1f,$ed,$bf);
|
|
twk: TAESBlock = ($9a,$78,$56,$34,$12,0,0,0,0,0,0,0,0,0,0,0);
|
|
var
|
|
err: integer;
|
|
begin
|
|
writeln('Test vector 16');
|
|
err := AES_XTS_Init_Encr(k1,k2,sizeof(k1)*8,ctx);
|
|
if err<>0 then begin
|
|
writeln(' - Error AES_XTS_Init_Encr = ', err);
|
|
halt;
|
|
end;
|
|
err := AES_XTS_Encrypt(@pt, @tmp, sizeof(pt), twk, ctx);
|
|
if err<>0 then begin
|
|
writeln(' - Error AES_XTS_Encrypt = ', err);
|
|
halt;
|
|
end;
|
|
writeln(' Enc: ',CompMem(@ct, @tmp, sizeof(ct)));
|
|
err := AES_XTS_Init_Decr(k1,k2,sizeof(k1)*8,ctx);
|
|
if err<>0 then begin
|
|
writeln(' - Error AES_XTS_Init_Decr = ', err);
|
|
halt;
|
|
end;
|
|
err := AES_XTS_Decrypt(@tmp, @tmp, sizeof(pt), twk, ctx);
|
|
if err<>0 then begin
|
|
writeln(' - Error AES_XTS_Decrypt = ', err);
|
|
halt;
|
|
end;
|
|
writeln(' Dec: ',CompMem(@pt, @tmp, sizeof(pt)));
|
|
end;
|
|
|
|
|
|
{---------------------------------------------------------------------------}
|
|
procedure test_v17;
|
|
const
|
|
k1 : array[0..15] of byte = ($ff,$fe,$fd,$fc,$fb,$fa,$f9,$f8,
|
|
$f7,$f6,$f5,$f4,$f3,$f2,$f1,$f0);
|
|
k2 : array[0..15] of byte = ($bf,$be,$bd,$bc,$bb,$ba,$b9,$b8,
|
|
$b7,$b6,$b5,$b4,$b3,$b2,$b1,$b0);
|
|
pt : array[0..18] of byte = ($00,$01,$02,$03,$04,$05,$06,$07,
|
|
$08,$09,$0a,$0b,$0c,$0d,$0e,$0f,$10,$11,$12);
|
|
ct : array[0..18] of byte = ($e5,$df,$13,$51,$c0,$54,$4b,$a1,
|
|
$35,$0b,$33,$63,$cd,$8e,$f4,$be,$ed,$bf,$9d);
|
|
twk: TAESBlock = ($9a,$78,$56,$34,$12,0,0,0,0,0,0,0,0,0,0,0);
|
|
var
|
|
err: integer;
|
|
begin
|
|
writeln('Test vector 17');
|
|
err := AES_XTS_Init_Encr(k1,k2,sizeof(k1)*8,ctx);
|
|
if err<>0 then begin
|
|
writeln(' - Error AES_XTS_Init_Encr = ', err);
|
|
halt;
|
|
end;
|
|
err := AES_XTS_Encrypt(@pt, @tmp, sizeof(pt), twk, ctx);
|
|
if err<>0 then begin
|
|
writeln(' - Error AES_XTS_Encrypt = ', err);
|
|
halt;
|
|
end;
|
|
writeln(' Enc: ',CompMem(@ct, @tmp, sizeof(ct)));
|
|
err := AES_XTS_Init_Decr(k1,k2,sizeof(k1)*8,ctx);
|
|
if err<>0 then begin
|
|
writeln(' - Error AES_XTS_Init_Decr = ', err);
|
|
halt;
|
|
end;
|
|
err := AES_XTS_Decrypt(@tmp, @tmp, sizeof(pt), twk, ctx);
|
|
if err<>0 then begin
|
|
writeln(' - Error AES_XTS_Decrypt = ', err);
|
|
halt;
|
|
end;
|
|
writeln(' Dec: ',CompMem(@pt, @tmp, sizeof(pt)));
|
|
end;
|
|
|
|
|
|
{---------------------------------------------------------------------------}
|
|
procedure test_v18;
|
|
const
|
|
k1 : array[0..15] of byte = ($ff,$fe,$fd,$fc,$fb,$fa,$f9,$f8,
|
|
$f7,$f6,$f5,$f4,$f3,$f2,$f1,$f0);
|
|
k2 : array[0..15] of byte = ($bf,$be,$bd,$bc,$bb,$ba,$b9,$b8,
|
|
$b7,$b6,$b5,$b4,$b3,$b2,$b1,$b0);
|
|
pt : array[0..19] of byte = ($00,$01,$02,$03,$04,$05,$06,$07,
|
|
$08,$09,$0a,$0b,$0c,$0d,$0e,$0f,$10,$11,$12,$13);
|
|
ct : array[0..19] of byte = ($9d,$84,$c8,$13,$f7,$19,$aa,$2c,
|
|
$7b,$e3,$f6,$61,$71,$c7,$c5,$c2,$ed,$bf,$9d,$ac);
|
|
twk: TAESBlock = ($9a,$78,$56,$34,$12,0,0,0,0,0,0,0,0,0,0,0);
|
|
var
|
|
err: integer;
|
|
begin
|
|
writeln('Test vector 18');
|
|
err := AES_XTS_Init_Encr(k1,k2,sizeof(k1)*8,ctx);
|
|
if err<>0 then begin
|
|
writeln(' - Error AES_XTS_Init_Encr = ', err);
|
|
halt;
|
|
end;
|
|
err := AES_XTS_Encrypt(@pt, @tmp, sizeof(pt), twk, ctx);
|
|
if err<>0 then begin
|
|
writeln(' - Error AES_XTS_Encrypt = ', err);
|
|
halt;
|
|
end;
|
|
writeln(' Enc: ',CompMem(@ct, @tmp, sizeof(ct)));
|
|
err := AES_XTS_Init_Decr(k1,k2,sizeof(k1)*8,ctx);
|
|
if err<>0 then begin
|
|
writeln(' - Error AES_XTS_Init_Decr = ', err);
|
|
halt;
|
|
end;
|
|
err := AES_XTS_Decrypt(@tmp, @tmp, sizeof(pt), twk, ctx);
|
|
if err<>0 then begin
|
|
writeln(' - Error AES_XTS_Decrypt = ', err);
|
|
halt;
|
|
end;
|
|
writeln(' Dec: ',CompMem(@pt, @tmp, sizeof(pt)));
|
|
end;
|
|
|
|
|
|
begin
|
|
writeln('Test program AES-XTS mode (c) 2007 W.Ehrhardt');
|
|
{$ifdef USEDLL}
|
|
writeln('DLL Version: ',AES_DLL_Version);
|
|
{$endif}
|
|
writeln('Test vectors from IEEE P1619:');
|
|
test_v01;
|
|
test_v02;
|
|
test_v04;
|
|
test_v10;
|
|
test_v15;
|
|
test_v16;
|
|
test_v17;
|
|
test_v18;
|
|
end.
|