зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1044742 - Import OpenAES code for ClearKey CDM implementation r=cpearce
This commit is contained in:
Родитель
469e420982
Коммит
ed35a1118c
|
@ -0,0 +1,27 @@
|
||||||
|
---------------------------------------------------------------------------
|
||||||
|
OpenAES Licence
|
||||||
|
---------------------------------------------------------------------------
|
||||||
|
Copyright (c) 2012, Nabil S. Al Ramli, www.nalramli.com
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
- Redistributions of source code must retain the above copyright notice,
|
||||||
|
this list of conditions and the following disclaimer.
|
||||||
|
- Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
|
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
||||||
|
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
---------------------------------------------------------------------------
|
|
@ -0,0 +1,77 @@
|
||||||
|
/*
|
||||||
|
* ---------------------------------------------------------------------------
|
||||||
|
* OpenAES License
|
||||||
|
* ---------------------------------------------------------------------------
|
||||||
|
* Copyright (c) 2013, Nabil S. Al Ramli, www.nalramli.com
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* - Redistributions of source code must retain the above copyright notice,
|
||||||
|
* this list of conditions and the following disclaimer.
|
||||||
|
* - Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
|
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
||||||
|
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
* POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
* ---------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _OAES_COMMON_H
|
||||||
|
#define _OAES_COMMON_H
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
# ifdef OAES_SHARED
|
||||||
|
# ifdef oaes_lib_EXPORTS
|
||||||
|
# define OAES_API __declspec(dllexport)
|
||||||
|
# else
|
||||||
|
# define OAES_API __declspec(dllimport)
|
||||||
|
# endif
|
||||||
|
# else
|
||||||
|
# define OAES_API
|
||||||
|
# endif
|
||||||
|
#else
|
||||||
|
# define OAES_API
|
||||||
|
#endif // WIN32
|
||||||
|
|
||||||
|
#define OAES_VERSION "0.9.0"
|
||||||
|
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
OAES_RET_FIRST = 0,
|
||||||
|
OAES_RET_SUCCESS = 0,
|
||||||
|
OAES_RET_ERROR,
|
||||||
|
OAES_RET_ARG1,
|
||||||
|
OAES_RET_ARG2,
|
||||||
|
OAES_RET_ARG3,
|
||||||
|
OAES_RET_ARG4,
|
||||||
|
OAES_RET_ARG5,
|
||||||
|
OAES_RET_NOKEY,
|
||||||
|
OAES_RET_MEM,
|
||||||
|
OAES_RET_BUF,
|
||||||
|
OAES_RET_HEADER,
|
||||||
|
OAES_RET_COUNT
|
||||||
|
} OAES_RET;
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // _OAES_COMMON_H
|
|
@ -0,0 +1,46 @@
|
||||||
|
/*
|
||||||
|
* ---------------------------------------------------------------------------
|
||||||
|
* OpenAES License
|
||||||
|
* ---------------------------------------------------------------------------
|
||||||
|
* Copyright (c) 2012, Nabil S. Al Ramli, www.nalramli.com
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* - Redistributions of source code must retain the above copyright notice,
|
||||||
|
* this list of conditions and the following disclaimer.
|
||||||
|
* - Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
|
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
||||||
|
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
* POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
* ---------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _OAES_CONFIG_H
|
||||||
|
#define _OAES_CONFIG_H
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef OAES_DEBUG
|
||||||
|
#define OAES_DEBUG 0
|
||||||
|
#endif // OAES_DEBUG
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // _OAES_CONFIG_H
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -0,0 +1,168 @@
|
||||||
|
/*
|
||||||
|
* ---------------------------------------------------------------------------
|
||||||
|
* OpenAES License
|
||||||
|
* ---------------------------------------------------------------------------
|
||||||
|
* Copyright (c) 2013, Nabil S. Al Ramli, www.nalramli.com
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* - Redistributions of source code must retain the above copyright notice,
|
||||||
|
* this list of conditions and the following disclaimer.
|
||||||
|
* - Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
|
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
||||||
|
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
* POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
* ---------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _OAES_LIB_H
|
||||||
|
#define _OAES_LIB_H
|
||||||
|
|
||||||
|
#include "oaes_common.h"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
# ifdef OAES_SHARED
|
||||||
|
# ifdef oaes_lib_EXPORTS
|
||||||
|
# define OAES_API __declspec(dllexport)
|
||||||
|
# else
|
||||||
|
# define OAES_API __declspec(dllimport)
|
||||||
|
# endif
|
||||||
|
# else
|
||||||
|
# define OAES_API
|
||||||
|
# endif
|
||||||
|
#else
|
||||||
|
# define OAES_API
|
||||||
|
#endif // WIN32
|
||||||
|
|
||||||
|
#define OAES_BLOCK_SIZE 16
|
||||||
|
|
||||||
|
typedef void OAES_CTX;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* oaes_set_option() takes one of these values for its [option] parameter
|
||||||
|
* some options accept either an optional or a required [value] parameter
|
||||||
|
*/
|
||||||
|
// no option
|
||||||
|
#define OAES_OPTION_NONE 0
|
||||||
|
// enable ECB mode, disable CBC mode
|
||||||
|
#define OAES_OPTION_ECB 1
|
||||||
|
// enable CBC mode, disable ECB mode
|
||||||
|
// value is optional, may pass uint8_t iv[OAES_BLOCK_SIZE] to specify
|
||||||
|
// the value of the initialization vector, iv
|
||||||
|
#define OAES_OPTION_CBC 2
|
||||||
|
|
||||||
|
#ifdef OAES_DEBUG
|
||||||
|
typedef int ( * oaes_step_cb ) (
|
||||||
|
const uint8_t state[OAES_BLOCK_SIZE],
|
||||||
|
const char * step_name,
|
||||||
|
int step_count,
|
||||||
|
void * user_data );
|
||||||
|
// enable state stepping mode
|
||||||
|
// value is required, must pass oaes_step_cb to receive the state at each step
|
||||||
|
#define OAES_OPTION_STEP_ON 4
|
||||||
|
// disable state stepping mode
|
||||||
|
#define OAES_OPTION_STEP_OFF 8
|
||||||
|
#endif // OAES_DEBUG
|
||||||
|
|
||||||
|
typedef uint16_t OAES_OPTION;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* // usage:
|
||||||
|
*
|
||||||
|
* OAES_CTX * ctx = oaes_alloc();
|
||||||
|
* .
|
||||||
|
* .
|
||||||
|
* .
|
||||||
|
* {
|
||||||
|
* oaes_gen_key_xxx( ctx );
|
||||||
|
* {
|
||||||
|
* oaes_key_export( ctx, _buf, &_buf_len );
|
||||||
|
* // or
|
||||||
|
* oaes_key_export_data( ctx, _buf, &_buf_len );\
|
||||||
|
* }
|
||||||
|
* }
|
||||||
|
* // or
|
||||||
|
* {
|
||||||
|
* oaes_key_import( ctx, _buf, _buf_len );
|
||||||
|
* // or
|
||||||
|
* oaes_key_import_data( ctx, _buf, _buf_len );
|
||||||
|
* }
|
||||||
|
* .
|
||||||
|
* .
|
||||||
|
* .
|
||||||
|
* oaes_encrypt( ctx, m, m_len, c, &c_len );
|
||||||
|
* .
|
||||||
|
* .
|
||||||
|
* .
|
||||||
|
* oaes_decrypt( ctx, c, c_len, m, &m_len );
|
||||||
|
* .
|
||||||
|
* .
|
||||||
|
* .
|
||||||
|
* oaes_free( &ctx );
|
||||||
|
*/
|
||||||
|
|
||||||
|
OAES_API OAES_CTX * oaes_alloc();
|
||||||
|
|
||||||
|
OAES_API OAES_RET oaes_free( OAES_CTX ** ctx );
|
||||||
|
|
||||||
|
OAES_API OAES_RET oaes_set_option( OAES_CTX * ctx,
|
||||||
|
OAES_OPTION option, const void * value );
|
||||||
|
|
||||||
|
OAES_API OAES_RET oaes_key_gen_128( OAES_CTX * ctx );
|
||||||
|
|
||||||
|
OAES_API OAES_RET oaes_key_gen_192( OAES_CTX * ctx );
|
||||||
|
|
||||||
|
OAES_API OAES_RET oaes_key_gen_256( OAES_CTX * ctx );
|
||||||
|
|
||||||
|
// export key with header information
|
||||||
|
// set data == NULL to get the required data_len
|
||||||
|
OAES_API OAES_RET oaes_key_export( OAES_CTX * ctx,
|
||||||
|
uint8_t * data, size_t * data_len );
|
||||||
|
|
||||||
|
// directly export the data from key
|
||||||
|
// set data == NULL to get the required data_len
|
||||||
|
OAES_API OAES_RET oaes_key_export_data( OAES_CTX * ctx,
|
||||||
|
uint8_t * data, size_t * data_len );
|
||||||
|
|
||||||
|
// import key with header information
|
||||||
|
OAES_API OAES_RET oaes_key_import( OAES_CTX * ctx,
|
||||||
|
const uint8_t * data, size_t data_len );
|
||||||
|
|
||||||
|
// directly import data into key
|
||||||
|
OAES_API OAES_RET oaes_key_import_data( OAES_CTX * ctx,
|
||||||
|
const uint8_t * data, size_t data_len );
|
||||||
|
|
||||||
|
// set c == NULL to get the required c_len
|
||||||
|
OAES_API OAES_RET oaes_encrypt( OAES_CTX * ctx,
|
||||||
|
const uint8_t * m, size_t m_len, uint8_t * c, size_t * c_len );
|
||||||
|
|
||||||
|
// set m == NULL to get the required m_len
|
||||||
|
OAES_API OAES_RET oaes_decrypt( OAES_CTX * ctx,
|
||||||
|
const uint8_t * c, size_t c_len, uint8_t * m, size_t * m_len );
|
||||||
|
|
||||||
|
// set buf == NULL to get the required buf_len
|
||||||
|
OAES_API OAES_RET oaes_sprintf(
|
||||||
|
char * buf, size_t * buf_len, const uint8_t * data, size_t data_len );
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // _OAES_LIB_H
|
|
@ -0,0 +1,137 @@
|
||||||
|
/*
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
rand.c: By Bob Jenkins. My random number generator, ISAAC. Public Domain.
|
||||||
|
MODIFIED:
|
||||||
|
960327: Creation (addition of randinit, really)
|
||||||
|
970719: use context, not global variables, for internal state
|
||||||
|
980324: added main (ifdef'ed out), also rearranged randinit()
|
||||||
|
010626: Note that this is public domain
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
#ifndef STANDARD
|
||||||
|
#include "standard.h"
|
||||||
|
#endif
|
||||||
|
#ifndef RAND
|
||||||
|
#include "rand.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define ind(mm,x) (*(ub4 *)((ub1 *)(mm) + ((x) & ((RANDSIZ-1)<<2))))
|
||||||
|
#define rngstep(mix,a,b,mm,m,m2,r,x) \
|
||||||
|
{ \
|
||||||
|
x = *m; \
|
||||||
|
a = (a^(mix)) + *(m2++); \
|
||||||
|
*(m++) = y = ind(mm,x) + a + b; \
|
||||||
|
*(r++) = b = ind(mm,y>>RANDSIZL) + x; \
|
||||||
|
}
|
||||||
|
|
||||||
|
void isaac(ctx)
|
||||||
|
randctx *ctx;
|
||||||
|
{
|
||||||
|
register ub4 a,b,x,y,*m,*mm,*m2,*r,*mend;
|
||||||
|
mm=ctx->randmem; r=ctx->randrsl;
|
||||||
|
a = ctx->randa; b = ctx->randb + (++ctx->randc);
|
||||||
|
for (m = mm, mend = m2 = m+(RANDSIZ/2); m<mend; )
|
||||||
|
{
|
||||||
|
rngstep( a<<13, a, b, mm, m, m2, r, x);
|
||||||
|
rngstep( a>>6 , a, b, mm, m, m2, r, x);
|
||||||
|
rngstep( a<<2 , a, b, mm, m, m2, r, x);
|
||||||
|
rngstep( a>>16, a, b, mm, m, m2, r, x);
|
||||||
|
}
|
||||||
|
for (m2 = mm; m2<mend; )
|
||||||
|
{
|
||||||
|
rngstep( a<<13, a, b, mm, m, m2, r, x);
|
||||||
|
rngstep( a>>6 , a, b, mm, m, m2, r, x);
|
||||||
|
rngstep( a<<2 , a, b, mm, m, m2, r, x);
|
||||||
|
rngstep( a>>16, a, b, mm, m, m2, r, x);
|
||||||
|
}
|
||||||
|
ctx->randb = b; ctx->randa = a;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#define mix(a,b,c,d,e,f,g,h) \
|
||||||
|
{ \
|
||||||
|
a^=b<<11; d+=a; b+=c; \
|
||||||
|
b^=c>>2; e+=b; c+=d; \
|
||||||
|
c^=d<<8; f+=c; d+=e; \
|
||||||
|
d^=e>>16; g+=d; e+=f; \
|
||||||
|
e^=f<<10; h+=e; f+=g; \
|
||||||
|
f^=g>>4; a+=f; g+=h; \
|
||||||
|
g^=h<<8; b+=g; h+=a; \
|
||||||
|
h^=a>>9; c+=h; a+=b; \
|
||||||
|
}
|
||||||
|
|
||||||
|
/* if (flag==TRUE), then use the contents of randrsl[] to initialize mm[]. */
|
||||||
|
void randinit(ctx, flag)
|
||||||
|
randctx *ctx;
|
||||||
|
word flag;
|
||||||
|
{
|
||||||
|
word i;
|
||||||
|
ub4 a,b,c,d,e,f,g,h;
|
||||||
|
ub4 *m,*r;
|
||||||
|
ctx->randa = ctx->randb = ctx->randc = 0;
|
||||||
|
m=ctx->randmem;
|
||||||
|
r=ctx->randrsl;
|
||||||
|
a=b=c=d=e=f=g=h=0x9e3779b9; /* the golden ratio */
|
||||||
|
|
||||||
|
for (i=0; i<4; ++i) /* scramble it */
|
||||||
|
{
|
||||||
|
mix(a,b,c,d,e,f,g,h);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (flag)
|
||||||
|
{
|
||||||
|
/* initialize using the contents of r[] as the seed */
|
||||||
|
for (i=0; i<RANDSIZ; i+=8)
|
||||||
|
{
|
||||||
|
a+=r[i ]; b+=r[i+1]; c+=r[i+2]; d+=r[i+3];
|
||||||
|
e+=r[i+4]; f+=r[i+5]; g+=r[i+6]; h+=r[i+7];
|
||||||
|
mix(a,b,c,d,e,f,g,h);
|
||||||
|
m[i ]=a; m[i+1]=b; m[i+2]=c; m[i+3]=d;
|
||||||
|
m[i+4]=e; m[i+5]=f; m[i+6]=g; m[i+7]=h;
|
||||||
|
}
|
||||||
|
/* do a second pass to make all of the seed affect all of m */
|
||||||
|
for (i=0; i<RANDSIZ; i+=8)
|
||||||
|
{
|
||||||
|
a+=m[i ]; b+=m[i+1]; c+=m[i+2]; d+=m[i+3];
|
||||||
|
e+=m[i+4]; f+=m[i+5]; g+=m[i+6]; h+=m[i+7];
|
||||||
|
mix(a,b,c,d,e,f,g,h);
|
||||||
|
m[i ]=a; m[i+1]=b; m[i+2]=c; m[i+3]=d;
|
||||||
|
m[i+4]=e; m[i+5]=f; m[i+6]=g; m[i+7]=h;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* fill in m[] with messy stuff */
|
||||||
|
for (i=0; i<RANDSIZ; i+=8)
|
||||||
|
{
|
||||||
|
mix(a,b,c,d,e,f,g,h);
|
||||||
|
m[i ]=a; m[i+1]=b; m[i+2]=c; m[i+3]=d;
|
||||||
|
m[i+4]=e; m[i+5]=f; m[i+6]=g; m[i+7]=h;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
isaac(ctx); /* fill in the first set of results */
|
||||||
|
ctx->randcnt=RANDSIZ; /* prepare to use the first set of results */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef NEVER
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
ub4 i,j;
|
||||||
|
randctx ctx;
|
||||||
|
ctx.randa=ctx.randb=ctx.randc=(ub4)0;
|
||||||
|
for (i=0; i<256; ++i) ctx.randrsl[i]=(ub4)0;
|
||||||
|
randinit(&ctx, TRUE);
|
||||||
|
for (i=0; i<2; ++i)
|
||||||
|
{
|
||||||
|
isaac(&ctx);
|
||||||
|
for (j=0; j<256; ++j)
|
||||||
|
{
|
||||||
|
printf("%.8lx",ctx.randrsl[j]);
|
||||||
|
if ((j&7)==7) printf("\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
|
@ -0,0 +1,56 @@
|
||||||
|
/*
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
rand.h: definitions for a random number generator
|
||||||
|
By Bob Jenkins, 1996, Public Domain
|
||||||
|
MODIFIED:
|
||||||
|
960327: Creation (addition of randinit, really)
|
||||||
|
970719: use context, not global variables, for internal state
|
||||||
|
980324: renamed seed to flag
|
||||||
|
980605: recommend RANDSIZL=4 for noncryptography.
|
||||||
|
010626: note this is public domain
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
#ifndef STANDARD
|
||||||
|
#include "standard.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef RAND
|
||||||
|
#define RAND
|
||||||
|
#define RANDSIZL (8)
|
||||||
|
#define RANDSIZ (1<<RANDSIZL)
|
||||||
|
|
||||||
|
/* context of random number generator */
|
||||||
|
struct randctx
|
||||||
|
{
|
||||||
|
ub4 randcnt;
|
||||||
|
ub4 randrsl[RANDSIZ];
|
||||||
|
ub4 randmem[RANDSIZ];
|
||||||
|
ub4 randa;
|
||||||
|
ub4 randb;
|
||||||
|
ub4 randc;
|
||||||
|
};
|
||||||
|
typedef struct randctx randctx;
|
||||||
|
|
||||||
|
/*
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
If (flag==TRUE), then use the contents of randrsl[0..RANDSIZ-1] as the seed.
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
void randinit(/*_ randctx *r, word flag _*/);
|
||||||
|
|
||||||
|
void isaac(/*_ randctx *r _*/);
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
Call rand(/o_ randctx *r _o/) to retrieve a single 32-bit random value
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
#define rand(r) \
|
||||||
|
(!(r)->randcnt-- ? \
|
||||||
|
(isaac(r), (r)->randcnt=RANDSIZ-1, (r)->randrsl[(r)->randcnt]) : \
|
||||||
|
(r)->randrsl[(r)->randcnt])
|
||||||
|
|
||||||
|
#endif /* RAND */
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,57 @@
|
||||||
|
/*
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
Standard definitions and types, Bob Jenkins
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
#ifndef STANDARD
|
||||||
|
# define STANDARD
|
||||||
|
# ifndef STDIO
|
||||||
|
# include <stdio.h>
|
||||||
|
# define STDIO
|
||||||
|
# endif
|
||||||
|
# ifndef STDDEF
|
||||||
|
# include <stddef.h>
|
||||||
|
# define STDDEF
|
||||||
|
# endif
|
||||||
|
typedef unsigned long long ub8;
|
||||||
|
#define UB8MAXVAL 0xffffffffffffffffLL
|
||||||
|
#define UB8BITS 64
|
||||||
|
typedef signed long long sb8;
|
||||||
|
#define SB8MAXVAL 0x7fffffffffffffffLL
|
||||||
|
typedef unsigned long int ub4; /* unsigned 4-byte quantities */
|
||||||
|
#define UB4MAXVAL 0xffffffff
|
||||||
|
typedef signed long int sb4;
|
||||||
|
#define UB4BITS 32
|
||||||
|
#define SB4MAXVAL 0x7fffffff
|
||||||
|
typedef unsigned short int ub2;
|
||||||
|
#define UB2MAXVAL 0xffff
|
||||||
|
#define UB2BITS 16
|
||||||
|
typedef signed short int sb2;
|
||||||
|
#define SB2MAXVAL 0x7fff
|
||||||
|
typedef unsigned char ub1;
|
||||||
|
#define UB1MAXVAL 0xff
|
||||||
|
#define UB1BITS 8
|
||||||
|
typedef signed char sb1; /* signed 1-byte quantities */
|
||||||
|
#define SB1MAXVAL 0x7f
|
||||||
|
typedef int word; /* fastest type available */
|
||||||
|
|
||||||
|
#define bis(target,mask) ((target) |= (mask))
|
||||||
|
#define bic(target,mask) ((target) &= ~(mask))
|
||||||
|
#define bit(target,mask) ((target) & (mask))
|
||||||
|
#ifndef min
|
||||||
|
# define min(a,b) (((a)<(b)) ? (a) : (b))
|
||||||
|
#endif /* min */
|
||||||
|
#ifndef max
|
||||||
|
# define max(a,b) (((a)<(b)) ? (b) : (a))
|
||||||
|
#endif /* max */
|
||||||
|
#ifndef align
|
||||||
|
# define align(a) (((ub4)a+(sizeof(void *)-1))&(~(sizeof(void *)-1)))
|
||||||
|
#endif /* align */
|
||||||
|
#ifndef abs
|
||||||
|
# define abs(a) (((a)>0) ? (a) : -(a))
|
||||||
|
#endif
|
||||||
|
#define TRUE 1
|
||||||
|
#define FALSE 0
|
||||||
|
#define SUCCESS 0 /* 1 on VAX */
|
||||||
|
|
||||||
|
#endif /* STANDARD */
|
|
@ -112,6 +112,7 @@
|
||||||
<li><a href="about:license#myspell">MySpell License</a></li>
|
<li><a href="about:license#myspell">MySpell License</a></li>
|
||||||
<li><a href="about:license#nicer">nICEr License</a></li>
|
<li><a href="about:license#nicer">nICEr License</a></li>
|
||||||
<li><a href="about:license#nrappkit">nrappkit License</a></li>
|
<li><a href="about:license#nrappkit">nrappkit License</a></li>
|
||||||
|
<li><a href="about:license#openaes">OpenAES License</a></li>
|
||||||
<li><a href="about:license#opentok">OpenTok License</a></li>
|
<li><a href="about:license#opentok">OpenTok License</a></li>
|
||||||
<li><a href="about:license#openvision">OpenVision License</a></li>
|
<li><a href="about:license#openvision">OpenVision License</a></li>
|
||||||
<li><a href="about:license#pbkdf2-sha256">pbkdf2_sha256 License</a></li>
|
<li><a href="about:license#pbkdf2-sha256">pbkdf2_sha256 License</a></li>
|
||||||
|
@ -3357,6 +3358,41 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
<h1><a id="openaes"></a>OpenAES License</h1>
|
||||||
|
|
||||||
|
<p>This license applies to certain files in the directory
|
||||||
|
<span class="path">media/gmp-clearkey/0.1/openaes</span>.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
Copyright (c) 2012, Nabil S. Al Ramli, www.nalramli.com
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
- Redistributions of source code must retain the above copyright notice,
|
||||||
|
this list of conditions and the following disclaimer.
|
||||||
|
- Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
|
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
||||||
|
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<h1><a id="opentok"></a>OpenTok License</h1>
|
<h1><a id="opentok"></a>OpenTok License</h1>
|
||||||
|
|
Загрузка…
Ссылка в новой задаче